Bigtable / HBase: богатое семейство столбцов против одного объекта JSON

Я хочу хранить довольно большой объем данных в Google Cloud Bigtable (несколько петабайт) для обслуживания. Я планирую получить доступ к данным, используя первичный ключ, иногда с помощью запроса префикса ключа.

Обновление данных не планируется. Добавляется только к существующим таблицам.

Мой вопрос: поскольку я не использую ни один из своих столбцов для фильтрации / запроса / сортировки своих запросов (что в любом случае невозможно в Bigtable), есть ли какие-либо преимущества в хранении моих данных в отдельных столбцах, а не в одном документе JSON на строку?

Спасибо!


person Forepick    schedule 19.06.2016    source источник


Ответы (1)


Уведомление: я возглавляю управление продуктами для Cloud Bigtable.

Если вы не планируете извлекать или обновлять данные с детализацией по столбцам, ваш план хранения документа JSON в виде одного значения подойдет, особенно потому, что если вы храните данные по столбцам, само имя семейства столбцов (и квалификатор ) также необходимо хранить в каждой строке, что увеличивает накладные расходы на хранилище, которые пропорциональны количеству значений и, следовательно, могут иметь значение в вашем масштабе. В своей модели вы будете использовать Bigtable просто как хранилище ключей и значений.

Если вы все же решите разбить JSON на множество столбцов в будущем, вы можете добавить дополнительные семейства столбцов в существующую таблицу Bigtable (или просто использовать дополнительные квалификаторы столбцов в существующем семействе столбцов) и переписать свои данные с помощью параллельного процесса, например Hadoop MapReduce или Google Cloud Dataflow.

Боковое примечание: JSON очень подробный и занимает немного места; хотя вы можете предварительно сжать его самостоятельно, Cloud Bigtable сжимает данные изначально (прозрачно), чтобы помочь смягчить это. Тем не менее, одна из альтернатив, которую следует рассмотреть, - это буферы протокола или другое двоичное кодирование для более эффективного использования пространства. .

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

Пожалуйста, посетите страницу производительности Bigtable, чтобы получить приблизительную оценку производительности, которую вы должны ожидать от узла сервера Bigtable. , но вы должны сравнить свои конкретные шаблоны чтения / записи, чтобы установить базовые нормы и соответственно масштабировать.

Удачи в вашем проекте!

person Misha Brukman    schedule 05.07.2016