Google Cloud Bigtable vs Google Cloud Datastore

124

Apa perbedaan antara Google Cloud Bigtable dan Google Cloud Datastore / App Engine datastore, dan apa keuntungan / kerugian praktis utama? AFAIK Cloud Datastore dibangun di atas Bigtable.

Andrei F
sumber
8
Tolong jangan tutup. saat ini tidak ada dokumentasi resmi tentang ini dan google kemungkinan akan berkomentar di sini.
Zig Mandel

Jawaban:

97

Berdasarkan pengalaman dengan Datastore dan membaca dokumen Bigtable , perbedaan utamanya adalah:

  • Bigtable awalnya dirancang untuk kompatibilitas HBase, tetapi sekarang memiliki perpustakaan klien dalam berbagai bahasa . Datastore awalnya lebih diarahkan pada pengembang aplikasi web Python / Java / Go (awalnya App Engine)
  • Bigtable 'sedikit lebih IaaS' daripada Datastore karena tidak 'hanya di sana' tetapi membutuhkan cluster untuk dikonfigurasi .
  • Bigtable hanya mendukung satu indeks - 'kunci baris' (kunci entitas di Datastore)
    • Ini berarti kueri ada di Key, tidak seperti properti terindeks Datastore
  • Bigtable mendukung atomicity hanya pada satu baris - tidak ada transaksi
  • Mutasi dan penghapusan tampaknya tidak bersifat atomik di Bigtable, sedangkan Datastore memberikan konsistensi yang kuat dan kuat, bergantung pada metode baca / kueri
  • Model penagihan sangat berbeda:
    • Datastore mengenakan biaya untuk operasi baca / tulis, penyimpanan, dan bandwidth
    • Biaya Bigtable untuk 'node' , penyimpanan, dan bandwidth
tx802
sumber
98

Bigtable dioptimalkan untuk volume data dan analitik yang tinggi

  • Cloud Bigtable tidak mereplikasi data lintas zona atau region (data dalam satu cluster direplikasi dan tahan lama), yang berarti Bigtable lebih cepat dan lebih efisien, serta biayanya jauh lebih rendah, meskipun kurang tahan lama dan tersedia dalam konfigurasi default
  • Ini menggunakan HBase API - tidak ada risiko terkunci atau paradigma baru untuk dipelajari
  • Ini terintegrasi dengan alat Big Data sumber terbuka, artinya Anda dapat menganalisis data yang disimpan di Bigtable di sebagian besar alat analitik yang digunakan pelanggan (Hadoop, Spark, dll.)
  • Bigtable diindeks oleh satu Row Key
  • Bigtable berada di satu zona

Cloud Bigtable dirancang untuk perusahaan besar dan perusahaan yang sering kali memiliki kebutuhan data yang lebih besar dengan beban kerja backend yang kompleks.

Datastore dioptimalkan untuk menyajikan data transaksional bernilai tinggi ke aplikasi

  • Cloud Datastore memiliki ketersediaan yang sangat tinggi dengan replikasi dan sinkronisasi data
  • Datastore, karena keserbagunaan dan ketersediaannya yang tinggi, lebih mahal
  • Datastore menulis data lebih lambat karena replikasi sinkron
  • Datastore memiliki fungsionalitas yang jauh lebih baik seputar transaksi dan kueri (karena indeks sekunder ada)
Les Vogel - Google DevRel
sumber
3
Bigtable sekarang mereplikasi lintas zona untuk menyediakan ketersediaan saat terjadi pemadaman zona: cloudplatform.googleblog.com/2018/07/…
Brandon DuRette
Saya pikir transaksi bukanlah nilai jual yang kuat untuk datastore. Dari [doc | cloud.google.com/datastore/docs/concepts/transactions] "Transaksi adalah sekumpulan operasi Google Cloud Datastore pada satu atau beberapa entitas dalam hingga 25 grup entitas." Selain itu, datastore dibangun di atas Bigtable, bukan?
zyxue
19

Bigtable dan Datastore sangat berbeda. Ya, datastore dibangun di atas Bigtable, tetapi itu tidak membuatnya menjadi seperti itu. Ini seperti mengatakan bahwa mobil dibangun di atas roda, sehingga mobil tidak jauh berbeda dengan roda.

Bigtable dan Datastore memberikan model data yang sangat berbeda dan semantik yang sangat berbeda dalam cara data diubah.

Perbedaan utamanya adalah Datastore menyediakan transaksi ACID seperti database SQL pada subset data yang dikenal sebagai grup entitas (meskipun bahasa kueri GQL jauh lebih ketat daripada SQL). Bigtable benar-benar NoSQL dan dilengkapi dengan jaminan yang jauh lebih lemah.

pengguna2771609
sumber
4
Anda melakukannya dengan baik sampai paragraf terakhir. Datastore menyediakan transaksi, tetapi tidak seperti SQL dan jelas bukan ACID.
Daniel Roseman
4
@DanielRoseman Sebenarnya, memang begitu. Berikut adalah kutipan dari makalah tentang Megastore (tempat Datastore dibuat): "Setiap grup entitas Megastore berfungsi sebagai database mini yang menyediakan semantik ACID yang dapat diserialkan." "kami mempartisi datastore dan mereplikasi setiap partisi secara terpisah, menyediakan semantik ACID penuh dalam partisi". (research.google.com/pubs/pub36971.html)
pengguna2771609
Saya pikir itu menyesatkan untuk menyebutnya Sql. Paling banyak subset. Tidak memiliki jumlah / grup yang efisien, semua kueri harus menggunakan indeks, dll.
Zig Mandel
4
Bahasa kueri dan isolasi transaksi adalah hal yang berbeda , Anda tampaknya mencampurkannya. Saya membuat klaim tentang yang terakhir ( transaksi ACID ). Dalam komentar Anda, Anda menganggap saya sedang membicarakan yang pertama. Mungkin beberapa tanda hubung akan menjelaskan? Saya akan secara eksplisit menyebutkan masalah bahasa kueri untuk menghilangkan keraguan.
pengguna2771609
8

Jika Anda membaca makalah, BigTable adalah ini dan Datastore adalah MegaStore . Datastore adalah BigTable plus replikasi, transaksi, dan indeks. (dan jauh lebih mahal).

Justin Zhang
sumber
Benarkah lebih mahal? minimum untuk BigTable adalah 3 node, pada HDD 10GB harganya $ 1400 / bln. Sepertinya cukup tinggi bukan?
benji
@ben, dalam pengalaman saya sebelumnya. Datastore dikenai biaya per operasi, bukan per jam. (Jika Anda tidak menggunakannya sebanyak itu maka ya Anda tidak membayar banyak Datastore. Tetapi jika Anda memiliki lalu lintas tinggi dan kemudian saya pikir bigtable jauh lebih murah.) Saya pikir Bigtable mengklaim 10k ops per detik? Pada kenyataannya saya menemukan itu lebih rendah, seperti sekitar 1-2k, tetapi masih 3 node> 5k / s. Jika Anda mempertahankan throughput itu selama sebulan dan memetakannya ke harga Datastore, mungkin jauh lebih tinggi dari 1,4k.
Justin Zhang
Tautan
MegaStore
7

Saya akan mencoba merangkum semua jawaban di atas plus apa yang diberikan dalam Big Data Coursea Google Cloud Platform dan Machine Learning Fundamentals

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Periksa gambar ini juga: masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Adelin
sumber
2

Titik relatif kecil untuk mempertimbangkan, per November 2016, bigtable python klien perpustakaan masih dalam Alpha, yang berarti perubahan masa depan mungkin tidak kompatibel. Selain itu, pustaka python bigtable tidak kompatibel dengan lingkungan standar App Engine. Anda harus menggunakan yang fleksibel.

YSC
sumber
Per November 2016, hal yang sama berlaku untuk Jawa
Aram Paronikyan
2

Ini mungkin satu lagi perbedaan utama antara Google Cloud Bigtable dan Google Cloud Datastore bersama dengan layanan lainnya. Konten yang ditampilkan pada gambar di bawah ini juga dapat membantu Anda dalam memilih layanan yang tepat.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Kedar Kodgire
sumber
1

masukkan deskripsi gambar di sini

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.

masukkan deskripsi gambar di sini

 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.
Tiago Medici
sumber
0

Datastore lebih siap untuk aplikasi dan cocok untuk berbagai layanan, terutama untuk layanan mikro.

Teknologi yang mendasari Datastore adalah Big Table, jadi Anda bisa membayangkan Big Table lebih canggih.

Datastore hadir dengan operasi gratis 20K per hari, Anda dapat mengharapkan untuk meng-host server dengan DB yang andal dengan biaya NOL.

Anda juga dapat melihat pustaka ORM Datastore ini, ia hadir dengan banyak fitur hebat https://www.npmjs.com/package/ts-datastore-orm

Tsang Kin Ho
sumber