Google Cloud Bigtable vs Google Cloud Datastore

В чем разница между Google Cloud Bigtable и хранилищем данных Google Cloud Datastore/App Engine, и каковы основные практические преимущества/недостатки? AFAIK Cloud Datastore построен поверх Bigtable.

Ответ 1

Основываясь на опыте работы с Datastore и прочтении документации Bigtable, основные различия заключаются в следующем:

  • Изначально Bigtable был разработан для совместимости с HBase, но теперь имеет клиентские библиотеки на нескольких языках. Изначально Datastore был больше ориентирован на разработчиков веб-приложений на Python/Java/Go (первоначально App Engine)
  • Bigtable "немного больше IaaS", чем Datastore, поскольку он не "просто существует", а требует, чтобы был настроен кластер.
  • Bigtable поддерживает только один индекс - "ключ строки" (ключ сущности в хранилище данных)
    • Это означает, что запросы находятся на ключе, в отличие от индексированных свойств хранилища данных
  • Bigtable поддерживает атомарность только в одной строке - нет транзакций
  • Мутации и удаления, по-видимому, не являются атомарными в Bigtable, тогда как Datastore обеспечивает возможную и строгую согласованность, в зависимости от метода чтения/запроса
  • Модель биллинга очень отличается:
    • Сбор данных в хранилище данных за операции чтения/записи, хранение и пропускную способность
    • Bigtable взимает плату за "узлы", хранилище и пропускную способность

Ответ 2

Bigtable оптимизирован для больших объемов данных и аналитики

  • Cloud Bigtable не реплицирует данные по зонам или регионам (данные в одном кластере реплицируются и долговечны), что означает, что Bigtable быстрее и больше эффективны, а затраты значительно ниже, хотя он менее прочный и доступен в конфигурации по умолчанию.
  • Он использует HBase API - нет риска блокировки или новых парадигм для изучения.
  • Он интегрирован с инструментами Big Data с открытым исходным кодом, что означает, что вы можете анализировать данные, хранящиеся в Bigtable, в большинстве используемых клиентами инструментов аналитики (Hadoop, Spark и т.д.).
  • Bigtable индексируется одним Row Key
  • Bigtable находится в одной зоне

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

Datastore оптимизирован для обслуживания высокоценных транзакционных данных для приложений

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

Ответ 3

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

Bigtable и Datastore предоставляют очень разные модели данных и очень разные семантики в том, как данные изменяются.

Основное отличие заключается в том, что Datastore предоставляет транзакции ACID, подобные SQL-базе данных, на подмножествах данных, известных как группы сущностей (хотя язык запросов GQL гораздо более ограничительный, чем SQL). Bigtable строго NoSQL и имеет гораздо более слабые гарантии.

Ответ 4

Если вы читаете газеты, BigTable является это и Datastore является Мегамаркет. Хранилище данных - это BigTable плюс репликация, транзакция и индекс. (и намного дороже).

Ответ 5

Я постараюсь обобщить все приведенные выше ответы, а также то, что дано в Coursea Google Cloud Platform "Большие данные и основы машинного обучения".

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Проверьте это изображение тоже: enter image description here

enter image description here

Ответ 6

Относительно небольшая точка, которую следует учитывать, по состоянию на ноябрь 2016 года, большая библиотека python по-прежнему находится в Alpha, что означает, что будущее изменение может не совместимы с обратной совместимостью. Кроме того, большая библиотека python не совместима со стандартной средой App Engine. Вы должны использовать гибкий.

Ответ 7

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

Одной из практик является объединение Cloud Datastore и BigQuery для удовлетворения различных бизнес-требований. Используйте Cloud Datastore для оперативной обработки транзакций (OLTP), необходимой для базовой логики приложения, и используйте BigQuery для оперативной аналитической обработки (OLAP) для внутренних операций. Возможно, потребуется реализовать непрерывный поток экспорта данных из Cloud Datastore в BigQuery, чтобы переместить данные, необходимые для этих запросов.