Cassandraをデータベースとして使用することを検討しているプロジェクトに取り組んでいます。 MySQLを最初に使用したとしても、そのスケーラビリティを考慮して、最終的にはCassandraに移行したいと考えています。 Facebook、Digg、最近のTwitterなどの大企業がCassandraを使用していることは知っていますが、これらのサイトのいずれもRailsから実行されているとは思いません。私の質問は、RailsでCassandraを使用してRubyを使用することが可能かどうかです。考慮すべきポイント:
ヒントに感謝します。
TwitterはほとんどのフロントエンドでRailsを実行しています。Faunaのクライアントは実際にはTwitterによって構築およびリリースされているため、大規模なワークロードで最新かつ安定していることを確信できます。コミットの履歴は、頻繁に改善が行われていることを示しています。これは素晴らしいことです。
ほとんどの場合、AuthlogicはCassandraで正しく機能するようにカスタマイズする必要があります。特に、named_scopeとリレーショナルデータに基づいて特定のメソッドを提供しているようです。
誰かがAuthlogicでDataMapperサポート用のプラグインを作成したようです: http://Twitter.com/collintmiller/statuses/2064046718 。これを、Cassandraと互換性を持たせるための開始点として使用できる場合があります。
幸運を!
MySQLから始めて、Cassandraに移行するのは良い考えではないと思います。
Cassandraは NoSQL ソリューションですが、MySQLは「クラシック」なSQL駆動型データベースです。
これは、モデルが異なることを意味します。
MySQLを使用する場合は、モデルの作成にActiveRecordを使用する必要があります。その後、Cassandraに変更する場合は、すべてのモデルをNoSQL互換のミドルウェア( BigRecord など)に変更する必要があります。これは、モデルを変更するだけでなく、モデルを使用するコントローラーも変更することを意味します(インターフェイスが異なるため)。
とはいえ、Cassandraなどは、Twitterなどの非常に要求の厳しいアプリケーションで使用されることになっています。
そこにある残りのWebアプリケーションは、桁違いに強度が低くなっています。それでもCassandraが必要になると思いますか?
PostgreSQLと適切に設計されたデータベースは、98%の確率で十分です。
その後、Cassandraに変更する場合は、すべてのモデルをNoSQLに変更する必要があります
これはまったく真実ではありません。 MySQLデータベースが多数の結合を実行するようにプログラムした場合は、はい、問題が発生している可能性があります。 MySQLルートを開始した当初から、可能な限り結合を回避しました。その後、Casandraへの移行を開始したときは、かなり簡単でした。最初は1つのモデルのみで移行しました。次に、一度に4つのモデルを言います。などうまくいきます。実際、Twitterのインタビューを読むと、しばらくの間、同じモデルでMySQLとCasandraを並行して実行していることがわかります。 http://nosql.mypopescu.com/post/407159447/cassandra-Twitter -an-interview-with-ryan-king 。
Authlogicに関しては、その部分をmySQLに好きなだけ保持でき、Cassandraデータと疎結合しておくだけです。
現在、Cassandra、MongoDB、およびCouchDBを調査しています。
開発者のサポートが最も多いのはどれかを判断する1つの方法は、それぞれの最も評価の高いgithubプロジェクトのウォッチャーの数を確認することです。少なくとも大まかな見積もりとして。
今は
852-MongoDB http://github.com/jnunemaker/mongomapper
544-CouchDB http://github.com/jchris/couchrest
178-Cassandra http://github.com/fauna/cassandra
最近、Cassandraに移行することを発表した有名なサイト(Twitter、Digg、Redditなど)がたくさんあると言わざるを得ませんが、これは彼らにとって大きな自信です。
Mongoには、これまでで最も多くの最高のドキュメントがあるようです。彼らの自動シャーディングはまだアルファ版ですが、それがどれだけうまくスケーリングするかはまだ分からないと思います。
私はこれらすべてについて学び始めたばかりなので、他の人が洞察を持っているなら共有してください。
http://github.com/NZKoz/cassandra_object もあります。これはIIANMが動物相クライアントの上に構築します。 「CassandraObjectは、Cassandraを操作するための優れたAPIを提供します。CassandraObjectsは、ActiveRecordオブジェクトとほとんどダックタイプの互換性があるため、ほとんどのコントローラーコードは問題なく動作するはずです...開発を支援したい場合にのみ、本番環境でこれを使用してください、現在、ラフなエッジがたくさんあります。」