#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 в виде столбца.