Имеются ли в CQL3 определенные ограничения?

Так как существует два способа поддержки широких строк на CQL3... Один - использовать составные клавиши, а другой - использовать такие коллекции, как Map, List и Set. Метод составных клавиш может иметь миллионы столбцов (транспонированных к строкам). Это решение некоторых из наших вариантов использования.

Однако, если мы используем коллекции, я хочу знать, существует ли ограничение, что коллекции могут хранить определенное количество/количество данных (как раньше, когда Thrift C * поддерживает до 2 миллиардов столбцов подряд)

Ответ 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.