使用 Cassandra Collections 可以吗?

Is it OK to use Cassandra Collections?

我看过很多博客告诉我不要使用 Cassandra COLLECTIONS。由于 UPDATE 操作也会创建 Tombstone,因此会影响性能。并且由于过多的墓碑可能导致应用程序死亡。

是否可以存储次要手机号码、用户电子邮件等更新较少的数据? 等等?

或者我是否应该使用 CSV 或 JSON 存储在 Varchar 中来避免收集?

是的,你可以使用collection

请记住 collection 有大小限制:

  • Collection(列表):collection 大小:2B (2^31);值大小:65535 (2^16-1)(Apache Cassandra™ 2.1 及更高版本,使用本机协议 v3)
  • Collection(套):collection尺寸:2B(2^31);值大小:65535 (2^16-1)(Apache Cassandra 2.1 及更高版本,使用本机协议 v3)
  • Collection(地图):collection 大小:2B (2^31);键数:65535 (2^16-1);值大小:65535 (2^16-1)(Apache Cassandra 2.1 及更高版本,使用本机协议 v3)

对于墓碑创建测试,假设您有 table

CREATE TABLE playlists (
    id uuid,
    song_order int,
    tags set<text>,
    PRIMARY KEY(id, song_order )
);

如果您使用以下更新语句,将创建墓碑

UPDATE playlists SET tags = {'1973'}
    WHERE id = 62c36092-82a1-3a00-93d1-46196ee77204 AND song_order = 1;

但是如果你使用下面的更新语句,将不会创建逻辑删除

UPDATE playlists SET tags = tags + {'1973'}
    WHERE id = 62c36092-82a1-3a00-93d1-46196ee77204 AND song_order = 1;