Cassandra标记或哈希值
我在Cassandra中有一个名为Cassandra标记或哈希值,cassandra,cql,Cassandra,Cql,我在Cassandra中有一个名为StudentId的列作为主键的student表。此列中的两个值是否可以具有相同的令牌/哈希值 表结构 |-----------|-------------| |StudentId |主键| |FName|| |FName|| |-----------|-------------| 所以我想我明白了你想问的问题。当确定数据分布时,分区键(主键的第一部分)被散列以获得令牌。然后将该行写入负责该特定令牌范围的节点 至于具有相同的散列值,重要的是要注意Cassand
StudentId
的列作为主键的student表。此列中的两个值是否可以具有相同的令牌/哈希值
表结构
|-----------|-------------|
|StudentId |主键|
|FName||
|FName||
|-----------|-------------|
所以我想我明白了你想问的问题。当确定数据分布时,分区键(主键的第一部分)被散列以获得令牌。然后将该行写入负责该特定令牌范围的节点
至于具有相同的散列值,重要的是要注意Cassandra中的主键是唯一的。因此,要具有相同的哈希标记值,行必须具有相同的分区键,这是不可能的
为了演示这一点,我重新创建了您的表并插入了几行:
CREATE TABLE student (
studentid TEXT PRIMARY KEY,
fname TEXT,
lname TEXT);
INSERT INTO student (studentid, fname, lname) VALUES ('aploetz','Aaron','Ploetz');
INSERT INTO student (studentid, fname, lname) VALUES ('aploetz','Avery','Ploetz');
INSERT INTO student (studentid, fname, lname) VALUES ('janderson','Jordy','Anderson');
INSERT INTO student (studentid, fname, lname) VALUES ('mgin','Micah','Gin');
现在,我将使用分区键(studentid)上的标记函数查询该表:
注:
- 在分区键上使用
token
函数时,我可以看到散列的令牌值,因此我可以确定集群中哪些节点将包含此数据
- 我插入的前两个学生有不同的名字,但他们的
studentid
是相同的aploetz
。由于主键是唯一的,所以只有一个是持久的
- 埃弗里·普洛埃茨的争吵“赢了”,就像上次写的那样
如果您需要任何进一步的解释,请告诉我,但我希望这有助于回答您的问题。因此,我想我明白您想问的问题。当确定数据分布时,分区键(主键的第一部分)被散列以获得令牌。然后将该行写入负责该特定令牌范围的节点
至于具有相同的散列值,重要的是要注意Cassandra中的主键是唯一的。因此,要具有相同的哈希标记值,行必须具有相同的分区键,这是不可能的
为了演示这一点,我重新创建了您的表并插入了几行:
CREATE TABLE student (
studentid TEXT PRIMARY KEY,
fname TEXT,
lname TEXT);
INSERT INTO student (studentid, fname, lname) VALUES ('aploetz','Aaron','Ploetz');
INSERT INTO student (studentid, fname, lname) VALUES ('aploetz','Avery','Ploetz');
INSERT INTO student (studentid, fname, lname) VALUES ('janderson','Jordy','Anderson');
INSERT INTO student (studentid, fname, lname) VALUES ('mgin','Micah','Gin');
现在,我将使用分区键(studentid)上的标记函数查询该表:
注:
- 在分区键上使用
token
函数时,我可以看到散列的令牌值,因此我可以确定集群中哪些节点将包含此数据
- 我插入的前两个学生有不同的名字,但他们的
studentid
是相同的aploetz
。由于主键是唯一的,所以只有一个是持久的
- 埃弗里·普洛埃茨的争吵“赢了”,就像上次写的那样
如果您需要任何进一步的解释,请告诉我,但我希望这有助于回答您的问题