BigTable оптимизация структуры загрузки данных - PullRequest
1 голос
/ 01 ноября 2019

Я загружаю данные в кластер BigTable (в настоящее время это экземпляр разработчика). Я использую клиент c ++ для размещения данных и вижу две разные схемы загрузки:

  1. Выполняем одну однорядную мутацию за раз, используя метод Apply класса Table
  2. Выполняем несколькомутации во времени с использованием метода BulkApply класса Table

Я ожидаю, что # 2 будет более эффективным, по крайней мере, с точки зрения использования сети, но я не знаю, есть ли какие-то другие оптимизациисторона BigTable, которая позволила бы улучшить производительность (например, лучшее сжатие, меньше нагрузка на процессор / ввод-вывод) по сравнению с вариантом № 1.

Определенно, вопрос заключается в следующем: стоит ли усложнять клиент BigTable для выполнениямассовые мутации или я должен немедленно запустить каждую мутацию и забыть о какой-либо другой оптимизации на стороне клиента?

1 Ответ

2 голосов
/ 01 ноября 2019

Как вы указали, при использовании BulkApply экономия сети. Существует также экономия с точки зрения количества процессоров в клиенте, меньше работы с запросами и ответами, а в случае с сервером Bigtable мутации, идущие в одну и ту же строку или в непрерывный диапазон строк, будут применяться в большом количестве.

Эта экономия будет зависеть весьманемного о распределении вставляемых данных, и сложность также зависит от того, как разработано ваше приложение. Клиент c ++ предлагает метод BulkApply, который должен упростить его:

https://github.com/googleapis/google-cloud-cpp/blob/master/google/cloud/bigtable/table_bulk_apply_test.cc#L59

Для вставки больших объемов данных пользователи Cloud Bigtable считают, что массовое применение того стоит, благодаря процессору узлаэкономия и большая пропускная способность.

...