在Cassandra中可以添加到地图的最大项目数是多少?
我们已经创建了一个名为user的表,其中fieldbook是一个映射,类型如下所示在Cassandra中可以添加到地图的最大项目数是多少?,cassandra,Cassandra,我们已经创建了一个名为user的表,其中fieldbook是一个映射,类型如下所示 CREATE TABLE user ( id uuid PRIMARY KEY, books map<text, frozen<book>>, issued frozen<map<text, boolean>>, createdat timestamp, lastmodified timestamp ); CREATE T
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
);
发布字段的数据类型是带有布尔值的映射
在cassandra教程中,地图集合的最大关键帧数为65535。。
这是否意味着我们只能在“已颁发”字段中添加65535个密钥
books字段是具有book类型的地图。最大密钥限制是否也适用于具有类型的映射。
或者我们可以在类型中添加任意数量的键。ie我们可以在books字段中添加超过65535个键吗
在使用数据库进行检查时,我们能够在现场记录簿下添加超过15万条记录,这是无法解释的
在上面的“用户”表中,有多少“书本”类型的数据可以插入到“书本”字段中?这取决于,您在发出的“是”中限制为65535个键,但也有实际限制。整个地图必须从磁盘上读取,并在读取时放入内存,因此当有很多地图时读取成本非常高。更好的替代方法是创建一个表,如:
CREATE TABLE user_books (
id uuid,
title text,
value book,
PRIMARY KEY ((id), title)
)
如果书的标题是集群键,那么用户可以在一次有效读取中获取所有书,如果结果太大,驱动程序可以翻页查看。您也不必担心64k限制
另一种选择是:
CREATE TABLE user (
id uuid,
user_created timestamp STATIC,
user_last_modified timestamp STATIC,
title text,
book_number uuid,
book_name text,
book_last_modified timestamp,
issued boolean,
PRIMARY KEY ((id), title)
);
您将在静态行中为每个用户id创建/上次修改,然后根据标题或图书id或其他内容对每本书进行排序。这是假设两个已发行/书籍具有相同的密钥。这样,您就可以读取/更新单个表中的所有内容,并且不会受到收集限制和性能影响