环境: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个密钥空间并消耗约35GB的磁盘空间并且没有输入任何数据需要大约7个小时。
然后,我们将测试切换为验证密钥空间中列族的最大数量,希望使用名为CF的<tenant id>_<columnfamily name>
。该测试也在~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中起作用吗?