web-dev-qa-db-ja.com

多数のイベントを保存するためのGoogle BigtableとBigQuery

背景

不変のイベントを(できれば)マネージドサービスに格納したいと思います。 1つのイベントの平均サイズは1未満ですKbで、1秒あたり1〜5のイベントがあります。これらのイベントを保存する主な理由は、それらを再生できるようにすることです(おそらくテーブルスキャンを使用します)。これらのイベントに関心があると思われる将来のサービスを作成したら、Google Cloudにいるので、Googleのサービスを最初の選択肢として検討していることは明らかです。

私は Bigtable がこれに適していると思いますが、- 価格計算機 によれば、1か月あたり1400米ドル(これはbig取引):

enter image description here

BigQuery のようなものを見ると、1か月あたり3 USDの価格が表示されます(必要なものがない場合):

enter image description here

スキーマのないデータベースの方が適しているとはいえ、基本的にはイベントをいくつかのメタデータを含むblobとして保存することで問題ありません。

質問

コストを削減するために、Bigtableの代わりにBigQueryを使用できますか?たとえば、BigQueryには ストリーミングインサート と呼ばれるものがありますが、これは私たちが使用できるもののように思えます。このルートをたどると気づかないかもしれませんが、短期的または長期的に私たちを噛むものはありますか?

19
Johan

Bigtableは、大きな(> = 1TB)可変データセットに最適です。負荷がかかってもレイテンシが低く、Googleによって管理されます。あなたの場合、BigQueryは順調に進んでいると思います。

10
Solomon Duskis

ご参考までに

Cloud Bigtableはリレーショナルデータベースではありません。 SQLクエリや結合はサポートされておらず、複数行トランザクションもサポートされていません。また、それは少量のデータ(<1 TB)には適したソリューションではありません。

以下のケースを検討してください。-オンライントランザクション処理(OLTP)システムで完全なSQLサポートが必要な場合は、Google Cloud SQLを検討してください。

オンライン分析処理(OLAP)システムでインタラクティブなクエリが必要な場合は、Google BigQueryを検討してください。

大きな画像や動画など、10 MBを超える不変のblobを保存する必要がある場合は、Google Cloud Storageを検討してください。

高度に構造化されたオブジェクトを格納する必要がある場合、またはACIDトランザクションとSQLのようなクエリのサポートが必要な場合は、Cloud Datastoreを検討してください。

総コストは、データを「クエリ」する頻度に要約されます。それがバックアップであり、イベントをあまり頻繁にリプレイしない場合、それは非常に安価です。ただし、1日に1回再生する必要がある場合は、スキャンされた5 $/TBのトリガーが簡単すぎます。挿入とストレージがいかに安価であるかについても驚きましたが、Googleはある時点で高価なクエリを実行することを期待しているため、これはしばしばです。ただし、いくつかの点を考慮して設計する必要があります。例えば。 AFAIKストリーミング挿入には、テーブルに書き込まれる保証はありません。実際に書き込まれたかどうかを確認するには、リストの末尾を頻繁にポーリングする必要があります。ただし、時間範囲テーブルデコレータを使用すると、テーリングを効率的に行うことができます(データセット全体のスキャンに費用はかかりません)。

順序を気にしない場合は、無料でテーブルをリストすることもできます。その場合、「クエリ」を実行する必要はありません。

Google Cloud - GCP database options decision flowchart

このフローチャートは、さまざまなGoogleクラウドストレージ製品を決定するのに役立ちます(免責事項!この画像はGoogleクラウドのページからコピーされました)

ユースケースがライブデータベースの場合(たとえば、ウェブサイトのバックエンド)、BigTableが必要です(それでもは必要ありません)本当に[〜#〜] oltp [〜#〜]システムですが)。それがデータ分析やデータウェアハウスのような目的であれば、BigQueryが必要です。

OLTP vs OLAP;と考えてください。または、CassandraとHadoopに精通している場合、BigTableはおおよそCassandraに相当し、BigQueryはHadoopにほぼ相当します(同意せず、公正な比較ですが、あなたはアイデアを得ます)

https://cloud.google.com/images/storage-options/flowchart.svg

Bigtableはリレーショナルデータベースではないことに注意してください。これは、JOINなどのSQL機能がないnoSQLソリューションです。RDBMSOLTPが必要な場合は、cloudSQL(mysql/postgres)またはspanner

クラウドスパナは比較的新しいですが、強力で有望です。少なくとも、Googleマーケティングは、その機能は両方の世界で最も優れていると主張しています(従来のRDBMSとnoSQL)

enter image description here

コスト面

コストの側面はすでにここでうまくカバーされています https://stackoverflow.com/a/34845073/6785908

私はこれが非常に遅い答えであることを知っていますが、とにかくそれを追加して将来的に他の誰かを助けるかもしれません。

3
so-random-dude

それ以上に要約するのは難しい すでにグーグルによって行われている

データ(イベント)をどのように使用(再生)するかを理解する必要があると思います。これは、最終的な決定を下すのに役立ちます。

これまでのところ、BigQueryはあなたにとって最良の選択のようです

2