CQL3和数百万列的复合键用例 [英] CQL3 and millions of columns composite key use case
问题描述
在CQL3中我们如何处理数百万列?我们有一个特殊的表,其中所有行基本上是复合键,非常非常宽。
How in CQL3 do we do millions of columns? We have one special table where all rows are basically composite keys and very very wide.
我读这个问题,暗示两种方式
CQL3中的集合有一定的限制吗?
I was reading this question that implied two ways Does collections in CQL3 have certain limits?
此外,我们的复合键的类型是String.bytes,并且由STring排序
Also, the types of our composite keys are String.bytes and ordered by STring
我们有一个十进制的精确匹配表, 。
We have an exact matching table that is Decimal.bytes and ordered by decimal.
如何在CQL3中处理这个问题?
How would one handle this in CQL3?
推荐答案
哦,和我的问题的一部分失踪,因为SO格式化的问题,我在寻找Decimal.bytes和String.bytes作为我的复合键....没有值,只是一个col名称,我想要所有的列是十进制> 10和十进制< 20可以说,列名= 10出现多次in 10.a,10.b 11.c,11.d,11.e
CREATE TABLE widerow
(
row_key text, //whatever
column_composite1 decimal,
column_composite2 text,
PRIMARY KEY(row_key,column_composite1,column_composite2)
)
SELECT * FROM widerow WHERE row_key=...
AND column_composite1>=10.0
AND column_composite1<=20.0
在这种情况下,您可以通过column_composite1查询范围,并为每个column_composite1查询不同的column_composite2(10.a,10.b 11.c,11.d, 11.e ...)
In that case, you can query with range over column_composite1 and have for EACH column_composite1, different values of column_composite2 (10.a, 10.b 11.c, 11.d, 11.e...)
如何获取row_composite1>a和row_composite1& b在该用例中?即。我不关心复合名称的后半部分。
"How do I get all the columns where row_composite1 > "a" and row_composite1 < "b" in that use case? ie. I dont' care about the second half of the composite name. "
这里有两种可能的解决方案
2 possible solutions here
- 将row_composite1复合
$ b / p>
For solution 1
CREATE TABLE widerow
(
fake_row_key text, //whatever
column_composite1 text, // previously row_composite1
column_composite2 decimal,
column_composite3 text,
PRIMARY KEY(row_key,column_composite1,column_composite2,column_composite3)
)
SELECT * FROM widerow WHERE row_key=...
AND column_composite1>='a'
AND column_composite1<='b'
这个建模有一些缺点,为了能够对DOUBLE值进行范围查询,你需要首先提供column_composite1:
This modeling has some drawback though. To be able to range query over DOUBLE values, you need to provide first the column_composite1:
SELECT * FROM widerow WHERE row_key=...
AND column_composite1='a'
AND column_composite2>=10.0
AND column_composite2<=20.0
这篇关于CQL3和数百万列的复合键用例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!