Google Bigtable vs BigQuery для хранения большого количества событий


Фон

Мы хотели бы хранить наши неизменяемые события в (предпочтительно) управляемом сервисе. Средний размер одного события меньше 1 Кб, и мы имеем от 1 до 5 событий в секунду. Основная причина хранения этих событий заключается в том, чтобы иметь возможность воспроизвести их (возможно, с помощью сканирования таблиц), как только мы создадим будущие службы, которые могут быть заинтересованы в этих событиях. Поскольку мы находимся в облаке Google, мы, очевидно, рассматриваем сервисы Google как первый выбор.

Я подозреваю, что Bigtable хорошо подходит для этого, но согласно калькулятору цен это будет стоить нам более 1400 долларов в месяц (что для нас являетсябольшой сделкой):

Введите описание изображения здесь

Глядя на что-то вроде BigQuery выдает цену 3 доллара в месяц (если я не упускаю что-то существенное):

Введите описание изображения здесь

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

Вопросы

Можем ли мы использовать BigQuery для этого вместо Bigtable для снижения затрат? Например, BigQuery имеет что-то под названием streaming inserts, которое мне кажется, что мы могли бы использовать. Есть ли что-нибудь, что укусит нас в краткосрочной или долгосрочной перспективе, о чем я мог бы не знать, если бы пошел по этому пути?

5 16

5 ответов:

Bigtable отлично подходит для больших (>=1 ТБ) изменяемых наборов данных. Он имеет низкую задержку при загрузке и управляется Google. В вашем случае, я думаю, вы на правильном пути с BigQuery.

FYI

Cloud Bigtable не является реляционной базой данных; она не поддерживает SQL-запросы или соединения, а также многорядные транзакции. Кроме того, это не очень хорошее решение для небольших объемов данных (

Рассмотрим эти случаи: - Если вам нужна полная поддержка SQL для обработки транзакций в режиме онлайн (OLTP) система, рассмотрим Google Cloud SQL.

Если вам нужен интерактивный запрос в онлайн аналитической обработке (OLAP) система, рассмотрим Google BigQuery .

Если необходимо хранить неизменяемые большие двоичные объекты размером более 10 МБ, например большие изображения или фильмы, рассмотримоблачное хранилище Google .

Если вам нужно хранить высокоструктурированные объекты, или если вам требуется поддержка ACID транзакций и SQL-подобных запросов, рассмотрим облако Хранилище данных .

Общая стоимостьсводится к тому, как часто вы будете "запрашивать" данные . Если это резервная копия, и вы не слишком часто воспроизводите события, это будет очень дешево. Однако, если вам нужно воспроизводить его один раз в день, вы начинаете запускать сканирование 5$/TB слишком легко. Мы также были удивлены, насколько дешевыми были вставки и хранение, но это ofc, потому что Google ожидает, что вы будете запускать дорогие запросы в определенный момент времени на них. Однако вам придется разработать несколько вещей. Е. Г. Насколько мне известно потокового вставками у вас нет никаких гарантий того, что они будут записаны в таблицу, и вы должны часто опрашивать в хвосте списка, чтобы увидеть, действительно ли это было написано. Однако с помощью декоратора таблиц временных диапазонов можно эффективно выполнять слежение (не оплачивая сканирование всего набора данных).

Если вы не заботитесь о порядке, вы можете даже перечислить таблицу бесплатно. Тогда не нужно запускать "запрос".

Трудно суммировать лучше, чем это уже сделано Google - https://cloud.google.com/bigtable/docs/
Проверьте Cloud Bigtable и другие параметры хранения раздел

Я думаю, что вам нужно выяснить, как вы собираетесь использовать (воспроизводить) свои данные (события), и это может помочь вам в принятии окончательного решения.

Пока BigQuery выглядит лучшим выбором для вас

Эта блок-схема может помочь в выборе между различными предложениями Google cloud storage (отказ от ответственности! скопировал это изображение со страницы Google cloud)

Google Cloud - блок-схема принятия решений по опциям баз данных GCP

Если ваш usecase-это живая база данных (скажем, бэкэнд веб-сайта), BigTable - это то, что вам нужно (хотя это не на самом деле OLTP система). Если это больше похоже на аналитику данных/ datawarehouse, тоBigQuery - это то, что вам нужно.

Подумайте о OLTP vs OLAP; или, если вы знакомы с Cassandra и Hadoop, BigTable грубо приравнивается к Cassandra, BigQuery грубо приравнивается к Hadoop (согласен, не справедливое сравнение, но вы понимаете идею)

Https://cloud.google.com/images/storage-options/flowchart.svg

Пожалуйста, имейте в виду, что Bigtable не является реляционной базой данных, это решение noSQL без каких-либо функций SQL, таких как JOIN и т. д. Если вы хотите получить RDBMS OLTP, вам может понадобиться посмотреть на cloudSQL (mysql/ postgres) или гаечный ключ .

Cloud spanner относительно молод, но мощен и перспективен. По крайней мере, Google marketing утверждает, что его функции являются лучшими в обоих мирах (традиционные СУБД и noSQL)

Введите описание изображения здесь

Стоимостной Аспект

Стоимостной аспект уже хорошо освещен здесь https://stackoverflow.com/a/34845073/6785908

Я знаю, что это очень поздний ответ, но добавление его в любом случае может помочь кому-то еще в будущее.