В чем разница между BigQuery и BigTable? [закрыто]

85

Есть ли причина, по которой кто-то может использовать BigTable вместо BigQuery? Оба, похоже, поддерживают операции чтения и записи, причем последняя предлагает также расширенные операции «Запрос».

Мне нужно разработать партнерскую сеть (поэтому мне нужно отслеживать клики и «продажи»), поэтому меня смущает разница, потому что bigQuery кажется просто bigTable с улучшенным API.

Пользователь без шляпы
источник
Я бы сказал, что BigTable больше похож на низкоуровневое и менее управляемое облачное хранилище данных для людей, которым нужна более высокая производительность.
dyeray 07
1
Этот прошлый поток SO тоже может помочь: stackoverflow.com/questions/34437572/…
Эллиот Броссард,
@dyeray да, я знаю это, но есть ли причина для кого-то поддерживать одни и те же данные как в BigTable, так и в BigQuery, а не только в BigQuery?
Пользователь без шляпы
BigTable очень хорош для поиска в одной строке или небольшом диапазоне. BigQuery отлично справляется с общей картиной. Если вам нужна аналитика с эффективной детализацией, используйте BigQuery для крупномасштабной аналитики и BigTable для аналитики в небольших диапазонах.
Соломон Дускис,
Сравнение свойств системы Google BigQuery, Google Cloud Bigtable и Google Cloud Datastore. ! image (Заявление об ограничении ответственности! Скопировано с db-engines.com)
Le

Ответы:

110

В основном разница заключается в следующем:

BigQuery - это механизм запросов для наборов данных, которые не сильно меняются или изменяются путем добавления. Это отличный выбор, когда ваши запросы требуют «сканирования таблицы» или просмотра всей базы данных. Подумайте о суммах, средних, подсчетах и ​​группировках. BigQuery - это то, что вы используете, когда собрали большой объем данных и вам нужно задать вопросы по этому поводу.

BigTable - это база данных. Он разработан, чтобы стать основой для большого масштабируемого приложения. Используйте BigTable, когда вы создаете любое приложение, которое должно читать и записывать данные, а масштабирование является потенциальной проблемой.

Майкл Манучехри
источник
2
во втором абзаце - вы имели в виду Use BigTable: о)
Михаил Берлянт
@MikhailBerlyant, спасибо, отредактировал
Michael Manoochehri
4
Здесь немного неудачного соглашения об именах со стороны Google. Когда я обычно думаю о SQL, я думаю о табличной структуре данных, тогда как, когда я думаю о запросах, я думаю о типе базы данных типа ключ-значение или поиске. В этом случае BigTable не использует SQL, тогда как база данных BigQuery Sql.
Максуд
@Michael Manoochehri cloud.google.com/bigquery/… пожалуйста, прочтите цитату ниже:
gstackoverflow
Вы можете предоставить доступ к постоянной внешней таблице пользователям (включая учетные записи служб) или группам. Чтобы запросить внешнюю таблицу, вашим пользователям или группам необходимо предоставить (как минимум): роль bigquery.dataViewer на уровне набора данных или выше для доступа к набору данных, который содержит внешнюю таблицу ; роль bigquery.user на уровне проекта или выше для выполнения заданий запросов Роль bigtable.reader в Cloud Bigtable, которая обеспечивает доступ только для чтения к метаданным и таблицам
gstackoverflow
87

Google Cloud - блок-схема выбора вариантов базы данных GCP

Это может немного помочь в выборе между различными хранилищами данных, которые предлагает Google Cloud (Отказ от ответственности! Скопировано со страницы Google Cloud)

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

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

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

Запись

Помните, что Bigtable не является реляционной базой данных и не поддерживает запросы SQL илиJOIN , а также многострочные транзакции. Кроме того, это не лучшее решение для небольших объемов данных. Если вам нужна OLTP РСУБД, вам может потребоваться CloudSQL (mysql / postgres) или гаечный ключ.

Перспектива затрат

https://stackoverflow.com/a/34845073/6785908 . Цитирование соответствующих частей здесь.

Общая стоимость сводится к тому, как часто вы будете «запрашивать» данные. Если это резервная копия, и вы не слишком часто воспроизводите события, это будет очень дешево. Однако, если вам нужно воспроизводить его ежедневно один раз, вы очень легко начнете запускать сканирование 5 долларов за ТБ. Мы также были удивлены дешевизной вставки и хранения, но это происходит потому, что Google ожидает, что вы в какой-то момент будете выполнять по ним дорогостоящие запросы. Однако вам придется спроектировать несколько вещей. Например, потоковые вставки AFAIK не имеют никаких гарантий записи в таблицу, и вам нужно часто опрашивать хвост списка, чтобы увидеть, действительно ли он был записан. Тем не менее, отследить можно эффективно с помощью декоратора таблицы временного диапазона (не платя за сканирование всего набора данных).

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

Редактировать 1

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

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

такой случайный чувак
источник
Вы можете предоставить доступ к постоянной внешней таблице пользователям (включая учетные записи служб) или группам. Чтобы запросить внешнюю таблицу, вашим пользователям или группам необходимо предоставить (как минимум): роль bigquery.dataViewer на уровне набора данных или выше для доступа к набору данных, который содержит внешнюю таблицу; роль bigquery.user на уровне проекта или выше для выполнения заданий запросов. Роль bigtable.reader в Cloud Bigtable, которая обеспечивает доступ только для чтения к метаданным и таблицам
gstackoverflow
Я взял приведенную выше цитату с сайта cloud.google.com/bigquery/… . Почему для доступа к bigtable мне нужно разрешение, содержащее слово bigquery ?
gstackoverflow
-3

BigQuery и Cloud Bigtable - это не одно и то же. Bigtable - это база данных NoSQL на основе Hadoop, тогда как BigQuery - это хранилище данных на основе SQL. У них есть определенные сценарии использования.

Очень коротко и просто;

  • Если вам не требуется поддержка транзакций ACID или если ваши данные не очень структурированы, рассмотрите Cloud Bigtable.
  • Если вам нужны интерактивные запросы в системе онлайн-аналитической обработки (OLAP), рассмотрите BigQuery.
Чиро
источник
5
Bigtable - это не база данных NoSQL на основе Hadoop, это фактически противоположность - на основе официального документа Bigtable был создан HBase (NoSQL на основе Hadoop). Из-за этого у них одинаковый (одинаковый?) API.
Игорь Дворжак