CQL3和数百万列的复合键用例 [英] CQL3 and millions of columns composite key use case

查看:139
本文介绍了CQL3和数百万列的复合键用例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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


  1. 将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆