此用例的最佳数据库? MongoDB似乎无法扩展

问题描述 投票:0回答:2

使用一种非常简单易用的应用程序,它是一个网络爬虫应用程序,它从互联网上收集成千上万个项目(通常是数百万个),并将其存储在nosql集合中(当前为此使用MongoDB)。这些集合非常不稳定,这意味着它们的创建和删除非常迅速。数据访问也是非常随机的,因此从理论上讲,我的应用程序可以在系统处于活动状态时创建一个集合,而在系统处于活动状态时也可以删除-同样,几个月前创建的一个集合也将被随机访问以进行更新和读取。我说的是成千上万个集合,每个集合可能包含数百万个文档。

长话短说,MongoDB的问题在于它在这种情况下的表现似乎很差。他们的缓存和WiredTiger引擎的设计方式不适合处理对集合的随机访问以及很好地动态创建和删除集合。复制已成为噩梦,而且通常情况下,写入将停滞不前,并且数据库实际上得到了难以置信的备份。不幸的是,将应用程序扩展到成千上万的用户似乎对MongoDB来说是行不通的。

因此,有人知道或可以推荐适合此类工作负载的数据库吗?我们利用了地理位置索引和全文索引的优势,因此基本上这是唯一的要求。我乐于学习和尝试任何东西,最好是图形数据库-但是性能和生产就绪性是关键。

mongodb graph cassandra orientdb database-performance
2个回答
0
投票

[强烈推荐用于“即发即弃”用例Apache Cassandra或更好的ScyllaDB(据我了解,Cassandra的类固醇是完全用C ++重写的,以获得最佳性能)。您可以通过google搜索来比较性能,这两种性能在写入性能方面都很出色(读取性能不是很好,请注意我说的“不是很好”,还不错或最差)。

Apache Cassandra免费用于商业用途,因此这是又一个绿灯。语法很像SQL(请不要说很多,就像不说SQL),因此它相对容易快速学习。此外,我们已经在GNU / Linux和Microsoft Windows服务器群集上成功运行了它。

正如在Cassandra上交付的那样,ScyllaDB的语法几乎相同。

就我而言,我们已经运行了3年的Cassandra集群,并且将所有工作流程和以前的项目完全迁移到Apache Cassandra之上。尽管在开始时最困难的事情是了解内部工作的基本概念以及Cassandra的“在数据模型之前先查询”的思维方式,但我只能对性能给出好的印象。

我希望它能对您的研究有所帮助。


0
投票

您不会说现有的MongoDB部署特别有问题-“数据库正在备份”不是可行的问题报告。

您也没有提到分片,这可能是针对您在MongoDB上描述的工作量类型的第一个建议。

© www.soinside.com 2019 - 2024. All rights reserved.