2011-11-21 12 views
5

私は以下のような状況があります。データベースには多くのクエリがあります(一般的にコメントを書く、プロファイルを読む、など...)。私はいくつかのサーバーにdbをスケーリングする良い可能性を持っています。だから、nosqlを楽しむ:) StackOverflow(例えばthis one)に関する質問のためのブログと回答を読んで理解するので、この状況での最良の選択はCassandraを使用することです。カサンドラまたはMongoDBは、スケーリングが大きくクエリの量が多いため

ですから、私の目的にはカサンドラが適しているのですか?どうして?

もう1つの質問は、Tornadoの非同期クライアントライブラリに関するものです。これについていくつかの実装を知っていますか?上記リンク先のwikiページにあるように、mongodbとcouchdbの非同期クライアントしかありません。そしてこの事実もまた私を止める。

多分私はMongoDBを使用することができます(非同期ライブラリの原因となりました。最初は複数のサーバ上でCassandraより高速ですが、非同期なしで)。mongoのデータをcassandraに変換しました。あなたはそれについてどう思いますか?

+1

AFAIK Tornados IOLoopの内部で実行されるテーラーメイド(非同期)カサンドラのライブラリはありません。 (psはスレッドに関するBensの投稿を読む:https://github.com/facebook/tornado/wiki/Threading-and-concurrency) – Schildmeijer

+0

リンクのThx!どう思いますか?Cassandraを非同期で使用するのは、非同期モジュールを使用するMongoDBより高速です。あるいは、違いはごくわずかです。私は自分の非同期実装を書く時間があります。たぶん、私は単にTornadoのスレッドと通信するDBの相互作用のための特別なスレッドを実行することができます。 – dizpers

+0

竜巻はねじれをサポートしています。つまり、Async Cassandraのサポートに非同期テレフォンツイストライブラリを使用できます。 – koblas

答えて

3

ハーフアンサー - これは適切ではないためです。 Tornado 2.1は非同期パターンとしてツイストをサポートしています。つまり、telephus Cassandraライブラリ(twisted + Cassandra)を使用して非同期Cassandraアクセスを使用できます。

私は仕事のプロジェクトのためのモーメントとカサンドラ+のテーレポスでいくつかの個人的なプロジェクトのためにMongoDBとmongoengineを(非非同期)使用している、と述べた
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() 

。私は、柔軟なデータモデルと固定データモデルとパフォーマンスの面でトレードオフをしています。

関連する問題