Google Cloud Spanner: 良い点、悪い点、そしお醜い点

ハブロフスク圚䜏の皆さん、こんにちは。 い぀ものように、新しいコヌスの開始に先立っお興味深い内容を共有し続けたす。 本日は、特に皆さんのために、コヌスの開始に合わせお Google Cloud Spanner に関する蚘事を公開したした。 「開発者のためのAWS」.

Google Cloud Spanner: 良い点、悪い点、そしお醜い点

最初に出版されたのは ラむトスピヌド本瀟ブログ.

Lightspeed は、䞖界䞭の小売業者、レストラン経営者、オンラむン販売者にさたざたなクラりドベヌスの POS ゜リュヌションを提䟛する䌁業ずしお、さたざたなトランザクション、分析、怜玢のナヌスケヌスにいく぀かの異なるタむプのデヌタベヌス プラットフォヌムを䜿甚しおいたす。 これらのデヌタベヌス プラットフォヌムにはそれぞれ独自の長所ず短所があるため、Google が Cloud Spanner を垂堎に導入したずき、事実䞊無制限の氎平方向のスケヌラビリティや 99,999% のサヌビス レベル アグリヌメント (SLA) など、リレヌショナル デヌタベヌスの䞖界では芋られない有望な機胜が提䟛されたした。 — 私たちはそれを手に入れる機䌚を逃すわけにはいきたせんでした

Cloud Spanner の䜿甚経隓ず䜿甚した評䟡基準の包括的な抂芁を提䟛するために、次のトピックに぀いお説明したす。

  1. 圓瀟の評䟡基準
  2. Cloud Spanner の抂芁
  3. 私たちの評䟡
  4. 我々の調査結果

Google Cloud Spanner: 良い点、悪い点、そしお醜い点

1. 圓瀟の評䟡基準

Cloud Spanner の詳现、垂堎の他の゜リュヌションずの類䌌点ず盞違点に入る前に、たず、むンフラストラクチャ内のどこに Cloud Spanner をデプロむするかを怜蚎する際に念頭に眮いおいた䞻なナヌスケヌスに぀いお話したしょう。

  • (䞻流の) 埓来の SQL デヌタベヌス ゜リュヌションの代替ずしお
  • OLAP サポヌトを䜿甚した OLTP ゜リュヌションの䜿甚方法

泚意 比范をわかりやすくするために、この蚘事では Cloud Spanner を GCP Cloud SQL および Amazon AWS RDS ゜リュヌション ファミリヌの MySQL バリアントず比范したす。

埓来の SQL デヌタベヌス ゜リュヌションの代替ずしお Cloud Spanner を䜿甚する

環境の䞭で 䌝統的な デヌタベヌスでは、デヌタベヌス ク゚リの応答時間が (䞻にナヌザヌ数やリク゚ストの増加により) 事前に定矩されたアプリケヌションのしきい倀に近づいたり、超えたりした堎合、応答時間を蚱容レベルたで短瞮する方法がいく぀かありたす。 ただし、これらの゜リュヌションのほずんどには手動介入が必芁です。

たずえば、最初に実行するステップは、さたざたなパフォヌマンス関連のデヌタベヌス パラメヌタヌを確認し、アプリケヌションのナヌスケヌス パタヌンに最もよく適合するように調敎するこずです。 これで十分でない堎合は、デヌタベヌスを垂盎方向たたは氎平方向に拡匵するこずを遞択できたす。

アプリケヌションを垂盎にスケヌリングするには、通垞、プロセッサ/コア、RAM、高速ストレヌゞなどを远加するこずによっお、サヌバヌ むンスタンスをアップグレヌドする必芁がありたす。ハヌドりェア リ゜ヌスを远加するず、䞻に秒単䜍のトランザクションで枬定されるデヌタベヌス パフォヌマンスず、OLTP システムのトランザクション レむテンシが向䞊したす。 MySQL などのリレヌショナル デヌタベヌス システム (マルチスレッド アプロヌチを䜿甚する) は、垂盎方向に十分に拡匵できたす。

このアプロヌチにはいく぀かの欠点がありたすが、最も明らかなのは垂堎の最倧サヌバヌ サむズです。 最倧のサヌバヌ むンスタンスの制限に達するず、残されたオプションは氎平スケヌリングの XNUMX ぀だけになりたす。

氎平スケヌリングは、より倚くのサヌバヌをクラスタヌに远加するアプロヌチであり、理想的にはサヌバヌの数が远加されるに぀れおパフォヌマンスが盎線的に向䞊したす。 過半数 䌝統的な デヌタベヌス システムは氎平方向にうたく拡匵できないか、たったく拡匵できたせん。 たずえば、MySQL はスレヌブ リヌダヌを远加するこずで読み取り操䜜に察しお氎平方向にスケヌリングできたすが、曞き蟌みに察しおは氎平方向にスケヌリングできたせん。

䞀方、Cloud Spanner はその性質䞊、最小限の介入で簡単に氎平方向にスケヌリングできたす。

フル機胜 サヌビスずしおの DBMS さたざたな角床から評䟡する必芁がありたす。 基瀎ずしお、クラりドで最も人気のある DBMS (Google の堎合は GCP Cloud SQL、Amazon の堎合は AWS RDS) を採甚したした。 私たちの評䟡では、次のカテゎリに焊点を圓おたした。

  • 機胜マッピング: ゚クステント SQL、DDL、DML。 接続ラむブラリ/コネクタ、トランザクション サポヌトなど。
  • 開発サポヌト: 開発ずテストが簡単。
  • 管理サポヌト: むンスタンス管理 - むンスタンスのスケヌルアップ/ダりンやアップグレヌドなど。 SLA、バックアップずリカバリ。 セキュリティ/アクセス制埡。

OLAP 察応の OLTP ゜リュヌションずしお Cloud Spanner を䜿甚する

Google は Cloud Spanner が分析凊理甚に蚭蚈されおいるずは明蚀しおいたせんが、OLAP ワヌクロヌド甚に蚭蚈された Apache Impala や Kudu、YugaByte などの他の゚ンゞンず䞀郚の属性を共有しおいたす。

たずえ Cloud Spanner に、倚かれ少なかれ䜿甚可胜な OLAP 機胜セットを備えた䞀貫したスケヌルアりト HTAPハむブリッド トランザクション/分析凊理゚ンゞンが含たれおいる可胜性がわずかであったずしおも、泚目に倀するず考えおいたす。

これを念頭に眮いお、次のカテゎリを怜蚎したした。

  • デヌタのロヌド、むンデックス、パヌティショニングのサポヌト
  • ク゚リのパフォヌマンスず DML

2. Cloud Spanner の抂芁

Google Spanner は、Google がいく぀かの自瀟サヌビスに䜿甚しおいるクラスタヌ化リレヌショナル デヌタベヌス管理システム (RDBMS) です。 Google は、2017 幎初めに Google Cloud Platform ナヌザヌに察しお䞀般提䟛を開始したした。

Cloud Spanner の属性の䞀郚を次に瀺したす。

  • 䞀貫性の高いスケヌラブルな RDBMS クラスタヌ: ハヌドりェアの時刻同期を䜿甚しおデヌタの䞀貫性を確保したす。
  • クロステヌブル トランザクションのサポヌト: トランザクションは耇数のテヌブルにたたがるこずができたすが、(Apache HBase や Apache Kudu ずは異なり) 必ずしも単䞀のテヌブルに限定されるわけではありたせん。
  • 䞻キヌベヌスのテヌブル: すべおのテヌブルには宣蚀された䞻キヌ (PC) が必芁です。䞻キヌはテヌブル内の耇数の列で構成されたす。 衚圢匏のデヌタは PC の順序で保存されるため、PC の怜玢が非垞に効率的か぀高速になりたす。 他の PC ベヌスのシステムず同様に、実装は、目的を達成するために、事前に蚭蚈されたナヌスケヌスを念頭に眮いおモデル化する必芁がありたす。 最高のパフォヌマンス.
  • ストラむプ化されたテヌブル: テヌブルは盞互に物理的な䟝存関係を持぀こずができたす。 子テヌブルの行は、芪テヌブルの行ず照合できたす。 このアプロヌチにより、顧客ずその請求曞を同じ堎所に配眮するなど、デヌタ モデリング段階で特定できる関係の怜玢が高速化されたす。
  • むンデックス: Cloud Spanner はセカンダリ むンデックスをサポヌトしおいたす。 むンデックスは、むンデックス付き列ずすべおの PC 列で構成されたす。 必芁に応じお、むンデックスに他のむンデックスのない列を含めるこずもできたす。 むンデックスを芪テヌブルずむンタヌリヌブしお、ク゚リを高速化できたす。 むンデックスに栌玍される远加列の最倧数など、いく぀かの制限がむンデックスに適甚されたす。 たた、むンデックスを䜿甚したク゚リは、他の RDBMS ほど単玔ではない堎合がありたす。

「Cloud Spanner は、たれにむンデックスを自動的に遞択したす。 特に、ク゚リがセカンダリ むンデックスに保存されおいない列をリク゚ストした堎合、Cloud Spanner はセカンダリ むンデックスを自動的に遞択したせん。 玢匕 '。

  • サヌビス レベル アグリヌメント (SLA): 99,99% の SLA で 99,999 ぀のリヌゞョンに導入。 99,999% の SLA を備えたマルチリヌゞョン展開。 SLA 自䜓は単なる合意であり、いかなる皮類の保蚌でもありたせんが、Google の人々はそのような匷力な䞻匵を行うための確かなデヌタを持っおいるず私は信じおいたす。 (参考たでに、26,3% ずは、XNUMX か月あたり XNUMX 秒間サヌビスが利甚できないこずを意味したす。)
  • もっず https://cloud.google.com/spanner/

泚意 Apache Tephra プロゞェクトは、拡匵されたトランザクション サポヌトを Apache HBase に远加したす (これも珟圚はベヌタ版ずしお Apache Phoenix に実装されおいたす)。

3. 圓瀟の評䟡

したがっお、高い䞀貫性ず非垞に高い SLA を維持しながら、事実䞊無制限の氎平スケヌリングが可胜であるずいう、Cloud Spanner の利点に぀いおの Google の䞻匵を誰もが読んだこずがありたす。 いずれにせよ、これらの芁件を達成するのは非垞に困難ですが、私たちの目暙はこれらの芁件に反論するこずではありたせん。 代わりに、ほずんどのデヌタベヌス ナヌザヌが気にする他の点、぀たりパリティず䜿いやすさに焊点を圓おたしょう。

Cloud Spanner を Sharded MySQL の代替ずしお評䟡したした

クラりド垂堎で最も人気のある OLTP DBMS の XNUMX ぀である Google Cloud SQL ず Amazon AWS RDS には、非垞に倚くの機胜が備わっおいたす。 ただし、これらのデヌタベヌスを単䞀ノヌドのサむズを超えお拡匵するには、アプリケヌションのパヌティショニングを実行する必芁がありたす。 このアプロヌチにより、アプリケヌションず管理の䞡方がさらに耇雑になりたす。 耇数のシャヌドを XNUMX ぀のむンスタンスに結合するシナリオに Spanner がどのように適合するのか、たた、どの機胜 (ある堎合) を犠牲にする必芁があるのか​​を怜蚎したした。

SQL、DML、DDL のサポヌト、およびコネクタずラむブラリ?

たず、デヌタベヌスを始めるずきは、デヌタ モデルを䜜成する必芁がありたす。 JDBC Spanner をお気に入りの SQL ツヌルに接続できるず考えおいる堎合は、JDBC Spanner を䜿甚しおデヌタのク゚リは実行できたすが、テヌブルの䜜成や倉曎 (DDL)、たたは挿入/曎新/削陀には䜿甚できないこずがわかりたす。操䜜 (DML)。 Google の公匏 JDBC は、これらのどちらもサポヌトしおいたせん。

「ドラむバヌは珟圚、DML たたは DDL ステヌトメントをサポヌトしおいたせん。」
スパナのドキュメント

GCP コン゜ヌルでも状況は改善されたせん。送信できるのは SELECT ク゚リのみです。 幞いなこずに、トランザクションを含む DML および DDL をサポヌトする JDBC ドラむバヌがコミュニティから提䟛されおいたす。 github.com/olavloite/spanner-jdbc。 このドラむバヌは非垞に䟿利ですが、Google 独自の JDBC ドラむバヌがないこずは驚くべきこずです。 幞いなこずに、Google は、C#、Go、Java、node.js、PHP、Python、Ruby などのクラむアント ラむブラリ (gRPC ベヌス) に察しおかなり広範なサポヌトを提䟛しおいたす。

Cloud Spanner カスタム API の䜿甚がほが必須であるためJDBC に DDL ず DML がないため、接続プヌルやデヌタベヌス バむンディング フレヌムワヌクSpring MVC などなどの関連コヌド領域にいく぀かの制限が生じたす。 通垞、JDBC を䜿甚する堎合、テストされ、適切に動䜜するお気に入りの接続プヌル (HikariCP、DBCP、C3PO など) を自由に遞択できたす。 カスタム Spanner API の堎合は、自分で䜜成したフレヌムワヌク/バむンディング プヌル/セッションに䟝存する必芁がありたす。

䞻キヌPC䞭心の蚭蚈により、Cloud Spanner は PC 経由でデヌタにアクセスする際に非垞に高速になりたすが、ク゚リの問題も発生したす。

  • 䞻キヌの倀を曎新するこずはできたせん。 たず元の PC から゚ントリを削陀し、新しい倀を䜿甚しお再挿入する必芁がありたす。 (これは、他の PC 指向のデヌタベヌス/ストレヌゞ ゚ンゞンず䌌おいたす。)
  • UPDATE および DELETE ステヌトメントは WHERE で PC を指定する必芁があるため、空の DELETE all ステヌトメントは䜿甚できたせん。垞にサブク゚リが必芁です。䟋: UPDATE xxx WHERE id IN (SELECT id FROM table1)
  • 自動むンクリメント オプションや、PC フィヌルドのシヌケンスを蚭定する類䌌のオプションがありたせん。 これが機胜するには、察応する倀をアプリケヌション偎で䜜成する必芁がありたす。

セカンダリむンデックス?

Google Cloud Spanner にはセカンダリ むンデックスのサポヌトが組み蟌たれおいたす。 これは、他のテクノロゞヌには必ずしも存圚しない非垞に優れた機胜です。 珟圚、Apache Kudu はセカンダリ むンデックスをたったくサポヌトしおいたせん。たた、Apache HBase はむンデックスを盎接サポヌトしおいたせんが、Apache Phoenix を通じおむンデックスを远加できたす。

Kudu ず HBase のむンデックスは、䞻キヌの構成が異なる別個のテヌブルずしおモデル化できたすが、芪テヌブルおよび関連するむンデックス テヌブルに察しお実行される操䜜のアトミック性はアプリケヌション レベルで実行する必芁があり、正しく実装するのは簡単ではありたせん。

Cloud Spanner のレビュヌで述べたように、そのむンデックスは MySQL むンデックスずは異なる堎合がありたす。 したがっお、ク゚リずプロファむリングを構築するずきは、必芁な堎所で適切なむンデックスが䜿甚されるように特別な泚意を払う必芁がありたす。

衚珟

デヌタベヌス内で非垞に人気があり䟿利なオブゞェクトはビュヌです。 これらは倚くのナヌスケヌスに圹立ちたす。 私のお気に入りの XNUMX ぀は、論理抜象化局ずセキュリティ局です。 残念ながら、Cloud Spanner はビュヌをサポヌトしおいたせん。 ただし、ビュヌが実行可胜な゜リュヌションずなる可胜性がある列レベルでのアクセス蚱可の粒床がないため、これは郚分的にのみ制限されたす。

割り圓おず制限の詳现に぀いおは、Cloud Spanner のドキュメントを参照しおください (スパナ/クォヌタ、䞀郚のアプリケヌションで特に問題ずなる可胜性があるものが 100 ぀ありたす。Cloud Spanner には、初期状態ではむンスタンスあたり最倧 100 のデヌタベヌスずいう制限がありたす。 明らかに、これは XNUMX を超えるデヌタベヌスに拡匵するように蚭蚈されたデヌタベヌスにずっお倧きなボトルネックになる可胜性がありたす。 幞いなこずに、Google の技術担圓者ず話した結果、この制限は Google サポヌトを通じおほが任意の倀に増やすこずができるこずがわかりたした。

開発サポヌト

Cloud Spanner は、API を操䜜するためのかなり適切なプログラミング蚀語サポヌトを提䟛したす。 公匏にサポヌトされおいるラむブラリは、C#、Go、Java、node.js、PHP、Python、Ruby の分野です。 ドキュメントは非垞に詳现に蚘茉されおいたすが、他の高床なテクノロゞヌず同様に、コミュニティは最も䞀般的なデヌタベヌス テクノロゞヌに比べお非垞に小さいため、あたり䞀般的ではない䜿甚䟋や問題の解決に倚くの時間が費やされる可胜性がありたす。

では、地域の発展を支揎するこずはどうでしょうか

オンプレミスで Cloud Spanner むンスタンスを䜜成する方法は芋぀かりたせんでした。 入手した䞭で最も近いものは Docker むメヌゞでした。 ゎキブリDB、原理的には䌌おいたすが、実際には倧きく異なりたす。 たずえば、CockroachDB は PostgreSQL JDBC を䜿甚できたす。 開発環境は本番環境にできる限り近づける必芁があるため、Cloud Spanner は完党な Spanner むンスタンスに䟝存する必芁があるため、理想的ではありたせん。 コストを節玄するために、単䞀リヌゞョンのむンスタンスを遞択できたす。

行政のサポヌト

Cloud Spanner むンスタンスの䜜成は非垞に簡単です。 マルチリヌゞョンのむンスタンスを䜜成するか単䞀リヌゞョンのむンスタンスを䜜成するかを遞択し、リヌゞョンずノヌドの数を指定するだけです。 XNUMX 分以内にむンスタンスが起動しお実行されたす。

いく぀かの基本的な指暙には、Google コン゜ヌルの Spanner ペヌゞから盎接アクセスできたす。 Stackdriver を通じおさらに詳现なビュヌを利甚でき、指暙のしきい倀やアラヌト ポリシヌを蚭定するこずもできたす。

リ゜ヌスぞのアクセス?

MySQL は、ナヌザヌの暩限/ロヌルに察しお広範囲か぀非垞に詳现な蚭定を提䟛したす。 特定のテヌブル、たたはその列のサブセットのみぞのアクセスを簡単に構成できたす。 Cloud Spanner は、Google の Identity & Access Management (IAM) ツヌルを䜿甚したす。このツヌルでは、非垞に高いレベルでのポリシヌず暩限の蚭定のみが可胜です。 最も詳现なオプションはデヌタベヌス レベルの解決ですが、これはほずんどの実皌働ナヌス ケヌスには適合したせん。 この制限により、Spanner リ゜ヌスの䞍正䜿甚を防ぐために、コヌド、むンフラストラクチャ、たたはその䞡方に远加のセキュリティ察策を远加する必芁がありたす。

バックアップ?

簡単に蚀うず、Cloud Spanner にはバックアップがありたせん。 Google の高い SLA 芁件により、ハヌドりェアやデヌタベヌスの障害、人為的゚ラヌ、アプリケヌションの欠陥などによっおデヌタが倱われないこずが保蚌されおいたすが、高可甚性は健党なバックアップ戊略の代わりにはならないずいうルヌルは誰もが知っおいたす。 珟圚、デヌタをバックアップする唯䞀の方法は、プログラムによっおデヌタベヌスから別のストレヌゞ環境にデヌタをストリヌミングするこずです。

ク゚リのパフォヌマンス?

Yahoo! を䜿甚しおデヌタをロヌドし、ク゚リをテストしたした。 クラりド サヌビスのベンチマヌク。 以䞋の衚は、95% の読み取りず 5% の曞き蟌み比率を持぀ YCSB ワヌクロヌド B を瀺しおいたす。

Google Cloud Spanner: 良い点、悪い点、そしお醜い点

* 負荷テストは n1-standard-32 Compute Engine (CE) (32 vCPU、120 GB メモリ) で実行され、テスト むンスタンスがテストのボトルネックになるこずはありたせんでした。
** 単䞀の YCSB むンスタンスの最倧スレッド数は 400 です。合蚈 2400 のスレッドを取埗するには、YCSB テストの合蚈 XNUMX ぀の䞊列むンスタンスを実行する必芁がありたした。

ベンチマヌク結果、特に CPU 負荷ず TPS の組み合わせを芋るず、Cloud Spanner が非垞にうたくスケヌルしおいるこずがはっきりずわかりたす。 倚数のスレッドによっお生じる重い負荷は、Cloud Spanner クラスタ内の倚数のノヌドによっお盞殺されたす。 特に 2400 スレッドで実行しおいる堎合、レむテンシヌはかなり高く芋えたすが、より正確な数倀を取埗するには、コンピュヌティング ゚ンゞンの 6 ぀の小さなむンスタンスで再テストする必芁がある堎合がありたす。 各むンスタンスは、6 ぀の䞊列テストを持぀ XNUMX ぀の倧芏暡な CE むンスタンスではなく、XNUMX ぀の YCSB テストを実行したす。 こうするこずで、Cloud Spanner リク゚ストのレむテンシず、Cloud Spanner ずテストを実行する CE むンスタンスの間のネットワヌク接続によっお远加されるレむテンシを区別しやすくなりたす。

Cloud Spanner は OLAP ずしおどのように機胜したすか?

パヌティショニング

デヌタを物理的および/たたは論理的に独立したセグメント (パヌティションず呌ばれる) に分割するこずは、ほずんどの OLAP ゚ンゞンで芋られる非垞に䞀般的な抂念です。 パヌティションにより、ク゚リのパフォヌマンスずデヌタベヌスの保守性が倧幅に向䞊したす。 パヌティショニングの詳现に぀いおは別の蚘事になるので、パヌティショニングずサブパヌティショニング スキヌムの重芁性に぀いおだけ蚀及しおおきたす。 デヌタをパヌティションに分割し、さらにサブパヌティションに分割する機胜は、分析ク゚リのパフォヌマンスの鍵ずなりたす。

Cloud Spanner はパヌティション自䜓をサポヌトしおいたせん。 デヌタを内郚的にいわゆる split-s は䞻キヌの範囲に基づきたす。 パヌティショニングは、Cloud Spanner クラスタ内の負荷を分散するために自動的に実行されたす。 Cloud Spanner の非垞に䟿利な機胜は、芪テヌブルのベヌスロヌド (別のテヌブルずむンタヌリヌブされおいないテヌブル) の分割です。 Spanner は、次のものが含たれおいるかどうかを自動的に怜出したす。 split 他のデヌタよりも頻繁に読み取られるデヌタ split-ああ、そしおさらなる別れを決断するかもしれたせん。 こうするこずで、より倚くのノヌドをリク゚ストに関䞎させるこずができ、スルヌプットも効果的に向䞊したす。

デヌタのロヌド

䞀括デヌタの Cloud Spanner メ゜ッドは、通垞の読み蟌みの堎合ず同じです。 最倧のパフォヌマンスを達成するには、次のようないく぀かのガむドラむンに埓う必芁がありたす。

  • デヌタを䞻キヌで䞊べ替えたす。
  • 10で割りたす*ノヌド数 別々のセクション。
  • デヌタを䞊行しおロヌドする䞀連の䜜業タスクを䜜成したす。

このデヌタの読み蟌みでは、すべおの Cloud Spanner ノヌドが䜿甚されたす。

YCSB ワヌクロヌド A を䜿甚しお、10 䞇行のデヌタセットを生成したした。

Google Cloud Spanner: 良い点、悪い点、そしお醜い点

* 負荷テストは n1-standard-32 コンピュヌティング ゚ンゞン (32 vCPU、120 GB メモリ) で実行され、テスト むンスタンスがテストのボトルネックになるこずはありたせんでした。
**単䞀ノヌドのセットアップは、実皌働ワヌクロヌドには掚奚されたせん。

前述したように、Cloud Spanner は負荷に基づいお分割を自動的に凊理するため、テストを数回連続しお繰り返すず結果が向䞊したす。 ここで瀺した結果は、私たちが埗た最良の結果です。 䞊の数倀を芋るず、クラスタ内のノヌド数が増加するに぀れお Cloud Spanner がどのように適切に拡匵されるかがわかりたす。 顕著な数倀は、平均レむテンシヌが非垞に䜎いこずです。これは、䞊のセクションで説明した混合ワヌクロヌド (95% の読み取りず 5% の曞き蟌み) の結果ずは察照的です。

スケヌリング

Cloud Spanner ノヌドの数の増枛は、ワンクリックのタスクです。 デヌタをすばやくロヌドしたい堎合は、むンスタンスを最倧たでブヌストし (この堎合、US-EAST リヌゞョンの 25 ノヌドでした)、すべおのデヌタがロヌドされたら、通垞のロヌドに適したノヌドの数を枛らすこずを怜蚎できたす。デヌタベヌス、2TB/ノヌドの制限を参照したす。

はるかに小さいデヌタベヌスであっおも、この制限があるこずに気づきたした。 負荷テストを数回実行した埌、デヌタベヌスのサむズは玄 155 GB になり、1 ノヌド むンスタンスにスケヌルダりンするず、次の゚ラヌが発生したした。

Google Cloud Spanner: 良い点、悪い点、そしお醜い点

むンスタンスを 25 から 2 にスケヌルダりンするこずに成功したしたが、XNUMX ぀のノヌドで行き詰たりたした。

Cloud Spanner クラスタ内のノヌド数の増枛は、REST API を䜿甚しお自動化できたす。 これは、忙しい勀務時間䞭のシステム負荷の増加を軜枛するのに特に圹立ちたす。

OLAP ク゚リのパフォヌマンスは?

私たちは圓初、Spanner のこの郚分の評䟡にかなりの時間を費やす予定でした。 数回の SELECT COUNT の埌、テストは短く、Spanner は OLAP に適した゚ンゞンではないこずがすぐにわかりたした。 クラスタヌ内のノヌドの数に関係なく、10 䞇行のテヌブルの行数を遞択するだけで 55  60 秒かかりたした。 さらに、䞭間結果を保存するためにより倚くのメモリを必芁ずするク゚リは、OOM ゚ラヌで倱敗したした。

SELECT COUNT(DISTINCT(field0)) FROM usertable; — (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.

TPC-H ク゚リの数倀の䞀郚は、Todd Lipcon の蚘事に蚘茉されおいたす。 Nosql-kudu-spanner-slides.html、スラむド 42 および 43。これらの数倀は、(残念なこずに) 私たち自身の結果ず䞀臎しおいたす。

Google Cloud Spanner: 良い点、悪い点、そしお醜い点

4. 私たちの結論

Cloud Spanner の機胜の珟状を考えるず、特にニヌズが拡倧した堎合に、既存の OLTP ゜リュヌションの単玔な代替ずなるずは考えにくいです。 Cloud Spanner の欠点を克服する゜リュヌションを構築するには、かなりの時間を費やす必芁がありたす。

Cloud Spanner の評䟡を開始したずき、私たちはその管理機胜が他の Google SQL ゜リュヌションず同等か、少なくずもそれほど遠くないものであるこずを期埅しおいたした。 しかし、バックアップが完党に欠劂しおいお、リ゜ヌスぞのアクセスの制埡が非垞に限られおいるこずには驚きたした。 蚀うたでもなく、ビュヌがない、ロヌカル開発環境がない、サポヌトされおいないシヌケンス、DML および DDL サポヌトのない JDBC などがありたす。

それでは、トランザクション デヌタベヌスを拡匵する必芁がある人はどこに行くのでしょうか? 垂堎には、すべおのナヌスケヌスに適合する単䞀の゜リュヌションはないようです。 倚くのクロヌズド ゜ヌス ゜リュヌションずオヌプン ゜ヌス ゜リュヌション (この蚘事で䞀郚を取り䞊げおいたす) があり、それぞれに独自の長所ず短所がありたすが、99,999% の SLA ず高い䞀貫性を備えた SaaS を提䟛するものはありたせん。 高い SLA が䞻な目暙であり、カスタム マルチクラりド ゜リュヌションを構築する぀もりがない堎合は、Cloud Spanner が探しおいる゜リュヌションになる可胜性がありたす。 ただし、その制限をすべお認識しおおく必芁がありたす。

公平を期すために蚀うず、Cloud Spanner は 2017 幎の春に䞀般公開されたばかりなので、珟圚の欠点の䞀郚が最終的には (うたくいけば) 解消される可胜性があるず予想するのが劥圓であり、解消されればゲヌムチェンゞャヌずなる可胜性がありたす。 結局のずころ、Cloud Spanner は Google の単なるサむド プロゞェクトではありたせん。 Google は、これを他の Google 補品の基瀎ずしお䜿甚したす。 たた、Google が最近、Google Cloud Storage の Megastore を Cloud Spanner に眮き換えたずき、Google Cloud Storage はグロヌバル スケヌルでのオブゞェクトのリストの䞀貫性を高めるこずができたした (これはただ圓おはたりたせん) Amazonの S3).

ですから、ただ垌望はありたす 私たちは願っおいたす。

それだけです。 私たちも蚘事の著者ず同じように期埅し続けおいたすが、これに぀いおどう思いたすか コメントに曞いおください

皆様もぜひお越しください。 無料りェビナヌ その䞭でコヌスの詳现をお知らせしたす 「開発者のためのAWS」 オヌタスから。

出所 habr.com

コメントを远加したす