Cassandra或MongoDB具有良好的扩展性和大量查询

Dmi*_*sev 5 python asynchronous tornado mongodb cassandra

我有以下情况.有很多对数据库的查询(通常是写评论,阅读配置文件等等),而且,我认为读取比写入更多.我希望很有可能将db扩展到多个服务器.所以,我喜欢nosql :)据我所知,通过阅读博客和StackOverflow上的问题答案(例如这一个),在这种情况下最好的选择是使用Cassandra.

所以,问题是 - 卡桑德拉更适合我的目的吗?为什么?

第二个问题是关于Tornado的异步客户端库- 你知道一些这方面的实现吗?正如您在上面链接的Wiki页面上看到的那样,只有mongodb和couchdb的异步客户端.这个事实也阻止了我.

也许我现在可以使用MongoDB(原因是异步库esces,也许在第一次它会比几个服务器上的Cassandra更快但没有异步),并且在一段时间之后将mongo中的数据转换为cassandra.你怎么看待这件事?

kob*_*las 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() 
Run Code Online (Sandbox Code Playgroud)

也就是说,我目前在一些个人项目中使用 MongoDB 和 mongoengine(非异步),在工作项目中使用 Cassandra+telephus。我正在灵活的数据模型与固定的数据模型和性能之间进行权衡。