Моделирование данных Cassandra, когда столбцы динамические - PullRequest
0 голосов
/ 01 апреля 2020

Я борюсь с моделированием данных в Кассандре, где у меня разные атрибуты для разных организаций. Поскольку было бы любое количество атрибутов, я не могу смоделировать динамическое число столбцов в схеме. Во-вторых, когда я использую карту для этого, я не могу запросить эти атрибуты или проиндексировать их и т. Д. c. Я что-то упускаю или это ограничение в Кассандре?


Сценарий

одна организация выбирает определенные c атрибуты для сбора данных, и они могут изменить эти атрибуты в любое время. Когда они меняются, количество атрибутов и название атрибутов изменяются. Если раньше мы собирали данные для att1,attr2,attr3, то теперь мы собираем attr4,attr5,attr6,attr7,attr8,attr9. И это может быть изменено в любое время для любой организации. Кроме того, организация будет активно искать эти атрибуты.

  1. Как мы можем смоделировать такой сценарий в Кассандре.
  2. Если это ограничение, какие могут быть альтернативы Кассандры, где мы читаем / пишем (в основном пишем и часто читаем . Не обновляем / удаляем ) мастерство.
  3. Нужно ли комбинировать какие-либо другие рамки с кассандрой? как Lucene et c

Заранее спасибо.

1 Ответ

0 голосов
/ 01 апреля 2020

В этом случае действительно требуется больше информации о выполняемых запросах, например, c.

, в простейшем случае просто добавьте имя атрибута в качестве столбца кластеризации в дополнение к существующему, например:

create table tbl (
  id int,
  collected timestamp,
  attr_name text,
  attr_value int,
  primary key(id, collected, attr_name);

в этом случае вы можете выбрать либо отдельный атрибут, если вы делаете

select * from tbl where id = ... and collected = ... and attr_name = 'attrX';

, либо вы можете выбрать все атрибуты, просто пропустив attr_name:

select * from tbl where id = ... and collected = ...;

но это будет работать только тогда, когда все значения атрибутов имеют одинаковый тип данных. Если они могут отличаться, вам может понадобиться добавить больше полей для каждого типа данных.

...