鉴于您无法在Cassandra中插入重复项(如果密钥相同)并且它只是覆盖现有数据,如果我必须在数据库中插入一行我实际上不知道是否它已经存在,无论如何只是写它是否更好,或者我应该检查它是否存在,如果它不存在,插入它?
一天结束时的数据将是相同的,但我想知道,在性能方面,是否更好地简单地编写数据而不检查其存在,或者是否更快检查它并且仅在需要时插入
想象一下,我的读取复制因子设置为2,写入设置为3。
有人知道吗?
非常感谢,
更新
样本列系列是这样的:
CREATE TABLE IF NOT EXISTS notifications (
userid uuid,
deviceid uuid,
devicename text,
PRIMARY KEY(userid, deviceid)
);
此列系列的目的是捕获在向我们发送MQ通知时将使用的设备ID /用户名。每次用户登录时,我都必须确保捕获设备ID,因为这是我用来通知他们的。由于用户可以从大量设备登录,每个用户的数据库中可以有多个userid / deviceid对,但userid / deviceid对应该是唯一的。
答案 0 :(得分:2)
您的数据结构看起来不错。如你所说,Cassandra覆盖现有PK的数据,最好在不检查数据的情况下编写(独特的数据库交互 - >更好的性能)。请记住,Cassandra在写作时效率更高。