(57)【要約】  データベースシステムのテナントをソースデータベースインスタンスから宛先データベースインスタンスにマイグレートするためのシステム及び方法が提供される。該システム及び方法は、ソースデータベースインスタンスから宛先データベースインスタンスにマイグレートされるテナントのテナントデータを静止させることであり、それにより、ソースデータベースインスタンスでテナント識別子に関連づけられたデータベースシステムのストレージに新しいデータが書き込まれない、ことと、ソースデータベースインスタンスから宛先データベースインスタンスにマイグレートされるテナントのメタデータを送信することと、宛先データベースインスタンスで、テナントのメタデータを修正することであり、それにより、宛先データベースインスタンスは、宛先データベースに関するストレージ内のデータのグルーピングを指し示す情報を有してテナントデータにアクセスする、こととを含む。
2020525906.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムのテナントをソースデータベースインスタンスから宛先データベースインスタンスにマイグレートするためのコンピュータ化された方法であって、前記テナントは、前記宛先データベースインスタンスにマイグレートされるテナント識別子に関連づけられた前記データベースシステムの不変ストレージに記憶されたテナントデータを有し、前記不変ストレージは、ストレージの物理位置へのポインタを有するデータのグルーピングを含み、前記データのグルーピングは、前記ストレージ内の前記データの少なくとも部分にアクセスするためのメタデータを含み、当該方法は、
前記ソースデータベースインスタンスから前記宛先データベースインスタンスにマイグレートされる前記テナントの前記テナントデータを静止させるステップであり、それにより、前記ソースデータベースインスタンスで前記テナント識別子に関連づけられた前記データベースシステムの前記ストレージに新しいデータが書き込まれない、ステップと、
前記ソースデータベースインスタンスから前記宛先データベースインスタンスにマイグレートされる前記テナントのメタデータを送信するステップであり、前記宛先データベースインスタンスは、前記ソースデータベースインスタンスと異なる物理サーバ又は仮想化サーバに位置する、ステップと、
前記宛先データベースインスタンスで、前記テナントの前記メタデータを修正するステップであり、それにより、前記宛先データベースインスタンスは、前記宛先データベースに関する前記ストレージ内の前記データのグルーピングを指し示す情報を有して前記テナントデータにアクセスする、ステップと、
を含む方法。
【請求項２】
前記ソースデータベースインスタンスとは前記異なる物理サーバ又は仮想化サーバに位置する前記宛先データベースインスタンスは、前記ストレージにアクセスするように構成され、前記宛先データベースインスタンスに関する前記ストレージは、前記ソースデータベースインスタンスと共有される、請求項１に記載の方法。
【請求項３】
前記テナントデータを順序付けて、前記ストレージ内の前記テナントデータの前記位置が、前記テナントデータが物理的に連続するとしてメタデータにより記述されることを可能にするステップ、
をさらに含む請求項１又は２に記載の方法。
【請求項４】
送信される前記テナントの前記メタデータは、前記ストレージ内の前記テナントデータのエクステントへのエクステント参照を含む、請求項１乃至３のうちいずれか１項に記載の方法。
【請求項５】
前記テナントの前記メタデータを修正するステップは、
前記宛先データベースインスタンスのアクティブなエクステント参照セットに、前記ソースデータベースインスタンスからマイグレートされている前記テナントのキーを含む少なくとも１つの新しいエクステント参照を追加するステップ
を含む、請求項１乃至４のうちいずれか１項に記載の方法。
【請求項６】
前記宛先データベースインスタンス内の前記メタデータの少なくとも一部は、データベース間の協調なしに、前記ソースデータベースインスタンス内の前記メタデータの少なくとも一部と同じ、前記ストレージ内のデータを指し示す、請求項１乃至５のうちいずれか１項に記載の方法。
【請求項７】
前記テナントが前記ソースデータベースインスタンスから前記宛先データベースインスタンスにマイグレートされたとき、前記ソースデータベースインスタンス内の前記メタデータ内の前記テナントのエクステント参照を除去することにより、前記ソースデータベースインスタンスから前記テナントを除去するステップ、
をさらに含む請求項１乃至６のうちいずれか１項に記載の方法。
【請求項８】
前記テナントデータをログ構造化マージツリーデータ構造を使用して前記ストレージに記憶するステップ、
をさらに含む請求項１乃至７のうちいずれか１項に記載の方法。
【請求項９】
データベースシステムのテナントをソースデータベースインスタンスから宛先データベースインスタンスにマイグレートするシステムであって、
宛先データベースインスタンスにマイグレートされる前記テナントのテナント識別子に関連づけられたテナントデータを記憶する少なくとも１つのストレージデバイスであり、前記少なくとも１つのストレージデバイスは、前記少なくとも１つのストレージデバイスの物理位置へのポインタを有するデータのグルーピングを含み、前記データのグルーピングは、前記少なくとも１つのストレージデバイス内の前記データの少なくとも部分にアクセスするためのメタデータを含む、少なくとも１つのストレージデバイスと、
前記少なくとも１つのストレージデバイスに通信上結合された、前記ソースデータベースインスタンス及び前記宛先データベースインスタンスのための１つ以上のサーバであり、前記１つ以上のサーバは、
前記ソースデータベースインスタンスから前記宛先データベースインスタンスにマイグレートされる前記テナントの前記テナントデータを静止させ、それにより、前記ソースデータベースインスタンスで前記テナント識別子に関連づけられた前記データベースシステムの前記少なくとも１つのストレージデバイスに新しいデータが書き込まれず、
前記ソースデータベースインスタンスから前記宛先データベースインスタンスにマイグレートされる前記テナントのメタデータを送信し、前記宛先データベースインスタンスは、前記ソースデータベースインスタンスと異なる物理サーバ又は仮想化サーバに位置し、
前記宛先データベースインスタンスで、前記テナントの前記メタデータを修正し、それにより、前記宛先データベースインスタンスは、前記テナントデータに関する前記少なくとも１つのストレージデバイス内の前記データのグルーピングを指し示す情報を有して前記テナントデータにアクセスする、１つ以上のサーバと、
を含むシステム。
【請求項１０】
前記ソースデータベースインスタンスとは前記異なる物理サーバ又は仮想化サーバに位置する前記宛先データベースインスタンスは、前記少なくとも１つのストレージデバイスにアクセスするように構成され、前記宛先データベースインスタンスに関する前記少なくとも１つのストレージデバイスは、前記ソースデータベースインスタンスと共有される、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのサーバは、前記テナントデータを順序付けて、前記少なくとも１つのストレージデバイス内の前記テナントデータの前記位置が、前記テナントデータが物理的に連続するとしてメタデータにより記述されることを可能にする、請求項９又は１０に記載のシステム。
【請求項１２】
前記少なくとも１つのサーバにより送信される前記テナントの前記メタデータは、前記少なくとも１つのストレージデバイス内の前記テナントデータのエクステントへのエクステント参照を含む、請求項９乃至１１のうちいずれか１項に記載のシステム。
【請求項１３】
前記少なくとも１つのサーバは、前記宛先データベースインスタンスのアクティブなエクステント参照セットに、前記ソースデータベースインスタンスからマイグレートされている前記テナントのキーを含む少なくとも１つの新しいエクステント参照を追加することにより、前記テナントの前記メタデータを修正する、請求項９乃至１２のうちいずれか１項に記載のシステム。
【請求項１４】
前記宛先データベースインスタンス内の前記メタデータの少なくとも一部は、データベース間の協調なしに、前記ソースデータベースインスタンス内の前記メタデータの少なくとも一部と同じ、前記少なくとも１つのストレージデバイス内のデータを指し示す、請求項９乃至１３のうちいずれか１項に記載のシステム。
【請求項１５】
前記テナントが前記ソースデータベースインスタンスから前記宛先データベースインスタンスにマイグレートされたとき、前記少なくとも１つのサーバは、前記ソースデータベースインスタンス内の前記メタデータ内の前記テナントのエクステント参照を除去することにより、前記ソースデータベースインスタンスから前記テナントを除去する、請求項９乃至１４のうちいずれか１項に記載のシステム。
【請求項１６】
前記少なくとも１つのサーバは、前記テナントデータをログ構造化マージツリーデータ構造を使用して前記ストレージに記憶する、請求項９乃至１５のうちいずれか１項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
データベース管理システム（ＤＢＭＳ）において、弾力性とは、例えば、必要に応じてオンデマンドでシステムスケールを調整して、ロードバランス目標を達成し、高負荷期間中にシステムリソースを最適化し、低負荷期間中にテナントを統合する等の能力を部分的に参照する。テナントマイグレーション、すなわちテナントデータをあるサーバから別のサーバに移動することは、基本的なデータベース管理機能を向上させるだけでなく、弾力性の増大にも大きな役割を果たす。従来のＤＢＭＳは、全てのテナントデータをあるデータベースインスタンスから別のデータベースインスタンスにコピーすることにより、テナントマイグレーションを扱う。テナントデータの量に依存して、これは、典型的には、ソース及び宛先双方のデータベースインスタンスにおける複数の操作の実行を必要とする。ソースデータベースインスタンスからソースデータを抽出して後に除去し、それを宛先データベースインスタンスに追加するために、計算コストが生じる。さらに、全てのテナントデータが正しくコピーされることを確保するために、しばしばステップが踏まれなければならない。
【０００２】
従来のデータベースにおいて、テナントマイグレーションプロセスはしばしば、遅く、リソースが多く、エラーを起こしやすい。これは、部分的には、テナントのマイグレートが、テナントの全ての行をソースからターゲットインスタンスにコピーすることを含むためである。
【図面の簡単な説明】
【０００３】
添付の図面は、開示される対象事項のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、開示される対象事項の実装を例示し、詳細な説明と共に、開示される対象事項の実装の原理を説明する。開示される対象事項及びそれを実施できる種々の方法の基本的な理解のために必要であり得る以上に詳細に構造的詳細を示す試みは行われない。
【図１Ａ】開示される対象事項の一実装による、仮想化層を使用してデータを記憶し及び取り出す一例示的なシステム及び方法を示す。
【図１Ｂ】開示される対象事項の一実装によるデータベースシステム内のレコードの一例を示す。
【図２Ａ】開示される対象事項の一実装によるテナントマイグレーションの一例を示す。
【図２Ｂ】開示される対象事項の一実装によるテナントマイグレーションの一例を示す。
【図２Ｃ】開示される対象事項の一実装によるテナントマイグレーションの一例を示す。
【図３】開示される対象事項の一実装による、テナントデータをマイグレートする動作のフローチャートを示す。
【図４】開示される対象事項の一実装によるコンピュータを示す。
【図５Ａ】開示される対象事項の一実装によるネットワーク構成を示す。
【図５Ｂ】開示される対象事項の一実装によるネットワーク構成を示す。
【発明を実施するための形態】
【０００４】
本開示の種々の態様又は特徴は、図面を参照して説明され、同様の参照番号は、全体を通して同様の要素を参照するために使用される。本明細書において、本開示の完全な理解を提供するために、多数の詳細が説明される。しかしながら、これらの具体的な詳細なしに、又は他の方法、コンポーネント、材料等を用いて、開示の特定の態様を実施できることを理解されたい。他の例では、良く知られた構造及びデバイスは、対象開示の説明を容易にするためにブロック図形式で示される。
【０００５】
従来のＤＢＭＳは、全てのテナントデータをあるデータベースインスタンスから別のデータベースインスタンスにコピーすることにより、テナントマイグレーションを扱う。従来のマイグレーションシステム及び方法は、典型的には、リソースが多く（すなわち、これらは、データのセット全体をコピーするために相当量の計算、データパス、ネットワーク、及び／又はストレージリソースを必要とする）、エラーを起こしやすい。例えば、一連の、時間のかかる、行ごとのコピー操作を介してマイグレートされたテナントデータは、不正確にコピーされている可能性があり、部分を欠落している可能性があり、破損している可能性があるなどする。行ごとのコピーは、ソース及びターゲット双方のデータベースインスタンスに関して遅く、リソース集中的である可能性があり、それは、テナントのストレージ要件を一時的に２倍にする。しばしば、テナントのデータは単一のトランザクションにおいてフルにコピーできず、それにより、マイグレーションを完了できる前に複数のコピー操作からの矛盾するデータを調整する複雑なプロセスを必要とする。
【０００６】
開示される対象事項の実装は、データベースシステムのテナントをソースデータベースインスタンスから宛先データベースインスタンスへ、行ごとのデータコピー、本番（production）データの複製、又は複製された本番データに対する操作を必要とせずにマイグレートすることができる。以下に説明されるように、開示されるマイグレーションは、従来のテナントマイグレーション手法より速く、プロセッサリソース、データ記憶及び永続リソース、及び／又はデータパス（例えば、通信ネットワーク）リソースの観点でより低コストで完了できる。多くの場合、マイグレートされたデータに関して一貫性チェック又は他の訂正措置が取られる必要がなく、それにより、さらなる時間及びシステムリソースを節減する。
【０００７】
開示されるテナントマイグレーション手法は、様々な異なるデータベース構造に適用できる。開示される対象事項は単一タイプのアーキテクチャに限定されず、例示の目的で、以下の議論は、キー範囲マルチテナンシー（key-range  multi-tenancy）を有するログ構造化マージ（log  structured  merge、ＬＳＭ）ツリーを使用する実装を説明する。ＬＳＭツリーは、不変の（immutable）データバージョンと共にデータ変更を記述することができる。キー範囲マルチテナンシーは、サーバへの動的なバインド（binding）を可能にし、各テナントのデータを別個に保持するために使用できる。
【０００８】
ＬＳＭツリーは、単一キー空間がテナント識別子（すなわち「テナントＩＤ」）によりルート設定される（rooted  by）、レコードの永続的な内容を記憶する関係データベースにおいて、及び永続性仮想化を使用することにより使用できる。永続性は、エクステントを使用して実現できる。「エクステント（extent）」とは、典型的には記憶媒体内で連続した、ストレージの領域を参照し、これは、データを記憶するために使用できる。エクステントは、不変とすることができる。すなわち、エクステントは、これらが作成された後に修正できず、それにより、記憶媒体内のエクステントに関連づけられた領域及びデータは、更新されないが、将来には削除され得る。エクステント参照（extent  reference）が、物理ストレージ（例えば、記憶デバイス）に記憶された物理エクステントへの論理参照として使用されてもよく、物理ストレージへのアクセスを仮想化するために使用されてもよい。エクステントは、キーにより順序付けられてもよい。
【０００９】
本開示の種々の態様又は特徴は、図面を参照して説明され、同様の参照番号は、全体を通して同様の要素を参照するために使用される。本明細書において、本開示の完全な理解を提供するために、多数の詳細が説明される。しかしながら、これらの具体的な詳細なしに、又は他の方法、コンポーネント、材料等を用いて、開示の特定の態様を実施できることを理解されたい。他の例では、良く知られた構造及びデバイスは、対象開示の説明を容易にするためにブロック図形式で示される。
【００１０】
エクステント参照は、物理ストレージ（例えば、ストレージデバイス）に記憶された物理エクステントへの論理参照として使用することができ、物理ストレージへのアクセスを仮想化するために使用できる。図１Ａは、開示されるテナントマイグレーション手法を実現する一例示的なシステム１００を示す。システム１００は、単一のコンピューティングデバイス又は複数の接続されたコンピューティングデバイス上で動作することができる。例えば、システム１００は、ラップトップ、デスクトップ、個々のサーバ、サーバクラスタ、サーバファーム、又は分散サーバシステム上で実現されてもよく、あるいは仮想計算デバイス若しくはシステム、又は物理及び仮想システムの任意の適切な組み合わせとして実現されてもよい。簡潔さのため、プロセッサ、オペレーティングシステム、及びデータベース管理システムの他のコンポーネントなどの種々の部分が示されていない。
【００１１】
システム１００は、コンピューティングシステム及びネットワークインフラストラクチャの一部であってもよく、あるいは、システム１００と同様の他のサーバシステムを含み得るより大きいサーバネットワークを含むコンピューティングシステム及びネットワークインフラストラクチャにその他の方法で接続されてもよい。いくつかの実装において、システム１００は、図４に示されるコンピュータ６００、中央コンポーネント７００、及び／又は第２のコンピュータ８００、及び／又は図５Ａ〜図５Ｂに示されるデータベースシステム１２００ａ〜１２００ｄのうちの１つ以上であってもよい。
【００１２】
システム１００は、データを不変エクステントに記憶することができる。各エクステントは、システム１００により割り当てられた一意のＩＤ又はキーを有することができる。キーは、データがどのテナントに関連づけられているかを示すテナント識別子などの種々のタイプの情報を含むことができる。
【００１３】
システム１００は、アクセス層１０５、仮想化層１１５、及び物理ストレージ層１２７を含む。アクセス層１０５は、１つ以上のサーバ１１１、１１２、１１３を含むことができ、１つ以上のサーバ１１１、１１２、１１３は、テナントがアプリケーション及びデータベースをホストするためのプラットフォームを提供し、ユーザがシステム１００と対話するための主なインターフェースとして機能する。アクセス層１０５はまた、データベースストレージエンジン１１０を含むことができ、データベースストレージエンジン１１０は、サーバ１１１、１１２、１１３にわたるロードバランスを扱うことができ、コンピューティングデバイス（例えば、図４に示されるコンピュータ６００及び／又は第２のコンピュータ８００）からのシステム１００に対するクエリを受け入れ、処理することができる。例えば、データベースストレージエンジン１１０は、テナント組織からクエリを受信し、クエリを処理してコマンドを仮想化層１１５に送信することができる。データベースストレージエンジン１１０は、データベースシステムに対するクエリを受信し、受信したクエリに関連するデータを取り出すための、サーバシステム１００上のハードウェア及びソフトウェアの任意の適切な組み合わせとすることができる。
【００１４】
仮想化層１１５は、テナントデータを仮想化して、カスタマイズされたデータベースなどのシステムサービスを各テナントに提供し、これは、複数のテナントからのデータがシステム１００に記憶され得るとしても、テナントがテナントの自身のデータのみにアクセスすることを可能にする。仮想化層は、エクステント参照セット１２０及びメモリストレージ１２５を含むことができる。いくつかの実装において、エクステント参照セット１２０及びメモリストレージ１２５は、図４に示される中央コンポーネント７００及び／又は図５Ａ〜図５Ｂに示されるデータベースシステム１２００ａ〜１２００ｄに記憶できる。メモリストレージ１２５は、テナントデータが物理ストレージ層１２７のエクステントに記録される前に、該データの最も新しいバージョンを記憶する。エクステント参照セット１２０は、テナントデータからのメタデータを使用して、エクステントが物理ストレージ物理ストレージ１２７内でどこに位置するか（例えば、以下で説明されるように、テナントデータがエクステント１３０の一部としてどこに記憶できるか）を定義することができる。メタデータは、例えば、エクステント内でどのキーが可視かを定義するキー範囲、エクステントのトランザクション順序を示すトランザクション番号、及びエクステントを所与のテナントに関連づけるテナントＩＤデータを含むことができる。エクステント参照セット１２０は、物理ストレージ１２７（例えば、ストレージデバイス）に記憶された物理エクステントへの論理参照の機能性を提供するように動作できるサーバシステム１００上のハードウェア及びソフトウェアの任意の適切な組み合わせを使用して実現できる。
【００１５】
仮想化層１１５は、データベースストレージエンジン１１０からクエリを受信し、データの最新バージョンがメモリストレージ１２５内にあるかどうかを、又は、参照セット１２０を参照することにより、それが物理ストレージ層１２７内のエクステント１３０にすでに記憶されているかどうかをチェックすることにより、要求されたデータを見つけることができる。クエリは、例えば、少なくとも１つのテナントに関連づけられたデータベースシステムの承認されたユーザから受信できる。データがすでに物理ストレージ１２７に移動されている場合、仮想化層１１５は、エクステント参照セット内のメタデータに基づいて、要求されたデータの位置を特定することができる。すなわち、仮想化層１１５は、クエリにより要求されたデータをエクステント１３０から取り出し、そのデータをデータベースストレージエンジン１１０に返すことができ、データベースストレージエンジン１１０は、それを、例えば、クエリをデータベースシステムに送信したコンピューティングデバイスに提供することができる。
【００１６】
物理ストレージ層１２７は、不変データストレージデバイスを含むことができ、例えば、半導体メモリ、ソリッドステートドライブ（ＳＳＤ）、ハードディスクドライブ、光メモリ、光ストレージデバイス、若しくは任意の他の適切な物理データ記憶媒体、又はこれらの何らかの組み合わせとして実現できる。物理ストレージ層１２７は、テナントデータの不変バージョンであるエクステント１３０と、エクステントのアイデンティティ及び寿命を管理し、トラックデータ容量を管理して、エクステントを記憶できるストレージデバイス及びサーバなどのハードウェアを管理するカタログ１３５とを含むことができる。
【００１７】
新しいテナントが追加され、かつ／あるいは現在のテナントが成長、縮小、又は離脱すると、システム１００におけるリソースの配分は、時間と共に非効率になる可能性がある。例えば、比較的少数のテナントがサーバ１１２、１１３上で動作している一方で、比較的多数のテナントがサーバ１１１上で動作している可能性がある。別の例として、サーバ１１１上の単一のテナントが、サーバ上の他のテナントに対してレイテンシ問題を引き起こす不釣り合いな比率のリソースを使用している可能性があり、あるいは、単一のサーバに対してテナントが大きく成長し過ぎている可能性がある。これら又は他の状況のいずれかにおいて、データを統合し、効率的なストレージ管理を容易にし、かつ／あるいは原子性又は一貫性を壊す可能性のある不良を回避するために、あるサーバから別のサーバへのテナントマイグレーションが必要又は望ましい場合がある。
【００１８】
データベースシステム（例えば、図１Ａに示されるシステム１００、図４に示される中央コンポーネント７００及び／又は第２のコンピュータ８００、及び／又は図５Ａ〜図５Ｂに示されるデータベースシステム１２００ａ〜１２００ｄ）及び全体を通して説明されるテナントマイグレーションの方法において、レコードは、マルチテナントシステムのインスタンスにおいてキー値ペア（key-value  pair）として識別され得る。データベース内のテナンシーが作成されてもよく、テナンシーに関連づけられた許可されたユーザは、そのテナンシーに関する操作を閲覧、アクセス、及び／又は実行することができる。値は、例えば、関係データベースのテーブルの行の内容、関係データベースのテーブル内の行の識別、又は任意の他の適切な値であってもよい。キーは、レコードの識別子であってもよく、例えば英数字シーケンスなどの任意の適切な形式であってもよい。キーの部分が、レコードの内容に関する情報を提供してもよい。例えば、キーの一部分がテナント識別子であってもよく、該テナント識別子が、レコードの内容が属するテナントを一意に識別してもよい。キーの他の部分は、例えば、レコードの値が行、又はテーブル番号、テーブル上のインデックス番号の内容であるときに例えばテーブル番号及び行の識別、及び、値が行の識別であるときにインデックス化された列の識別を識別してもよい。
【００１９】
データベースシステム（例えば、図１に示されるシステム１００、図４に示される中央コンポーネント７００及び／又は第２のコンピュータ８００、又は図６Ａ〜図６Ｂに示されるデータベース１２００ａ、１２００ｂ、１２００ｃ、及び／又は１２００ｄ）は、トランザクションを所定のレコードの不変バージョンとして記憶することができる。すでにサーバシステムに記憶されているレコードの内容の不変バージョンは、その内容がサーバシステムから（仮にあるとしても）削除されるまで、変更されなくてもよい。すなわち、受信したトランザクションは、レコードの内容を改変する代わりに、サーバシステムに記憶されるレコードの内容の新しいバージョンを作成し得る。ゆえに、本明細書に開示されるレコードの複数のバージョン（例えば、異なる内容を有するレコード）が、トランザクション識別子を除き、同一キーを有することが可能であり得る。所与のレコードのバージョンのための、他の点では同一のキーの使用は、関係データベースに記憶されたデータの変更を可能にし得る。そのようなものとして、物理レコードの各バージョンが不変であってもよく、すなわち、それは、削除されないか、あるいは数か月、数年、又は数十年であり得る任意の長い期間にわたり削除されないかのいずれかである。例えば、（トランザクションバージョン識別子以外は）同一キーを有するレコードの、該レコードのより前のバージョンに対してより後のバージョンが、そのレコードのデータ値の変更（すなわち、レコードの内容の変更）を示してもよい。あるいは、トランザクションがレコードを作成し、あるいはレコードを削除してもよい（すなわち、内容を作成し、あるいは内容を削除してもよい）。レコードは、「廃棄標識（tombstone）」（削除されるデータを識別するマーカー）を挿入することにより削除されてもよく、将来の時点では、廃棄標識でマークされたレコードをもはや含まない新しいエクステントが書き込まれてもよい。
【００２０】
テナントの作成において、タイムスタンプ又は他の時間識別子が作成されてもよい。その後、テナントデータは、タイムスタンプ前に記憶されたデータのプール内のキーに基づいて適切なバージョンにアクセスすることにより、タイムスタンプ前のデータのバージョンに対する主キー要求を解釈することができる。タイムスタンプ後に作成又は更新されたデータにアクセスするそれぞれのテナントのためのキーは、テナントにより作成された適切なデータにアクセスするように解釈される。あるいは、タイムスタンプを使用するのでなく、データベース内の各トランザクションが、それに関連づけられた、その後の各トランザクションに対して単調に増加している一意のトランザクション番号を有してもよく、システムは、タイムスタンプの代わりに、最も最近作成されたトランザクション識別子に注目してもよい。
【００２１】
図１Ｂは、開示される対象事項の一実装によるデータベースシステム（例えば、図１に示されるシステム１００、図２Ａ〜図２Ｃに示されるシステム、図３に示される中央コンポーネント７００及び／又は第２のコンピュータ８００、又は図６Ａ〜図６Ｂに示されるデータベースシステム１２００ａ〜１２００ｄ）で使用される一例示的なレコードを示す。レコードは、キー空間（ｋｓ）、テナント識別子、オブジェクト識別子（ｏｂｊｅｃｔＩｄ）、及び／又はオブジェクトキー（ＯｂｊｅｃｔＫｅｙ）によりキー設定され（keyed  by）てもよい。図１Ｂに示すように、レコードは、テナント識別子、ｏｂｊｅｃｔＩｄ、及びＯｂｊｅｃｔＫｅｙを含んでもよい。レコードのキーは、テナント識別子、ｏｂｊｅｃｔＩｄ、及びｏｂｊｅｃｔＫｅｙを含んでもよい。開示される対象事項の実装において、キー及び／又は値は、長さが可変であってもよい。上記で論じられたように、開示される対象事項の実装におけるデータエクステントは、キーによりソートされ、コミット時間に従ってＬＳＭツリー内でレベルにより編成されてもよい。本明細書に開示されるデータベースシステムは、不変ストレージを有してもよく、該不変ストレージは、単一キー空間がテナント識別子によりルート設定される、レコードの永続的な内容を記憶する関係データベースにおいて、及び永続性仮想化を使用することにより使用されてもよい。永続性は、エクステントで構成されてもよい。エクステントは、データを記憶するために使用され得る、典型的には連続したストレージ領域である。上記で論じられたように、エクステントは、不変であってもよく、キーにより順序付けられてもよい。
【００２２】
開示される対象事項の実装において、データエクステント参照は、レベルへ編成されてもよい。レベルは、キーにより順序付けられたデータエクステント参照へグループ化され得る単一キー範囲をカバーしてもよい。
【００２３】
編成されたデータのレベル数を削減及び／又は最小化することは、新しいデータが到着したとき、データの書き換えを増加させる可能性がある。各レベルが、最大サイズ閾値を有してもよく、レベルサイズ設定は、指数関数的に増加してもよい。サイズ閾値が超えられたとき、データベースシステム（例えば、図１Ａのシステム１００、図２Ａ〜図２Ｃに示されるシステム、及び／又は図５Ａ〜図５Ｂに示されるデータベースシステム１２００ａ〜１２００ｄ）によりマージ操作が実行されてもよく、データはレベルＮからレベルＮ＋１へマージされる。
【００２４】
データは、データがフラッシュ操作を介して永続化され、クエリが最新の永続性ビューに移動するまで、データベースシステムのメモリストレージ（例えば、図５Ｂに示されるメモリストレージ１２３０）から移動されない。例えば、フラッシュ操作において、データは、メモリストレージ１２３０から図５Ｂに示されるストレージ１２６０にコピーされる。すなわち、フラッシュ操作では、１つ以上のエクステントが、メモリストレージ１２３０からストレージ１２６０（すなわち、永続ストレージ）に移動される。これは、特定のトランザクション範囲に対してキー順序で行われてもよい。
【００２５】
図２Ａ〜２Ｃは、開示される対象事項の一実装によるテナントマイグレーションの一例を示す。図２Ａは、テナントＩＤ１０、１１、６２、及び９８を有するテナントをホストするサーバ２１１と、テナントＩＤ３３、３４、４４、及び６６を有するテナントをホストするサーバ２１２とを示す。テナントＩＤは各々、エクステントキーに対応する。サーバ２１１、２１２は、図１における、アクセス層１０５に存在するサーバ１１１、１１２に対応する。データエクステント参照セット２２０は、テナントの各々について対応するデータを記憶するエクステントのエクステントＩＤ（ＥＩＤ）及びキー範囲を含む。エクステント２３１、２３２は、物理ストレージ層２２７に記憶される。カタログ２３５は、エクステント２３１、２３２のＩＤ及びキー範囲を追跡する。データエクステント参照セット２２０、カタログ２３５、及びエクステント２３１、２３２は、図１Ａに示されるデータエクステント参照セット１２０、カタログ１３５、及びエクステント１３０に対応する。
【００２６】
テナントデータは、物理的に連続した方法で記憶されて、物理ストレージにおけるテナントデータの位置が少量のメタデータにより記述されることを可能にできる。すなわち、物理ストレージ内のテナントデータは、連続的な順序で記憶され、カタログ化されてもよい。このように、削減された量のメタデータが使用されて、テナントデータエクステントのキー範囲を記述してもよく、例えば、エクステントｉｄ「０ｘ２１」を有するエクステントについて、データエクステント参照セット２２０は、「１０」のキー開始値及び「９８」のキー終了値を記憶して、物理ストレージ内の（１０，９８）のキー範囲内に連続的に記録された全てのデータ含むものとしてエクステントを定義すればよい。
【００２７】
この例示的なマイグレーションでは、テナント６２に関連づけられたデータが、サーバ２１１におけるソースデータベースインスタンスからサーバ２１２における宛先データベースインスタンスにマイグレートされる。宛先データベースインスタンスは、ソースデータベースインスタンスとは異なる物理サーバ又は仮想化サーバ上に位置することができる。図３は、開示される対象事項の一実装による、テナントデータをマイグレートする動作のフローチャート３００を示す。
【００２８】
動作３１０において、テナント６２に関連づけられたデータが静止させられ（quiesced）、それにより、ソースデータベースインスタンスにおいてテナント識別子に関連づけられたデータベースシステムのストレージに新しいデータが書き込まれない。すなわち、データは、サーバ２１１において読取専用に設定され、それにより、サーバ２１１は、テナント６２について物理ストレージ内のデータに追加又は変更することができない。
【００２９】
動作３２０において、システム１００（図１Ａ）が、テナント６２のデータの任意のデータ修正についてメモリストレージ１２５をチェックする。メモリストレージ内に何らかの変更が存在する場合、これらは、物理ストレージ層２２７（図２Ａ）内のエクステントにプッシュアウトされて、データが最新であることを確保する。すなわち、テナント６２のデータに対するいかなる変更も、物理ストレージ層２２７のエクステント２３１に記憶される。
【００３０】
動作３３０において、データがソースデータベースから分離される（disassociated）。図２Ｂは、テナント６２のデータを分離しているサーバ２１１を示す。エクステント参照セット２２０は、サーバ２１１のキー範囲を（１０，１１）、（９８，９８）に再定義することと、キー範囲（６２，６２）をヌルに設定することとにより、テナント６２のデータをサーバ２１１から切り離す。テナント６２は今や、テナント６２に関連づけられたエクステント参照の除去により、サーバ２１１のソースデータベースインスタンスから効率的に除去されている。図２Ｂは、サーバ２１１がキー範囲（１０，１１）及び（９８，９８）を今や指し示し、一方でサーバ２１２はキー範囲（３３，６６）を依然として指し示すことを示す。
【００３１】
動作３４０において、テナント６２のデータがターゲットサーバ２１２に関連づけられる。この関連づけは、マイグレートされるテナント（図２Ａ〜図２Ｃに示される例ではテナント６２）のメタデータをサーバ２１１におけるソースデータベースインスタンスからサーバ２１２における宛先データベースインスタンスに送信することと、宛先データベースインスタンスにおいてメタデータを、それがテナントデータにアクセスするためにテナントデータに関する物理ストレージ内のデータのグルーピングを指し示すように修正することとにより、実行できる。送信されるテナントのメタデータは、ストレージ内のテナントデータのエクステントへのエクステント参照を含むことができる。図２Ｃは、サーバ２１１からのメタデータに基づいてテナント６２のデータに関連づけられているサーバ２１２を示す。エクステント参照セット２２０は、サーバ２１２のキー範囲を（３３，４４）、（６２，６２）、（６６，６６）を含むように再定義する。テナント６２は今や、サーバ２１１からサーバ２１２にマイグレートされた。この動作は、メタデータ変更のみを必要とするため、比較的迅速に実行できる。テナントデータが物理ストレージ層で又はその他の方法でコピーされる必要はない。
【００３２】
一例示的なマイグレーションが、会社ＸがビジネスユニットＺのデータを図２Ａに示されるサーバ２１１のデータベースシステムからデータベースシステムのサーバ２１２にマイグレートする必要があり得るときを含んでもよい。会社Ｘ及びビジネスユニットＺの双方が、サーバ２１１のデータベースシステムのテナントであり得る。このマイグレーションは、サーバ２１１及び２１２に対して受信した要求をロードバランスするために実行されてもよく、それにより、サーバ２１１は、会社Ｘのテナントデータ及びビジネスユニットＺのテナントデータの双方に対するクエリで過負荷にされない。
【００３３】
この例では、（例えば、図２Ａ〜図２Ｃに示されるテナント６２に関連づけられた）ビジネスユニットＺのデータが、サーバ２１１におけるソースデータベースインスタンスからサーバ２１２における宛先データベースインスタンスにマイグレートされて、サーバ２１１及び２１２へのクエリ数をロードバランスすることができる。宛先データベースインスタンス（例えば、サーバ２１２）は、ソースデータベースインスタンス（例えば、サーバ２１１）とは異なる物理サーバ又は仮想化サーバに位置し得る。図３は、ビジネスユニットＺのテナントデータをサーバ２１１からサーバ２１２にマイグレートする動作を示す。
【００３４】
動作３１０において、テナント６２に関連づけられたビジネスユニットＺのデータが静止させられ、それにより、ソースデータベースインスタンス（例えば、サーバ２１１）においてテナント識別子に関連づけられたデータベースシステムのストレージに新しいデータが書き込まれない。すなわち、ビジネスユニットＺのデータは、サーバ２１１において読取専用に設定され、それにより、サーバ２１１は、ビジネスユニットＺ（例えば、テナント６２）について物理ストレージ内のデータに追加又は変更することができない。
【００３５】
動作３２０において、システムが、ビジネスユニットＺのデータ（例えば、テナント６２のデータ）の任意のデータ修正についてチェックする。何らかの変更が存在する場合、これらは、物理ストレージ層２２７（図２Ａ）内のエクステントにプッシュアウトされて、ビジネスユニットＺ（例えば、テナント６２）のデータが最新であることを確保する。すなわち、ビジネスユニットＺのデータ（例えば、テナント６２のデータ）に対するいかなる変更も、物理ストレージ層２２７のエクステント２３１に記憶される。
【００３６】
動作３３０において、ビジネスユニットＺのデータがソースデータベースから分離される。図２Ｂは、ビジネスユニットＺのデータ（例えばテナント６２のデータ）をサーバ２１１から分離しているサーバ２１１を示す。エクステント参照セット２２０は、サーバ２１１のキー範囲を（１０，１１）、（９８，９８）に再定義することと、キー範囲（６２，６２）をヌルに設定することとにより、ビジネスユニットＺのデータ（例えば、テナント６２のデータ）をサーバ２１１から切り離す。ビジネスユニットＺは今や、ビジネスユニットＺ（例えば、テナント６２）に関連づけられたエクステント参照の除去により、サーバ２１１のソースデータベースインスタンスから除去されている。図２Ｂは、サーバ２１１がキー範囲（１０，１１）及び（９８，９８）を今や指し示し、一方でサーバ２１２はキー範囲（３３，６６）を依然として指し示すことを示す。
【００３７】
動作３４０において、ビジネスユニットＺ（例えばテナント６２）のデータがターゲットサーバ２１２に関連づけられる。この関連づけは、ビジネスユニットＺ（例えば、テナント６２）のメタデータをサーバ２１１におけるソースデータベースインスタンスからサーバ２１２における宛先データベースインスタンスに送信することと、宛先データベースインスタンスにおいてメタデータを、それがテナントデータにアクセスするためにテナントデータに関する物理ストレージ内のデータのグルーピングを指し示すように修正することとにより、実行できる。ビジネスユニットＺのメタデータは、ストレージ内のテナントデータのエクステントへのエクステント参照を含むことができる。図２Ｃは、サーバ２１１からのメタデータに基づいてビジネスユニットＺのデータ（例えばテナント６２のデータ）に関連づけられているサーバ２１２を示す。エクステント参照セット２２０は、サーバ２１２のキー範囲を（３３，４４）、（６２，６２）、（６６，６６）を含むように再定義する。ビジネスユニットＺは今や、サーバ２１１からサーバ２１２にマイグレートされており、サーバ２１１及び２１２へのクエリ数は、ビジネスユニットＺのマイグレーションの前よりバランスがとれている可能性がある。
【００３８】
上述の実装によれば、宛先データベースインスタンスは、ソースデータベースインスタンスとは異なる物理サーバ又は仮想化サーバ上に位置でき、なぜならば、宛先データベースインスタンスのための物理ストレージが、ソースデータベースインスタンスと共有されるからである。さらに、宛先データベースインスタンス内のメタデータの少なくとも一部が、データベース間の協調なしに、ソースデータベースインスタンス内のメタデータの少なくとも一部と同じ、ストレージ内のデータを指し示すことができる。
【００３９】
開示の実装は、従来のテナントマイグレーション技術における重要な制限を克服し得る。より具体的には、従来のテナントマイグレーションは、全ての必要なデータをコピーし、コピーされたデータが元のデータセットと一貫性があるかを確認するようチェックするのに時間がかかるため、比較的遅い。このような従来のシステム及び方法はまた、比較的リソースが多く（すなわち、これらは、データのセット全体をコピーするために、相当量の計算、データパス、ネットワーク、及び／又はストレージリソースを必要とする）、エラーを起こしやすい。例えば、データはしばしば正しくコピーできず、マイグレーションに必要なデータの部分が欠落している可能性があり、マイグレートされるデータが破損している可能性がある、などである。例えば、従来のシステム及び方法を使用するテナントマイグレーションの実行は、テナントデータの全ての行をデータベースにコピーすることをしばしば含む。行ごとのコピーは、ソース及びターゲット双方のデータベース上で遅く、リソース集中的である可能性があり、それは、少なくとも一時的にテナントのストレージを事実上２倍にする可能性がある。また、テナントのデータを全ての単一のトランザクションにおいてコピーすることはしばしば実際的でなく、矛盾するデータを調整する複雑なプロセスが存在する可能性がある。開示の実装によるテナントのマイグレーションは、ほぼ瞬間的であり、余分なストレージ空間を要さず、十分に一貫性がある。
【００４０】
本開示の対象事項の実装は、様々なコンポーネントびネットワークアーキテクチャにおいて実現され、これらと共に使用されてもよい。図４は、本開示の対象事項の実装を実現するのに適した一例示的なコンピュータ６００である。本明細書でさらに詳細に論じられるように、コンピュータ６００は、複数のコンピュータのネットワークの中の単一のコンピュータであってもよい。図４に示すように、コンピュータ６００は、中央又は分散コンポーネント７００（例えば、サーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバなど）と通信することができる。中央コンポーネント７００は、ストレージデバイス８１０を含み得る第２のコンピュータ８００などの１つ以上の他のコンピュータと通信することができる。第２のコンピュータ８００は、サーバ、クラウドサーバなどであってもよい。ストレージ８１０は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光媒体、フラッシュメモリ、テープドライブ、レジスタ、及びランダムアクセスメモリ等、又はこれらの任意の組み合わせを含む、任意の適切な揮発性及び不揮発性の物理記憶媒体の任意の適切な組み合わせを使用してもよい。
【００４１】
データは、任意の適切なファイルシステム又は記憶スキーム若しくは階層を使用して、例えばストレージ８１０内に、任意の適切なフォーマットで記憶できる。例えば、ストレージ８１０は、複数のレベルを有するログ構造化マージ（ＬＳＭ）ツリーを使用してデータを記憶することができる。さらに、図４〜図５に示されるシステムがマルチテナントシステムである場合、ストレージは、テナントのデータベースの各インスタンスについて、別個のログ構造化マージツリーへ編成されてもよい。あるいは、特定のサーバ又はシステム上の全てのレコードの内容が、単一のログ構造化マージツリー内に記憶されてもよく、その場合、レコードのバージョンに関連づけられた一意のテナント識別子が使用されて、本明細書に開示される各テナントのデータ間で区別することができる。より最近のトランザクションがツリーの最高又はトップレベルに記憶されてもよく、より古いトランザクションがツリーのより低いレベルに記憶されてもよい。あるいは、各レコードの最も最近のトランザクション又はバージョン（すなわち、各レコードの内容）がツリーの最高レベルに、前のバージョン又は前のトランザクションがツリーのより低いレベルに記憶されてもよい。
【００４２】
中央コンポーネント７００への、及び／又は中央コンポーネント７００から取得された情報は、各コンピュータに対して隔離でき、それにより、コンピュータ６００は、コンピュータ８００と情報を共有することができない。あるいは又はさらに、コンピュータ６００は、第２のコンピュータ８００と直接通信することができる。
【００４３】
コンピュータ（例えば、ユーザコンピュータ、エンタープライズコンピュータ等）６００は、バス６１０を含み、バス６１０は、中央プロセッサ６４０、メモリ６７０（典型的にはＲＡＭだが、ＲＯＭ、フラッシュＲＡＭ等を含むこともできる）、入力／出力コントローラ６８０、ディスプレイアダプタを介したディスプレイ又はタッチスクリーンなどのユーザディスプレイ６２０、ユーザ入力インターフェース６６０などのコンピュータ６００の主なコンポーネントを相互接続し、ユーザ入力インターフェース６６０は、キーボード、マウス、Ｗｉ‐Ｆｉ／セルラ無線、タッチスクリーン、マイクロフォン／スピーカ等などの１つ以上のコントローラ及び関連づけられたユーザ入力又はデバイスを含んでもよく、Ｉ／Ｏコントローラ６８０と、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、ＳＡＮデバイス、ＳＣＳＩデバイス等などの固定ストレージ６３０と、光ディスク、フラッシュドライブ等を制御し及び受けるように動作する取外し可能媒体コンポーネント６５０とに密に結合されてもよい。
【００４４】
バス６１０は、中央プロセッサ６４０とメモリ６７０との間のデータ通信を可能にし、メモリ６７０は、前述したように、読取専用メモリ（ＲＯＭ）又はフラッシュメモリ（いずれも図示せず）、及びランダムアクセスメモリ（ＲＡＭ）（図示せず）を含むことができる。ＲＡＭは、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリを含むことができる。ＲＯＭ又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの相互作用などの基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ）を含むことができる。コンピュータ６００に存在するアプリケーションは、ハードディスクドライブ（例えば、固定ストレージ６３０）、光学ドライブ、フロッピーディスク、又は他の記憶媒体６５０などのコンピュータ読取可能媒体上に記憶され、これを介してアクセスされてもよい。
【００４５】
固定ストレージ６３０は、コンピュータ６００と一体的であってもよく、あるいは別個であり、他のインターフェースを通してアクセスされてもよい。固定ストレージ６３０は、ストレージエリアネットワーク（ＳＡＮ）の一部であってもよい。ネットワークインターフェース６９０は、電話リンクを介したリモートサーバへの、インターネットサービスプロバイダ（ＩＳＰ）を介したインターネットへの直接接続を、あるいはＰＯＰ（存在ポイント（point  of  presence））又は他の手法を介したインターネットへの直接ネットワークリンクを介したリモートサーバへの直接接続を提供することができる。ネットワークインターフェース６９０は、このような接続を、デジタルセルラー電話接続、セルラーデジタルパケットデータ（ＣＤＰＤ）接続、デジタル衛星データ接続などを含む無線手法を使用して提供することができる。例えば、ネットワークインターフェース６９０は、図５Ａ〜図５Ｂに示すように、コンピュータが１つ以上のローカル、ワイドエリア、又は他のネットワークを介して他のコンピュータ及び／又はストレージデバイスと通信することを可能にできる。
【００４６】
多くの他のデバイス又はコンポーネント（図示せず）が、同様の方法で接続できる（例えば、データキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び／又は承認サーバ、コンピュータ及び／又はネットワークセキュリティシステムなど）。反対に、本開示を実施するために、図５Ａ〜図５Ｂに示される全てのコンポーネントが存在する必要はない。該コンポーネントは、図示されたものと異なる方法で相互接続されてもよい。図１０に示すものなどのコンピュータの動作は、当該分野では容易にわかり、本出願では詳細に論じられない。本開示を実現するためのコードは、メモリ６７０、固定ストレージ６３０、取外し可能媒体６５０のうち１つ以上などのコンピュータ読取可能記憶媒体に、又はリモートストレージ位置に記憶できる。
【００４７】
図５Ａ〜図５Ｂは、開示される対象事項の一実装による一例示的なネットワーク配置を示す。クラウド１２０２により表されるネットワーク内の異なるノードにおける４つの別個のデータベースシステム１２００ａ〜１２００ｄが、ネットワークリンク１２０４を通して互いに、及びユーザ（図示せず）と通信する。データベースシステム１２００の各々は、データベースの複数のインスタンスをホストするように動作可能でもよく、各インスタンスは、特定のテナントに関連づけられたユーザのみがアクセス可能である。データベースシステムの各々は、ストレージエリアネットワーク（図示せず）、ロードバランサ、及びバックアップサーバと共に、ファイアウォール、他のセキュリティシステム、及び認証システムと共に、コンピュータのクラスタを構成することができる。システム１２００のいずれかにおけるインスタンスのいくつかが、インスタンス内のストレージに関するデータを取り込む及び提供するためにユーザから又はコンピューティング要素（図示せず）から受信したトランザクションを処理及びコミットするライブ又は本番インスタンスであってもよい。
【００４８】
データベースシステム１２００ａ〜１２００ｄの１つ以上が、任意の時間に、テナントデータのソース又は宛先として選択されてもよい。例えば、テナントに関連づけられたデータベースシステム１２００ａ〜１２００ｄの管理者又は１以上の承認されたユーザが、テナントデータがデータベースシステム１２００ａ〜１２００ｄのうち１つにマイグレートされることを要求することができる。図５Ａ〜図５Ｂにおけるように、システム、例えば１２００ｃが、少なくとも１つのストレージデバイスを含むことができる。例えば、ストレージは、メモリ６７０、固定ストレージ６３０、取外し可能媒体６５０、中央コンポーネント７００及び／又は第２のコンピュータ８００により含まれるストレージデバイス、及び／又はデータベースシステム１２００ａ〜１２００ｄのうち１つ以上に関連づけられた１つ以上のストレージデバイスを含むことができる。テナントは、テナント識別子に関連づけられた少なくとも１つのストレージデバイスの不変ストレージにテナントデータを記憶させることができる。
【００４９】
図５Ｂは、開示される対象事項の一実装による個々のデータベースシステム１２００ａ、１２００ｂ、１２００ｃ、又は１２００ｄを示す。データベースシステム１２００ａ〜１２００ｃは、ストレージ１２６０を有してもよく、ストレージ１２６０は、データ（例えば、テナントデータ）の永続ストレージを提供する１つ以上のストレージデバイスを含んでもよい。データベースシステム１２００ａ、１２００ｂ、１２００ｃ、又は１２００ｄは、１つ以上のアプリケーション１２１０を含んでもよく、１つ以上のアプリケーション１２１０は、１つ以上のストレージデバイスであり得るノード１２２０及び／又はストレージ１２６０からのデータ及び／又は情報を使用してもよい。アプリケーション１２１０は、顧客関係管理（ＣＲＭ）アプリケーションなどを含んでもよい。ストレージ１２６０は、１つ以上のストレージデバイスであってもよく、テナントデータを含み得るデータエクステント１２７０を記憶してもよい。
【００５０】
いくつかの実装において、図４〜図５Ｂに示される１つ以上のサーバが、ログ構造化マージツリーデータ構造を使用して、少なくとも１つのストレージデバイス（例えば、中央コンポーネント７００、第２のコンピュータ８００、及び／又はデータベースシステム１２００ａ〜１２００ｄに関連づけられたストレージデバイス）の不変ストレージにデータを記憶することができる。
【００５１】
開示される対象事項のシステム及び方法は、単一テナンシー及び／又はマルチテナンシーシステム向けであってもよい。マルチテナンシーシステムは、例えば、ユーザ、ユーザのグループ、又は組織であり得る種々のテナントが、種々のテナント間で共有できるサーバシステム上のソフトウェアツール又はインスタンスを通して、サーバシステム上のそれら独自のレコードにアクセスすることを可能にできる。各テナントのレコードの内容は、そのテナントを含むデータベースの一部であってもよい。複数のテナントのレコードの内容は、全て同じデータベース内に一緒に記憶できるが、各テナントは、そのテナントに属し又はそのテナントにより作成されたレコードの内容にのみアクセス可能であり得る。これは、データベースシステムが、各テナントのレコードの内容を別個に、例えば別個のサーバ又はサーバシステム上に記憶する必要なく、マルチテナンシーを有効にすることを可能にでき得る。テナントのデータベースは、例えば、関係データベース、階層データベース、又は任意の他の適切なデータベースタイプであり得る。サーバシステムに記憶された全てのレコードは、例えばＬＳＭツリーを含む任意の適切な構造に記憶できる。
【００５２】
さらに、マルチテナントシステムは、各ノードにコンピューティングシステムを有するネットワーク全体に分散されたサーバシステム上に種々のテナントインスタンスを有することができる。各テナントのライブ又は本番データベースインスタンスは、そのトランザクションを１つのコンピュータシステムでのみ処理させることができる。そのインスタンスのトランザクションを処理するコンピューティングシステムは、他のテナントのための他のインスタンスのトランザクションを処理することもできる。
【００５３】
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算の図又はアルゴリズム及びシンボル表現の観点で提示されている。これらの図並びにアルゴリズム説明及び表現は、他の当業者にその作用の実体を最も効果的に伝えるために、データ処理分野の当業者により一般に使用されている。アルゴリズムは、ここで、そして一般に、所望の結果をもたらすステップの自己一貫したシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。必ずではないが、通常、これらの量は、記憶され、転送され、組み合わせられ、比較され、その他の方法で操作されることが可能な電気又は磁気信号の形式をとる。主に共用の理由で、これらの信号をビット、値、要素、シンボル、キャラクタ、語、数字などとして参照することが時に便利であることが判明している。
【００５４】
しかしながら、全てのこれら及び同様の用語は適切な物理量に関連づけられるべきであり、これら量に適用される簡便なラベルに過ぎないという点に留意すべきである。上記議論から明らかなように、別段具体的に示されない限り、説明全体を通じて、「受信する」、「送信する」、「修正する」、「送出する」などの用語を利用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理（例えば、電子）量として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ又は他のこうした情報記憶、送信、若しくは表示デバイス内の物理量として同様に表される他のデータへ操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを参照することが十分理解される。
【００５５】
より一般的には、本開示の対象事項の種々の実装は、コンピュータにより実現されるプロセス、及びこれらのプロセスを実施する装置の形式を含み、あるいは該形式で実現できる。実装はまた、フロッピーディスケット、ＣＤ‐ＲＯＭ、ハードドライブ、ＵＳＢ（ユニバーサルシリアルバス）ドライブ、又は他の任意のマシン読取可能記憶媒体などの非一時的及び／又は有形媒体で実現される命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態で実現でき、コンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、開示される対象事項の実装を実施する装置になる。実装はまた、例えば、記憶媒体に記憶されるか、コンピュータにロードされ、及び／又はコンピュータにより実行されるか、あるいは電気配線若しくはケーブルを通じて、光ファイバを通して、又は電磁放射線を介してなどで何らかの伝送媒体を通じて伝送されるかにかかわらず、コンピュータプログラムコードの形式で実現でき、コンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、開示される対象事項の実装を実施する装置になる。汎用マイクロプロセッサで実現されるとき、コンピュータプログラムコードセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータ読取可能記憶媒体上に記憶されたコンピュータ読取可能命令のセットは、汎用プロセッサにより実現でき、これは、汎用プロセッサ又は汎用プロセッサを含むデバイスを、命令を実現又は実行するように構成された専用デバイスに変換することができる。実装は、汎用マイクロプロセッサ、及び／又は開示される対象事項の実装による手法の全部又は一部をハードウェア及び／又はファームウェアで実現する特定用途向け集積回路（ＡＳＩＣ）などの、プロセッサを含み得るハードウェアを使用して実現できる。プロセッサは、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ハードディスク、又は電子情報を記憶できる任意の他のデバイスなどのメモリに結合できる。メモリは、開示される対象事項の実装による手法を実行するためにプロセッサにより実行されるよう適合された命令を記憶することができる。
【００５６】
上述の説明は、説明の目的で、特定の実装を参照して説明されている。しかしながら、上記の例示的な議論は、網羅的であること、又は開示される対象事項の実装を開示された正確な形式に限定することを意図したものではない。上記の教示を考慮し、多くの修正及び変形が可能である。これらの実装は、開示される対象事項の実装の原理及びそれらの実際的な適用を説明するために選択され、説明されており、それにより、他の当業者は、これらの実装及び種々の実装を、企図される特定の使用に適し得る種々の修正と共に利用することができる。
【図１Ａ】
2020525906.tif 000003
【図１Ｂ】
2020525906.tif 000004
【図２Ａ】
2020525906.tif 000005
【図２Ｂ】
2020525906.tif 000006
【図２Ｃ】
2020525906.tif 000007
【図３】
2020525906.tif 000008
【図４】
2020525906.tif 000009
【図５Ａ】
2020525906.tif 000010
【図５Ｂ】
2020525906.tif 000011
【国際調査報告】
2020525906.tif 000012
2020525906.tif 000013
2020525906.tif 000014