环境: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 个小时,并且在没有数据输入的情况下消耗了大约 35GB 的磁盘空间。
然后我们切换测试以验证键空间中列族的最大数量,希望使用<tenant id>_<columnfamily name>
命名的 CF。该测试在 ~3000 CFs 时也失败了。
现在我们正在寻找<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 中起作用吗?