Имеются ли в CQL3 определенные ограничения?
Так как существует два способа поддержки широких строк на CQL3... Один - использовать составные клавиши, а другой - использовать такие коллекции, как Map, List и Set. Метод составных клавиш может иметь миллионы столбцов (транспонированных к строкам). Это решение некоторых из наших вариантов использования.
Однако, если мы используем коллекции, я хочу знать, существует ли ограничение, что коллекции могут хранить определенное количество/количество данных (как раньше, когда Thrift C * поддерживает до 2 миллиардов столбцов подряд)
Ответы
Ответ 1
Помимо проблемы с производительностью, существует проблема с протоколом, которая ограничивает количество элементов, к которым вы можете получить доступ к 65536.
http://mail-archives.apache.org/mod_mbox/cassandra-user/201305.mbox/%[email protected].com%3E
Ответ 2
Настоятельно рекомендуется хранить только ограниченный объем данных в коллекциях и картах.
Причины:
-
Коллекции и карты взяты целиком целиком. Ты не можешь
"ломтик" на коллекциях, поэтому множество данных в коллекциях/картах
окажет влияние на perf при чтении их
-
Реализация списков CQL3 не выполняется для
вставка/удаление в середине списка. Для добавления/добавления
операций, это довольно быстро. Для элемента ввода/удаления по индексу
i, для этого потребуется чтение перед записью. В основном, часть списка
будут переписаны, потому что их нужно перевести на хороший индекс
-
Вставка/удаление для Set и Map более эффективны, поскольку они используют
ключ столбца для хранения/сортировки/индексирования
Теперь, чтобы ответить на ваш вопрос, существует ли жесткий лимит на количество элементов в коллекции/карте, ответ нет, технически нет предела, кроме классического предела в 2 миллиарда, который уже существует в Thrift да, он ограничен 65536, как упоминалось выше, GlynD.
Связанная JIRA CASSANDRA-5428
Ответ 3
Пересмотренные незамерзшие ограничения, связанные с коллекцией, после CASSANDRA-5428 было разрешено в версии 2.1 и при использовании версии 3 или более поздней версии собственного протокола:
======+==========+================+================
TYPE | SIZE | # KEYS | VALUE SIZE
======+==========+================+================
List | 2B (231) | n/a | 65,535 (216-1)
Set | 2B (231) | n/a | 65,535 (216-1)
Map | 2B (231) | 65,535 (216-1) | 65,535 (216-1)
======+==========+================+================
Клиенты, подключающиеся через Trrift и более ранние версии родного протокола C *, по-прежнему ограничены соответствующими транспортными средствами.
Ответ 4
В дополнение к ограничению 64k элементов в коллекции, http://www.datastax.com/documentation/cql/3.1/cql/cql_using/use_collections_c.html:
Это ДВА ограничения:
Максимальный размер элемента ограничен до 64k (максимальное значение невыполненного короткого)
Количество элементов в коллекциях ограничено до 64K (максимальное значение невыполненного короткого)
Ответ 5
Также коллекции сериализуются, поэтому это увеличивает накладные расходы. См. Также CASSANDRA-5428.