Google Cloud BigtableとGoogle Cloud Datastore


123

Google Cloud BigtableとGoogle Cloud Datastore / App Engineデータストアの違いは何ですか?また、主な実用的な長所/短所は何ですか?AFAIK Cloud DatastoreはBigtableの上に構築されています。


8
閉じないでください。現在、これらに関する公式ドキュメントはなく、Googleはおそらくここでコメントします。
ジグマンデル2015年

回答:


96

Datastoreの経験とBigtableのドキュメントの読み取りに基づくと、主な違いは次のとおりです。

  • Bigtableは元々HBaseとの互換性のために設計されましたが、現在は複数の言語のクライアントライブラリを備えています。データストアはもともと、Python / Java / Goウェブアプリデベロッパー(当初はApp Engine)向けでした。
  • Bigtableはデータストアよりも「少しだけIaaS」であり、「そこだけ」ではなく、クラスターを構成する必要があります
  • Bigtableは1つのインデックスのみをサポートします-「行キー」(データストアのエンティティキー)
    • これは、データストアのインデックス付きプロパティとは異なり、クエリがキー上にあることを意味します
  • Bigtableは単一行でのみ原子性をサポートしています-トランザクションはありません
  • Bigtableではミューテーションと削除はアトミックではないようですが、Datastoreは読み取り/クエリの方法に応じて、結果的で強力な一貫性を提供します
  • 請求モデルは大きく異なります。
    • データストアの読み取り/書き込み操作、ストレージ、帯域幅
    • 「ノード」、ストレージ、帯域幅に対するBigtable 料金

97

Bigtableは大量のデータと分析用に最適化されています

  • Cloud Bigtableはゾーンまたはリージョン間でデータを複製しません(単一のクラスター内のデータは複製されて永続的です)。つまり、Bigtableはより高速で効率的であり、コストははるかに低くなりますが、耐久性は低く、デフォルト設定で利用できます。
  • HBase APIを使用しているため、ロックインや新しいパラダイムのリスクがありません
  • オープンソースのビッグデータツールと統合されているため、顧客が使用するほとんどの分析ツール(Hadoop、Sparkなど)でBigtableに保存されているデータを分析できます。
  • Bigtableは単一の行キーによってインデックスが作成されます
  • Bigtableは単一のゾーンにあります

Cloud Bigtableは、複雑なバックエンドワークロードで大規模なデータを必要とすることが多い大企業や企業向けに設計されています。

データストアは、価値の高いトランザクションデータをアプリケーションに提供するように最適化されています

  • Cloud Datastoreは、レプリケーションとデータ同期により非常に高い可用性を備えています
  • データストアは、その汎用性と高可用性のため、より高価です
  • 同期レプリケーションのため、データストアのデータ書き込みが遅い
  • データストアのトランザクションとクエリに関する機能が大幅に向上しています(セカンダリインデックスが存在するため)

3
Bigtableのは今帯状停電に直面して可用性を提供するために、ゾーン間で複製:cloudplatform.googleblog.com/2018/07/...
ブランドンDuRette

トランザクションはデータストアの強力なセールスポイントではないと思いました。その[doc | cloud.google.com/datastore/docs/concepts/transactions]「トランザクションは、最大25のエンティティグループの1つ以上のエンティティに対する一連のGoogle Cloud Datastoreオペレーションです。」また、データストアはBigtableの上に構築されていますよね?
zyxue

19

BigtableとDatastoreは非常に異なります。はい、データストアはBigtableの上に構築されていますが、それだけではそのようなものにはなりません。それは、自動車が車輪の上に構築されていると言っているようなものであり、したがって、自動車は車輪とあまり変わらない。

BigtableとDatastoreは、非常に異なるデータモデルと、データの変更方法における非常に異なるセマンティクスを提供します。

主な違いは、データストアがエンティティグループと呼ばれるデータのサブセットに対してSQLデータベースのようなACIDトランザクションを提供することです(ただし、クエリ言語GQLはSQLよりもはるかに制限的です)。Bigtableは厳密にはNoSQLであり、保証ははるかに弱いものです。


3
あなたは最後の段落までうまくいっていました。データストアはトランザクションを提供しますが、それらはSQLに似ておらず、ACIDではありません。
Daniel Roseman、2015年

4
@DanielRoseman実際には、それは非常にありません。以下は、Megastore(Datastoreが構築されている)に関する論文の引用です。「各Megastoreエンティティグループは、シリアル化可能なACIDセマンティクスを提供するミニデータベースとして機能します。」「データストアをパーティション化し、各パーティションを個別に複製して、パーティション内に完全なACIDセマンティクスを提供します」。(research.google.com/pubs/pub36971.html)–
user2771609

私はそれをSQLと呼ぶのは誤解を招くと思います。最大でサブセット。効率的なカウント/グループはなく、すべてのクエリはインデックスなどを使用する必要があります
Zig Mandel

4
クエリ言語とトランザクションの分離は異なるものであり、それらを混同しているようです。後者(ACID トランザクション)について申し立てを行っています。あなたのコメントで、あなたは私が前者について話していると仮定しています。多分いくつかのハイフンは明確になるでしょうか?疑いを取り除くために、クエリ言語の問題に明示的に言及します。
user2771609

8

論文を読むと、BigTableはこれで、DatastoreはMegaStoreです。データストアはBigTableにレプリケーション、トランザクション、インデックスを加えたものです。(そしてはるかに高価です)。


本当に高いですか?BigTableの最小値は3ノードで、10 GB HDDの場合は$ 1400 /月です。かなり高いようですね?
ベンジー

@ben、私の過去の経験ではそうでした。データストアは、時間単位ではなく、操作単位で課金されます。(それをあまり使用しない場合、はい、Datastoreに多くの料金を支払う必要はありません。ただし、トラフィックが多い場合、bigtableの方がはるかに安いと思います。)Bigtableは1秒あたり10kオペレーションを要求すると思いますか?実際には、1〜2k程度のように低いことがわかりましたが、それでも3つのノードは> 5k / sです。そのスループットを1か月維持し、それをデータストアの料金にマッピングすると、おそらく1.4kよりはるかに高くなります。
Justin Zhang

MegaStoreリンクが壊れている
gstackoverflow

7

上記のすべての回答に加えて、Coursera Google Cloud Platform Big Data and 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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

この画像も確認してください。 ここに画像の説明を入力してください

ここに画像の説明を入力してください


2

考慮すべき比較的マイナーなポイントです。2016年11月の時点で、bigtable pythonクライアントライブラリはまだアルファ版であるため、将来の変更には下位互換性がない可能性があります。また、bigtable pythonライブラリはApp Engineの標準環境と互換性がありません。柔軟なものを使用する必要があります。


2016年11月現在、Javaについても同様です
Aram Paronikyan

2

これは、Google Cloud BigtableとGoogle Cloud Datastoreの他のサービスとの主な違いの別のセットである可能性があります。下の画像に示されている内容も、適切なサービスを選択するのに役立ちます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


1

ここに画像の説明を入力してください

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.

0

Datastoreは、アプリケーションの準備が整っており、幅広いサービス、特にマイクロサービスに適しています。

Datastoreの基盤となるテクノロジーはBig Tableであるため、Big Tableの方が強力であると想像できます。

データストアには1日あたり20Kの無料オペレーションが付属しており、コストがゼロで信頼性の高いDBを備えたサーバーをホストすることが期待できます。

このDatastore ORMライブラリをチェックアウトすることもできます。これには、多くの優れた機能が含まれてい ますhttps://www.npmjs.com/package/ts-datastore-orm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.