我使用过MongoDB但是对Cassandra来说是新手。我曾经使用过使用MongoDB的应用程序并且不是很大的应用程序。读写操作不是很密集。在这种情况下,MongoDB对我很有用。现在我正在构建一个新的应用程序(具有Stack Overflow [投票,总计视图,建议,注释等]的一些功能),并在同一项目上对数据库进行大量并发写入操作(将来!)。所以根据这些信息,我通过网络收集,MongoDB不是最好的选择(但Cassandra是)。但我在Cassandra中finding的问题是选择正确的数据模式。
围绕您的查询构建模型。不是关系和 对象。
我还看了使用Mongo + Redis的解决方案。是否有效率首先更新Mongo数据库,然后updating Redis数据库更新同一数据项的所有多个写请求。
我想验证哪一个最能解决这个问题Mongo +骑或Cassandra?
任何帮助都将受到高度赞赏。
答案 0 :(得分:3)
挑选数据库非常主观。我会说使用新的WiredTiger存储引擎的现代MongoDB 3.2+可以很好地处理并发。
选择分布式NoSQL(或SQL)数据存储区时,通常只能选择以下三种中的两种:
这称为CAP Theorem。
MongoDB有C和P,Cassandra有A和P. Cassandra也是一个面向列的数据库,并且将采用一种不同的方法来存储和检索数据,比如MongoDB(它是一个Document-)面向数据库)。实际情况是,任何一个数据库都应该能够轻松扩展到您的需求。我担心数据存储和检索语义与您的应用程序数据模型的匹配程度,以及所提供功能的有用性。
确定哪个数据库最适合您的应用是非常主观的,并且与Stack Overflow上的“基于意见的问题”接壤。
将Redis用作LRU缓存绝对是有效扩展策略的一个组成部分。在读取可缓存数据时,典型的模型是首先检查缓存中是否存在数据(Redis),如果不存在,则从数据库中查询数据,将结果存储在缓存中并返回。虽然在某些情况下可能是合适的,但将所有写入Redis和数据库并不常见。您需要弄清楚什么是可缓存的以及每个缓存项目应该存在多长时间,并且如上所述,或者在写入时,在读取时缓存它。
答案 1 :(得分:0)
它仅取决于您的应用程序的用途。对于广泛的写入应用程序,使用Cassandra
更好