我在我们的用例中使用下表 -
create table test_new (
employee_id text,
employee_name text,
value text,
last_modified_date timeuuid,
primary key (employee_id, last_modified_date)
);
create index employee_name_idx on test_new (employee_name);
在我上面的表中,employee_id 总是从 1 到 32767 是唯一的。所以我们的查询模式是这样的:
- 给我任何employee_id的一切?
- 给我过去 5 分钟发生的变化的一切?
- 给我任何employee_name的一切?
我会将以下数据插入上表 -
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('1', 'e27', 'some_value', now());
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('2', 'e27', 'some_new_value', now());
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('3', 'e28', 'some_new_again_value', now());
我能够执行上述所有查询模式,但仍然存在一个问题。
我的问题是关于避免以下查询的这种特殊情况。如果,不知何故错误地尝试执行下面的查询。如果他们这样做,它将创建另一行,其中employee_id 为 1 和其他字段?如果 Cassandra 数据库中已经存在相同的employee_id,我不希望任何人再次插入它。
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('1', 'e29', 'some_new_value', now());
有什么想法吗?我知道这是一个有争议的情况,因为关于使用 RDBMS 与 Cassandra 的争论
而且在employee_name上创建索引会导致任何问题吗?在我的示例中,相同的employee_name 可以有多个employee_id 但具有不同的值。请记住,它employee_id
不会大于32767
so,这意味着最大行数将32767
在上表中。
我正在运行 Cassandra 1.2.9