NoSQL的MongoDB的VS卡桑德拉(NoSQL MongoDB vs Cassandra)

2019-10-20 03:23发布

我正在开发一个云平台,我想储存文件和视频文件。

第一个概念是使用MongoDB中的简单文件和大型视频文件卡桑德拉。 但我已经阅读了卡桑德拉如果文件大于64 MB的我就会有问题。

在另一方面MongoDB的GridFS的具有允许大于100MB的文件。

我已连接的MongoDB与Java。 在启动数据库是80MB,当我插入GridFS的MongoDB的到我期待数据库捕捉像1.9GB磁盘的SPase一个1.80GB的视频文件,但它捕获的6 GB ....文件大小的3倍。

下面是我使用的代码:

MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("testdb");
DBCollection table = db.getCollection("user");

String newFileName = "Video";

File videoFile = new File("e:\\Magnificent.mp4");
GridFS gfsText = new GridFS(db, "video");
GridFSInputFile gfsFile = gfsText.createFile(videoFile);
gfsFile.setFilename(newFileName);
gfsFile.save();

此外,后运行应用程序和文件保存到MongoDB的下列文件被创建到数据库文件夹中。 皮斯注意到文件的大小:

第一个问题是,为什么它抓住了这么多的磁盘空间?

2ond问题:是否有机会使用卡桑德拉用于存储视频文件500MB-1GB ???

感谢您的任何意见

Answer 1:

广告1:这是因为这些文件splited与创建2个集,一个二进制的部分(块),一个用于元数据块。 你可以阅读更多的方式MongoDB的文档上有关GridFS的和关于存储实际上是如何保持 。

广告2:是的,有来存储文件,也就是上面卡桑德拉64MB生活方式。 你可以很容易地建立一种机制,将文件分割成块,并保持它们作为分隔的条目。 这将在完全相同的方式MongoDB的GridFS的实施工作。 而且你不会是第一个 - DataStax,声称是“幕后黑手”卡桑德拉一个公司,有这样的已经在自己的商业堆,所谓的企业实施。 你可以阅读这里卡桑德拉文件系统的设计和一些文档在这里 。 总体来说,如果你决定建立自己的解决方案应该是非常简单和直接的 - 所有你需要做的只是分割的文件,并把内容多条记录。

另外注意的哲学问题是“为什么”。 为什么你想使用一个数据库系统来存储这么大的文件? 有这么多的更好的方式来处理,包括类似亚马逊S3或任何其它实现分布式和复制的文件/存储系统,这将使在很多层面上你的生活变得更轻松。 考虑到还有,作为一个很好的替代,以BLOB的...



文章来源: NoSQL MongoDB vs Cassandra