ObjectRocketのマネージドサービスで実現するCockroachDB分散SQLスケーリング
2019年8月にObjectRocket.com/blogにて初公開
CockroachDB®は、Rackspace ObjectRocketファミリーに属するデータベース技術のひとつです。データレプリケーションと分散による高可用性の最大化、データベースの自動リバランシング、複数リージョンのデータセンターによるデータローカリティ(データ居住地)コンプライアンス対応など、そのスケーリング能力には目を見張るものがあります。しかも、高いデータ整合性と分散ACIDトランザクションを備えており、データ耐障害性という必障害性という必須要件をしっかりと満たしています。
本記事では、CockroachDBによるスケーリングのハイライトをご紹介し、Rackspace ObjectRocketのDBaaSが提供する価値について解説します。開発者の皆様が当社のマネージドサービスプラットフォーム上でCockroachDBをご利用いただければ、データベース運用の煩雑な詳細を気にすることなく、アプリケーション開発に集中できます。
現代においてスケーリングは最重要課題
20年前、ストレージは高価なものであり、「ビッグデータ」という言葉が示すとおり、私たちは巨大な課題に直面していました。膨大なデータはあるものの、それを分析・活用する有効な手段がなかったのです。しかし現在のテクノロジーは、Eコマース、金融ソフトウェア、研究、ビジネス管理、データマイニングといった現代社会に不可欠な、絶え間なく押し寄せるクエリやトランザクションを処理できるようになりました。さらに「IoT(モノのインターネット)」という新たな技術フロンティアの出現により、データを生成しオンラインでトランザクションを実行するデバイスの数は増加の一途をたどっています。カメラ、照明スイッチ、さらには冷蔵庫までもが、オンラインで有用なデータを作り出すデバイスの長いリストに加わりました。
このような状況では、現在のデータストアへの要求に応えるだけでなく、今後避けられないデータ増加や、まだ想像すらされていない新たなデータソースやトランザクションの急増にも対応できるスケーリング戦略を実装することが極めて重要です。
スケーリングとは、現在のワークロードに適切に対応できるよう、必要なデータベースリソースを柔軟に増減させることを意味します。主なスケーリング手法は次の2つです。
- 垂直スケーリング: クラスタ内の基盤ノードにRAM、ストレージ容量、CPUを追加(または削除)します。
- 水平スケーリング: 単一ノードにリソースを積み増す代わりに、ワークロード処理のために必要に応じてノード自体を追加します。
ほとんどのリレーショナルデータベースは垂直スケーリングを採用しています。一方、多くの分散データベース(多くの場合、非リレーショナル)は水平スケーリングを使用しており、こちらの方が大量のトランザクション負荷、頻繁なクエリ、読み書き、耐障害性要件への対応に適しています。垂直スケーリングには限界があり、単一ハードウェアの技術的(計算能力)制約を超えることはできません。
これに対し、水平スケーリングは計算上の制約を受けず、利用可能なハードウェアの量とソフトウェアのサポート範囲によってのみ制限されます。CockroachDBのユニークな点は、従来は困難とされてきたリレーショナルデータベースの水平スケーリングに対する優れたソリューションを提供していることです。分散型オンライントランザクション処理(OLTP)システムに不可欠な高速なリアルタイム読み書きに応答できます。CockroachDBは垂直方向にもスケール可能ですが、ノード追加によるスケーリングが推奨される方法です。
CockroachDBのスケーリングの特別な点とは?
Rackspace ObjectRocketのプロダクトマネージャーであるDerek Johnson氏によると、CockroachDBのスケーリングで最も魅力的なのは、その賢さだといいます。最初のノードを作成・設定した後は、後続のノード追加が大幅に簡素化されます。マルチノード環境では、オートスケール、データバランシング、地理固有のコンプライアンス要件の自律的管理といった強力なCockroachDBの機能を活用することで、データストアを信頼性が高く、コンプライアンス準拠かつ高性能な状態に保てます。最適化された構成により、CockroachDBの真の力を引き出せます。たとえば、--localityフラグでノードのリージョンとアベイラビリティゾーンを指定すると、CockroachDBはジオパーティショニングを実装し、指定されたリージョン内にデータを自動的に保持します。
以下、スケーリングのハイライトを詳しく見ていきましょう。
データストアのスケーリングにおけるデータ整合性
- トランザクションはACID準拠であり、
BEGINやCOMMITといった通常のSQLコマンドで直感的に利用できます。 - CockroachDBは一般的なリレーショナルデータベースとは異なり、スケーリング時にすべての書き込みを単一ノードに集中させるのではなく、読み書きの両方を関連するすべてのノードに分散させます。このマルチアクティブ可用性こそがCockroachDB流の高可用性であり、地理的な広がりを実現します。
- CockroachDBは合意形成(コンセンサス)によるレプリケーションを採用し、少なくとも3つの異なるノードにレプリケーション要求を送信したうえで、過半数のノードがデータの正常なレプリケーションを報告するまでコミットを待機します。
- 各書き込みにインテント(intent)とレコードを持つ仲介型トランザクションにより、トランザクションの競合を防止します。
- CockroachDBは、トランザクションレコードとライトインテント(write intent)という2つのオブジェクトですべてのトランザクションを仲介します。両者は互いに状態を確認し合い、必要に応じてトランザクションを再起動することで、常に最新の値がコミットされることを保証します。
- データバランシングとレプリケーションにより、パフォーマンスとデータ整合性の優れたバランスを実現します。
ジオパーティショニングが課題を解決
地理的に分離されたシャードを作成してレイテンシを改善する方式では、地理横断的なクエリが実行できなくなるというトレードオフが生じます。CockroachDBはこれとは異なり、レンジ(range)レベルの設定を通じて、定義されたリージョン内でデータをレプリケートします。CockroachDBのユニークなジオパーティショニング機能は、二重の価値をもたらします。データを保存する特定のリージョンを設定することで、アプリケーションパフォーマンスの向上(ユーザーのアプリケーションに近い場所へのデータ配置)と、GDPRのデータローカリティコンプライアンス対応を同時に達成できるのです。
CockroachDB Admin UIにはNode Map(ノードマップ)と呼ばれる優れた地理表示機能があり、世界地図上にすべてのノードのアイコンと各ノードの詳細情報を表示します。この視覚的な表示は、データストア間のレイテンシ問題の計画立案やトラブルシューティングに大いに役立ちます。ObjectRocket Mission Control UIからCockroachDBにアクセスすれば、CockroachDB Admin UIへ簡単にリンクしてNode Mapを確認できます。
適切な構成での手動ノード追加により、スマートで迅速なスケールアウトが可能
- 新しいノードを計画的に立ち上げたい場合は、CLIまたはAdmin UIからコマンドを実行してノードを作成し、必要なフラグやその他の構成を設定できます。
- 多くのデータベースではスケーリングのために停止と再起動が必要ですが、CockroachDBならシステムに負荷がかかった状態でもノードを簡単に追加できます。
オーケストレーションの活用で、ダウンタイムゼロの自動スケーリング
CockroachDBは、オーケストレーションとの組み合わせにより、次のようなスケーリングの利点を提供します。
- オーケストレーションプラットフォーム経由でのCockroachDBスケーリングはシンプルで、強力な自動化を可能にします。たとえば、Kubernetes(ObjectRocketも採用)を使用すれば、わずか1つのコマンドでCockroachDBをスケールアウトでき、必要に応じた新規リソースのプロビジョニングと追加ポッドの起動が自動的に行われます。
- ノード間のデータリバランシングは自動的に実行され、データセンターや異なるクラウドプロバイダー間でも同様に機能します。
- 分散トランザクションにより、ワークロードへの影響、ダウンタイム、レイテンシの増加は一切ありません。
- 全ノードにわたるサーバー利用率の均等な最適化は、CockroachDBのオートスケーリングがもたらす自然な結果です。
マネージドサービスですべてを統合
ObjectRocketは、Kubernetesコンテナベースのアーキテクチャを活用し、CockroachDBデータストア向けの完全なマネージドサービスを提供します。このサービスには、設計およびデプロイメントのコンサルティング、充実したテクニカルサポート、そしてエンタープライズライセンス版CockroachDBのすべてのメリットが含まれています。
マネージドCockroachDBソリューションの主な機能は以下のとおりです。
- 3ノード構成の高可用性(HA)クラスタ
- ObjectRocket UI経由でのCockroachDB Admin UIへのアクセス
- IPアドレスホワイトリスト
- ユーザー認証
- トランスポート層セキュリティ(TLS)
つまり、快適なSQLインターフェースとPostgreSQLワイヤ互換性を備えた、リレーショナルかつACID準拠のデータストアを、自動HA、容易なスケーラビリティ、地理的スケーリングとともに手に入れられるのです。
ObjectRocketのマネージドCockroachDBでは、事前定義されたノードタイプの中からデータニーズに最適なオプションを選択し、そのノードタイプを必要なだけ追加して水平スケーリングできます。Kubernetesベースのプラットフォームが障害発生ノードや問題のあるノードを自動的に置き換えるため、クラスタが常に稼働し利用可能な状態であることが保証されます。
今こそ、CockroachDBとRackspace ObjectRocketのマネージドサービスを検討する絶好のタイミングです。CockroachDBのマネージド提供がどのようにデータストア要件を解決できるかについては、Top 5 Use Casesブログをご覧ください。Cockroach®には優れた公式ドキュメントが整備されており、CockroachDBに関するご相談や詳細のご確認は、Rackspaceまでお気軽にお問い合わせください。
Rackspace Cloud利用規約はこちらからご覧いただけます。
コメントやご質問はフィードバックタブをご利用ください。Sales Chatをクリックすれば、今すぐチャットで会話を始めることもできます。
-
ObjectRocketインスタンスでJSONStudioを使用する方法
JSONStudioとObjectRocketは、Javaの世界における理想的な組み合わせです。MySQLを扱ったことがある方なら、PHPMyAdminやMySQL Workbenchといったツールを使ってデータベースに接続し、アドホックなクエリを実行したりレポートを作成したりした経験があるでしょう。これらのツールは長い歴史を持ち、日々のデータベース操作に欠かせない存在へと進化してきました。MongoDBにも同様のツールをお探しなら、jSonar社が提供する「JSONStudio」をぜひチェックしてみてください。JSONStudioはWebベースのフロントエンドで、あらゆるMongoDB環境と
-
ObjectRocketのElasticsearchでKibana 4をDockerコンテナで稼働させる方法
数百万件(あるいは数十億件!)にも及ぶElasticsearchのドキュメントを、見栄えの良いチャート・グラフ・テーブルに変換したいとお考えなら、答えはKibanaです。KibanaはElastic社が提供するプロダクトであり、Elasticsearchと密接に連携し、膨大なデータを直感的に分析するための使いやすいインターフェースを提供します。現在、ObjectRocketのすべてのElasticsearchインスタンスにはKibana 3がプリロードされており、各HTTPエンドポイントの「/_plugin/kibana」からアクセスできます。しかし、Kibana 4には多くの改善点や新機能が