32

我是卡桑德拉的新手。在这里,我有两张桌子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,

表结构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,

现在,我想加入这些表,EID以便TID我可以获取两个表的数据。

4

3 回答 3

80

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

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

我能做些什么?
去规范化!一张表有很多数据?但是表格会有太多的列!
所以?Cassandra 可以处理表中的大量列。

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

另一种方法是执行多个查询。选择您想要的事件,然后选择匹配的塔。

于 2013-06-22T11:45:27.343 回答
7

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

  1. Apache Spark 的 SparkSQL ™ 与 Cassandra 一起使用(开源或 DataStax Enterprise – DSE)。
  2. DataStax 提供的 ODBC连接器与 Cassandra 和 DSE 一起使用。
于 2015-06-23T05:40:29.513 回答
0

PlayOrm 是使用特殊可扩展 SQL 语言在可扩展系统上进行连接的好选择,您可以在其中连接分区(即,您永远不想将 10 亿行与另外 10 亿行连接)。它有大量的 noSQL 模式,完全脱离了休眠和 JPA,在需要时通过客户端连接来模拟 noSQL 模式。

于 2013-06-24T13:56:53.270 回答