本開示の種々の態様又は特徴は、図面を参照して説明され、同様の参照番号は、全体を通して同様の要素を参照するために使用される。本明細書において、本開示の完全な理解を提供するために、多数の詳細が説明される。しかしながら、これらの具体的な詳細なしに、又は他の方法、コンポーネント、材料等を用いて、開示の特定の態様を実施できることを理解されたい。他の例では、良く知られた構造及びデバイスは、対象開示の説明を容易にするためにブロック図形式で示される。
従来のDBMSは、全てのテナントデータをあるデータベースインスタンスから別のデータベースインスタンスにコピーすることにより、テナントマイグレーションを扱う。従来のマイグレーションシステム及び方法は、典型的には、リソースが多く(すなわち、これらは、データのセット全体をコピーするために相当量の計算、データパス、ネットワーク、及び/又はストレージリソースを必要とする)、エラーを起こしやすい。例えば、一連の、時間のかかる、行ごとのコピー操作を介してマイグレートされたテナントデータは、不正確にコピーされている可能性があり、部分を欠落している可能性があり、破損している可能性があるなどする。行ごとのコピーは、ソース及びターゲット双方のデータベースインスタンスに関して遅く、リソース集中的である可能性があり、それは、テナントのストレージ要件を一時的に2倍にする。しばしば、テナントのデータは単一のトランザクションにおいてフルにコピーできず、それにより、マイグレーションを完了できる前に複数のコピー操作からの矛盾するデータを調整する複雑なプロセスを必要とする。
開示される対象事項の実装は、データベースシステムのテナントをソースデータベースインスタンスから宛先データベースインスタンスへ、行ごとのデータコピー、本番(production)データの複製、又は複製された本番データに対する操作を必要とせずにマイグレートすることができる。以下に説明されるように、開示されるマイグレーションは、従来のテナントマイグレーション手法より速く、プロセッサリソース、データ記憶及び永続リソース、及び/又はデータパス(例えば、通信ネットワーク)リソースの観点でより低コストで完了できる。多くの場合、マイグレートされたデータに関して一貫性チェック又は他の訂正措置が取られる必要がなく、それにより、さらなる時間及びシステムリソースを節減する。
開示されるテナントマイグレーション手法は、様々な異なるデータベース構造に適用できる。開示される対象事項は単一タイプのアーキテクチャに限定されず、例示の目的で、以下の議論は、キー範囲マルチテナンシー(key-range multi-tenancy)を有するログ構造化マージ(log structured merge、LSM)ツリーを使用する実装を説明する。LSMツリーは、不変の(immutable)データバージョンと共にデータ変更を記述することができる。キー範囲マルチテナンシーは、サーバへの動的なバインド(binding)を可能にし、各テナントのデータを別個に保持するために使用できる。
LSMツリーは、単一キー空間がテナント識別子(すなわち「テナントID」)によりルート設定される(rooted by)、レコードの永続的な内容を記憶する関係データベースにおいて、及び永続性仮想化を使用することにより使用できる。永続性は、エクステントを使用して実現できる。「エクステント(extent)」とは、典型的には記憶媒体内で連続した、ストレージの領域を参照し、これは、データを記憶するために使用できる。エクステントは、不変とすることができる。すなわち、エクステントは、これらが作成された後に修正できず、それにより、記憶媒体内のエクステントに関連づけられた領域及びデータは、更新されないが、将来には削除され得る。エクステント参照(extent reference)が、物理ストレージ(例えば、記憶デバイス)に記憶された物理エクステントへの論理参照として使用されてもよく、物理ストレージへのアクセスを仮想化するために使用されてもよい。エクステントは、キーにより順序付けられてもよい。
本開示の種々の態様又は特徴は、図面を参照して説明され、同様の参照番号は、全体を通して同様の要素を参照するために使用される。本明細書において、本開示の完全な理解を提供するために、多数の詳細が説明される。しかしながら、これらの具体的な詳細なしに、又は他の方法、コンポーネント、材料等を用いて、開示の特定の態様を実施できることを理解されたい。他の例では、良く知られた構造及びデバイスは、対象開示の説明を容易にするためにブロック図形式で示される。
エクステント参照は、物理ストレージ(例えば、ストレージデバイス)に記憶された物理エクステントへの論理参照として使用することができ、物理ストレージへのアクセスを仮想化するために使用できる。図1Aは、開示されるテナントマイグレーション手法を実現する一例示的なシステム100を示す。システム100は、単一のコンピューティングデバイス又は複数の接続されたコンピューティングデバイス上で動作することができる。例えば、システム100は、ラップトップ、デスクトップ、個々のサーバ、サーバクラスタ、サーバファーム、又は分散サーバシステム上で実現されてもよく、あるいは仮想計算デバイス若しくはシステム、又は物理及び仮想システムの任意の適切な組み合わせとして実現されてもよい。簡潔さのため、プロセッサ、オペレーティングシステム、及びデータベース管理システムの他のコンポーネントなどの種々の部分が示されていない。
システム100は、コンピューティングシステム及びネットワークインフラストラクチャの一部であってもよく、あるいは、システム100と同様の他のサーバシステムを含み得るより大きいサーバネットワークを含むコンピューティングシステム及びネットワークインフラストラクチャにその他の方法で接続されてもよい。いくつかの実装において、システム100は、図4に示されるコンピュータ600、中央コンポーネント700、及び/又は第2のコンピュータ800、及び/又は図5A~図5Bに示されるデータベースシステム1200a~1200dのうちの1つ以上であってもよい。
システム100は、データを不変エクステントに記憶することができる。各エクステントは、システム100により割り当てられた一意のID又はキーを有することができる。キーは、データがどのテナントに関連づけられているかを示すテナント識別子などの種々のタイプの情報を含むことができる。
システム100は、アクセス層105、仮想化層115、及び物理ストレージ層127を含む。アクセス層105は、1つ以上のサーバ111、112、113を含むことができ、1つ以上のサーバ111、112、113は、テナントがアプリケーション及びデータベースをホストするためのプラットフォームを提供し、ユーザがシステム100と対話するための主なインターフェースとして機能する。アクセス層105はまた、データベースストレージエンジン110を含むことができ、データベースストレージエンジン110は、サーバ111、112、113にわたるロードバランスを扱うことができ、コンピューティングデバイス(例えば、図4に示されるコンピュータ600及び/又は第2のコンピュータ800)からのシステム100に対するクエリを受け入れ、処理することができる。例えば、データベースストレージエンジン110は、テナント組織からクエリを受信し、クエリを処理してコマンドを仮想化層115に送信することができる。データベースストレージエンジン110は、データベースシステムに対するクエリを受信し、受信したクエリに関連するデータを取り出すための、サーバシステム100上のハードウェア及びソフトウェアの任意の適切な組み合わせとすることができる。
仮想化層115は、テナントデータを仮想化して、カスタマイズされたデータベースなどのシステムサービスを各テナントに提供し、これは、複数のテナントからのデータがシステム100に記憶され得るとしても、テナントがテナントの自身のデータのみにアクセスすることを可能にする。仮想化層は、エクステント参照セット120及びメモリストレージ125を含むことができる。いくつかの実装において、エクステント参照セット120及びメモリストレージ125は、図4に示される中央コンポーネント700及び/又は図5A~図5Bに示されるデータベースシステム1200a~1200dに記憶できる。メモリストレージ125は、テナントデータが物理ストレージ層127のエクステントに記録される前に、該データの最も新しいバージョンを記憶する。エクステント参照セット120は、テナントデータからのメタデータを使用して、エクステントが物理ストレージ物理ストレージ127内でどこに位置するか(例えば、以下で説明されるように、テナントデータがエクステント130の一部としてどこに記憶できるか)を定義することができる。メタデータは、例えば、エクステント内でどのキーが可視かを定義するキー範囲、エクステントのトランザクション順序を示すトランザクション番号、及びエクステントを所与のテナントに関連づけるテナントIDデータを含むことができる。エクステント参照セット120は、物理ストレージ127(例えば、ストレージデバイス)に記憶された物理エクステントへの論理参照の機能性を提供するように動作できるサーバシステム100上のハードウェア及びソフトウェアの任意の適切な組み合わせを使用して実現できる。
仮想化層115は、データベースストレージエンジン110からクエリを受信し、データの最新バージョンがメモリストレージ125内にあるかどうかを、又は、参照セット120を参照することにより、それが物理ストレージ層127内のエクステント130にすでに記憶されているかどうかをチェックすることにより、要求されたデータを見つけることができる。クエリは、例えば、少なくとも1つのテナントに関連づけられたデータベースシステムの承認されたユーザから受信できる。データがすでに物理ストレージ127に移動されている場合、仮想化層115は、エクステント参照セット内のメタデータに基づいて、要求されたデータの位置を特定することができる。すなわち、仮想化層115は、クエリにより要求されたデータをエクステント130から取り出し、そのデータをデータベースストレージエンジン110に返すことができ、データベースストレージエンジン110は、それを、例えば、クエリをデータベースシステムに送信したコンピューティングデバイスに提供することができる。
物理ストレージ層127は、不変データストレージデバイスを含むことができ、例えば、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光メモリ、光ストレージデバイス、若しくは任意の他の適切な物理データ記憶媒体、又はこれらの何らかの組み合わせとして実現できる。物理ストレージ層127は、テナントデータの不変バージョンであるエクステント130と、エクステントのアイデンティティ及び寿命を管理し、トラックデータ容量を管理して、エクステントを記憶できるストレージデバイス及びサーバなどのハードウェアを管理するカタログ135とを含むことができる。
新しいテナントが追加され、かつ/あるいは現在のテナントが成長、縮小、又は離脱すると、システム100におけるリソースの配分は、時間と共に非効率になる可能性がある。例えば、比較的少数のテナントがサーバ112、113上で動作している一方で、比較的多数のテナントがサーバ111上で動作している可能性がある。別の例として、サーバ111上の単一のテナントが、サーバ上の他のテナントに対してレイテンシ問題を引き起こす不釣り合いな比率のリソースを使用している可能性があり、あるいは、単一のサーバに対してテナントが大きく成長し過ぎている可能性がある。これら又は他の状況のいずれかにおいて、データを統合し、効率的なストレージ管理を容易にし、かつ/あるいは原子性又は一貫性を壊す可能性のある不良を回避するために、あるサーバから別のサーバへのテナントマイグレーションが必要又は望ましい場合がある。
データベースシステム(例えば、図1Aに示されるシステム100、図4に示される中央コンポーネント700及び/又は第2のコンピュータ800、及び/又は図5A~図5Bに示されるデータベースシステム1200a~1200d)及び全体を通して説明されるテナントマイグレーションの方法において、レコードは、マルチテナントシステムのインスタンスにおいてキー値ペア(key-value pair)として識別され得る。データベース内のテナンシーが作成されてもよく、テナンシーに関連づけられた許可されたユーザは、そのテナンシーに関する操作を閲覧、アクセス、及び/又は実行することができる。値は、例えば、関係データベースのテーブルの行の内容、関係データベースのテーブル内の行の識別、又は任意の他の適切な値であってもよい。キーは、レコードの識別子であってもよく、例えば英数字シーケンスなどの任意の適切な形式であってもよい。キーの部分が、レコードの内容に関する情報を提供してもよい。例えば、キーの一部分がテナント識別子であってもよく、該テナント識別子が、レコードの内容が属するテナントを一意に識別してもよい。キーの他の部分は、例えば、レコードの値が行、又はテーブル番号、テーブル上のインデックス番号の内容であるときに例えばテーブル番号及び行の識別、及び、値が行の識別であるときにインデックス化された列の識別を識別してもよい。
データベースシステム(例えば、図1に示されるシステム100、図4に示される中央コンポーネント700及び/又は第2のコンピュータ800、又は図6A~図6Bに示されるデータベース1200a、1200b、1200c、及び/又は1200d)は、トランザクションを所定のレコードの不変バージョンとして記憶することができる。すでにサーバシステムに記憶されているレコードの内容の不変バージョンは、その内容がサーバシステムから(仮にあるとしても)削除されるまで、変更されなくてもよい。すなわち、受信したトランザクションは、レコードの内容を改変する代わりに、サーバシステムに記憶されるレコードの内容の新しいバージョンを作成し得る。ゆえに、本明細書に開示されるレコードの複数のバージョン(例えば、異なる内容を有するレコード)が、トランザクション識別子を除き、同一キーを有することが可能であり得る。所与のレコードのバージョンのための、他の点では同一のキーの使用は、関係データベースに記憶されたデータの変更を可能にし得る。そのようなものとして、物理レコードの各バージョンが不変であってもよく、すなわち、それは、削除されないか、あるいは数か月、数年、又は数十年であり得る任意の長い期間にわたり削除されないかのいずれかである。例えば、(トランザクションバージョン識別子以外は)同一キーを有するレコードの、該レコードのより前のバージョンに対してより後のバージョンが、そのレコードのデータ値の変更(すなわち、レコードの内容の変更)を示してもよい。あるいは、トランザクションがレコードを作成し、あるいはレコードを削除してもよい(すなわち、内容を作成し、あるいは内容を削除してもよい)。レコードは、「廃棄標識(tombstone)」(削除されるデータを識別するマーカー)を挿入することにより削除されてもよく、将来の時点では、廃棄標識でマークされたレコードをもはや含まない新しいエクステントが書き込まれてもよい。
テナントの作成において、タイムスタンプ又は他の時間識別子が作成されてもよい。その後、テナントデータは、タイムスタンプ前に記憶されたデータのプール内のキーに基づいて適切なバージョンにアクセスすることにより、タイムスタンプ前のデータのバージョンに対する主キー要求を解釈することができる。タイムスタンプ後に作成又は更新されたデータにアクセスするそれぞれのテナントのためのキーは、テナントにより作成された適切なデータにアクセスするように解釈される。あるいは、タイムスタンプを使用するのでなく、データベース内の各トランザクションが、それに関連づけられた、その後の各トランザクションに対して単調に増加している一意のトランザクション番号を有してもよく、システムは、タイムスタンプの代わりに、最も最近作成されたトランザクション識別子に注目してもよい。
図1Bは、開示される対象事項の一実装によるデータベースシステム(例えば、図1に示されるシステム100、図2A~図2Cに示されるシステム、図3に示される中央コンポーネント700及び/又は第2のコンピュータ800、又は図6A~図6Bに示されるデータベースシステム1200a~1200d)で使用される一例示的なレコードを示す。レコードは、キー空間(ks)、テナント識別子、オブジェクト識別子(objectId)、及び/又はオブジェクトキー(ObjectKey)によりキー設定され(keyed by)てもよい。図1Bに示すように、レコードは、テナント識別子、objectId、及びObjectKeyを含んでもよい。レコードのキーは、テナント識別子、objectId、及びobjectKeyを含んでもよい。開示される対象事項の実装において、キー及び/又は値は、長さが可変であってもよい。上記で論じられたように、開示される対象事項の実装におけるデータエクステントは、キーによりソートされ、コミット時間に従ってLSMツリー内でレベルにより編成されてもよい。本明細書に開示されるデータベースシステムは、不変ストレージを有してもよく、該不変ストレージは、単一キー空間がテナント識別子によりルート設定される、レコードの永続的な内容を記憶する関係データベースにおいて、及び永続性仮想化を使用することにより使用されてもよい。永続性は、エクステントで構成されてもよい。エクステントは、データを記憶するために使用され得る、典型的には連続したストレージ領域である。上記で論じられたように、エクステントは、不変であってもよく、キーにより順序付けられてもよい。
開示される対象事項の実装において、データエクステント参照は、レベルへ編成されてもよい。レベルは、キーにより順序付けられたデータエクステント参照へグループ化され得る単一キー範囲をカバーしてもよい。
編成されたデータのレベル数を削減及び/又は最小化することは、新しいデータが到着したとき、データの書き換えを増加させる可能性がある。各レベルが、最大サイズ閾値を有してもよく、レベルサイズ設定は、指数関数的に増加してもよい。サイズ閾値が超えられたとき、データベースシステム(例えば、図1Aのシステム100、図2A~図2Cに示されるシステム、及び/又は図5A~図5Bに示されるデータベースシステム1200a~1200d)によりマージ操作が実行されてもよく、データはレベルNからレベルN+1へマージされる。
データは、データがフラッシュ操作を介して永続化され、クエリが最新の永続性ビューに移動するまで、データベースシステムのメモリストレージ(例えば、図5Bに示されるメモリストレージ1230)から移動されない。例えば、フラッシュ操作において、データは、メモリストレージ1230から図5Bに示されるストレージ1260にコピーされる。すなわち、フラッシュ操作では、1つ以上のエクステントが、メモリストレージ1230からストレージ1260(すなわち、永続ストレージ)に移動される。これは、特定のトランザクション範囲に対してキー順序で行われてもよい。
図2A~2Cは、開示される対象事項の一実装によるテナントマイグレーションの一例を示す。図2Aは、テナントID10、11、62、及び98を有するテナントをホストするサーバ211と、テナントID33、34、44、及び66を有するテナントをホストするサーバ212とを示す。テナントIDは各々、エクステントキーに対応する。サーバ211、212は、図1における、アクセス層105に存在するサーバ111、112に対応する。データエクステント参照セット220は、テナントの各々について対応するデータを記憶するエクステントのエクステントID(EID)及びキー範囲を含む。エクステント231、232は、物理ストレージ層227に記憶される。カタログ235は、エクステント231、232のID及びキー範囲を追跡する。データエクステント参照セット220、カタログ235、及びエクステント231、232は、図1Aに示されるデータエクステント参照セット120、カタログ135、及びエクステント130に対応する。
テナントデータは、物理的に連続した方法で記憶されて、物理ストレージにおけるテナントデータの位置が少量のメタデータにより記述されることを可能にできる。すなわち、物理ストレージ内のテナントデータは、連続的な順序で記憶され、カタログ化されてもよい。このように、削減された量のメタデータが使用されて、テナントデータエクステントのキー範囲を記述してもよく、例えば、エクステントid「0x21」を有するエクステントについて、データエクステント参照セット220は、「10」のキー開始値及び「98」のキー終了値を記憶して、物理ストレージ内の(10,98)のキー範囲内に連続的に記録された全てのデータ含むものとしてエクステントを定義すればよい。
この例示的なマイグレーションでは、テナント62に関連づけられたデータが、サーバ211におけるソースデータベースインスタンスからサーバ212における宛先データベースインスタンスにマイグレートされる。宛先データベースインスタンスは、ソースデータベースインスタンスとは異なる物理サーバ又は仮想化サーバ上に位置することができる。図3は、開示される対象事項の一実装による、テナントデータをマイグレートする動作のフローチャート300を示す。
動作310において、テナント62に関連づけられたデータが静止させられ(quiesced)、それにより、ソースデータベースインスタンスにおいてテナント識別子に関連づけられたデータベースシステムのストレージに新しいデータが書き込まれない。すなわち、データは、サーバ211において読取専用に設定され、それにより、サーバ211は、テナント62について物理ストレージ内のデータに追加又は変更することができない。
動作320において、システム100(図1A)が、テナント62のデータの任意のデータ修正についてメモリストレージ125をチェックする。メモリストレージ内に何らかの変更が存在する場合、これらは、物理ストレージ層227(図2A)内のエクステントにプッシュアウトされて、データが最新であることを確保する。すなわち、テナント62のデータに対するいかなる変更も、物理ストレージ層227のエクステント231に記憶される。
動作330において、データがソースデータベースから分離される(disassociated)。図2Bは、テナント62のデータを分離しているサーバ211を示す。エクステント参照セット220は、サーバ211のキー範囲を(10,11)、(98,98)に再定義することと、キー範囲(62,62)をヌルに設定することとにより、テナント62のデータをサーバ211から切り離す。テナント62は今や、テナント62に関連づけられたエクステント参照の除去により、サーバ211のソースデータベースインスタンスから効率的に除去されている。図2Bは、サーバ211がキー範囲(10,11)及び(98,98)を今や指し示し、一方でサーバ212はキー範囲(33,66)を依然として指し示すことを示す。
動作340において、テナント62のデータがターゲットサーバ212に関連づけられる。この関連づけは、マイグレートされるテナント(図2A~図2Cに示される例ではテナント62)のメタデータをサーバ211におけるソースデータベースインスタンスからサーバ212における宛先データベースインスタンスに送信することと、宛先データベースインスタンスにおいてメタデータを、それがテナントデータにアクセスするためにテナントデータに関する物理ストレージ内のデータのグルーピングを指し示すように修正することとにより、実行できる。送信されるテナントのメタデータは、ストレージ内のテナントデータのエクステントへのエクステント参照を含むことができる。図2Cは、サーバ211からのメタデータに基づいてテナント62のデータに関連づけられているサーバ212を示す。エクステント参照セット220は、サーバ212のキー範囲を(33,44)、(62,62)、(66,66)を含むように再定義する。テナント62は今や、サーバ211からサーバ212にマイグレートされた。この動作は、メタデータ変更のみを必要とするため、比較的迅速に実行できる。テナントデータが物理ストレージ層で又はその他の方法でコピーされる必要はない。
一例示的なマイグレーションが、会社XがビジネスユニットZのデータを図2Aに示されるサーバ211のデータベースシステムからデータベースシステムのサーバ212にマイグレートする必要があり得るときを含んでもよい。会社X及びビジネスユニットZの双方が、サーバ211のデータベースシステムのテナントであり得る。このマイグレーションは、サーバ211及び212に対して受信した要求をロードバランスするために実行されてもよく、それにより、サーバ211は、会社Xのテナントデータ及びビジネスユニットZのテナントデータの双方に対するクエリで過負荷にされない。
この例では、(例えば、図2A~図2Cに示されるテナント62に関連づけられた)ビジネスユニットZのデータが、サーバ211におけるソースデータベースインスタンスからサーバ212における宛先データベースインスタンスにマイグレートされて、サーバ211及び212へのクエリ数をロードバランスすることができる。宛先データベースインスタンス(例えば、サーバ212)は、ソースデータベースインスタンス(例えば、サーバ211)とは異なる物理サーバ又は仮想化サーバに位置し得る。図3は、ビジネスユニットZのテナントデータをサーバ211からサーバ212にマイグレートする動作を示す。
動作310において、テナント62に関連づけられたビジネスユニットZのデータが静止させられ、それにより、ソースデータベースインスタンス(例えば、サーバ211)においてテナント識別子に関連づけられたデータベースシステムのストレージに新しいデータが書き込まれない。すなわち、ビジネスユニットZのデータは、サーバ211において読取専用に設定され、それにより、サーバ211は、ビジネスユニットZ(例えば、テナント62)について物理ストレージ内のデータに追加又は変更することができない。
動作320において、システムが、ビジネスユニットZのデータ(例えば、テナント62のデータ)の任意のデータ修正についてチェックする。何らかの変更が存在する場合、これらは、物理ストレージ層227(図2A)内のエクステントにプッシュアウトされて、ビジネスユニットZ(例えば、テナント62)のデータが最新であることを確保する。すなわち、ビジネスユニットZのデータ(例えば、テナント62のデータ)に対するいかなる変更も、物理ストレージ層227のエクステント231に記憶される。
動作330において、ビジネスユニットZのデータがソースデータベースから分離される。図2Bは、ビジネスユニットZのデータ(例えばテナント62のデータ)をサーバ211から分離しているサーバ211を示す。エクステント参照セット220は、サーバ211のキー範囲を(10,11)、(98,98)に再定義することと、キー範囲(62,62)をヌルに設定することとにより、ビジネスユニットZのデータ(例えば、テナント62のデータ)をサーバ211から切り離す。ビジネスユニットZは今や、ビジネスユニットZ(例えば、テナント62)に関連づけられたエクステント参照の除去により、サーバ211のソースデータベースインスタンスから除去されている。図2Bは、サーバ211がキー範囲(10,11)及び(98,98)を今や指し示し、一方でサーバ212はキー範囲(33,66)を依然として指し示すことを示す。
動作340において、ビジネスユニットZ(例えばテナント62)のデータがターゲットサーバ212に関連づけられる。この関連づけは、ビジネスユニットZ(例えば、テナント62)のメタデータをサーバ211におけるソースデータベースインスタンスからサーバ212における宛先データベースインスタンスに送信することと、宛先データベースインスタンスにおいてメタデータを、それがテナントデータにアクセスするためにテナントデータに関する物理ストレージ内のデータのグルーピングを指し示すように修正することとにより、実行できる。ビジネスユニットZのメタデータは、ストレージ内のテナントデータのエクステントへのエクステント参照を含むことができる。図2Cは、サーバ211からのメタデータに基づいてビジネスユニットZのデータ(例えばテナント62のデータ)に関連づけられているサーバ212を示す。エクステント参照セット220は、サーバ212のキー範囲を(33,44)、(62,62)、(66,66)を含むように再定義する。ビジネスユニットZは今や、サーバ211からサーバ212にマイグレートされており、サーバ211及び212へのクエリ数は、ビジネスユニットZのマイグレーションの前よりバランスがとれている可能性がある。
上述の実装によれば、宛先データベースインスタンスは、ソースデータベースインスタンスとは異なる物理サーバ又は仮想化サーバ上に位置でき、なぜならば、宛先データベースインスタンスのための物理ストレージが、ソースデータベースインスタンスと共有されるからである。さらに、宛先データベースインスタンス内のメタデータの少なくとも一部が、データベース間の協調なしに、ソースデータベースインスタンス内のメタデータの少なくとも一部と同じ、ストレージ内のデータを指し示すことができる。
開示の実装は、従来のテナントマイグレーション技術における重要な制限を克服し得る。より具体的には、従来のテナントマイグレーションは、全ての必要なデータをコピーし、コピーされたデータが元のデータセットと一貫性があるかを確認するようチェックするのに時間がかかるため、比較的遅い。このような従来のシステム及び方法はまた、比較的リソースが多く(すなわち、これらは、データのセット全体をコピーするために、相当量の計算、データパス、ネットワーク、及び/又はストレージリソースを必要とする)、エラーを起こしやすい。例えば、データはしばしば正しくコピーできず、マイグレーションに必要なデータの部分が欠落している可能性があり、マイグレートされるデータが破損している可能性がある、などである。例えば、従来のシステム及び方法を使用するテナントマイグレーションの実行は、テナントデータの全ての行をデータベースにコピーすることをしばしば含む。行ごとのコピーは、ソース及びターゲット双方のデータベース上で遅く、リソース集中的である可能性があり、それは、少なくとも一時的にテナントのストレージを事実上2倍にする可能性がある。また、テナントのデータを全ての単一のトランザクションにおいてコピーすることはしばしば実際的でなく、矛盾するデータを調整する複雑なプロセスが存在する可能性がある。開示の実装によるテナントのマイグレーションは、ほぼ瞬間的であり、余分なストレージ空間を要さず、十分に一貫性がある。
本開示の対象事項の実装は、様々なコンポーネントびネットワークアーキテクチャにおいて実現され、これらと共に使用されてもよい。図4は、本開示の対象事項の実装を実現するのに適した一例示的なコンピュータ600である。本明細書でさらに詳細に論じられるように、コンピュータ600は、複数のコンピュータのネットワークの中の単一のコンピュータであってもよい。図4に示すように、コンピュータ600は、中央又は分散コンポーネント700(例えば、サーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバなど)と通信することができる。中央コンポーネント700は、ストレージデバイス810を含み得る第2のコンピュータ800などの1つ以上の他のコンピュータと通信することができる。第2のコンピュータ800は、サーバ、クラウドサーバなどであってもよい。ストレージ810は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光媒体、フラッシュメモリ、テープドライブ、レジスタ、及びランダムアクセスメモリ等、又はこれらの任意の組み合わせを含む、任意の適切な揮発性及び不揮発性の物理記憶媒体の任意の適切な組み合わせを使用してもよい。
データは、任意の適切なファイルシステム又は記憶スキーム若しくは階層を使用して、例えばストレージ810内に、任意の適切なフォーマットで記憶できる。例えば、ストレージ810は、複数のレベルを有するログ構造化マージ(LSM)ツリーを使用してデータを記憶することができる。さらに、図4~図5に示されるシステムがマルチテナントシステムである場合、ストレージは、テナントのデータベースの各インスタンスについて、別個のログ構造化マージツリーへ編成されてもよい。あるいは、特定のサーバ又はシステム上の全てのレコードの内容が、単一のログ構造化マージツリー内に記憶されてもよく、その場合、レコードのバージョンに関連づけられた一意のテナント識別子が使用されて、本明細書に開示される各テナントのデータ間で区別することができる。より最近のトランザクションがツリーの最高又はトップレベルに記憶されてもよく、より古いトランザクションがツリーのより低いレベルに記憶されてもよい。あるいは、各レコードの最も最近のトランザクション又はバージョン(すなわち、各レコードの内容)がツリーの最高レベルに、前のバージョン又は前のトランザクションがツリーのより低いレベルに記憶されてもよい。
中央コンポーネント700への、及び/又は中央コンポーネント700から取得された情報は、各コンピュータに対して隔離でき、それにより、コンピュータ600は、コンピュータ800と情報を共有することができない。あるいは又はさらに、コンピュータ600は、第2のコンピュータ800と直接通信することができる。
コンピュータ(例えば、ユーザコンピュータ、エンタープライズコンピュータ等)600は、バス610を含み、バス610は、中央プロセッサ640、メモリ670(典型的にはRAMだが、ROM、フラッシュRAM等を含むこともできる)、入力/出力コントローラ680、ディスプレイアダプタを介したディスプレイ又はタッチスクリーンなどのユーザディスプレイ620、ユーザ入力インターフェース660などのコンピュータ600の主なコンポーネントを相互接続し、ユーザ入力インターフェース660は、キーボード、マウス、Wi‐Fi/セルラ無線、タッチスクリーン、マイクロフォン/スピーカ等などの1つ以上のコントローラ及び関連づけられたユーザ入力又はデバイスを含んでもよく、I/Oコントローラ680と、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイス等などの固定ストレージ630と、光ディスク、フラッシュドライブ等を制御し及び受けるように動作する取外し可能媒体コンポーネント650とに密に結合されてもよい。
バス610は、中央プロセッサ640とメモリ670との間のデータ通信を可能にし、メモリ670は、前述したように、読取専用メモリ(ROM)又はフラッシュメモリ(いずれも図示せず)、及びランダムアクセスメモリ(RAM)(図示せず)を含むことができる。RAMは、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリを含むことができる。ROM又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの相互作用などの基本的なハードウェア動作を制御する基本入出力システム(BIOS)を含むことができる。コンピュータ600に存在するアプリケーションは、ハードディスクドライブ(例えば、固定ストレージ630)、光学ドライブ、フロッピーディスク、又は他の記憶媒体650などのコンピュータ読取可能媒体上に記憶され、これを介してアクセスされてもよい。
固定ストレージ630は、コンピュータ600と一体的であってもよく、あるいは別個であり、他のインターフェースを通してアクセスされてもよい。固定ストレージ630は、ストレージエリアネットワーク(SAN)の一部であってもよい。ネットワークインターフェース690は、電話リンクを介したリモートサーバへの、インターネットサービスプロバイダ(ISP)を介したインターネットへの直接接続を、あるいはPOP(存在ポイント(point of presence))又は他の手法を介したインターネットへの直接ネットワークリンクを介したリモートサーバへの直接接続を提供することができる。ネットワークインターフェース690は、このような接続を、デジタルセルラー電話接続、セルラーデジタルパケットデータ(CDPD)接続、デジタル衛星データ接続などを含む無線手法を使用して提供することができる。例えば、ネットワークインターフェース690は、図5A~図5Bに示すように、コンピュータが1つ以上のローカル、ワイドエリア、又は他のネットワークを介して他のコンピュータ及び/又はストレージデバイスと通信することを可能にできる。
多くの他のデバイス又はコンポーネント(図示せず)が、同様の方法で接続できる(例えば、データキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び/又は承認サーバ、コンピュータ及び/又はネットワークセキュリティシステムなど)。反対に、本開示を実施するために、図5A~図5Bに示される全てのコンポーネントが存在する必要はない。該コンポーネントは、図示されたものと異なる方法で相互接続されてもよい。図10に示すものなどのコンピュータの動作は、当該分野では容易にわかり、本出願では詳細に論じられない。本開示を実現するためのコードは、メモリ670、固定ストレージ630、取外し可能媒体650のうち1つ以上などのコンピュータ読取可能記憶媒体に、又はリモートストレージ位置に記憶できる。
図5A~図5Bは、開示される対象事項の一実装による一例示的なネットワーク配置を示す。クラウド1202により表されるネットワーク内の異なるノードにおける4つの別個のデータベースシステム1200a~1200dが、ネットワークリンク1204を通して互いに、及びユーザ(図示せず)と通信する。データベースシステム1200の各々は、データベースの複数のインスタンスをホストするように動作可能でもよく、各インスタンスは、特定のテナントに関連づけられたユーザのみがアクセス可能である。データベースシステムの各々は、ストレージエリアネットワーク(図示せず)、ロードバランサ、及びバックアップサーバと共に、ファイアウォール、他のセキュリティシステム、及び認証システムと共に、コンピュータのクラスタを構成することができる。システム1200のいずれかにおけるインスタンスのいくつかが、インスタンス内のストレージに関するデータを取り込む及び提供するためにユーザから又はコンピューティング要素(図示せず)から受信したトランザクションを処理及びコミットするライブ又は本番インスタンスであってもよい。
データベースシステム1200a~1200dの1つ以上が、任意の時間に、テナントデータのソース又は宛先として選択されてもよい。例えば、テナントに関連づけられたデータベースシステム1200a~1200dの管理者又は1以上の承認されたユーザが、テナントデータがデータベースシステム1200a~1200dのうち1つにマイグレートされることを要求することができる。図5A~図5Bにおけるように、システム、例えば1200cが、少なくとも1つのストレージデバイスを含むことができる。例えば、ストレージは、メモリ670、固定ストレージ630、取外し可能媒体650、中央コンポーネント700及び/又は第2のコンピュータ800により含まれるストレージデバイス、及び/又はデータベースシステム1200a~1200dのうち1つ以上に関連づけられた1つ以上のストレージデバイスを含むことができる。テナントは、テナント識別子に関連づけられた少なくとも1つのストレージデバイスの不変ストレージにテナントデータを記憶させることができる。
図5Bは、開示される対象事項の一実装による個々のデータベースシステム1200a、1200b、1200c、又は1200dを示す。データベースシステム1200a~1200cは、ストレージ1260を有してもよく、ストレージ1260は、データ(例えば、テナントデータ)の永続ストレージを提供する1つ以上のストレージデバイスを含んでもよい。データベースシステム1200a、1200b、1200c、又は1200dは、1つ以上のアプリケーション1210を含んでもよく、1つ以上のアプリケーション1210は、1つ以上のストレージデバイスであり得るノード1220及び/又はストレージ1260からのデータ及び/又は情報を使用してもよい。アプリケーション1210は、顧客関係管理(CRM)アプリケーションなどを含んでもよい。ストレージ1260は、1つ以上のストレージデバイスであってもよく、テナントデータを含み得るデータエクステント1270を記憶してもよい。
いくつかの実装において、図4~図5Bに示される1つ以上のサーバが、ログ構造化マージツリーデータ構造を使用して、少なくとも1つのストレージデバイス(例えば、中央コンポーネント700、第2のコンピュータ800、及び/又はデータベースシステム1200a~1200dに関連づけられたストレージデバイス)の不変ストレージにデータを記憶することができる。
開示される対象事項のシステム及び方法は、単一テナンシー及び/又はマルチテナンシーシステム向けであってもよい。マルチテナンシーシステムは、例えば、ユーザ、ユーザのグループ、又は組織であり得る種々のテナントが、種々のテナント間で共有できるサーバシステム上のソフトウェアツール又はインスタンスを通して、サーバシステム上のそれら独自のレコードにアクセスすることを可能にできる。各テナントのレコードの内容は、そのテナントを含むデータベースの一部であってもよい。複数のテナントのレコードの内容は、全て同じデータベース内に一緒に記憶できるが、各テナントは、そのテナントに属し又はそのテナントにより作成されたレコードの内容にのみアクセス可能であり得る。これは、データベースシステムが、各テナントのレコードの内容を別個に、例えば別個のサーバ又はサーバシステム上に記憶する必要なく、マルチテナンシーを有効にすることを可能にでき得る。テナントのデータベースは、例えば、関係データベース、階層データベース、又は任意の他の適切なデータベースタイプであり得る。サーバシステムに記憶された全てのレコードは、例えばLSMツリーを含む任意の適切な構造に記憶できる。
さらに、マルチテナントシステムは、各ノードにコンピューティングシステムを有するネットワーク全体に分散されたサーバシステム上に種々のテナントインスタンスを有することができる。各テナントのライブ又は本番データベースインスタンスは、そのトランザクションを1つのコンピュータシステムでのみ処理させることができる。そのインスタンスのトランザクションを処理するコンピューティングシステムは、他のテナントのための他のインスタンスのトランザクションを処理することもできる。
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算の図又はアルゴリズム及びシンボル表現の観点で提示されている。これらの図並びにアルゴリズム説明及び表現は、他の当業者にその作用の実体を最も効果的に伝えるために、データ処理分野の当業者により一般に使用されている。アルゴリズムは、ここで、そして一般に、所望の結果をもたらすステップの自己一貫したシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。必ずではないが、通常、これらの量は、記憶され、転送され、組み合わせられ、比較され、その他の方法で操作されることが可能な電気又は磁気信号の形式をとる。主に共用の理由で、これらの信号をビット、値、要素、シンボル、キャラクタ、語、数字などとして参照することが時に便利であることが判明している。
しかしながら、全てのこれら及び同様の用語は適切な物理量に関連づけられるべきであり、これら量に適用される簡便なラベルに過ぎないという点に留意すべきである。上記議論から明らかなように、別段具体的に示されない限り、説明全体を通じて、「受信する」、「送信する」、「修正する」、「送出する」などの用語を利用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理(例えば、電子)量として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ又は他のこうした情報記憶、送信、若しくは表示デバイス内の物理量として同様に表される他のデータへ操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを参照することが十分理解される。
より一般的には、本開示の対象事項の種々の実装は、コンピュータにより実現されるプロセス、及びこれらのプロセスを実施する装置の形式を含み、あるいは該形式で実現できる。実装はまた、フロッピーディスケット、CD‐ROM、ハードドライブ、USB(ユニバーサルシリアルバス)ドライブ、又は他の任意のマシン読取可能記憶媒体などの非一時的及び/又は有形媒体で実現される命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態で実現でき、コンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、開示される対象事項の実装を実施する装置になる。実装はまた、例えば、記憶媒体に記憶されるか、コンピュータにロードされ、及び/又はコンピュータにより実行されるか、あるいは電気配線若しくはケーブルを通じて、光ファイバを通して、又は電磁放射線を介してなどで何らかの伝送媒体を通じて伝送されるかにかかわらず、コンピュータプログラムコードの形式で実現でき、コンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、開示される対象事項の実装を実施する装置になる。汎用マイクロプロセッサで実現されるとき、コンピュータプログラムコードセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータ読取可能記憶媒体上に記憶されたコンピュータ読取可能命令のセットは、汎用プロセッサにより実現でき、これは、汎用プロセッサ又は汎用プロセッサを含むデバイスを、命令を実現又は実行するように構成された専用デバイスに変換することができる。実装は、汎用マイクロプロセッサ、及び/又は開示される対象事項の実装による手法の全部又は一部をハードウェア及び/又はファームウェアで実現する特定用途向け集積回路(ASIC)などの、プロセッサを含み得るハードウェアを使用して実現できる。プロセッサは、RAM、ROM、フラッシュメモリ、ハードディスク、又は電子情報を記憶できる任意の他のデバイスなどのメモリに結合できる。メモリは、開示される対象事項の実装による手法を実行するためにプロセッサにより実行されるよう適合された命令を記憶することができる。
上述の説明は、説明の目的で、特定の実装を参照して説明されている。しかしながら、上記の例示的な議論は、網羅的であること、又は開示される対象事項の実装を開示された正確な形式に限定することを意図したものではない。上記の教示を考慮し、多くの修正及び変形が可能である。これらの実装は、開示される対象事項の実装の原理及びそれらの実際的な適用を説明するために選択され、説明されており、それにより、他の当業者は、これらの実装及び種々の実装を、企図される特定の使用に適し得る種々の修正と共に利用することができる。