gpt4 book ai didi

cassandra - 在 Cassandra 中选择两个表

转载 作者:行者123 更新时间:2023-12-05 04:14:52 24 4
gpt4 key购买 nike

我将 Cassandra 用于一个项目,这是我的第一个项目。,我正在尝试对两个表执行一个简单的请求,但这不起作用...

我想做这样的事情:

Select * from table1, table2 where table1.test = test and table2.test2 = 123;

是否可以在 Cassandra 中请求两个表?我该怎么做?

谢谢

最佳答案

I'm trying to do a simple request on two tables

您尝试执行的操作称为“分布式连接”,Cassandra 专门设计用于防止您执行此操作。

解决这类问题的方法是使用称为反规范化 的过程。假设您有两个简单的表 carMakecarModel:

 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”品牌的所有车型,我将执行 JOIN 查询。但是对于 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 会根据需要进行复制。您会注意到在结果集中指定了 3 次“Ford”。如果您有 13 种福特车型的数据,您将存储“福特”的值 13 次。
  • Cassandra 中的主键是唯一的。我将 carid 添加为 PRIMARY KEY 的一部分,以确保每个 model 的唯一性,否则每个 make 的 INSERT 都会覆盖自身。

关于cassandra - 在 Cassandra 中选择两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33981408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com