Кассандра Таймсери Датамодель

Предположим 10 устройств (dev01,dev02,dev03..etc).

Он отправляет данные с некоторым интервалом времени, мы собираем эти данные, поэтому наша схема данных

 dev01      :int
 signalname :string
 signaltime :date/time[with YY-MM-DD HHMMSS.mm]
 Extradata  :String

Я хочу отправить данные в Кассандру, какой способ лучше всего хранить эти данные?

Мой запрос похож,

1 Вам нужно получить данные текущего дня на основе устройства или с каким-то диапазоном дат?

2 5 Данные текущего дня устройства?

Я не уверен, что следующий способ хранения данных в кассадре - лучшая модель

Standard columnfamily Name:signalname
row key                   :dev01
columnname                :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue               :Json data
columnname                :timeseries(20120801124205)[YYMMDD HHMMSS][next second data]
columnvalue               :Json data

row key               :dev02
columnname            :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue           :Json data
columnname            :timeseries(20120801124205)[YYMMDD HHMMSS][next second data]
columnvalue           :Json data

Or  

Super columnfamily   :signalname
row key              :Clientid1

supercolumnname      :dev01
columnname           :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue          :Json data

supercolumnname      :dev02
columnname           :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue          :Json data


row key              :Clientid2

supercolumnname      :dev03
columnname           :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue          :Json data

supercolumnname      :dev04
columnname           :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue          :Json data

Пожалуйста, помогите мне в этом вопросе, Любой другой способ?

Спасибо и С уважением, Каннадхасан

1 ответ

Решение

Я вижу 3 проблемы с вашим подходом, которые я рассмотрю ниже:

  • семейства суперколонок,
  • бережливость против cql3,
  • Данные JSON как значения ячеек.

Прежде чем вы начнете: использование семейств столбцов super не рекомендуется. Узнайте больше здесь. Композитные клавиши (как описано ниже) - путь.

Кроме того, вам может понадобиться прочитать CQL3, так как Thrift является устаревшим API начиная с 1.2.

Вместо хранения данных JSON вы можете использовать собственные типы данных коллекции, такие как списки, карты и т. Д. Если вы все еще хотите работать с JSON, в Cassandra появилась улучшенная поддержка JSON, начиная с версии 2.2.

В общем, это довольно просто сделать запрос на устройство и за период времени:

  • ключ строки - это идентификатор устройства, а ключ столбца - timeuuid.
  • Чтобы избежать горячих точек, вы можете добавить счетчики "корзины" к ключу строки (создать составной ключ строки / раздела), чтобы вращать узлы
  • Затем вы можете запросить временные диапазоны, если вам известен идентификатор строки / устройства.

В качестве альтернативы вы можете использовать свой тип сигнала в качестве ключа строки (и timeuuid/timestamp в качестве ключа столбца), если вы хотите запрашивать данные для нескольких устройств (но одного типа события) одновременно. Узнайте больше о данных временных рядов в Кассандре в этой записи блога.

Надеюсь, это поможет!

Другие вопросы по тегам