将数据插入cassandra而不首先检查其存在性是否更好?

将数据插入cassandra而不首先检查其存在性是否更好?,cassandra,Cassandra,考虑到您不能在Cassandra中插入重复项(如果键相同),并且它只是覆盖现有数据,如果我必须在数据库中插入一行,但我不知道它是否已经存在,那么还是直接编写它更好,还是先检查它是否存在,如果不存在,再插入它 一天结束时的数据将是相同的,但我想知道,就性能而言,是否最好只写数据而不检查数据是否存在,或者先检查数据是否更快,并且仅在需要时插入数据 假设我的读复制因子设置为2,写复制因子设置为3 有人知道吗 非常感谢, 更新: 示例柱族如下所示: CREATE TABLE IF NOT EXISTS

考虑到您不能在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对应该是唯一的

您的数据结构看起来不错。正如您所说,Cassandra会覆盖现有PK上的数据,最好在不检查数据的情况下进行写入(独特的数据库交互->更好的性能)。请记住,Cassandra的写入效率更高。

这取决于给定的数据是否必须被历史化或更新。你能提供一些关于你的数据结构和业务规则的信息吗?@GuillaumeS当然。更新了问题。您的数据结构看起来不错。正如您所说,Cassandra会覆盖现有PK上的数据,最好在不检查数据的情况下进行写入(独特的数据库交互->更好的性能)。记住卡桑德拉的写作效率更高。@GuillaumeS谢谢。我就是这么想的。请将您的评论标记为答案,我会接受。理论上,您可以使用轻量级事务仅在数据不存在(如果不存在)时插入数据,但这会增加一些开销。我想说,除非你非常频繁地写这些数据,否则反复写应该是可以的。