我们已经创建了一个名为“user”的表,其中字段“books”是一个带有“type”的Map,如下所示
CREATE TABLE user (
id uuid PRIMARY KEY,
books map<text, frozen<book>>,
issued frozen<map<text, boolean>>,
createdat timestamp,
lastmodified timestamp
);
CREATE TYPE book (
number uuid,
name text,
lastmodified timestamp
);
“issued”字段的数据类型是带有布尔值的“map”。
在cassandra教程中,有这样一句话:“Map集合的最大键数是65535。”。这是否意味着我们只能在“已颁发”字段中添加65535个密钥?。
“books”字段是带有book“type”的Map。最大密钥限制是否也适用于具有“类型”的Map。或者我们可以在“type”中添加任意数量的键。我们能在“books”字段中添加超过65535个键吗?
在使用数据库进行检查时,我们能够在“books”字段下添加超过15万条记录,这是无法解释的。
在上面的“user”表中,有多少“book”类型的数据可以插入到“books”字段中?
1条答案
按热度按时间j2cgzkjk1#
“视情况而定”,你的有限的65535钥匙在发行是的,但也有实际的限制。整个Map必须从磁盘上读取,并在读取时放入内存中,因此在有很多Map的情况下读取非常昂贵。更好的选择实际上是创建一个如下表:
如果书的标题是集群键,那么您可以通过一次高效的读取由用户获取所有的书,如果结果太大,驱动程序可以翻页查看结果。你也不必担心64k的限制。
另一种选择是:
您将在静态行中为每个用户id创建/最后修改一个,然后按标题(或图书id等)对每本书进行排序。这是假设两本发行的书有相同的密钥。这样,您就可以读取/更新单个表中的所有内容,并且不会受到收集限制和性能影响。