Cassandra 在卡桑德拉的两张桌子上选择
我在一个项目中使用了Cassandra 在卡桑德拉的两张桌子上选择,cassandra,request,cql,Cassandra,Request,Cql,我在一个项目中使用了Cassandra,这是我的第一个项目。 ,我试着在两个表上做一个简单的请求,但这不起作用 我想做一些类似的事情: 从表1、表2中选择*,其中表1.test=test和表2.test2=123 是否可以在Cassandra中的两个表上请求?我该怎么做 谢谢 我试着在两张桌子上做一个简单的请求 您试图做的就是所谓的“分布式连接”,Cassandra是专门为防止您这样做而设计的 解决这类问题的方法是使用一个称为非规范化的过程。假设您有两个简单的表carMake和carModel:
Cassandra
,这是我的第一个项目。
,我试着在两个表上做一个简单的请求,但这不起作用
我想做一些类似的事情:
从表1、表2中选择*,其中表1.test=test和表2.test2=123代码>
是否可以在Cassandra
中的两个表上请求?我该怎么做
谢谢
我试着在两张桌子上做一个简单的请求
您试图做的就是所谓的“分布式连接”,Cassandra是专门为防止您这样做而设计的
解决这类问题的方法是使用一个称为非规范化的过程。假设您有两个简单的表carMake
和carModel
:
makeid | make
--------+--------
1 | Chevy
2 | Dodge
3 | Ford
modelid | makeid | model
---------+--------+---------
15 | 3 | Focus
11 | 3 | Mustang
32 | 2 | Charger
82 | 3 | Fusion
现在,在传统的RDBMS中,如果我想选择所有品牌为“Ford”的车型,我会执行一个连接查询。但是使用Cassandra,我们的想法是在建模阶段解决这个问题,通过构建一个支持同时查询汽车制造和模型的表:
CREATE TABLE carMakeModel (
carid int,
make text,
model text,
PRIMARY KEY (make,carid));
aploetz@cqlsh:stackoverflow> SELECT * FROM carMakeModel WHERE make='Ford';
make | carid | model
------+-------+---------
Ford | 1 | Mustang
Ford | 2 | Focus
Ford | 3 | Fusion
(3 rows)
这里需要注意的一些要点:
make
可根据需要进行复制。您会注意到“Ford”在结果集中被指定了3次。如果你有13种福特车型的数据,你会将“Ford”的值存储13次
- Cassandra中的主键是唯一的。我已将
carid
添加为主键的一部分,以确保每个模型的唯一性,否则每个make
的插入将覆盖其自身
请详细解释您的问题!是否要在一个请求中从表中选择?您是否需要类似于从表1和表2中选择*之类的内容?或者从表1中选择*,从表2中选择*?你能写下你有目的的请求吗?我想你想加入表格!您应该阅读以下内容:对于我的项目,我可以有一个集合,这个集合可以有产品,这个产品可以有属性,但在一个集合中,例如,产品将有所有属性可见,而在另一个集合中,产品将只有两个属性可见。但是我要做什么?现在我有一个表集合,集合包含,集合属性,产品和产品包含,但我像传统的RDBMS一样这样做。。。