Сохранение JSON в HBase и запрос по идентификатору

#hbase

#hbase

Вопрос:

Правильно ли я сохраняю данные JSON в HBase?

  put 'messages', 123, 'cf:json', '{"foo":"bar"}'
  

В принципе, мне нужно запросить его по идентификатору, который в моем примере равен 123. А JSON — это строка переменной длины.

Ответ №1:

Нет проблем с сохранением JSON в значении ячейки. Размеры ячеек до 5 М по-прежнему приемлемы. Хотя, вообще говоря, рекомендуется сохранять размеры ключа и столбца небольшими (http://hbase.apache.org/book.html#keysize ) и JSON, будучи более компактным, чем XML, по-прежнему является расточительным форматом (по сравнению с двоичным JSON, Thrift, Avro, MessagePack и т.д.). Если вы остаетесь с JSON, вам может потребоваться рассмотреть возможность сжатия семейства столбцов

Комментарии:

1. Привет! Клиент использует обычный JSON, поэтому, если я использую BSON или любой другой двоичный формат, это приведет к дополнительным затратам на преобразование. Может быть, лучше вместо этого добавить сжатие семейства столбцов?

2. О каком размере таблиц вы говорите?

3. если ваши JSON не слишком большие, это не должно быть проблемой. Вы можете начать с этого и добавить семейство сжатых столбцов (и перенести) позже

4. Если нам нужно выполнить запрос в строке json, например, где foo=’bar’ в приведенном выше примере, можем ли мы сделать это в hbase

5. @ruby, у нас есть аналогичное требование, и мы думали, поместить ли весь json в один столбец или создать новое семейство столбцов и сохранить каждый ключ json в виде столбца.