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一样这样做。。。