Cassandra还是MongoDB适合良好的扩展性和大量查询
我遇到了这样的情况:我需要频繁查询数据库,比如写评论、查看用户资料等等。我觉得读取的次数会比写入的多。而且,我希望能够把数据库扩展到多个服务器上。对了,我还挺喜欢NoSQL的数据库。
根据我在网上看的一些博客和在StackOverflow上找到的答案(比如这个链接),我了解到在这种情况下,使用Cassandra可能是个不错的选择。
所以,我想问的是,Cassandra更适合我的需求吗?为什么呢?
还有第二个问题是关于
也许我现在可以先用MongoDB(因为有异步库,而且在一开始可能在多个服务器上比Cassandra快),然后过一段时间再把MongoDB里的数据转到Cassandra里。你觉得这样可行吗?
1 个回答
3
这算是部分回答,因为这里不是在讨论适用性。Tornado 2.1支持使用twisted作为异步模式,这意味着你可以使用telephus这个Cassandra库(twisted+Cassandra)来实现异步访问Cassandra数据库。
import tornado.platform.twisted
from telephus.pool import CassandraClusterPool
from twisted.internet import reactor
tornado.platform.twisted.install()
from twisted.internet import reactor
pool = CassandraClusterPool([HOST], keyspace='XXXX', reactor=reactor)
pool.startService()
reactor.run() # this calls tornado.ioloop.IOLoop.instance().start()
不过,我现在在一些个人项目中使用的是MongoDB和mongoengine(非异步),而在工作项目中则使用Cassandra和telephus。我在灵活的数据模型和固定的数据模型以及性能之间做了一些权衡。