Cassandra UTF8Type 的顺序是什么?
所有的文档都让我期待一个字典排序顺序(基本上是字母顺序)。这似乎不是 Cassandra 使用的顺序。我很难猜到 它在用什么。
我建立了一个表来计算影响命名“应用程序”的交互,以一天的时间段组织。(这是一个简单的例子来说明我的困惑的原因)。我希望能够查找特定应用程序表的 CQL 描述如下:
CREATE TABLE "appMetrics" (app text,time timestamp,counter_val counter, PRIMARY KEY (app, time)) 具有紧凑的存储空间;
我用数据加载它:
更新“appMetrics”设置 counter_val = counter_val+1 WHERE app='ab' AND time='2014-02-14 00:00:00'; 更新“appMetrics”设置 counter_val = counter_val+1 WHERE app='a' AND time='2014-02-14 00:00:00'; 更新“appMetrics”设置 counter_val = counter_val+1 WHERE app='c' AND time='2014-02-14 00:00:00'; 更新“appMetrics”设置 counter_val = counter_val+1 WHERE app='b' AND time='2014-02-14 00:00:00'; 更新“appMetrics”设置 counter_val = counter_val+1 WHERE app='bc' AND time='2014-02-14 00:00:00'; 更新“appMetrics”设置 counter_val = counter_val+1 WHERE app='ca' AND time='2014-02-14 00:00:00';
我从表中选择并看到以下结果:
从“appMetrics”中选择 *; 应用 | 时间 | counter_val -----+--------------+------------- 一个 | 2014-02-14 00:00:00-0500 | 1 c | 2014-02-14 00:00:00-0500 | 1 ab | 2014-02-14 00:00:00-0500 | 1 加州 | 2014-02-14 00:00:00-0500 | 1 公元前 | 2014-02-14 00:00:00-0500 | 1 乙 | 2014-02-14 00:00:00-0500 | 1 (6 行)
所以,这个顺序不是字母顺序,不是输入顺序,不是我能看到的任何顺序。排序不是随机的,或者至少是可重复的:
cqlsh:simplex> select * from "appMetrics" where token(app) >= token('ab');
app | time | counter_val
-----+--------------------------+-------------
ab | 2014-02-14 00:00:00-0500 | 1
ca | 2014-02-14 00:00:00-0500 | 1
bc | 2014-02-14 00:00:00-0500 | 1
b | 2014-02-14 00:00:00-0500 | 1
(4 rows)
cqlsh:simplex> select * from "appMetrics" where token(app) <= token('ab');
app | time | counter_val
-----+--------------------------+-------------
a | 2014-02-14 00:00:00-0500 | 1
c | 2014-02-14 00:00:00-0500 | 1
ab | 2014-02-14 00:00:00-0500 | 1
(3 rows)
对于它的价值,列族被描述为:
列族:appMetrics 密钥验证类:org.apache.cassandra.db.marshal.UTF8Type 默认列值验证器:org.apache.cassandra.db.marshal.CounterColumnType 单元格按:org.apache.cassandra.db.marshal.TimestampType 排序 GC 宽限秒数:864000 压实最小/最大阈值:4/32 读取修复几率:0.1 DC 本地读取修复几率:0.0 刷新时填充 IO 缓存:false 写入时复制:true 缓存:KEYS_ONLY 默认生存时间:0 布隆过滤器 FP 机会:0.01 索引间隔:128 投机重试:99.0PERCENTILE 内置索引:[] 压缩策略:org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy 压缩选项: sstable_compression:org.apache.cassandra.io.compress.LZ4Compressor
有人可以解释这些是如何订购的吗?