【发布时间】:2015-04-28 18:20:11
【问题描述】:
我从 Datastax 学习 Cassandra。我对此有几个问题。请帮助我理解这些背后的逻辑。
假设,我有 2 张桌子。
1) 用户
First Name- Text
Last Name- Text
UserID - UUID PRIMARY KEY
2) 股票
Stock ID PRIMARY KEY
UserID
ColXYZ
现在我的疑问是:-
1) 我需要用first_name = 'XYZ' 过滤User 表。它是一个瓶颈,因为它不是 PM,因此我无法过滤它。这种架构背后有什么原因吗??
2) 既然我不能按 PM 以外的任何列进行过滤,我如何记住用户的 UUID?例如:-假设用户 XYZ 有一个 UUID 7892hbwdw81212ww (something),我如何首先知道用户 XYZ 的 UUID ???由于我无法按任何其他列过滤,我需要知道该用户的 UUID?我怎么会知道呢?
3) 由于RF>1,协调器根据拓扑将请求转发到不同的节点,然后根据最新的时间戳响应客户端。如果 1 模式响应缓慢并且该节点具有最新更新的数据怎么办?在那种情况下会发生什么?
4) 谁决定需要将数据复制到哪些节点?我知道协调器根据分区键将请求转发到需要存储数据的实际节点。但是数据会复制到哪些节点呢?
5) 此外,使用 Cassandra 本身就是一项艰巨的任务,因为我可以看到数据库设计是一项艰巨的任务。我们的模型设计应该是完美的(这对于像我这样的新手来说并不总是可能的),我们是否应该认真考虑 Cassandra 作为数据源??
【问题讨论】:
-
今后,请尽量将您的问题限制在一个实际问题上。