環境: Jruby、Rails 2.3.8、cassandra-gem、cassandra 1.1
Cassandra でサポートされているマルチテナント アプリケーションで、テナントごとに新しいキースペースを作成しています。テスト中に、Cassandra が失敗することがわかりました
at 400 keyspaces on a 8GB RAM machine, 7200 RPM disk
at 700 keyspaces on a 24 GB RAM machine, 7200 RPM disk
また、100 個ほどのキースペースの後、実行速度が非常に遅くなることがわかりました。700 個のキースペースを作成するのに約 7 時間かかり、データが入力されていない状態で約 35 GB のディスク容量を消費しました。
<tenant id>_<columnfamily name>
次に、名前付き CFを使用することを期待して、キースペース内の列ファミリーの最大数を検証するようにテストを切り替えました。このテストも ~3000 CF で失敗しました。
現在、行キーを探して<tenant_id>_<key>
おり、すべてのテナントに同じ CF を使用しています。これはhttps://github.com/rantav/hector/wiki/Virtual-Keyspacesのメモに基づいています。
問題は、would prepending tenant_id to key work for the following CF, given the key validation class is LongType?
です。
ColumnFamily: monthly_unique_user_counts
"count of unique users per month"
Key Validation Class: org.apache.cassandra.db.marshal.LongType
Default column value validator: org.apache.cassandra.db.marshal.LongType
Columns sorted by: org.apache.cassandra.db.marshal.LongType
Row cache size / save period in seconds / keys to save : 0.0/0/all
Row Cache Provider: org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider
Key cache size / save period in seconds: 200000.0/14400
他のいくつかの CF の場合、キー検証クラスは次のとおりです。
Key Validation Class: org.apache.cassandra.db.marshal.TimeUUIDType
その<tenant_id>_<key>
コンセプトはそのCFで機能しますか?.