Яка різниця між Google Cloud Bigtable та сховищем даних Google Cloud Datastore / App Engine, і які основні практичні переваги / недоліки? Cloud Datastore AFAIK будується на вершині Bigtable.
Яка різниця між Google Cloud Bigtable та сховищем даних Google Cloud Datastore / App Engine, і які основні практичні переваги / недоліки? Cloud Datastore AFAIK будується на вершині Bigtable.
Відповіді:
На основі досвіду роботи з Datastore та читання документів Bigtable , основними відмінностями є:
Cloud Bigtable розроблений для великих компаній та підприємств, які часто мають великі потреби в даних із складними навантаженнями.
Bigtable і Datastore надзвичайно різні. Так, сховище даних будується на вершині Bigtable, але це не робить його подібним. Це начебто сказати, що машина побудована на колесах, і тому машина не сильно відрізняється від коліс.
Bigtable і Datastore забезпечують дуже різні моделі даних і дуже різну семантику в зміні даних.
Основна відмінність полягає в тому, що Datastore забезпечує трансляцію ACID-подібних SQL-транзакцій на підмножини даних, відомі як групи сутностей (хоча мова запитів GQL набагато більш обмежує, ніж SQL). Bigtable суворо NoSQL і має набагато слабкіші гарантії.
Якщо ви читаєте документи, BigTable - це це, а Datastore - MegaStore . Datastore - це BigTable плюс реплікація, транзакція та індекс. (і набагато дорожче).
Я спробую узагальнити всі відповіді, наведені вище, а також те, що наведено у програмі Coursea Google Cloud Platform Big Data and Machine Learning.
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| 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 | |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
Відносно незначний момент, який слід враховувати, станом на листопад 2016 року, бібліотека клієнтів python з великими таблицями все ще знаходиться в Альфа, а це означає, що майбутні зміни можуть бути не сумісними назад. Крім того, бібліотека python з великими таблицями не сумісна зі стандартним середовищем App Engine. Ви повинні використовувати гнучку.
Це може бути ще один набір ключових відмінностей між Google Cloud Bigtable та Google Cloud Datastore разом з іншими службами. Вміст, показаний на зображенні нижче, також може допомогти вам у виборі потрібної послуги.
Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.
Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.
Datastore - це більш готовий додаток і підходить для широкого спектру послуг, особливо для мікросервісів.
Основна технологія Datastore - це Big Table, тому ви можете уявити, що Big Table є більш потужним.
Datastore постачається з 20 Кб вільної роботи на день, ви можете розраховувати розмістити сервер із надійною БД із вартістю ZERO.
Ви також можете ознайомитись з цією бібліотекою ORM Datastore, вона має багато чудових функцій https://www.npmjs.com/package/ts-datastore-orm