如何在cassandra cql中使用2个或更多表进行连接查询

Blu*_*ark 29 cql cassandra

我是cassandra的新手.在这里,我有两个表EVENTSTOWER.我需要加入那些查询.但我无法做到这一点.

EVENTS表结构:

eid int PRIMARY KEY,
a_end_tow_id text,
a_home_circle text,
a_home_operator text,
a_imei text,
a_imsi text,
Run Code Online (Sandbox Code Playgroud)

TOWER表结构:

 tid int PRIMARY KEY,
 tower_address_1 text,
 tower_address_2 text,
 tower_azimuth text,
 tower_cgi text,
 tower_circle text,
 tower_id_no text,
 tower_lat_d text,
 tower_long_d text,
 tower_name text,
Run Code Online (Sandbox Code Playgroud)

现在,我想加入这些表就EIDTID这样我就可以获取两个表的数据.

Lyu*_*rov 62

卡桑德拉=没有加入.您的模型是100%关系型的.你需要为Cassandra重新思考它.我建议你看看这些幻灯片.他们深入研究如何为cassandra建模数据.这里还有一个关于该主题的网络研讨会.但是不要再考虑外键和连接表了,因为如果你需要关系,cassandra不是工作的工具.

但为什么?
因为那时你需要检查一致性并执行关系数据库所做的许多其他事情,因此你失去了cassandra提供的性能和可伸缩性.

我能做什么?
非规范化!一张表中有大量数据?但是这个表会有太多列!
所以?Cassandra可以处理表中的大量列.

您可以做的另一件事是模拟客户端应用程序中的连接.匹配代码中的两个数据集,但这将非常慢,因为您必须迭代所有信息.

另一种方法是执行多个查询.选择所需的事件,然后选择匹配的塔.


May*_*hav 5

有几种方法可以在Cassandra中将表连接在一起并查询它们.但是,当然你必须重新考虑数据模型部分.

  1. Apache Spark的SparkSQL ™与Cassandra(开源或DataStax Enterprise - DSE)一起使用.
  2. 使用DataStax提供的带Cassandra和DSE的ODBC连接器.