(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025005417
(43)【公開日】2025-01-16
(54)【発明の名称】クラウドデータベース記憶システム
(51)【国際特許分類】
G06F 11/20 20060101AFI20250108BHJP
G06F 16/28 20190101ALI20250108BHJP
【FI】
G06F11/20 689
G06F16/28
【審査請求】未請求
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024100612
(22)【出願日】2024-06-21
(31)【優先権主張番号】18/341,900
(32)【優先日】2023-06-27
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】300015447
【氏名又は名称】エスアーペー エスエー
【住所又は居所原語表記】Dietmar-Hopp-Allee 16, 69190 Walldorf, Germany
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】イヴァン・シュレーター
【テーマコード(参考)】
5B034
5B175
【Fターム(参考)】
5B034AA00
5B034AA04
5B034CC04
5B034DD01
5B034DD07
5B175AA01
(57)【要約】
【課題】記憶ノード障害のブラスト半径と、記憶ノード障害後の完全な冗長性に必要とされる時間およびリソースとを低減するためのシステムを提供する。
【解決手段】システムおよび方法は、複数の記憶ノード上のデータベーステーブルシャードの記憶を含む。各シャードは、複数の複製として記憶されてよく、ここで、所与のシャードの各複製は、異なる記憶ノード上に記憶される。所与の記憶ノードの障害の場合、所与の記憶ノード上に記憶されていたすべてのシャード複製が他の記憶ノードから新しいまたは既存の記憶ノードに複写される。記憶ノードは、複数のテナントに関連するデータベーステーブルのシャードを記憶し得る。
【選択図】
図4
【特許請求の範囲】
【請求項1】
第1の処理ユニットと第1のデータ記憶デバイスとを含む第1の記憶ノードであって、前記第1のデータ記憶デバイスは、第1のデータベーステーブルの第1のシャードの第1の複製を記憶し、前記第1のシャードは、前記第1のデータベーステーブルの第1のキー範囲を含む、第1の記憶ノードと、
第2の処理ユニットと第2のデータ記憶デバイスとを含む第2の記憶ノードであって、前記第2のデータ記憶デバイスは、前記第1のデータベーステーブルの前記第1のシャードの第2の複製を記憶する、第2の記憶ノードと、
第3の処理ユニットと第3のデータ記憶デバイスとを含む第3の記憶ノードであって、前記第3のデータ記憶デバイスは、前記第1のデータベーステーブルの前記第1のシャードの第3の複製を記憶する、第3の記憶ノードと、
第4の処理ユニットと第4のデータ記憶デバイスとを含む第4の記憶ノードであって、前記第4のデータ記憶デバイスは、前記第1のデータベーステーブルの第2のシャードの第1の複製を記憶し、前記第2のシャードは、前記第1のデータベーステーブルの第2のキー範囲を含む、第4の記憶ノードと、
第5の処理ユニットと第5のデータ記憶デバイスとを含む第5の記憶ノードであって、前記第5のデータ記憶デバイスは、前記第1のデータベーステーブルの前記第2のシャードの第2の複製を記憶する、第5の記憶ノードと、
第6の処理ユニットと第6のデータ記憶デバイスとを含む第6の記憶ノードであって、前記第6のデータ記憶デバイスは、前記第1のデータベーステーブルの前記第2のシャードの第3の複製を記憶する、第6の記憶ノードと
を含む、システム。
【請求項2】
前記第1のデータベーステーブルは、第1のテナントスキーマに準拠する第1のテナントのテーブルであり、前記第1のデータ記憶デバイスは、第2のデータベーステーブルの第3のシャードの第1の複製を記憶し、前記第3のシャードは、前記第2のデータベーステーブルの第3のキー範囲を含み、前記第2のデータベーステーブルは、第2のテナントスキーマに準拠する第2のテナントのテーブルであり、前記システムは、
第7の処理ユニットと第7のデータ記憶デバイスとを含む第7の記憶ノードであって、前記第7のデータ記憶デバイスは、前記第2のデータベーステーブルの前記第3のシャードの第2の複製を記憶する、第7の記憶ノードと、
第8の処理ユニットと第8のデータ記憶デバイスとを含む第8の記憶ノードであって、前記第8のデータ記憶デバイスは、前記第2のデータベーステーブルの前記第3のシャードの第3の複製を記憶する、第8の記憶ノードと
をさらに含む、請求項1に記載のシステム。
【請求項3】
前記第1のシャードを前記第1のテナント、前記第1のデータベーステーブル、前記第1のキー範囲、前記第1の記憶ノード、前記第2の記憶ノード、および前記第3の記憶ノードに関連付ける第1のメタデータを含む第1のテナントルートシャードと、
前記第2のシャードを前記第2のテナント、前記第2のデータベーステーブル、前記第3のキー範囲、前記第4の記憶ノード、前記第5の記憶ノード、および前記第6の記憶ノードに関連付ける第2のメタデータを含む第2のテナントルートシャードと
をさらに含む、請求項2に記載のシステム。
【請求項4】
前記システムは、前記第1のテナントルートシャードの複数の複製および前記第2のテナントルートシャードの複数の複製を記憶する、請求項3に記載のシステム。
【請求項5】
前記第1のシャードを前記第1のデータベーステーブル、前記第1のキー範囲、前記第1の記憶ノード、前記第2の記憶ノード、および前記第3の記憶ノードに関連付けるメタデータを含むルートシャード
をさらに含む、請求項1に記載のシステム。
【請求項6】
前記システムは、前記ルートシャードの複数の複製を記憶する、請求項5に記載のシステム。
【請求項7】
第7の処理ユニットと第7のデータ記憶デバイスとを含むマネージャノードであって、
前記第1の記憶ノードの障害を検出し、
前記障害の検出に応じて、前記第1のシャードの前記第2の複製を前記第6の記憶ノードに複写するように前記第2の記憶ノードに命令する
ためのマネージャノード
をさらに含む、請求項1に記載のシステム。
【請求項8】
第1の処理ユニットと第1のデータ記憶デバイスとを含む第1の記憶ノードであって、前記第1のデータ記憶デバイスは、第1のデータベーステーブルの第1のシャードを記憶し、前記第1のシャードは、前記第1のデータベーステーブルの第1のキー範囲を含む、第1の記憶ノードと、
第2の処理ユニットと第2のデータ記憶デバイスとを含む第2の記憶ノードであって、前記第2のデータ記憶デバイスは、前記第1のデータベーステーブルの第2のシャードを記憶し、前記第2のシャードは、前記第1のデータベーステーブルの第2のキー範囲を含む、第2の記憶ノードと、
第3の処理ユニットと第3のデータ記憶デバイスとを含む第3の記憶ノードと、
第4の処理ユニットと第4のデータ記憶デバイスとを含むマネージャノードであって、前記第1のシャードを第3のキー範囲に関連する第3のシャードと第4のキー範囲に関連する第4のシャードとに分割し、前記第3のシャードを前記第1の記憶ノードの前記第1のデータ記憶デバイスに記憶し、前記第4のシャードを前記第3の記憶ノードの前記第3のデータ記憶デバイスに記憶するように前記第1の記憶ノードに命令するためのマネージャノードと
を含む、システム。
【請求項9】
第4の処理ユニットと第4のデータ記憶デバイスとを含む第4の記憶ノードであって、前記第4のデータ記憶デバイスは、前記第1のデータベーステーブルの第5のシャードを記憶し、前記第5のシャードは、前記第1のデータベーステーブルの第5のキー範囲を含む、第4の記憶ノード
をさらに含み、
前記マネージャノードは、
前記第2のシャードを前記第5のシャードとマージして、前記第2のキー範囲と前記第5のキー範囲とを含む第6のキー範囲に関連する第6のシャードを作成するように前記第4の記憶ノードに命令し、
前記第2のシャードを削除するように前記第2の記憶ノードに命令し、
前記第2の記憶ノードをデコミッションする
ことを行う、請求項8に記載のシステム。
【請求項10】
前記第3のデータ記憶デバイスは、第2のデータベーステーブルの第5のシャードを記憶し、前記第5のシャードは、前記第2のデータベーステーブルの第5のキー範囲を含む、請求項8に記載のシステム。
【請求項11】
前記第1のデータベーステーブルは、第1のテナントスキーマに準拠する第1のテナントのテーブルであり、前記第2のデータベーステーブルは、第2のテナントスキーマに準拠する第2のテナントのテーブルである、請求項10に記載のシステム。
【請求項12】
第4の処理ユニットと第4のデータ記憶デバイスとを含む第4の記憶ノードであって、前記第4のデータ記憶デバイスは、前記第1のデータベーステーブルの第6のシャードを記憶し、前記第6のシャードは、前記第1のデータベーステーブルの第6のキー範囲を含む、第4の記憶ノード
をさらに含み、
前記マネージャノードは、
前記第2のシャードを前記第6のシャードとマージして、前記第2のキー範囲と前記第6のキー範囲とを含む第7のキー範囲に関連する第7のシャードを作成するように前記第4の記憶ノードに命令し、
前記第2のシャードを削除するように前記第2の記憶ノードに命令し、
前記第2の記憶ノードをデコミッションする
ことを行う、請求項11に記載のシステム。
【請求項13】
コンピュータ実施方法であって、
第1のデータベーステーブルの第1のシャードおよび前記第1のデータベーステーブルの第2のシャードを判定するステップであって、前記第1のシャードは、前記第1のデータベーステーブルの第1のキー範囲を含み、前記第2のシャードは、前記第1のデータベーステーブルの第2のキー範囲を含む、ステップと、
前記第1のデータベーステーブルの前記第1のシャードの第1の複製を第1の記憶ノードに記憶するステップと、
前記第1のデータベーステーブルの前記第1のシャードの第2の複製を第2の記憶ノードに記憶するステップと、
前記第1のデータベーステーブルの前記第1のシャードの第3の複製を第3の記憶ノードに記憶するステップと、
前記第1のデータベーステーブルの前記第2のシャードの第1の複製を第4の記憶ノードに記憶するステップと、
前記第1のデータベーステーブルの前記第2のシャードの第2の複製を第5の記憶ノードに記憶するステップと、
前記第1のデータベーステーブルの前記第2のシャードの第3の複製を第6の記憶ノードに記憶するステップと
を含む、方法。
【請求項14】
前記第1のデータベーステーブルは、第1のテナントスキーマに準拠する第1のテナントのテーブルであり、前記方法は、
第2のデータベーステーブルの第3のシャードを判定するステップであって、前記第2のデータベーステーブルは、第2のテナントスキーマに準拠する第2のテナントのテーブルであり、前記第3のシャードは、前記第2のデータベーステーブルの第3のキー範囲を含む、ステップと、
前記第2のデータベーステーブルの前記第3のシャードの第1の複製を前記第1の記憶ノードに記憶するステップと、
前記第2のデータベーステーブルの前記第3のシャードの第2の複製を第7の記憶ノードに記憶するステップと、
前記第2のデータベーステーブルの前記第3のシャードの第3の複製を第8の記憶ノードに記憶するステップと
をさらに含む、請求項13に記載の方法。
【請求項15】
前記第1のシャードを前記第1のテナント、前記第1のデータベーステーブル、前記第1のキー範囲、前記第1の記憶ノード、前記第2の記憶ノード、および前記第3の記憶ノードに関連付ける第1のメタデータを含む第1のテナントルートシャードを記憶するステップと、
前記第2のシャードを前記第2のテナント、前記第2のデータベーステーブル、前記第3のキー範囲、前記第4の記憶ノード、前記第5の記憶ノード、および前記第6の記憶ノードに関連付ける第2のメタデータを含む第2のテナントルートシャードを記憶するステップと
をさらに含む、請求項14に記載の方法。
【請求項16】
前記第1のテナントルートシャードの複数の複製および前記第2のテナントルートシャードの複数の複製を記憶するステップ
をさらに含む、請求項15に記載の方法。
【請求項17】
前記第1のシャードを前記第1のデータベーステーブル、前記第1のキー範囲、前記第1の記憶ノード、前記第2の記憶ノード、および前記第3の記憶ノードに関連付けるメタデータを含むルートシャードを記憶するステップ
をさらに含む、請求項13に記載の方法。
【請求項18】
前記ルートシャードの複数の複製を記憶するステップ
をさらに含む、請求項17に記載の方法。
【請求項19】
前記第1の記憶ノードの障害を検出するステップと、
前記障害の検出に応じて、前記第1のシャードの前記第2の複製を前記第6の記憶ノードに複写するように前記第2の記憶ノードに命令するステップと
をさらに含む、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、クラウドデータベース記憶システムおよび関連する方法に関する。
【背景技術】
【0002】
現代の組織は、様々なコンピューティングサービスを提供する分散型コンピューティングシステムからなるシステムランドスケープをしばしば利用する。たとえば、組織は、(それ自体が異なる地理的ロケーション内に位置し得る)オンプレミスデータセンター内に、および1つまたは複数のサービスとしてのプラットフォーム(PaaS:Platform-as-a-Service)プロバイダによって提供されるデータセンター内に位置するコンピューティングシステム内でサービスを展開することがある。コンピューティングシステムは、(たとえば、スケーラブルなオンデマンド仮想機械を使用してサービスを提供する)クラウドベースのコンピューティングシステムを含むことがある。
【0003】
サービスとしてのソフトウェア(SaaS:Software-as-a-Service)モデルでは、サービスプロバイダは、(場合によっては、別個のPaaSプロバイダによって提供されることがある)クラウドベースのコンピューティングシステム上にサービス(たとえば、データベース)を展開する。サービスは、サービスプロバイダへの料金の支払いと引き換えにカスタマによって使用され得る。カスタマは、サービスの動作、管理、およびスケーリングには関与せず、それらはすべてサービスプロバイダによって実施される。
【0004】
サービスとして提供されるデータベースの場合、サービスプロバイダは、データベースの記憶装置と計算レイヤの両方に対してスケーラビリティを確実にしようと試みる。いくつかの展開は、各レイヤに対して別個のノードクラスタを利用することによって、記憶装置および計算レイヤを分離する(disaggregate)。この分離はレイヤの独立したスケーリングを(理論的に)可能にする。
【0005】
そのようなデータベースサービスの記憶レイヤは、多くの記憶ノードからなることがあり、それらの各々は、記憶ノードプロセスを実行するためのローカルディスク空間およびコンピューティングリソース(たとえば、RAMおよびCPU)を含む。典型的には、データベースサービスは、シングルテナントシステム(single-tenant system)であり、記憶レイヤの記憶ノードのすべてが共同して単一のデータベースを記憶する。各テナントは別個の記憶レイヤを必要とするため、これらのシステムは、小規模テナントにとってコストがかかる。個々の記憶ノードの追加または削除は適度に細かいスケーリング増加を提供しないため、そのようなシステムの弾性は、より大規模なテナントにとって好適ではない。
【0006】
データベースインスタンスの障害は、大きな「ブラスト半径(blast radius)」と呼ばれる、そのデータベースインスタンス上でホストされているすべてのテナントの相関障害をもたらす。高い可用性を提供するために、旧来のデータベースシステムは、個別に実行しているフェイルオーバーインスタンスに一次データベースインスタンス全体を連続的に複製する。ユーザは、一次インスタンスに障害がある場合、フェイルオーバーインスタンスに切り替える。そのようなシステムは認知されるダウンタイムを数秒に低減するが、これらは、(すなわち、フェイルオーバーインスタンスから新しいインスタンスへのデータベース全体の複製を通して)完全な冗長性を回復するために高価な追加のインフラストラクチャ(すなわち、フェイルオーバーインスタンス)およびかなりの時間を必要とする。
【0007】
十分な性能を提供するために、回復およびスケーリングなど、データ集約的な動作に好適な帯域幅を提供するためのネットワーキングリソースがプロビジョニングされる。これらのリソースは、したがって、典型的な負荷に対して過剰にプロビジョニングされ、コストを無駄にする。
【発明の概要】
【課題を解決するための手段】
【0008】
必要とされるのは、記憶ノード障害のブラスト半径と、記憶ノード障害後の完全な冗長性に必要とされる時間およびリソースとを低減するためのシステムである。
【図面の簡単な説明】
【0009】
【
図1】いくつかの実施形態による、分散型データベースシステムを示す図である。
【
図2】いくつかの実施形態による、複数の記憶ノード上へのデータベーステーブルシャードの記憶を示す図である。
【
図3】いくつかの実施形態による、データベーステーブルシャードへのアクセスを示す図である。
【
図4】いくつかの実施形態による、記憶ノード上のデータベーステーブルシャードにアクセスするためのプロセスの流れ図である。
【
図5a】いくつかの実施形態による、スケールアウトプロセスを示す図である。
【
図5b】いくつかの実施形態による、スケールアウトプロセスを示す図である。
【
図5c】いくつかの実施形態による、スケールアウトプロセスを示す図である。
【
図6a】いくつかの実施形態による、スケールインプロセスを示す図である。
【
図6b】いくつかの実施形態による、スケールインプロセスを示す図である。
【
図6c】いくつかの実施形態による、スケールインプロセスを示す図である。
【
図7】いくつかの実施形態による、複数の記憶ノード上へのデータベーステーブルシャード複製の記憶を示す図である。
【
図8】いくつかの実施形態による、データベーステーブルシャードへのアクセスを示す図である。
【
図9a】いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールアウトプロセスを示す図である。
【
図9b】いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールアウトプロセスを示す図である。
【
図9c】いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールアウトプロセスを示す図である。
【
図10a】いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールインプロセスを示す図である。
【
図10b】いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールインプロセスを示す図である。
【
図10c】いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールインプロセスを示す図である。
【
図11a】いくつかの実施形態による、データベーステーブルシャード複製を使用した回復プロセスを示す図である。
【
図11b】いくつかの実施形態による、データベーステーブルシャード複製を使用した回復プロセスを示す図である。
【
図11c】いくつかの実施形態による、データベーステーブルシャード複製を使用した回復プロセスを示す図である。
【
図12】いくつかの実施形態による、複数の記憶ノード上の複数のテナントのデータベーステーブルシャード複製の記憶を示す図である。
【
図13】いくつかの実施形態による、複数のテナントのデータベーステーブルシャードへのアクセスを示す図である。
【
図14】いくつかの実施形態による、データベースサービスを提供するクラウドベースの仮想機械のブロック図である。
【発明を実施するための形態】
【0010】
以下の説明は、当業者が、説明される実施形態を作成し、使用することを可能にするために提供される。しかしながら、様々な修正は依然として当業者に容易に明らかであろう。
【0011】
いくつかの実施形態によれば、データベースシステムの各テナントのデータは、シャードに論理的にスプリットされ、所与のテナントのシャードは複数の記憶ノードにわたって分散される。シャードは、バッチ要求処理を可能にすることによって、個々のデータ項目に対する動作コストを償却するために十分大きく、(たとえば、バックアップ/回復、シャード再配置のための)好適に高速なシャード全体の動作を可能にするために十分小さい。いくつかの実施形態では、シャードは、実質的に等しくサイジングされ、シャードごとに1GB~10GBの範囲内であり得る。
【0012】
経時的に、シャードに追加されるデータは、指定された最大シャードサイズよりもシャードを大きくさせることがある。この場合、シャードは、2つのシャードにスプリットされ得、2つのシャードのうちの一方が、元の記憶ノード上に残り、他方のシャードが別の記憶ノードに移動される。同様に、シャードのサイズが指定された最小シャードサイズよりも縮小される場合、シャードは、異なる記憶ノード上に位置し得る隣接するキー範囲(key range)に関連するシャードとマージされ得る。実施形態は、したがって、特定のテナントに対して必要なだけ多くのシャードを維持することによって、テナントごとにきめの細かい弾性空間割振りを提供し得る。
【0013】
実施形態はまた、記憶ノード障害を相関解除し得る。具体的には、記憶ノードの障害は、その記憶ノード上に記憶されたシャードへのアクセスを制限するが、他の記憶ノード上に記憶された他のシャードへのアクセスは制限しない。各テナントのシャードが比較的均一に分散されている多数の記憶ノードを仮定すると、記憶ノード障害は、所与のテナントのデータの小部分のみを利用不可能にレンダリングすることになる。そのような不可用性は、本明細書で説明する回復オプションに鑑みて一時的なものである可能性がある。
【0014】
その上、テナントのデータは記憶ノードにわたって分散されるため、計算ノードは、いくつかの実施形態では、データに並列にアクセスし得る。たとえば、単一の記憶ノード上に位置する大きなテーブルを走査する代わりに、実施形態は、計算ノードが、テーブルのシャードを含む数百の記憶ノードに同時に問い合わせることを可能にし得る。この並列化は、いくつかのシナリオにおいて、少なくとも一桁大きな性能改善を提供し得る。
【0015】
高い可用性を達成するために、各シャードは、異なる記憶ノードの間で複数回数複製され得る。比較的小さいサイズのシャードおよび大きなノード間帯域幅は、そのような複製が迅速に処理されることを可能にする。記憶ノードの障害またはデコミッショニング(decommissioning)時に、その記憶ノードによって記憶されたすべてのシャードのデータは、他の記憶ノード上に記憶されているそれらのシャードの複製を通してアクセス可能な状態にとどまる。
【0016】
さらに、シャードの複製は通常残りの記憶システム全体にわたって分散されるため、生存しているノードは、完全な冗長性を復元するために新しい複製を生成することができる。たとえば、各シャードの複製はその記憶ノードから新しい記憶ノードに送信され得る。データベースのシャードが多くの記憶ノードにわたって分散されるとき、データベースの完全な冗長性を復元するためのデータの再複製は、(すなわち、1:1通信ではなく、n:n通信を使用して)すべてのノードにわたって並列に進められ得る。したがって、完全な冗長性の復元は、いくつかの実施形態では、数秒内に完了し得る。対照的に、他のシステムは、障害のあるノードに対して調整するために、ネットワーク上でのデータベース全体の再分散および/またはノード全体のデータの複写を必要とする。
【0017】
小単位での、テナントへのディスク空間の割当ておよびテナントにわたる記憶インフラストラクチャの共有は、テナントごとに少なくとも1つの別個の仮想機械を必要とするシステムと比較して、テナントごとの固定コストをかなり(すなわち、考えられる最小シャードサイズのコストに)低減する。いくつかの実施形態は、計算レイヤがテナントにわって共有され得るステートレス計算レイヤを採用し、さらに、小規模テナントに対する増分コストをほぼゼロにする。
【0018】
図1は、いくつかの実施形態による、システムを示す。
図1に示す構成要素は、知られているまたは知られることになるコンピューティングハードウェアおよび/またはソフトウェアの任意の好適な組合せを使用して実装され得る。そのような組合せは、コンピューティングリソースが弾性的に仮想化され割り振られるクラウドベースの実装形態を含み得る。いくつかの実施形態では、単一のコンピューティングデバイスによって、2つ以上の構成要素が実装される。
【0019】
クライアント110~116は、データベースクエリを発行するアプリケーションまたはサービスを実行するコンピューティングシステムを含み得る。クライアント110~116は、ユーザ(図示せず)によってクライアント110~116に入力された要求に応じて、データベースクエリを発行し得る。計算レイヤ120は、(たとえば、計算レイヤ120によって提供されたAPIを介して)クエリを受信し、記憶レイヤ130内に記憶されたデータとともに動作して、対応するクエリ結果をクライアント110~116に提供する。
【0020】
計算レイヤ120は、複数の計算ノード122~128を含む。同様に、記憶レイヤ130は、複数の記憶ノード132~138を含む。ノード122~128および132~138の各々は、少なくとも1つの処理ユニット(たとえば、CPU)と、ランダムアクセスメモリと、少なくとも1つのデータ記憶デバイス(たとえば、NVMe SSD)とを含み、単一のコンピュータサーバ、コンピュータサーバのグループ、仮想機械、および知られているまたは知られることになる任意の他の組合せを含み得る。いくつかの実施形態では、計算レイヤ120は、完全にステートレスであり、ネットワーク上でブートされ、したがって、計算ノード122~128は記憶デバイスを含むことが必要とされない。
【0021】
いくつかの実施形態では、計算レイヤ120および記憶レイヤ130は、Kubernetesクラスタによって実装される。Kubernetesは、自動化の展開、コンテナ化されたアプリケーションのスケーリングおよび管理のためのオープンソースシステムである。Kubernetesクラスタは、物理サーバおよび/または仮想機械を備え得る多くのノードからなる。ノードは、ソフトウェアコンテナ内でアプリケーションを実行する。1つまたは複数のコンテナは、ポッドにグループ化されてよく、ここで、所与のポッドの各コンテナは同じコンピューティングリソースおよびローカルネットワークを共有する。
【0022】
いくつかの実施形態によれば、
図1は、シングルテナントデータベースシステムを表す。記憶ノード132~138は、単一のテナントに関連するデータを記憶し、計算ノード122は単一のテナントのユーザによって動作させられるクライアント110~116から受信されたクエリを処理する。上述のように、記憶ノード132~138の各々は、並列化および弾性を提供するために、単一のテナントに関連するデータのそれぞれのシャードを記憶する。
【0023】
図1は、いくつかの実施形態における、マルチテナントデータベースシステムを表し得る。そのような実装形態では、記憶ノード132~138は、複数のテナントに関連するデータを記憶する。データは、記憶ノード132~138にわって分散されるシャード内に記憶される。計算ノード122~128の各々は、テナント固有のシングルテナントデータベースインスタンスを実行し得る。したがって、クライアント110が第1のテナントのユーザによってアクセスされている場合、クライアント110によって発行されたクエリは、第1のテナントに関連付けられた計算ノード122~128のうちの1つに向けられる。
【0024】
さらに別の例では、記憶ノード132~138は、複数のテナントに関連するデータを記憶し、計算ノード122~128の各々は、マルチテナントデータベースインスタンを実行する。したがって、そのデータが問い合わされたテナントにかかわらず、計算ノード122~128のうちのいずれかがクライアント110~116から受信されるクエリを処理することができる。
【0025】
図2は、いくつかの実施形態による、複数の記憶ノード上への単一のテナントのデータベーステーブルシャードの記憶を示す。データベーステーブル210、220、および230は、所与のデータベーステナントに関連するデータの論理的表現である。データベーステーブル210、220、および230は、当技術分野で知られているような特定のスキーマに準拠し得る。いくつかの実施形態によれば、データベーステーブル210、220、および230の各々の各行は、オブジェクトのインスタンスを記述する値を含む。実施形態は、任意のタイプのオブジェクトに限定されない。
【0026】
データベーステーブル210、220、および230の各々は、複数のシャードにスプリットされる。具体的には、データベーステーブル210はシャード212、214、および216にスプリットされ、データベーステーブル220はシャード222および224にスプリットされ、データベーステーブル230はシャード232、234、236、および238にスプリットされる。各シャードは、キー範囲に関連付けられる。シャードは、いくつかの実施形態では、実質的に等しくサイジングされ、各シャードのサイズは、1GB~10GBであり得る。実施形態は、テーブルをシャードにスプリットし、シャードのキー範囲を定義するための任意のアルゴリズムを含む。一実装形態では、記憶レイヤ130は、鍵/値ストアであり、シャードのキー範囲は、そのシャード内に記憶されたキーのキー範囲である。いくつかの実施形態によれば、シャードは、2つ以上のデータベーステーブルのデータを含み得る。
【0027】
本例によれば、シャードは、記憶レイヤ130の記憶ノード132、134、および136にわたって記憶される。記憶ノード132はシャード212、214、216、および236を記憶し、記憶ノード134はシャード222、232、および238を記憶し、記憶ノード136はシャード224および234を記憶する。記憶ノード138および記憶レイヤ130の任意の他の記憶ノードは、テナントの他の示されていないデータベーステーブルのシャードを記憶すると仮定される。
【0028】
記憶レイヤ130の記憶ノードにわたるシャードの分散は、任意の好適なアルゴリズムに基づき得る。記憶ノード132はテーブル210のすべてのシャード212、214、216を記憶するため、ノード132の障害は、テーブル210のデータのすべてのアクセス不能をもたらす。いくつかの実施形態では、テーブルの各シャードは、ノードの障害がテーブルのせいぜい1つのシャードのアクセス不能をもたらすように、好ましくは、異なるノード(たとえば、テーブル220のシャード222および224)上に記憶される。いくつかの実施形態は、記憶ノードごとに所与のテナントのせいぜい1つのシャードを記憶し得る。
【0029】
図3は、いくつかの実施形態による、データベーステーブルシャードへのアクセスを示す。データベース計算フロントエンド310は、上記で説明したように計算ノード上で実行するデータベースインスタンスを備え得る。データベース計算フロントエンド310は、クライアントから受信されたクエリに応じて、データベーステーブルデータにアクセスする必要があり得る。しかしながら、上記で説明したシャード記憶装置により、データベース計算フロントエンド310は、その要求を適切な記憶ノードに向けるために、所望のデータを含むシャードのロケーションを最初に決定しなければならない。
【0030】
トポロジーマネージャ320は、シャードメタデータ325を記憶する、1つまたは複数のノードからなる。シャードメタデータ325は、システム内の周知のIDに関連付けられ、その中に記憶された他のシャードと同じ様式で、1つまたは複数の記憶ノード132から136の中に記憶され得る。いくつかの実施形態によれば、シャードメタデータ325は、データベースシャードの記憶装置ロケーションを指定する。たとえば、シャードメタデータ325は、テーブルidおよびキー範囲によって各シャードを識別し得る。その上、各シャードはまた、それが記憶される記憶ノードの識別子に関連付けられる。したがって、データベース計算フロントエンド310は、クエリに関連するシャード(たとえば、所与のテーブル内のすべてのシャード)のロケーションについてトポロジーマネージャ320に問い合わせ、返答として、所望のシャードが記憶されている記憶ノードの指示を受信する。データベース計算フロントエンド310は、次いで、シャードが記憶されているノードにデータベース動作を発行する。上記で説明したように、シャードが2つ以上の記憶ノード上に位置する場合、動作は有利には並列に実施され得る。
【0031】
いくつかの実施形態では、テナントの作成は、記憶ノード上に単一のシャードを作成させる。このシャードは、ルートシャードとみなされてよく、ルートシャードは、トポロジーマネージャ320ではなく、そのテナントに関連するシャードメタデータ325を含む。したがって、受信されたクエリに応じて、データベース計算フロントエンド310は、クエリに関連するテナントのルートシャードのロケーションについてトポロジーマネージャに問い合わせ、そのルートシャードからシャードメタデータを取り出し、それに基づいて、所望のシャードが記憶された記憶ノードを判定する。
【0032】
図4は、いくつかの実施形態による、記憶ノード上のデータベーステーブルシャードにアクセスするためのプロセス400の流れ図である。プロセス400および本明細書で説明する他のプロセスは、ハードウェアとソフトウェアの任意の好適な組合せを使用して実施され得る。これらのプロセスを具現するソフトウェアプログラムコードは、固定ディスク、揮発性または不揮発性のランダムアクセスメモリ、DVD、フラッシュドライブ、または磁気テープを含む、任意の非一時的有形媒体によって記憶され、プロセッサ、プロセッサコア、およびプロセッサスレッドを含むが、これらに限定されない、任意の数の処理ユニットによって実行され得る。そのようなプロセッサ、プロセッサコア、およびプロセッサスレッドは、クラウドベースアーキテクチャ内でプロビジョニングされる仮想機械によって実装され得る。実施形態は、以下で説明する例に限定されない。
【0033】
プロセス400は、上記で説明したように、複数の記憶ノード上へのデータベーステーブルシャードの事前の記憶を仮定する。S410において、データベーステーブルシャードのロケーションについての要求を受信する。要求は、データベーステーブル識別子と、識別されたテーブルの1つまたは複数の主キー(または主キー範囲)とを使用して、シャードを識別し得る。要求は、上記で説明したように、計算レイヤの計算ノード上で実行していることがあるデータベースフロントエンドから受信される。シャードは、データベースフロントエンドによってクライアントアプリケーションから受信されたクエリにサービスするために必要とされるデータを含み得る。
【0034】
要求に応じて、記憶されたメタデータに基づいて、シャードを記憶する記憶ノードが判定される。いくつかの実施形態によれば、記憶されたメタデータは、上記で説明したようなトポロジーマネージャによって記憶されたシャードメタデータである。そのようなトポロジーマネージャは、したがって、S410において、要求を受信し、S420において、その要求とシャードメタデータとに基づいて、記憶ノードを判定することができる。一例では、要求は、データベーステーブル識別子と主キー範囲とを含む。トポロジーマネージャは、S420において、シャードメタデータに基づいて識別されたテーブルの主キー範囲を含むシャードを判定し、シャードメタデータに基づいてシャードを記憶する記憶ノードをさらに判定することができる。いくつかの実施形態では、S420は、クエリに関連するテナントのルートシャードを判定することと、ルートシャード内に記憶されたメタデータに基づいて、所望のシャードが記憶されている記憶ノードを判定することとを含む。S430において、判定された記憶ノードの識別子を要求元に提供する。
【0035】
S420において、主キー範囲が2つ以上のシャードに及ぶことが判定され得、その場合、S420において、2つ以上のシャードを記憶する記憶ノードを判定する。別の例では、要求は、テーブル識別子のみを含み、主キーまたはキー範囲は含まない。したがって、S420は、識別されたテーブルのすべてのシャードおよびそれらの対応する記憶ノードを判定することを含む。受信された要求は、任意の数のテーブル識別子および関連するキー範囲を含み得る。
【0036】
S440において、シャードに対するデータベース動作が、シャードが記憶されたデータベースノードにおいて受信される。データベース動作は、S410においてそこから要求が受信されたデータベースフロントエンドによって発行され得、S430において提供される識別子を利用し得る、2つ以上の記憶ノードが識別されている場合、データベース動作は、各他のノードに発行され、S440において、各他のノードにおいて受信され、それによって、2つ以上の記憶ノードによる動作の並列実行を可能にし得る。
【0037】
図5aから
図5cは、いくつかの実施形態による、スケールアウトプロセスを示す。
図5aの記憶ノード132、134、および136は、それぞれのシャードを記憶し、そのうちのいくつかは、
図3に対して、サイズが大きくなっている。したがって、別の記憶ノードを対応する記憶レイヤに追加することによって、記憶ノードのうちの1つによって消費される記憶の量を低減することが手動または自動で(リソース消費パラメータに基づいて)判定され得る。そのような判定は、いくつかの実施形態によれば、トポロジーマネージャによって実施され得る。また、または代替として、シャード234および238のサイズは指定された最大シャードサイズを超えるため、これらのシャードを分割することが判定され得る。
【0038】
図5bは、記憶レイヤへの記憶ノード510の追加を示す。
図5bはまた、記憶ノード132、134、および136の各々から記憶ノード510へのシャードの移動を示す。この移動は、ノードごとのメモリ消費を低減する負荷分散を達成することを意図し得る。
【0039】
図5cは、結果として得られる記憶レイヤを示す。示すように、シャード236は記憶ノード132から記憶ノード510に移動されている。シャード238はシャード238aおよび238bに分割されており、シャード238bは記憶ノード134から記憶ノード510に移動されている。同様に、シャード234はシャード234aおよび234bに分割されており、シャード234bは記憶ノード136から記憶ノード510に移動されている。実施形態は、シャードを等しくサイジングされたシャードに分割することに限定されない。
【0040】
有利には、ノード510に移動したシャードは、各々、異なる(かつ、実質的に独立した)ノード間ネットワーク接続上で移動される。シャードの移動は、したがって、すべての3つのシャードが単一のノードからノード510に移る場合よりも実質的に高速に生じ得る。その上、この移動は、そこからシャードが移動されたノードがそれらのそれぞれの帯域幅の1/nを使用することのみを必要とする。その結果、ノード性能およびシステム応答時間への影響は最小限である。
【0041】
シャードの分割および得られるシャードの移動は、記憶ノードの追加の有無にかかわらず生じ得る。記憶ノードの追加およびその記憶ノードへのシャードの移動も、いずれかのシャードの分割の有無にかかわらず生じ得る。
【0042】
図6aから
図6cは、いくつかの実施形態による、スケールインプロセスを示す。
図6aは、その中のいくつかのシャードが
図5cに示したよりも小さい、記憶ノード132、134、136、および138を示す。したがって、対応する記憶レイヤの記憶ノードの数を低減することが手動または自動で(この場合も、リソース消費パラメータに基づいて)判定され得る。この判定は、いくつかの実施形態によれば、トポロジーマネージャによって実施され得る。
【0043】
本例では、記憶ノード136をデコミッションすることが判定される。したがって、
図6bは、記憶ノード132および510への記憶ノード136のシャードの移動を示す。シャードが移動される先の記憶ノードは、いくつかの実施形態では、負荷分散を達成するために判定される。
【0044】
図6cは、結果として得られた記憶レイヤを示し、ここで、シャード224は記憶ノード136から記憶ノード132に移動されており、シャード234aは記憶ノード136から記憶ノード510に移動されている。記憶ノード136はもはやいずれのシャードも記憶しておらず、したがって、デコミッションされ得る。いくつかの実施形態によれば、スケールインは、また、または代替として、2つ以上の小さいシャードを1つのシャードにマージすることと、負荷分散とリソース消費への考慮に基づいて、1つのシャードを記憶ノード上に配置することとを含み得る。いくつかの実施形態によれば、各シャードに関連するキー範囲により、シャードは、隣接するキー範囲に関連付けられたシャードとのみマージされるべきである。
【0045】
図7は、いくつかの実施形態による、複数の記憶ノード上への単一のテナントのデータベーステーブルシャード複製の記憶を示す。
図2に関して説明したように、データベーステーブル210および220および230は、所与のデータベーステナントに関連するデータの論理的表現であり、異なるキー範囲に関連する複数のシャードにスプリットされている。
【0046】
図7に示すように、記憶レイヤ130は、シャード212、214、216、222、および224の各々の複数の複製を記憶する。複製は、合意プロトコルを使用して、複製にわたってイレイジャーコーディング(erasure coding)を採用するなどして、任意の好適な様式で実施され得、これらは各々、使用事例に基づいて、異なる利点および不利点を示し得る。記憶レイヤ130の記憶ノードにわたる複製の分散は、負荷分散と高い可用性とを提供し得る任意の好適なアルゴリズムに基づき得る。
【0047】
図7には、シャードごとに3つの複製が示されているが、実施形態は、任意の数の複製を利用し得る。3つの異なる記憶ノードにわたって各シャードを複製するプロトコルの場合、特定のシャードのデータは、このシャードにサービスしている3つの記憶ノードのうちの1つに障害があるまたはデコミッションされる場合、完全にアクセス可能な状態にとどまる。複製係数が4以上に設定される場合、複数のノードに障害がある場合(たとえば、5の複製係数を使用する2つのノード障害、または、概して、2k+1の複製係数を有するk個のノード障害の場合)でも、システムは通常の動作を続ける。
【0048】
図7は、各シャードがリーダー複製および2つの従複製によって表される合意プロトコルを反映している。リーダー複製は、リーダー選出アルゴリズムによって判定され、
図7で明確な輪郭によって表示されている。所与のシャードに対するすべての動作は、シャードのリーダー複製を記憶する記憶ノードに向けられ、それに対する変更は、シャードの従複製に複製される。シャードのリーダー複製を含むノードに障害がある場合、シャードの残りの従複製のうちの1つがリーダー複製と指定され、新しいリーダー複製が残りの従複製に対してその変更の複製を開始する。その上、以下で説明するように、新しい従複製は、別の(または新しい)記憶ノード上で迅速にインスタンス化されて、所望の合意プロトコルを再確立する。
【0049】
図8は、いくつかの実施形態による、シャードのリーダー複製へのアクセスを示す。データベース計算フロントエンド310は、その要求を適切な記憶ノードに向けるために、所望のデータを含むシャードのリーダー複製のロケーションを判定する。トポロジーマネージャ320のシャードメタデータ325は、各シャードのすべての複製の記憶ロケーションを指定し、各シャードの現在のリーダー複製を付記する。シャードのリーダー複製を含む記憶ノードに障害があるまたはデコミッションされる場合、シャードの新しいリーダー複製が選出され、それに応じて、シャードメタデータ325が更新される。障害がある/デコミッションされた記憶ノード上に記憶されたいずれの従複製も、シャードメタデータ325から除去される。シャードメタデータ325はまた、各シャードのテーブルIDおよびキー範囲を指定する。
【0050】
したがって、データベース計算フロントエンド310は、クエリに関連するシャード(たとえば、所与のテーブルのすべてのシャード)のロケーションについてトポロジーマネージャ320に問い合わせ、所望のシャードのリーダー複製が記憶された記憶ノードの識別子をそこから受信する。データベース計算フロントエンド310は、次いで、シャードのリーダー複製が記憶されたノードに対してデータベース動作を発行する。この場合も、これらの動作は、シャードが2つ以上の記憶ノード上に位置する場合、有利には、並列に実施され得る。
【0051】
データベース計算フロントエンド310はまた、所望のシャードの従複製が記憶された記憶ノードの識別子を受信し得る。したがって、識別されたリーダー複製に対する動作に障害がある場合、データベース計算フロントエンド310は、異なる記憶ノード上に記憶された対応する従複製のうちの1つに対してその動作をシームレスに再試行することができる。
【0052】
いくつかの実施形態では、ルートシャードは、トポロジーマネージャ320の代わりに、シャードメタデータ325を記憶し、トポロジーマネージャ320は、ルートシャードのロケーションを単に記憶する。ルートシャードはまた、記憶ノード132~138の間で複数の複製の中に記憶されてよく、その場合、トポロジーマネージャ320は各複製のロケーションを記憶する。
【0053】
図9aから
図9cは、いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールアウトプロセスを示す。
図9aの記憶ノード132、134、136、および138は、
図7および
図8に示したようなそれぞれのシャードを記憶する。たとえば、記憶ノードのうちの1つによって消費される記憶の量を低減するために、または改善された可用性を提供するために、別の記憶ノードを対応する記憶レイヤに追加することが手動または自動で判定されると仮定する。
【0054】
図9bは、記憶レイヤへの記憶ノード910の追加を示す。やはり
図9bに示すように、シャードは、記憶ノード132、134、および138の各々から記憶ノード910に移動される。
図9cは、結果として得られた記憶レイヤを示す。シャード222は記憶ノード132から記憶ノード910に移動されており、シャード212は記憶ノード134から記憶ノード910に移動されており、シャード214は記憶ノード138から記憶ノード910に移動されている。本明細書で説明するすべての例において、シャードメタデータ325は、記憶ノード同士の間のシャードの移動により、新しい複製の記憶ロケーションを反映するために更新される。
【0055】
シャードは、異なる(また実質的に独立した)ノード間ネットワーク接続を介してノード910に(すなわち、132から910に、134から910に、また138から910に)移動される。3つではなく、1つのシャードを複写することによって、ノード132、134、および138のそれぞれの負担は他の実装形態よりもはるかに少なくなる。
【0056】
図10aから
図10cは、いくつかの実施形態による、データベーステーブルシャード複製を使用したスケールインプロセスを示す。
図10aは、
図9cに関して説明したような記憶レイヤを反映する。あるいは、示した記憶レイヤの1つまたは複数の記憶ノードの過少利用に基づいて、記憶ノード136をデコミッションすることが手動または自動で判定されると仮定する。
【0057】
図10bは、記憶ノード132、134、および138への記憶ノード136のシャードの移動を示す。移動されるシャードおよびシャードが移動される先の記憶ノードは、いくつかの実施形態では、負荷分散および/またはリソース消費アルゴリズムに基づいて判定され得る。
図10cは、結果として得られた記憶レイヤを示し、ここで、シャード224は記憶ノード136から記憶ノード132に移動されており、シャード214は記憶ノード136から記憶ノード134に移動されており、シャード212は記憶ノード136から記憶ノード138に移動されている。記憶ノード136はもはや何のシャードも記憶していないため、記憶ノード136はデコミッションされてよい。シャードメタデータ325は、次いで、記憶ノード同士の間のシャードの上述の移動により、新しい複製記憶ロケーションを複製するために更新される。
【0058】
図11aから
図11cは、いくつかの実施形態による、データベーステーブルシャード複製を使用した回復プロセスを示す。
図11aは、
図10aに関して説明したような記憶レイヤを反映するが、この場合、記憶ノード136に期せずして障害が生じたと仮定する。いくつかの実装形態では、ノード136のデコミッショニングは、
図11a~
図11cに関して以下で説明するように進められてもよい。
【0059】
障害を検出すると、トポロジーマネージャ320は、シャードメタデータ325にアクセスして、記憶ノード136上に記憶されていたシャードを判定する。次に、トポロジーマネージャ320は、シャードメタデータ325に基づいて、残りの記憶ノードのうちのどれが記憶ノード136上に記憶されていたシャードの複製を記憶しているかを識別する。トポロジーマネージャ320は、次いで、記憶ノード136上に記憶されていたシャードの各々の複製を、ある残りの記憶ノードから異なる残りの記憶ノードに複写するように記憶レイヤに命令する。
【0060】
図11bは、障害のある記憶ノード136上に記憶されていたシャードの各々の複製を他の記憶ノードに複写することを示す。たとえば、シャードメタデータ325は、障害のある記憶ノード136がシャード224、214、および212の複製を記憶していたこと、およびシャード214の複製がリーダー複製だったことを示す。シャードメタデータ325はまた、シャード224の複製がノード134および138上に位置し、シャード214の複製がノード132および910上に位置し、シャード212の複製がノード132および910上に位置することを示す。したがって、
図11bは、ノード138からノード132へのシャード224の、ノード910からノード134へのシャード214の、ノード910からノード138へのシャード212の複写を示す。上述のように、ノードの異なるセット同士の間の複写は、各複写動作が、並列に進み、利用可能な完全なノード間帯域幅を使用することを可能にする。
図11cは、複写動作の完了後に結果としてられた記憶レイヤを示す。
【0061】
その間でシャードが複写される特定の記憶ノードは、いくつかの実施形態によれば、負荷分散および/またはリソース消費アルゴリズムに基づいて判定され得る。シャードメタデータ325は、新しい複製記憶ロケーションを反映するために更新される。更新はまた、ノード134内にリーダー複製として記憶されたシャード214の複製の選出と、シャードメタデータ325内でのその選出の指示とを含んでもよい。
【0062】
図12は、いくつかの実施形態による、複数の記憶ノード上への複数のテナントのデータベーステーブルシャード複製の記憶を示す。データベーステーブル210は、テナント1のデータを含み、データベーステーブル710は、テナント2のデータを含む。データベーステーブル210は、テナント1に関連するスキーマに準拠し、データベーステーブル710は、テナント2に関連するスキーマに準拠する。各テナントは、それらのそれぞれのデータを含む、多くの他のデータベーステーブルに関連付けられてよい。当技術分野で知られているように、テナント1のデータには、テナント1のユーザのみがアクセス可能であることが意図され、テナント2のデータには、テナント2のユーザのみがアクセス可能であることが意図される。
【0063】
示した例では、テーブル210は、シャード212、214、および216に分割され、テーブル710は、シャード712および714に分割される。記憶レイヤ130は、
図7に関して上記で説明したように、シャード212、214、216、712、および714の各々の複数の複製を記憶する。
図12は、各シャードに対するリーダー複製(すなわち、明確な輪郭によって表示される)と2つの従複製とからなる合意プロトコルを表す。これらの複製は、負荷分散および高い可用性を提供するための任意の好適なアルゴリズムに基づいて、記憶レイヤ130の記憶ノードにわたって分散され得る。
図12に示す、ノードのスケールアウト、スケールイン、および障害回復は、
図9a~
図9c、
図10a~
図10c、および
図11a~
図11cに関して上記で説明した様式で進められてもよい。
【0064】
図13は、いくつかの実施形態による、複数のテナントのデータベーステーブルシャードへのアクセスを示す。
【0065】
データベース計算フロントエンド1310は、テナント1のユーザにサービスし、データベース計算フロントエンド1320は、テナント2のユーザにサービスする。データベース計算フロントエンド1310は、計算レイヤの単一の計算ノード上で実行しているシングルテナントデータベースインスタンスを備え得、データベース計算フロントエンド1320は、計算レイヤの別の単一の計算ノード上で実行しているシングルテナントデータベースインスタンスを備え得る。いくつかの実施形態では、データベース計算フロントエンド1310およびデータベース計算フロントエンド1320は、同じ計算ノード上で実行する。
【0066】
トポロジーマネージャ320は、上記で説明したように動作し得る。やはり上記で説明したように、シャードメタデータ325は、各シャードをテーブル識別子、キー範囲、各複製のロケーション、およびリーダー複製の識別子に関連付けることができる。しかしながら、テーブル210およびテーブル710は異なるスキーマに準拠するため、テナント1のテーブルのテーブル識別子およびキー範囲は、テナント2のテーブルのテーブル識別子およびキー範囲と重複する/競合し得る。したがって、シャードメタデータ325はまた、各シャードをテナント識別子に関連付ける。データベース計算フロントエンド1310および1320がシングルテナントデータベースフロントエンドである場合、テナント識別子は、その中でフロントエンドが実行しているコンテナの識別子であり得る。
【0067】
受信されたクエリに応じて、データベース計算フロントエンド1310(またはフロントエンド1320)は、そのクエリに関連するシャードのロケーションについてトポロジーマネージャ320に問い合わせる。トポロジーマネージャ320のクエリは、テナント識別子、テーブル識別子、およびキー範囲を(たとえば、連結されたストリングとして)含む。トポロジーマネージャ320は、データベース計算フロントエンド1310(またはフロントエンド1320)から受信されたクエリとシャードメタデータ325とに基づいて、所望のシャードのリーダー複製が記憶された記憶ノードの識別子を判定する。データベース計算フロントエンド1310(またはフロントエンド1320)は、次いで、シャードのリーダー複製が記憶されたノードに対するデータベース動作を発行する。記憶ノードは、シャードが2つ以上の記憶ノード上に位置している場合、これらの動作を並列に実施し得る。
【0068】
いくつかの実施形態では、各テナントは、そのテナントに関するシャードメタデータを含むルートシャードに関連付けられ、トポロジーマネージャ320は、各テナントに対するルートシャードのロケーションを記憶する。データベース計算フロントエンド1310または1320は、したがって、所与のテナントのルートシャードを記憶する記憶ノードについトポロジーマネージャ320に問い合わせ、記憶ノードからルートシャードのメタデータを読み取り、メタデータに基づいて、所望のシャードのロケーションを判定する。各ルートシャードはまた、記憶ノード132~138の間で複数の複製の中に記憶されてもよく、その場合、トポロジーマネージャ320は、各ルートシャードの各複製のロケーションを記憶する。
【0069】
いくつかの実施形態は、テナント1のユーザおよびテナント2のユーザにサービスするマルチテナントデータベース計算フロントエンドを含む。マルチテナントデータベース計算フロントエンドは、トポロジーマネージャ320に問い合わせるための適切なテナント識別子を使用して、データベース計算フロントエンド1310とデータベース計算フロントエンド1320の両方に関して上記で説明したようにシャード複製にアクセスする。
【0070】
図14は、いくつかの実施形態による、クラウドベースの環境のブロック図である。各構成要素は、知られているまたは知られることになる、ハードウェアとソフトウェアの任意の好適な組合せを使用して実装され得る。たとえば、各構成要素は、物理コンピュータサーバまたは仮想機械を含み得る。そのような仮想機械は、セルフサービスおよび即時のプロビジョニング、自動スケーリング、セキュリティ、準拠、および識別情報管理特徴を提供する、1つまたは複数のパブリッククラウド内に存在し得る。
【0071】
アプリケーションサーバ1410は、データベースクエリを発行する1つまたは複数のアプリケーションを実行する。アプリケーションは、アプリケーションから情報を要求するユーザ(図示せず)によってアクセス可能であり、それによって、データベースクエリの発行をトリガする。アプリケーションサーバ1410は、データベースインスタンス(たとえば、インデックスサーバ)を実行するデータベース計算ノード1420にクエリを送信する。それらのクエリに基づいて、データベースインスタンスは、記憶レイヤ1430の記憶ノード1432、1434、および1436の中に記憶されたデータに対するCRUD動作を命令する。
【0072】
データは、上記で説明したいずれかの様式で、記憶レイヤ1430の記憶ノード1432、1434、および1436の中に記憶される。たとえば、所与のテーブルのデータは、記憶ノード1432、1434、および1436を通して分散されたシャード内に記憶されてよく、各シャードは、複数の記憶ノードにわたって複製されてよい。データは、2つ以上のテナントのデータを含んでよく、この場合、所与のテナントの各シャードは、テナント識別子、テーブル識別子、およびキー範囲によってメタデータ内で識別される。データベース計算ノード1420は、メタデータを使用して、それに対して動作が所望されるシャードのロケーションを決定する。
【0073】
前述の図は、いくつかの実施形態による、分散プロセスについての論理アーキテクチャを表し、実際の実装形態は、他の様式で配列されたより多くのまたは異なる構成要素を含んでよい。他の実施形態とともに、他のトポロジーが使用され得る。その上、本明細書で説明した各構成要素またはデバイスは、任意の数の他のパブリックおよび/またはプライベートネットワークを介して通信している任意の数のデバイスによって実装され得る。2つ以上のそのようなコンピューティングデバイスは、互いから遠隔に位置してよく、任意の知られている様式のネットワークおよび/または専用接続を介して互いと通信してよい。各構成要素またはデバイスは、本明細書で説明した機能ならびに任意の他の機能を提供するのに適した任意の数のハードウェアおよび/またはソフトウェア要素を備え得る。たとえば、いくつかの実施形態によるシステムの実装形態において使用される任意のコンピューティングデバイスは、コンピューティングデバイスが本明細書で説明したように動作するように、プログラムコードを実行するためのプロセッサを含んでよい。
【0074】
本明細書で論じたすべてのシステムおよびプロセスは、1つまたは複数の非一時的コンピュータ可読媒体上に記憶されたプログラムコードで具現され得る。そのような媒体は、たとえば、ハードディスク、DVD-ROM、フラッシュデバイス、磁気テープ、およびソリッドステートランダムアクセスメモリ(RAM)または読取り専用メモリ(ROM)記憶ユニットを含み得る。実施形態は、したがって、ハードウェアとソフトウェアの任意の特定の組合せに限定されない。
【0075】
本明細書で説明した実施形態は、単に説明のためのものである。当業者は、上記で説明した実施形態に対する修正および改変により、他の実施形態が実践され得ることを認識されよう。
【符号の説明】
【0076】
110,112,114,116 クライアント
120 計算レイヤ
122,124,126,128 計算ノード
130 記憶レイヤ
132,134,136,138 記憶ノード
210 データベーステーブル
212,214,216 シャード
220 データベーステーブル
222,224 シャード
230 データベーステーブル
232,234,234a,234b,236,238,238a,238b シャード
310 データベース計算フロントエンド
320 トポロジーマネージャ
325 シャードメタデータ
400 プロセス
510 記憶ノード
710 データベーステーブル
712,714 シャード
910 記憶ノード
1310,1320 データベース計算フロントエンド
1410 アプリケーションサーバ
1420 データベース計算ノード
1430 記憶レイヤ
1432,1434,1436 記憶ノード
【外国語明細書】