В чем разница между Google Cloud Bigtable и хранилищем данных Google Cloud Datastore/App Engine, и каковы основные практические преимущества/недостатки? AFAIK Cloud Datastore построен поверх Bigtable.
Google Cloud Bigtable vs Google Cloud Datastore
Ответ 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 | |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
Ответ 6
Относительно небольшая точка, которую следует учитывать, по состоянию на ноябрь 2016 года, большая библиотека python по-прежнему находится в Alpha, что означает, что будущее изменение может не совместимы с обратной совместимостью. Кроме того, большая библиотека python не совместима со стандартной средой App Engine. Вы должны использовать гибкий.
Ответ 7
Я только что нашел эту полезную аналогию, скрытую на длинной странице о возможной последовательности в документации Datastore (выделено мое):
Одной из практик является объединение Cloud Datastore и BigQuery для удовлетворения различных бизнес-требований. Используйте Cloud Datastore для оперативной обработки транзакций (OLTP), необходимой для базовой логики приложения, и используйте BigQuery для оперативной аналитической обработки (OLAP) для внутренних операций. Возможно, потребуется реализовать непрерывный поток экспорта данных из Cloud Datastore в BigQuery, чтобы переместить данные, необходимые для этих запросов.