Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Cassandra中可以添加到地图的最大项目数是多少?_Cassandra - Fatal编程技术网

在Cassandra中可以添加到地图的最大项目数是多少?

在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

我们已经创建了一个名为user的表,其中fieldbook是一个映射,类型如下所示

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或其他内容对每本书进行排序。这是假设两个已发行/书籍具有相同的密钥。这样,您就可以读取/更新单个表中的所有内容,并且不会受到收集限制和性能影响