Cassandra还是MongoDB适合良好的扩展性和大量查询

5 投票
1 回答
1455 浏览
提问于 2025-04-17 06:45

我遇到了这样的情况:我需要频繁查询数据库,比如写评论、查看用户资料等等。我觉得读取的次数会比写入的多。而且,我希望能够把数据库扩展到多个服务器上。对了,我还挺喜欢NoSQL的数据库。

根据我在网上看的一些博客和在StackOverflow上找到的答案(比如这个链接),我了解到在这种情况下,使用Cassandra可能是个不错的选择。

所以,我想问的是,Cassandra更适合我的需求吗?为什么呢?

还有第二个问题是关于的异步客户端库,你知道有哪些实现吗?在上面提到的维基页面上,只有MongoDB和CouchDB有异步客户端。这让我有点犹豫。

也许我现在可以先用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。我在灵活的数据模型和固定的数据模型以及性能之间做了一些权衡。

撰写回答