cassandra - multitenancy:尝试创建4000个密钥空间,在700时失败

时间:2012-07-20 01:51:18

标签: cassandra jrubyonrails

环境: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中起作用吗?

0 个答案:

没有答案