3

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

4

0 回答 0