(57)【要約】データ記憶及び検索のためのデータベースシステムであって、トランザクション・データベースへのクエリ式を受け入れるように構成された動的データセットへの、リアルタイムアクセスを提供する分散データアーキテクチャを有し、トランザクション・データベースの少なくとも１つの基礎となるデータ構造から抽出されたトランザクション・データベースを概して含む。データベースシステムは、クエリ式を使用するクエリを介して、ユーザがトランザクション・データベースに問い合わせするように構成されたユーザインタフェースを含む。トランザクション・データベースは、動的データセット内のデータの現在の状態を反映するクエリへの応答を配信する。
2020514935.tif 000002
【特許請求の範囲】
【請求項１】
データの保存及び検索のためのデータベースシステムであって、
トランザクション・データベースへのクエリ式を受け入れるように構成された動的データセットへの、リアルタイムアクセスを提供する分散データアーキテクチャを有し、前記トランザクション・データベースの少なくとも１つの基礎となるデータ構造から抽出された前記トランザクション・データベースと、
前記クエリ式を使用するクエリを介して、ユーザが前記トランザクション・データベースに問い合わせするように構成されたユーザインタフェースと、を含み、
前記トランザクション・データベースは、前記動的データセット内のデータの現在の状態を反映するクエリへの応答を配信することを特徴とするデータベースシステム。
【請求項２】
前記ユーザインタフェースは、複数のユーザによる同時のクエリを容易にするものであることを特徴とする請求項１記載のデータベースシステム。
【請求項３】
前記トランザクション・データベースは、クエリへの応答を返すのに必要な時間を実質的に損なうことなく、少なくとも１０００人のユーザによるクエリへの応答を容易にすることを特徴とする請求項１記載のデータベースシステム。
【請求項４】
前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項１記載のデータベースシステム。
【請求項５】
前記トランザクション・データベースは、トランザクションのロック及びコミットの少なくとも一方に、コンセンサスアルゴリズムを使用することを特徴とする請求項１記載のデータベースシステム。
【請求項６】
前記コンセンサスアルゴリズムが、Ｒａｆｔアルゴリズムであることを特徴とする請求項５記載のデータベースシステム。
【請求項７】
前記トランザクション・データベースは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項１記載のデータベースシステム。
【請求項８】
前記トランザクション・データベースは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項１記載のデータベースシステム。
【請求項９】
前記データベースが、企業向けのオンプレミス・データベースであることを特徴とする請求項１記載のデータベースシステム。
【請求項１０】
前記データベースが、クラウドデータベースであることを特徴とする請求項１記載のデータベースシステム。
【請求項１１】
前記データベースが、パブリッククラウド・データベースであることを特徴とする請求項１０記載のデータベースシステム。
【請求項１２】
前記データベースが、プライベートクラウド・データベースであることを特徴とする請求項１０記載のデータベースシステム。
【請求項１３】
前記トランザクション・データベースは、電子商取引システムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項１４】
前記トランザクション・データベースは、ソーシャル・ネットワークシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項１５】
前記トランザクション・データベースは、広告ネットワークシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項１６】
前記トランザクション・データベースは、通信ネットワークと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項１７】
前記トランザクション・データベースは、ロケーションベースのサービスシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項１８】
前記トランザクション・データベースは、非トランザクション・データベースと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項１９】
前記トランザクション・データベースは、オペレーティングシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項２０】
前記トランザクション・データベースは、ディスクストレージ・インフラストラクチャを使用することを特徴とする請求項１記載のデータベースシステム。
【請求項２１】
前記トランザクション・データベースは、ストレージエリアネットワーク・ストレージ・インフラストラクチャを使用することを特徴とする請求項１記載のデータベースシステム。
【請求項２２】
前記トランザクション・データベースは、データストレージ用のオペレーティングシステム・コンポーネントと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項２３】
前記トランザクション・データベースは、マルチクラウド展開をサポートすることを特徴とする請求項１記載のデータベースシステム。
【請求項２４】
前記トランザクション・データベースは、インスタンス分割のために主キーを用いるデータ分割を使用すると共に、インデックスに対してターム分割を使用することを特徴とする請求項１記載のデータベースシステム。
【請求項２５】
前記トランザクション・データベースは、圧縮ログ構造化マージツリーとして実装されるローカル・ストレージエンジンを使用することを特徴とする請求項１記載のデータベースシステム。
【請求項２６】
データの保存及び検索のためのデータベースシステムであって、
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、前記トランザクション・データベースにアクセスするクライアントシステムのクライアントドライバ・ホストファイル内の埋め込み式ドメイン固有言語として実装される、機能的クエリ言語で表現されたクエリを受け入れるように構成されていることを特徴とするデータベースシステム。
【請求項２７】
前記クライアントドライバ・ホストファイルは、ソフトウェア開発ツールにおけるデータベース機能の開始時にアクセスされることを特徴とする請求項２６記載のデータベースシステム。
【請求項２８】
分散グローバルログを使用して、分散システム用の複数のデータトランザクションに対して、原子性、一貫性、独立性、及び永続性を提供する、トランザクションエンジンを含むことを特徴とするシステム。
【請求項２９】
前記分散システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項２８記載のシステム。
【請求項３０】
前記分散システムが、トランザクション・データベースであることを特徴とする請求項２８記載のシステム。
【請求項３１】
前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項３０記載のシステム。
【請求項３２】
前記分散システムは、コンセンサスアルゴリズムを使用することを特徴とする請求項２８記載のシステム。
【請求項３３】
前記コンセンサスアルゴリズムが、Ｒａｆｔアルゴリズムであることを特徴とする請求項３２記載のシステム。
【請求項３４】
前記分散システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項２８記載のシステム。
【請求項３５】
前記分散システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項２８記載のシステム。
【請求項３６】
データの保存及び検索のためのシステムであって、
一回のネットワーク往復中に実行される、データトランザクション・ロック及びデータトランザクション・コミットの少なくとも一方を有する、分散システムを含むことを特徴とするシステム。
【請求項３７】
前記分散システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項３６記載のシステム。
【請求項３８】
前記分散システムは、該分散システム全体のデータトランザクションについて、グローバルログを使用することを特徴とする請求項３６記載のシステム。
【請求項３９】
前記分散システムが、トランザクション・データベースであることを特徴とする請求項３６記載のシステム。
【請求項４０】
前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項３９記載のシステム。
【請求項４１】
前記分散システムは、コンセンサスアルゴリズムを使用して、そのデータベースをロックするか、或いは、トランザクションをコミットするかを決定することを特徴とする請求項３６記載のシステム。
【請求項４２】
前記コンセンサスアルゴリズムが、Ｒａｆｔアルゴリズムであることを特徴とする請求項４１記載のシステム。
【請求項４３】
前記分散システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項３６記載のシステム。
【請求項４４】
前記分散システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項３６記載のシステム。
【請求項４５】
データを有する分散データアーキテクチャを備えるトランザクション・データベースを含み、
前記データは、前記トランザクション・データベースのメモリ内で静止中に暗号化されると共に、メモリロケーションへの及びメモリロケーションからの伝送中に、前記トランザクション・データベースによって使用されることを特徴とするシステム。
【請求項４６】
前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項４５記載のシステム。
【請求項４７】
前記トランザクション・データベースは、トランザクションのロック及びコミットのうちの少なくとも一方について、コンセンサスアルゴリズムを使用することを特徴とする請求項４５記載のシステム。
【請求項４８】
前記コンセンサスアルゴリズムが、Ｒａｆｔコンセンサスアルゴリズムであることを特徴とする請求項４７記載のシステム。
【請求項４９】
前記トランザクション・データベースは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項４５記載のシステム。
【請求項５０】
前記トランザクション・データベースは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項４５記載のシステム。
【請求項５１】
分散データ記憶及び検索システムと、
データベースレコードの履歴全体を保持及びインデックス付けするテンポラル・ストレージエンジンと、を含み、
ユーザが選択するように設定された時間間隔での、データベーストランザクションのイベントストリームへのアクセスを容易にし、
前記イベントストリームへのアクセス権が、前記イベントストリーム内の複数のイベント毎に独立して制御されることを特徴とするシステム。
【請求項５２】
前記分散データ記憶及び検索システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項５１記載のシステム。
【請求項５３】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項５１記載のシステム。
【請求項５４】
前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項５３記載のシステム。
【請求項５５】
前記分散データ記憶及び検索システムは、コンセンサスアルゴリズムを使用することを特徴とする請求項５１記載のシステム。
【請求項５６】
前記コンセンサスアルゴリズムが、Ｒａｆｔコンセンサスアルゴリズムであることを特徴とする請求項５５記載のシステム。
【請求項５７】
前記分散データ記憶及び検索システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項５１記載のシステム。
【請求項５８】
前記分散データ記憶及び検索システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項５１記載のシステム。
【請求項５９】
ステートレスセッションを可能にすると共に、トランザクション・コンテキストを覆い隠すアクセストークンで各データトランザクションを識別する、データの記憶及び検索のための分散システムを含むことを特徴とするシステム。
【請求項６０】
前記分散システムが、分散データアーキテクチャを有するトランザクション・データベースであることを特徴とする請求項５９記載のシステム。
【請求項６１】
前記トランザクション・データベースに対するクエリは、ホストアプリケーション言語で記述され、該ホストアプリケーション言語のセキュリティ機能を継承することを特徴とする請求項６０記載のシステム。
【請求項６２】
前記トランザクション・データベースに対するクエリは、アトミックにかつトランザクション毎に実行されることを特徴とする請求項６０記載のシステム。
【請求項６３】
ホストアプリケーション言語の、本質的にスケーラブルではないクエリ・セマンティクスは、スケーラブルなセマンティクスに置き換えられることを特徴とする請求項６０記載のシステム。
【請求項６４】
前記分散システムは、前記トランザクション・データベース内のレコードのネイティブな地理的インデックス付けを可能にするように構成されることを特徴とする請求項６０記載のシステム。
【請求項６５】
前記分散システムは、前記トランザクション・データベース内でのネイティブな全文検索を可能にするように構成されることを特徴とする請求項６０記載のシステム。
【請求項６６】
前記分散システムは、前記トランザクション・データベースを介したネイティブな反復機械学習を可能にするように構成されることを特徴とする請求項６０記載のシステム。
【請求項６７】
クエリ言語を使用する分散データ記憶及び検索システムを含み、
前記クエリ言語は、前記分散データ記憶及び検索システムの読み取り及び書き込みの単相プロセスを可能にする、完全なトランザクション・オブジェクトとして送信されたクエリを受け入れることを特徴とするシステム。
【請求項６８】
前記分散データ記憶及び検索システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項６７記載のシステム。
【請求項６９】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項６７記載のシステム。
【請求項７０】
前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項６９記載のシステム。
【請求項７１】
前記分散データ記憶及び検索システムは、コンセンサスアルゴリズムを使用することを特徴とする請求項６７記載のシステム。
【請求項７２】
前記コンセンサスアルゴリズムが、Ｒａｆｔコンセンサスアルゴリズムであることを特徴とする請求項７１記載のシステム。
【請求項７３】
前記分散データ記憶及び検索システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項６７記載のシステム。
【請求項７４】
前記分散データ記憶及び検索システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項６７記載のシステム。
【請求項７５】
グローバル・トランザクションログ内の各トランザクションの位置に基づく、トランザクションの厳密な直列化可能性を使用して提供される、トランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項７６】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項７５記載のシステム。
【請求項７７】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項７６記載のシステム。
【請求項７８】
前記トランザクション・データベースは、トランザクションを保存する時間間隔をユーザが設定できるようにする、テンポラル・ストレージエンジンを使用することを特徴とする請求項７６記載のシステム。
【請求項７９】
前記トランザクションの厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項７５記載のシステム。
【請求項８０】
読み取り専用トランザクションが直列化可能であることを特徴とする請求項７５記載のシステム。
【請求項８１】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項７６記載のシステム。
【請求項８２】
クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項７６記載のシステム。
【請求項８３】
前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項７６記載のシステム。
【請求項８４】
グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性を使用して提供される、ロックレスのトランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項８５】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項８４記載のシステム。
【請求項８６】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項８５記載のシステム。
【請求項８７】
前記トランザクション・データベースは、トランザクションの記憶のための時間間隔をユーザが設定できるようにする、テンポラル・ストレージエンジンを使用することを特徴とする請求項８５記載のシステム。
【請求項８８】
トランザクションの前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項８４記載のシステム。
【請求項８９】
読み取り専用トランザクションが直列化可能であることを特徴とする請求項８４記載のシステム。
【請求項９０】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項８５記載のシステム。
【請求項９１】
クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項８５記載のシステム。
【請求項９２】
前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項８５記載のシステム。
【請求項９３】
コンセンサス戦略をデータベースロックに適用することによりデータベーストランザクションに提供される、トランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項９４】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項９３記載のシステム。
【請求項９５】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項９４記載のシステム。
【請求項９６】
前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項９４記載のシステム。
【請求項９７】
各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項９３記載のシステム。
【請求項９８】
読み取り専用トランザクションが直列化可能であることを特徴とする請求項９３記載のシステム。
【請求項９９】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項９４記載のシステム。
【請求項１００】
クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項９４記載のシステム。
【請求項１０１】
前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項９４記載のシステム。
【請求項１０２】
グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性の使用と、データベーストランザクションについての楽観的ロッキングの使用とにより、前記データベーストランザクションに提供される、トランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項１０３】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項１０２記載のシステム。
【請求項１０４】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１０３記載のシステム。
【請求項１０５】
前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１０３記載のシステム。
【請求項１０６】
前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項１０２記載のシステム。
【請求項１０７】
読み取り専用トランザクションが直列化可能であることを特徴とする請求項１０２記載のシステム。
【請求項１０８】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、ドライバを含むことを特徴とする請求項１０３記載のシステム。
【請求項１０９】
クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項１０３記載のシステム。
【請求項１１０】
前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項１０３記載のシステム。
【請求項１１１】
グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性を使用してデータベーストランザクションに提供される、直列化可能な保証を含む、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項１１２】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項１１１記載のシステム。
【請求項１１３】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１１２記載のシステム。
【請求項１１４】
前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１１２記載のシステム。
【請求項１１５】
前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項１１１記載のシステム。
【請求項１１６】
読み取り専用トランザクションが直列化可能であることを特徴とする請求項１１１記載のシステム。
【請求項１１７】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項１１２記載のシステム。
【請求項１１８】
クラスタ内の前記トランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項１１２記載のシステム。
【請求項１１９】
前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項１１２記載のシステム。
【請求項１２０】
データベーストランザクションがグローバルログで記録される、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項１２１】
前記分散データ記憶及び検索システムは、トランザクション・データベースであることを特徴とする請求項１２０記載のシステム。
【請求項１２２】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１２１記載のシステム。
【請求項１２３】
前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１２１記載のシステム。
【請求項１２４】
各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項１２０記載のシステム。
【請求項１２５】
読み取り専用トランザクションが直列化可能であることを特徴とする請求項１２０記載のシステム。
【請求項１２６】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項１２１記載のシステム。
【請求項１２７】
クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項１２１記載のシステム。
【請求項１２８】
前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項１２１記載のシステム。
【請求項１２９】
データベーストランザクションがグローバルログで記録される、分散データ記憶及び検索システムを含み、
前記グローバルログが、前記分散データ記憶及び検索システムを使用する少なくとも１つのテナントに固有のものであることを特徴とするシステム。
【請求項１３０】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項１２９記載のシステム。
【請求項１３１】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１３０記載のシステム。
【請求項１３２】
前記トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１３０記載のシステム。
【請求項１３３】
各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項１２９記載のシステム。
【請求項１３４】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項１３０記載のシステム。
【請求項１３５】
テナント、ポリシー、及びロールのうちの少なくとも１つによって分割されたグローバルログで、データベーストランザクションが記録される、分散データ記憶及び検索システムを含むことを特徴とするシステム。
【請求項１３６】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項１３５記載のシステム。
【請求項１３７】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１３６記載のシステム。
【請求項１３８】
前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１３６記載のシステム。
【請求項１３９】
各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項１３５記載のシステム。
【請求項１４０】
前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項１３６記載のシステム。
【請求項１４１】
厳密な直列化可能性を使用する複数の分散システムにわたる読み取りについて、トランザクション一貫性を提供する、分散データ記憶及び検索システムを含み、
前記厳密な直列化可能性は、前記複数の分散システムの複数の独立したトランザクションログにおける、読み取りのトランザクション位置に基づくものであることを特徴とするシステム。
【請求項１４２】
前記複数の分散システムからの分散システムの少なくとも１つが、トランザクション・データベースであることを特徴とする請求項１４１記載のシステム。
【請求項１４３】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１４２記載のシステム。
【請求項１４４】
前記トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１４２記載のシステム。
【請求項１４５】
前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項１４１記載のシステム。
【請求項１４６】
ハイブリッドクロックを使用する複数の分散データベースにわたるトランザクション一貫性を提供する、分散データ記憶及び検索システムを含み、
該分散データ記憶及び検索システムは、前記複数の分散データベースの夫々のトランザクションログにトランザクションを記録するために使用される、複数のクロックのクロック位置の対応の理解に基づいて直列化されたデータベーストランザクションを含むことを特徴とするシステム。
【請求項１４７】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項１４６記載のシステム。
【請求項１４８】
前記トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用することを特徴とする請求項１４７記載のシステム。
【請求項１４９】
前記トランザクション・データベースは、前記データベーストランザクションの保存のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項１４７記載のシステム。
【請求項１５０】
各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項１４６記載のシステム。
【請求項１５１】
分散データ記憶及び検索システム用のテンポラル・アプリケーション・プログラミング・インタフェースを含み、
前記分散データ記憶及び検索システムは、前記データ記憶及び検索システム内のインスタンスのクラスに関連するイベントのストリームにサブスクライブするユーザを、前記テンポラル・アプリケーション・プログラミング・インタフェースを介して受け入れるように構成されていることを特徴とするシステム。
【請求項１５２】
前記テンポラル・アプリケーション・プログラミング・インタフェースは、関心のあるイベントにサブスクライブするリスナーを受け入れるように構成されていることを特徴とする請求項１５１記載のシステム。
【請求項１５３】
前記テンポラル・アプリケーション・プログラミング・インタフェースを介して、別のシステムへテーブルがストリーミングされることを特徴とする請求項１５１記載のシステム。
【請求項１５４】
前記テンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブするためのインデックスが、当該システムに構成されることを特徴とする請求項１５１記載のシステム。
【請求項１５５】
更に、アプリケーションを含み、
該アプリケーションは、該アプリケーションに対して指定されたイベントについて、前記テンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブすることを特徴とする請求項１５１記載のシステム。
【請求項１５６】
ストリーミングクエリの範囲内のイベントのストリームが、時間的一貫性の保証と共に、前記テンポラル・アプリケーション・プログラミング・インタフェースを介して提供されることを特徴とする請求項１５１記載のシステム。
【請求項１５７】
前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項１５１記載のシステム。
【請求項１５８】
前記トランザクション・データベースは、指定された時間間隔で、クエリに応答して、イベントのストリームを提供するように構成されることを特徴とする請求項１５７記載のシステム。
【請求項１５９】
分散データアーキテクチャを有するトランザクション・データベースと、
該トランザクション・データベースのデータベースレコードの個々の行のレベルで、ユーザがセキュリティ許可を実施できるようにする、行レベルアクセス制御システムと、を含むことを特徴とするシステム。
【請求項１６０】
前記トランザクション・データベースは、該トランザクション・データベースがデータ処理機能を提供するアプリケーションのエンドユーザによる、前記データベースへのダイレクトアクセスを容易にするように構成されることを特徴とする請求項１５９記載のシステム。
【請求項１６１】
前記ダイレクトアクセスは、ポリシーに基づいて構成されることを特徴とする請求項１６０記載のシステム。
【請求項１６２】
前記ダイレクトアクセスは、ポリシーに基づく作業負荷について構成されることを特徴とする請求項１６０記載のシステム。
【請求項１６３】
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、データインフラストラクチャ能力の認識と、前記トランザクション・データベースを使用するテナント、トランザクション、及び作業負荷のうちの少なくとも１つについての、サービス品質要件の認識とに基づいて、前記トランザクション・データベースのトランザクションをルーティングするように構成されていることを特徴とするシステム。
【請求項１６４】
分散データアーキテクチャを有するトランザクション・データベースと、
計算リソース、メモリリソース、及び入出力リソースのうちの少なくとも１つをテナント間で割り当てると共に、前記少なくとも１つのリソースのテナント毎のリソース使用率を追跡する、前記トランザクション・データベース用のテナント対応リソース・スケジューラと、含むことを特徴とするシステム。
【請求項１６５】
前記テナント対応リソース・スケジューラは、少なくとも１つの優先度インジケータに基づいてリソースを割り当てることを特徴とする請求項１６４記載のシステム。
【請求項１６６】
前記テナント対応リソース・スケジューラは、少なくとも１つのクォータに基づいてリソースを割り当てることを特徴とする請求項１６４記載のシステム。
【請求項１６７】
更に、ポリシー、ロール、及びルールのうちの少なくとも１つに基づいてリソースへのアクセスを制御する、アクセス制御システムを含むことを特徴とする請求項１６４記載のシステム。
【請求項１６８】
分散データアーキテクチャを有するトランザクション・データベースと、
計算リソース、メモリリソース、及び入出力リソースのうちの少なくとも１つを作業負荷間で割り当てると共に、前記少なくとも１つのリソースの作業負荷毎のリソース使用率を追跡する、前記トランザクション・データベース用の作業負荷毎リソース・スケジューラと、を含むことを特徴とするシステム。
【請求項１６９】
前記作業負荷毎リソース・スケジューラは、少なくとも１つの優先度インジケータに基づいてリソースを割り当てることを特徴とする請求項１６８記載のシステム。
【請求項１７０】
前記作業負荷毎リソース・スケジューラは、少なくとも１つのクォータに基づいてリソースを割り当てることを特徴とする請求項１６８記載のシステム。
【請求項１７１】
更に、作業負荷に適用されるポリシー、ロール、及びルールのうちの少なくとも１つに基づいてリソースへのアクセスを制御する、アクセス制御システムを含むことを特徴とする請求項１６８記載のシステム。
【請求項１７２】
分散データアーキテクチャを有するトランザクション・データベースと、
計算リソース、メモリリソース、及び入出力リソースのうちの少なくとも１つを、ポリシーに基づいて前記分散データアーキテクチャ内で割り当てると共に、少なくとも１つのリソースのリソース使用率を追跡する、前記トランザクション・データベース用のポリシー対応リソース・スケジューラと、を含むことを特徴とするシステム。
【請求項１７３】
前記少なくとも１つのリソースは、少なくとも１つの優先度インジケータに基づいて割り当てられることを特徴とする請求項１７２記載のシステム。
【請求項１７４】
前記少なくとも１つのリソースは、少なくとも１つのクォータに基づいて割り当てられることを特徴とする請求項１７２記載のシステム。
【請求項１７５】
更に、ポリシー、ロール、及びルールのうちの少なくとも１つに基づいてリソースへのアクセスを制御する、アクセス制御システムを含むことを特徴とする請求項１７２記載のシステム。
【請求項１７６】
分散データアーキテクチャを有するトランザクション・データベースと、
レコードの履歴全体と前記レコードの履歴のインデックスとを保持する設定可能な保持ウィンドウを備えた、前記トランザクション・データベース用のテンポラル・ストレージエンジンと、含むことを特徴とするシステム。
【請求項１７７】
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記データベースのテンポラル・ストレージエンジンが、レコードの履歴全体を維持及びインデックス付けすると共に、ユーザが選択した時間間隔での、履歴内のイベントのイベントストリームへのアクセスを容易にすることを特徴とするシステム。
【請求項１７８】
更に、クエリの時間間隔を指定するようにユーザ向けに構成された、前記トランザクション・データベース用のクエリ言語を含み、
前記トランザクション・データベースは、前記指定された時間間隔で前記クエリに応答する、イベントストリームを提供することを特徴とする請求項１７７記載のシステム。
【請求項１７９】
インスタンス、クラス、データベース、及びキーに編成されたオブジェクトリレーショナル・データモデルを使用する分散データアーキテクチャを有する、トランザクション・データベースを含み、
前記オブジェクトリレーショナル・データモデルが、半構造化され、スキーマ・フリーであることを特徴とするシステム。
【請求項１８０】
前記データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含むことを特徴とする請求項１７９記載のシステム。
【請求項１８１】
前記トランザクション・データベースは、インスタンスとして定義された半構造化ドキュメントとして、前記トランザクション・データベースに挿入されるレコードを含むことを特徴とする請求項１７９記載のシステム。
【請求項１８２】
前記インスタンスは、クラスへとグループ化されることを特徴とする請求項１８１記載のシステム。
【請求項１８３】
前記クラスは、データベースへとグループ化されることを特徴とする請求項１８２記載のシステム。
【請求項１８４】
前記トランザクション・データベースは、キーによって制御されるアクセスを含むことを特徴とする請求項１７９記載のシステム。
【請求項１８５】
前記トランザクション・データベースは、関数としてパラメータ化されたクエリを含むことを特徴とする請求項１７９記載のシステム。
【請求項１８６】
前記トランザクション・データベースは、インデックスで構築された派生関係を含むことを特徴とする請求項１７９記載のシステム。
【請求項１８７】
分散データアーキテクチャを有するトランザクション・データベースを含み、
該トランザクション・データベースは、オブジェクトリレーショナル・データモデルを使用し、
該オブジェクトリレーショナル・データモデルの派生関係は、前記トランザクション・データベースのインデックスとして構築されることを特徴とするシステム。
【請求項１８８】
前記オブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含むことを特徴とする請求項１８７記載のシステム。
【請求項１８９】
前記トランザクション・データベースは、インスタンスとして定義された半構造化ドキュメントとして挿入された、レコードを含むことを特徴とする請求項１８７記載のシステム。
【請求項１９０】
前記インスタンスは、クラスへとグループ化されることを特徴とする請求項１８９記載のシステム。
【請求項１９１】
前記クラスは、データベースへとグループ化されることを特徴とする請求項１９０記載のシステム。
【請求項１９２】
前記トランザクション・データベースへのアクセスは、キーによって制御されることを特徴とする請求項１８７記載のシステム。
【請求項１９３】
前記トランザクション・データベースに対するクエリは、関数としてパラメータ化されていることを特徴とする請求項１８７記載のシステム。
【請求項１９４】
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、前記トランザクション・データベースのインデックスを使用して実施される制約を有する、オブジェクトリレーショナル・データモデルを使用することを特徴とするシステム。
【請求項１９５】
前記オブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含むことを特徴とする請求項１９４記載のシステム。
【請求項１９６】
前記トランザクション・データベースは、インスタンスとして定義された半構造化ドキュメントとして挿入された、レコードを含むことを特徴とする請求項１９４記載のシステム。
【請求項１９７】
前記インスタンスは、クラスへとグループ化されることを特徴とする請求項１９６記載のシステム。
【請求項１９８】
前記クラスは、データベースへとグループ化されることを特徴とする請求項１９７記載のシステム。
【請求項１９９】
前記トランザクション・データベースへのアクセスは、キーによって制御されることを特徴とする請求項１９４記載のシステム。
【請求項２００】
前記トランザクション・データベースに対するクエリは、関数としてパラメータ化されていることを特徴とする請求項１９４記載のシステム。
【請求項２０１】
前記トランザクション・データベースは、インデックスで構築された派生関係を含むことを特徴とする請求項１９４記載のシステム。
【請求項２０２】
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、複数のドライバによって媒介される、前記トランザクション・データベース用のクエリ言語を含み、前記複数のドライバは、前記トランザクション・データベースから出力されるドメイン固有の組み込み式アプリケーション言語を公開するものであることを特徴とするシステム。
【請求項２０３】
複数のアプリケーション言語用の埋め込み式ドメイン固有言語で公開するデータベースドライバを実装する、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２０４】
複数のレコードのカプセル化を可能にするクエリ言語を実装すると共に、複数のレコードにまたがるトランザクションを単一の要求クエリでカプセル化できる、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２０５】
非主キーアクセスがインデックスによって裏付けられることを必要とするクエリ・セマンティクスを実装する、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２０６】
認証されたユーザにトークンを発行するサービスによって実行されるアイデンティティ管理を含む、分散データアーキテクチャを有するトランザクション・データベースを含み、
前記トークンは、前記ユーザが前記トランザクション・データベースで更なるアクションを実行することを可能にすることを特徴とするシステム。
【請求項２０７】
前記トークンを発行する前記サービスは、前記トランザクション・データベースの内部サービスであることを特徴とする請求項２０６記載のシステム。
【請求項２０８】
前記トークンを発行する前記サービスは、前記トランザクション・データベースの外部で実行されるサードパーティ・サービスであることを特徴とする請求項２０６記載のシステム。
【請求項２０９】
アクセス制御を備えた分散データアーキテクチャを有するトランザクション・データベースを含み、
前記アクセス制御は、キーベースのロール割り当てを使用して、前記トランザクション・データベース内の１つ以上のデータレコードへの行レベルアクセスを制限することを特徴とするシステム。
【請求項２１０】
前記アクセス制御は、アイデンティティの割り当てによって管理される行レベルセキュリティを含むことを特徴とする請求項２０９記載のシステム。
【請求項２１１】
前記トランザクション・データベースは、アクセス制御クエリ式をアクセス制御リストに割り当てることにより、ユーザ、ロール、及びグループのうちの少なくとも１つの決定が実施される、アクセス権を含むことを特徴とする請求項２０９記載のシステム。
【請求項２１２】
データベーストランザクションを実行するアクターのアイデンティティが、ストアドプロシージャのコンテキスト内でアクセス可能であることを特徴とする請求項２０９記載のシステム。
【請求項２１３】
グローバル・トランザクションログを使用して追跡及び報告されるトランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２１４】
前記トランザクション・データベースは、ユーザ設定の保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開することを特徴とする請求項２１３記載のシステム。
【請求項２１５】
前記トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関係するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含むことを特徴とする請求項２１３記載のシステム。
【請求項２１６】
グローバル・トランザクションログを使用して記録される、管理トランザクション及びアプリケーション・トランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２１７】
前記トランザクション・データベースは、ユーザ設定の保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開することを特徴とする請求項２１６記載のシステム。
【請求項２１８】
前記トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関係するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含むことを特徴とする請求項２１６記載のシステム。
【請求項２１９】
データベーストランザクションの全てのポイントでデータの暗号化を使用する、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２２０】
前記トランザクション・データベースは、ＳＳＬを介して暗号化された、データベースクラスタ内のトラフィックを含むことを特徴とする請求項２１９記載のシステム。
【請求項２２１】
前記トランザクション・データベースは、ＳＳＬを介して暗号化された、前記トランザクション・データベースへのパブリック・インタフェース上のトラフィックを含むことを特徴とする請求項２１９記載のシステム。
【請求項２２２】
前記トランザクション・データベースは、公開キー／秘密キーのペアを介して認証される、前記トランザクション・データベースとやり取りするアプリケーションを含むことを特徴とする請求項２１９記載のシステム。
【請求項２２３】
前記トランザクション・データベースの少なくとも１つのオペレーティングシステム機能は、データレスト、ログ情報、及び秘密キーのうちの少なくとも１つでデータを保護するために使用されることを特徴とする請求項２１９記載のシステム。
【請求項２２４】
前記少なくとも１つのオペレーティングシステム機能が、ファイル暗号化であることを特徴とする請求項２２３記載のシステム。
【請求項２２５】
夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含み、
複数のトランザクション・データベースの前記クラスタ内のデータベースのクラスタトポロジ構成が、前記データベースのクエリコーディネータ、データレプリカ、及びログレプリカとして機能し、
前記構成トポロジは、当該システムによって自動的に導出されることを特徴とするシステム。
【請求項２２６】
前記クラスタ内の前記複数のトランザクション・データベースについて、一貫したクラスタ状態が維持されることを特徴とする請求項２２５記載のシステム。
【請求項２２７】
夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含み、
該クラスタの少なくとも１つのトランザクション・データベースメンバーが、クエリコーディネータ、データレプリカ、及びログレプリカとして機能し、
プレディケートがデータベースクラスタのレプリカへ自動的にプッシュされることを特徴とするシステム。
【請求項２２８】
前記クラスタの各メンバーが、クエリコーディネータ、データレプリカ、及びログレプリカとして機能することを特徴とする請求項２２７記載のシステム。
【請求項２２９】
データ構造を介して有効化されるデータ書き込みを含む、分散データアーキテクチャを有するトランザクション・データベースを含み、
前記データ構造は、ローカル・ストレージエンジンのために適所に修正され、圧縮ログ構造化マージツリーとして実装されることを特徴とするシステム。
【請求項２３０】
トランザクションが、グローバル・トランザクションログにバッチでコミットされることを特徴とする請求項２２９記載のシステム。
【請求項２３１】
トランザクションが、ログ先行書き込みとしてコミットされることを特徴とする請求項２２９記載のシステム。
【請求項２３２】
前記トランザクション・データベースは、少なくとも１つのトランザクション・データベースがレプリカであるクラスタの一部であり、
前記レプリカは、グローバル・トランザクションログを取得し、前記ログに基づいてトランザクションをアトミックに一括して前記レプリカへ書き込むことを特徴とする請求項２２９記載のシステム。
【請求項２３３】
前記トランザクション・データベースは、同期上書きが回避されるように、不変バージョンで構成されるテンポラル・データモデルを使用することを特徴とする請求項２２９記載のシステム。
【請求項２３４】
分散データアーキテクチャを有するトランザクション・データベースと、
スケジューラを使用してリソースを動的に割り当て、前記トランザクション・データベースのサービス品質ポリシーを実施するテナント対応リソースマネージャと、を含むことを特徴とするシステム。
【請求項２３５】
更に、前記データベース用のクエリプランナを含み、
該クエリプランナは、一連のインターリーブされた潜在的に並列化可能な計算及び入力／出力サブクエリとしてトランザクションを評価し、実行がトランザクション間の予測可能できめ細かいバリアをもたらすことを保証することを特徴とする請求項２３４記載のシステム。
【請求項２３６】
分散データアーキテクチャを有するトランザクション・データベースと、
前記トランザクション・データベース用のジャーナル化されたトポロジ認識タスクスケジューラにより管理されるバックグラウンド・クエリタスクと、を含むことを特徴とするシステム。
【請求項２３７】
タスクがクラスタ全体で１つのインスタンスに制限されることを特徴とする請求項２３６記載のシステム。
【請求項２３８】
タスクがデータベース毎に１つのインスタンスに制限されることを特徴とする請求項２３６記載のシステム。
【請求項２３９】
タスクが特定のデータ範囲に割り当てられることを特徴とする請求項２３６記載のシステム。
【請求項２４０】
更に、特定のデータ範囲のデータレプリカであるタスクの、実行ノードを含むことを特徴とする請求項２３６記載のシステム。
【請求項２４１】
前記バックグラウンド・クエリタスクの各タスクの実行状態は、一貫したメタデータストアに保持され、スケジュールされたタスクが、ノードに依存しない方法で実行されることを特徴とする請求項２３６記載のシステム。
【請求項２４２】
ノードが故障したとき、そのタスクは、他の有効なノードへ自動的に再割り当てされるか、再起動されるか、又は再開されるかのうち、少なくとも一つであることを特徴とする請求項２３６記載のシステム。
【請求項２４３】
ノードがクラスタからリムーブされるとき、そのタスクは、他の有効なノードへ自動的に再割り当てされるか、再起動されるか、又は再開されるかのうち、少なくとも１つであることを特徴とする請求項２３６記載のシステム。
【請求項２４４】
タスク実行スループットは、テナント毎、ユーザ毎、及び作業負荷毎のうちの少なくとも１つに基づいて、リソース・スケジューラによって制御されることを特徴とする請求項２３６記載のシステム。
【請求項２４５】
特定のテナントに関連付けられていない作業のタスク実行は、低優先度でスケジュールされ、アイドルリソースが許可するときに、前記タスクを進めることができることを特徴とする請求項２３６記載のシステム。
【請求項２４６】
トランザクション・データベースを含み、
該トランザクション・データベースは、分散データアーキテクチャと、前記トランザクション・データベースの複数のトポロジにわたってコヒーレントな状態の一貫性を保証するように提供される、一貫性メカニズム及びスケジューラと、を有することを特徴とするシステム。
【請求項２４７】
分散データアーキテクチャを有するトランザクション・データベースと、
複数の構成済みトランザクション・データベースのクラスタを管理する管理プラットフォームと、を含み
前記クラスタ内の前記複数のデータベースは、単一システムとして機能することを特徴とするシステム。
【請求項２４８】
前記管理プラットフォームは、前記複数のトランザクション・データベースを自動的に構成することを特徴とする請求項２４７記載のシステム。
【請求項２４９】
アプリケーション・プログラミング・インターフェースを使用して、クラスタ管理機能が実装されることを特徴とする請求項２４７記載のシステム。
【請求項２５０】
単一の識別子を有するトランザクション・データベース・エンドポイントが、企業情報技術システムへの接続として提供され、前記エンドポイントへのリソースが、前記管理プラットフォームによって管理されることを特徴とする請求項２４７記載のシステム。
【請求項２５１】
前記エンドポイントの前記識別子が、ＤＮＳ名であることを特徴とする請求項２４７記載のシステム。
【請求項２５２】
前記エンドポイントのリソースは、前記企業情報技術システムによる需要を満たすように、前記クラスタ管理プラットフォームの制御下で動的にスケーリングされることを特徴とする請求項２４７記載のシステム。
【請求項２５３】
夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含み、
複数のトランザクション・データベースの前記クラスタの構成は、オペレータによる構成の指定時にデータベースによって自動的に実行されることを特徴とするシステム。
【請求項２５４】
前記オペレータは、複数のトランザクション・データベースの前記クラスタの構成の、少なくとも１つのパラメータを指定し、当該システムは、複数のトランザクション・データベースの前記クラスタを構成するのに必要なステップを、自動的に決定及び実行することを特徴とする請求項２５３記載のシステム。
【請求項２５５】
複数のトランザクション・データベースの前記クラスタの構成中にデータストレージのリソースが失われると、当該システムは、フォールト・トレラントな方法で動作し続けるように構成されていることを特徴とする請求項２５３記載のシステム。
【請求項２５６】
運用データベースを含み、
該運用データベースは、該運用データベースが展開されるクラウドの種類の特定のインフラストラクチャ機能の構成を必要とせずに、クラウド・インフラストラクチャに展開されるように自動的に構成されることを特徴とするシステム。
【請求項２５７】
リソースを使用するアプリケーション、リソースを使用する作業負荷、リソースを使用するテナント、リソースを使用するユーザ、及びリソースの使用に関連付けられたキーのうちの、少なくとも１つによるリソースの使用に基づいて、トランザクションを自動的に追跡及び測定するように構成された、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
【請求項２５８】
データの保存及び検索のためのトランザクション・データベースシステムであって、
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記トランザクション・データベースは、ソフトウェア・アプリケーション用のデータモデルに適合する半構造化ドキュメントモデルを使用し、これにより、前記トランザクション・データベースは、ソフトウェア・アプリケーションがオブジェクト指向データモデルを使用するか、リレーショナル・データモデルを使用するかに関係なく、前記ソフトウェア・アプリケーションについてのデータベースサポートを有効にするように構成されることを特徴とするシステム。
【請求項２５９】
前記トランザクション・データベースが、ＮｏＳＱＬデータベースであることを特徴とする請求項２５８記載のシステム。
【請求項２６０】
分散データアーキテクチャとルーティング層とを有するトランザクション・データベースを含み、
前記ルーティング層では、前記分散データアーキテクチャの少なくとも一部が展開されるデータセンターの機能の認識により、データトランザクションのルーティングが発生することを特徴とするシステム。
【請求項２６１】
ＳＱＬ形式クエリ、ｎｏＳＱＬ形式クエリ、グラフベースクエリ、地理空間クエリ、分析形式クエリ、キー／値クエリ、ドキュメントクエリ、テンポラル・クエリ、及び検索クエリの中から選択された少なくとも２つのクエリモデルを含む、複数のクエリモデルを有効にするクエリエンジンを有するデータベースと、
前記クエリエンジンを介して配信された、前記データベースに対するクエリに応答するように構成されたデータベース関数のセットと、を含むことを特徴とするデータベースシステム。
【請求項２６２】
前記データベースは、行レベルセキュリティのアクセス機能を提供することを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６３】
前記データベースは、識別の行レベル処理を提供することを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６４】
前記データベースは、認証の行レベル処理を提供することを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６５】
前記データベースは、エラスティック・アーキテクチャを有することを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６６】
前記データベースは、マスターレス構成及び動作を可能にすることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６７】
前記データベースは、再帰的なマルチ・テナンシー構成及び動作を可能にすることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６８】
前記データベースは、複数の、地理的に多様なデータセンター又はクラウド・インフラストラクチャ・プロバイダに複製されるように構成されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２６９】
前記データベースは、リレーショナル・クエリ言語と共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７０】
前記データベースは、プロセス分離機能が提供されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７１】
前記データベースは、該データベースのプロセス分離ができるように、再帰的スケジューリングと共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７２】
前記データベースは、プロセス分離に関連する完全に公平なキューイングの、再帰的実装と共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７３】
前記データベースは、該データベースのデータベースクラスタ全体を含む、動的リソース・スケジューリングと共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７４】
前記データベースは、クエリ毎の動的リソース・スケジューリングと共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７５】
前記データベースは、ユーザ毎の動的リソース・スケジューリングと共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７６】
前記データベースは、分散ストレージ層と共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７７】
前記分散ストレージ層は、トランザクション分解アルゴリズムと共に展開されることを特徴とする請求項２７６記載のデータベースシステム。
【請求項２７８】
前記データベースは分散され、前記データベースは、分散ストレージ層の異なるストレージノードに情報を複製するレプリケーションログを使用する、レプリケーションアルゴリズムと共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２７９】
前記データベースは、オンディスク・ストレージエンジンと共に展開されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８０】
前記データベースは、クエリ毎のサービス品質管理を備えて提供されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８１】
前記データベースは、該データベース内のバックグラウンド分析タスクのネイティブな実行を可能にすることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８２】
前記データベースが運用データベースであり、該データベースに対して有向非循環分析タスクグラフが運用されることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８３】
前記データベースは、カラムナ分析機能を含むことを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８４】
前記データベースは、クエリのストリーミングを可能にすることを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８５】
前記データベースは、半構造化されたスキーマ・フリーのデータモデルを実装することを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８６】
前記データベースは、設定可能な保持ウィンドウ内で、各レコード及びインデックスの履歴を維持することを特徴とする請求項２６１記載のデータベースシステム。
【請求項２８７】
前記データベースが、企業向けのオンプレミス・データベースであることを特徴とする請求項１記載のデータベースシステム。
【請求項２８８】
前記トランザクション・データベースは、マルチユーザ・ゲームシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項２８９】
前記トランザクション・データベースは、金融ネットワークシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項２９０】
前記トランザクション・データベースは、前記金融ネットワークシステムに関連する少なくとも１つの金融台帳と統合されることを特徴とする請求項２８９記載のデータベースシステム。
【請求項２９１】
前記トランザクション・データベースは、アイデンティティ管理システムと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項２９２】
前記トランザクション・データベースは、顧客関係管理ネットワークと統合されることを特徴とする請求項１記載のデータベースシステム。
【請求項２９３】
前記トランザクション・データベースは、ロケーションベースのサービスシステムと統合されることを特徴とする請求項１記載のデータベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願との相互参照）
本出願は、２０１７年３月１５日に出願された「データベース用の方法及びシステム」という名称の米国特許仮出願第６２／４７１，５８４号の優先権を主張するものであり、それは参照により本明細書に完全に記載されているかのように組み込まれる。
【背景技術】
【０００２】
（分野）
本開示は、データベース用の方法及びシステム、並びに、トランザクション・データベースを展開する方法及びシステムに関するものであり、前記のトランザクション・データベースは、動的データセットへのリアルタイムアクセスを提供する分散データアーキテクチャを有し、前記の動的データセットは、トランザクション・データベースの少なくとも１つの基礎となるデータ構造から抽象化された、トランザクション・データベースへのクエリ式を受け入れるように構成されている。
【０００３】
（関連技術の説明）
従来の企業データベースは、主にビジネスレポートを実行するために作成及び最適化されていた。企業は、オンプレミス環境とクラウド環境との混合を含む様々な分散環境で大規模に展開されるアプリケーションなどの、運用機能をサポートするデータベースを、ますます必要としている。運用機能では、様々な地理的位置からリアルタイムでデータにアクセスする必要がある。従来の企業データベースは、ＳＱＬクエリやＮｏＳＱＬクエリなどの従来のデータベースクエリ形式を使用するが、アプリケーション、プロセス、及びサービスが動作する関連運用データは、リレーショナルドメイン、ドキュメントドメイン、グラフドメイン、地理空間ドメイン、及び時間ドメインなどの、様々なドメインから、非常に広範な種類の形式を用いることがある。企業のワークフローには、ユーザ、プロセス、アプリケーションなどの中の広範なやり取りが関係するため、企業の内外で（多くの場合、マルチ・テナンシーと様々なアクセス権を有するユーザによるアクセスとが含まれる）、ＳａａＳ、Ｗｅｂ、モバイル、及び前提のアプリケーション（premises application）と操作を含み、論理データベースのレベルでセキュリティを適用する従来のデータベースセキュリティシステムは、十分な粒度を提供しない。従来のデータベースでは、プロセスをきめ細かなレベルで効果的に分離できないため、通常、価値の高いプロセス（重要な操作をサポートするプロセスなど）を価値の低いプロセス（分析をサポートするプロセスなど）から分離し、その結果、機能毎に全く異なるデータベースが使用され、多くの場合、ピーク需要に備えてプロビジョニングする必要のある高価なハードウェアを高度に活用していない。従って、従来のデータベースのこれらの制限及び他の制限に対処するデータベースを含む、改善されたデータベース・プラットフォームが必要である。
【発明の概要】
【０００４】
ここでは、企業が使用する運用データベースやその他のデータベースを大幅に改善できるデータベース機能を備えた、改善されたデータベース・プラットフォームの方法及びシステムを提供する。これらには、リレーショナル・クエリ、キー／値クエリ、ドキュメントクエリ、検索クエリ、地理空間クエリ、グラフクエリ、及びテンポラル・クエリなどの、様々なクエリドメインを処理可能な、統合クエリモデルが含まれる。データベース・プラットフォームには、行レベルセキュリティ、行レベル認証、及び／又は行レベル識別（identity）などを含む、改善されたセキュリティ機能を含めることができる。ＱｏＳ向けを含むプロセスの分離により、同じデータベースに対して実行される、クエリの優先順位付けが可能になり、これによって、同じデータベースで高価値の操作関連クエリと低価値のクエリとを処理できるようになり、ハードウェアの需要が減り、ハードウェアの使用率が低下する。マルチ・テナンシーが有効になり、データストレージ用の地理的ゾーンの選択を含む、グローバルな分配及び強力な一貫性のあるレプリケーションが可能になる。これらの及び他の多くの特徴及び能力は、本開示に記載されている。
【０００５】
実施形態では、ＳＱＬベースのデータベースとの機能的な同等性と、ＳＱＬ及びＮｏＳＱＬデータベースの特徴を包含する特徴セットとを有する、データベース用のアーキテクチャが提供される。実施形態では、ＳＱＬ及びＮｏＳＱＬの双方の機能を可能にし、リレーショナル・クエリモデルの使用を可能にする、データベースが提供される。実施形態では、検索クエリモデル、グラフクエリモデル、テンポラル・クエリモデル、地理空間クエリモデル、キー／値クエリモデル、ドキュメントクエリモデル、及び分析クエリモデルを含む、１つ又は複数の追加クエリモデルの使用を可能にする、リレーショナルデータベースが提供される。
【０００６】
実施形態では、異種のクエリモデルの使用を可能にするリレーショナルデータベース言語が提供される。実施形態では、行レベルセキュリティを含むデータベースが提供される。実施形態では、識別の行レベルの処理を提供するデータベースが提供される。実施形態では、行レベル認証を提供するデータベースが提供される。実施形態では、エラスティック（elastic）・アーキテクチャを提供するデータベースが提供される。実施形態では、マスターレス（masterless）構成及び操作を可能にするデータベースが提供される。実施形態では、再帰的なマルチ・テナンシー構成及び動作を可能にするデータベースが提供される。実施形態では、複数の地理的に多様なデータセンターやクラウド・インフラストラクチャ・プロバイダに複製できる、データベースが提供される。実施形態では、機能的なリレーショナル・クエリ言語がデータベースへ提供される。
【０００７】
実施形態では、データベースにプロセス分離機能が提供される。実施形態では、データベースのプロセス分離を可能にするために、再帰的スケジューリングが提供される。実施形態では、データベースのプロセス分離に関連して、完全に公平なキューイングの再帰的な実装が提供される。実施形態では、データベースクラスタ全体を含み、データベースへ動的リソース・スケジューリングが提供される。実施形態では、データベースへの動的リソース・スケジューリングが、クエリ毎に提供される。実施形態では、データベースへの動的リソース・スケジューリングが、ユーザ毎に提供される。本明細書では、データベースの分散ストレージ層を提供する。分散ストレージ層には、分散データベース用のトランザクション分解（resolution）アルゴリズムが提供される場合がある。
【０００８】
実施形態では、異なるストレージノードに情報を複製するレプリケーションログを使用するなどの、分散データベース用のレプリケーションアルゴリズムが提供される。実施形態では、分散データベース用のオンディスク・ストレージエンジンが提供される。実施形態では、クエリ毎のサービス品質管理を有するデータベースが提供される。実施形態では、データベース内のバックグラウンド分析タスクの実行が可能なデータベースが提供される。実施形態では、運用データベースに対して有向非循環タスクグラフが作用する。実施形態では、データベースがカラムナ分析（columnar analytics）機能を含んでもよい。実施形態では、ストリーミングクエリを可能にするデータベースが提供される。
【０００９】
実施形態において、データの保存及び検索のためのデータベースシステムは、動的データセットへのリアルタイムアクセスを提供する分散データアーキテクチャを有する、トランザクション・データベースを含んでおり、前記の動的データセットは、トランザクション・データベースへのクエリ式を受け入れるように構成され、トランザクション・データベースは、そのトランザクション・データベースの少なくとも１つの基礎となるデータ構造から抽象化される。実施形態において、データベースシステムは、クエリ式を使用するクエリを介してユーザがトランザクション・データベースをクエリするように構成された、ユーザインタフェースを含んでいる。トランザクション・データベースは、動的データセット内のデータの現在の状態を反映する、クエリへの応答を配信する。
【００１０】
実施形態において、ユーザインタフェースは、複数のユーザによる同時クエリを容易にする。実施形態において、トランザクション・データベースは、クエリへの応答を返すのに必要な時間を実質的に損なうことなく、少なくとも千人のユーザによるクエリへの応答を促進する。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態において、トランザクション・データベースは、トランザクションのロック及びコミットの少なくとも一方に、コンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがＲａｆｔアルゴリズムである。
【００１１】
実施形態において、トランザクション・データベースは、データベーストランザクションの単相ロックを可能にする。実施形態において、トランザクション・データベースは、データベーストランザクションの単相コミットを可能にする。実施形態では、データベースが企業向けのオンプレミス・データベースである。実施形態では、データベースがクラウド・データベースである。実施形態では、データベースがパブリッククラウド・データベースである。実施形態では、データベースがプライベートクラウド・データベースである。
【００１２】
実施形態では、トランザクション・データベースが電子商取引システムと統合される。実施形態では、トランザクション・データベースがソーシャル・ネットワークシステムと統合される。実施形態では、トランザクション・データベースが広告ネットワークシステムと統合される。実施形態では、トランザクション・データベースが通信ネットワークと統合される。実施形態では、トランザクション・データベースがロケーションベースのサービスシステムと統合される。実施形態では、トランザクション・データベースが非トランザクション・データベースと統合される。実施形態では、トランザクション・データベースがオペレーティングシステムと統合される。
【００１３】
実施形態では、トランザクション・データベースがディスクストレージ・インフラストラクチャを使用する。実施形態において、トランザクション・データベースは、ストレージエリアネットワーク・ストレージ・インフラストラクチャを使用する。実施形態において、トランザクション・データベースは、データストレージ用のオペレーティングシステム・コンポーネントと統合される。実施形態では、トランザクション・データベースがマルチクラウド展開をサポートする。実施形態において、トランザクション・データベースは、インスタンス分割のために主キーを用いるデータ分割を使用し、インデックスに対して用語分割を使用する。実施形態において、トランザクション・データベースは、圧縮ログ構造化マージツリー（compressed log-structured merge trees）として実装される、ローカル・ストレージエンジンを使用する。
【００１４】
実施形態において、データの保存及び検索のためのデータベースシステムは、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。そのデータベースへのクエリは、トランザクション・データベースへアクセスするクライアントシステムのクライアントドライバ・ホストファイル内の、組み込み式ドメイン固有言語として実装される、機能的クエリ言語で表現される。実施形態において、クライアントドライバ・ホストファイルは、ソフトウェア開発ツールのデータベース機能の開始時にアクセスされる。
【００１５】
実施形態において、システムは、分散グローバルログを使用して、分散システムのための複数のデータトランザクションの原子性、一貫性、独立性、及び永続性を提供する、トランザクションエンジンを含んでいる。
【００１６】
実施形態では、分散システムが分散データアーキテクチャを有するデータベースである。実施形態では、その分散システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態では、分散システムがコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがＲａｆｔアルゴリズムである。実施形態において、分散システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散システムは、データベーストランザクションの単相コミットを可能にする。
【００１７】
実施形態において、データの保存及び検索のためのシステムは、一回のネットワーク往復中に（in a single network round trip）実行される、データトランザクション・ロック及びデータトランザクション・コミットの少なくとも一方を有する、分散システムを含んでいる。
【００１８】
実施形態では、その分散システムが分散データアーキテクチャを有するデータベースである。実施形態において、その分散システムは、分散システム全体のデータトランザクションについてのグローバルログを使用する。実施形態では、その分散システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態において、分散システムは、コンセンサスアルゴリズムを使用して、そのデータベースをロックするか、トランザクションをコミットするかを決定する。実施形態では、コンセンサスアルゴリズムがＲａｆｔアルゴリズムである。実施形態において、分散システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散システムは、データベーストランザクションの単相コミットを可能にする。
【００１９】
実施形態において、システムは、トランザクション・データベースのメモリ内に保存される際、並びに、トランザクション・データベースによって使用されるメモリロケーションへの及び同メモリロケーションからの送信中に暗号化される、データを備えた分散データアーキテクチャを有する、トランザクション・データベースを含んでいる。
【００２０】
実施形態では、そのトランザクション・データベースが機能的クエリ言語を使用する。実施形態において、そのトランザクション・データベースは、トランザクションのロック及びコミットの少なくとも一方にコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがＲａｆｔコンセンサスアルゴリズムである。実施形態において、トランザクション・データベースは、データベーストランザクションの単相ロックを可能にする。実施形態において、トランザクション・データベースは、データベーストランザクションの単相コミットを可能にする。
【００２１】
実施形態において、システムは、分散データ記憶及び検索システムと、データベースレコードの全履歴を維持及びインデックス付けするテンポラル・ストレージエンジンとを含んでいる。このシステムは、ユーザが選択するように構成された時間間隔での、データベーストランザクションのイベントストリームへのアクセスを容易にする。イベントストリームへのアクセス権は、イベントストリーム内の複数のイベント毎に個別に制御される。
【００２２】
実施形態において、その分散データ記憶及び検索システムは、分散データアーキテクチャを有するデータベースである。
【００２３】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態では、分散データ記憶及び検索システムがコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがＲａｆｔコンセンサスアルゴリズムである。実施形態において、分散システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散システムは、データベーストランザクションの単相コミットを可能にする。
【００２４】
実施形態において、システムは、ステートレスセッションを可能にし、トランザクション・コンテキストを覆い隠す（closes over）アクセストークンで各データトランザクションを識別する、データの記憶及び検索のための分散システムを含んでいる。
【００２５】
実施形態において、その分散システムは、分散データアーキテクチャを有するトランザクション・データベースである。実施形態において、トランザクション・データベース用のクエリは、ホストアプリケーション言語で記述され、ホストアプリケーション言語のセキュリティ機能を継承する。実施形態において、トランザクション・データベース用のクエリは、アトミックに（atomically）かつトランザクション毎に実行される。実施形態において、本質的にスケーラブルではないホストアプリケーション言語のクエリ・セマンティクスは、スケーラブルなセマンティクスに置き換えられる。実施形態において、分散システムは、トランザクション・データベース内のレコードのネイティブな地理的インデックス付けを可能にするように構成される。実施形態において、分散システムは、トランザクション・データベースでのネイティブな全文検索を可能にするように構成される。実施形態において、分散システムは、トランザクション・データベースを介したネイティブな反復機械学習を可能にするように構成される。
【００２６】
実施形態において、システムは、完全なトランザクション・オブジェクトとして送信されたクエリを受け入れるクエリ言語を使用する、分散データ記憶及び検索システムを含み、前記の完全なトランザクション・オブジェクトは、その分散データ記憶及び検索システムの読み書きのための単相プロセスを可能にする。
【００２７】
実施形態において、その分散データ記憶及び検索システムは、分散データアーキテクチャを有するデータベースである。実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態では、分散データ記憶及び検索システムがコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがＲａｆｔコンセンサスアルゴリズムである。実施形態において、分散データ記憶及び検索システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散データ記憶及び検索システムは、データベーストランザクションの単相コミットを可能にする。
【００２８】
実施形態において、システムは、グローバル・トランザクションログ内の各トランザクションの位置に基づく、トランザクションの厳密な直列化可能性を使用して提供される、トランザクション一貫性を有する分散データ記憶及び検索システムを含んでいる。
【００２９】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、そのトランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、ユーザがトランザクションの保存の時間間隔を設定できるようにする、テンポラル・ストレージエンジンを使用する。実施形態において、トランザクションの厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序（global transaction order）の単調に進むビュー（monotonically advancing view）を保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、クライアント間で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
【００３０】
実施形態において、システムは、グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性を使用して提供される、ロックレスのトランザクション一貫性を有する、分散データ記憶及び検索システムを含んでいる。
【００３１】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、ユーザがトランザクションの保存の時間間隔を設定できるようにする、テンポラル・ストレージエンジンを使用する。実施形態において、トランザクションの厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最近適用されたログ位置を共有し、それによりクライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
【００３２】
実施形態において、システムは、コンセンサス戦略（consensus strategy）をデータベースロックに適用することによりデータベーストランザクションに提供される、トランザクション一貫性を有する分散データ記憶及び検索システムを含んでいる。
【００３３】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するよう構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
【００３４】
実施形態において、システムは、グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性の使用と、データベーストランザクションについての楽観的ロッキングの使用とにより、データベーストランザクションに提供される、トランザクション一貫性を有する分散データ記憶及び検索システムを含んでいる。
【００３５】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、ドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最近適用されたログ位置を共有し、それによりクライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
【００３６】
実施形態において、システムは、グローバル・トランザクションログ内のトランザクション位置に基づいた厳密な直列化可能性を使用して、データベーストランザクションに提供される、直列化可能保証を含む分散データ記憶及び検索システムを含んでいる。
【００３７】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態において、トランザクション・データベースは、ＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
【００３８】
実施形態において、システムは、データベーストランザクションがグローバルログに記録される、分散データ記憶及び検索システムを含んでいる。
【００３９】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
【００４０】
実施形態において、システムは、分散データ記憶及び検索システムを含んでおり、この分散データ記憶及び検索システムを使用する少なくとも１つのテナントに固有のグローバルログで、データベーストランザクションが分散データ記憶及び検索システムに記録される。
【００４１】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの保存のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。
【００４２】
実施形態において、システムは、データベーストランザクションが、テナント、ポリシー、及びロールのうちの少なくとも１つによって分割されたグローバルログに記録される、分散データ記憶及び検索システムを含んでいる。
【００４３】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。
【００４４】
実施形態において、システムは、複数の分散システムについての複数の独立したトランザクションログにおける読み取りのトランザクション位置に基づいた、厳密な直列化可能性を使用して、複数の分散システムにわたる読み取りにトランザクション一貫性を提供する、分散データ記憶及び検索システムを含んでいる。
【００４５】
実施形態では、その複数の分散システムからの分散システムの少なくとも１つが、トランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの保存のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。
【００４６】
実施形態において、システムは、ハイブリッドクロックを使用して複数の分散データベースにわたってトランザクションの一貫性を提供し、クロック位置の対応の理解に基づいて直列化されたデータベーストランザクションを含む、分散データ記憶及び検索システムを含んでおり、前記のクロック位置は、複数の分散データベースの夫々のトランザクションログにトランザクションを記録するために使用される、複数のクロックについてのものである。
【００４７】
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがＮｏＳＱＬクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。
【００４８】
実施形態において、システムは、分散データ記憶及び検索システム用のテンポラル・アプリケーション・プログラミング・インタフェースを含んでおり、前記の分散データ記憶及び検索システムは、そのデータ記憶及び検索システム内のインスタンスのクラスに関連するイベントのストリームへサブスクライブするユーザを、前記のテンポラル・アプリケーション・プログラミング・インタフェースを介して受け入れるように構成されている。
【００４９】
実施形態において、そのテンポラル・アプリケーション・プログラミング・インタフェースは、関心のあるイベントにサブスクライブするリスナーを受け入れるように構成される。実施形態では、そのテンポラル・アプリケーション・プログラミング・インタフェースを介して、別のシステムにテーブルがストリーミングされる。実施形態では、テンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブするために、システムにインデックスが構成される。実施形態において、システムは、イベントについてテンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブするアプリケーションを含んでおり、前記のイベントは、そのアプリケーションに対して指定されるものである。実施形態では、テンポラル・アプリケーション・プログラミング・インタフェースを介して、時間的一貫性の保証と共に、ストリーミングクエリの範囲内のイベントストリームが提供される。実施形態では、分散データ記憶及び検索システムがトランザクション・データベースである。実施形態において、トランザクション・データベースは、指定された時間間隔でクエリに応じて、イベントのストリームを提供するように構成される。
【００５０】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、トランザクション・データベースのデータベースレコードの個々の行のレベルで、ユーザがセキュリティ許可を実施することを可能にする、行レベルアクセス制御システムとを含んでいる。
【００５１】
実施形態において、トランザクション・データベースは、トランザクション・データベースがデータ処理機能を提供するアプリケーションのエンドユーザによる、データベースへのダイレクトアクセスを容易にするように構成される。実施形態では、ポリシーに基づいてダイレクトアクセスが構成される。実施形態では、ポリシーに基づいた作業負荷についてダイレクトアクセスが構成される。
【００５２】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、データインフラストラクチャ能力の認識と、前記のトランザクション・データベースを使用するテナント、トランザクション、及び作業負荷の少なくとも１つに対するサービス品質要件の認識とに基づいて、前記のトランザクション・データベースについてのトランザクションをルーティングするように構成されている。
【００５３】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、計算リソース、メモリリソース、及び入出力リソースの少なくとも１つをテナント間で割り当て、少なくとも１つのリソースのテナント毎のリソース使用率を追跡する、前記のトランザクション・データベース用のテナント対応リソース・スケジューラとを含んでいる。
【００５４】
実施形態において、テナント対応リソース・スケジューラは、少なくとも１つの優先度インジケータに基づいてリソースを割り当てる。実施形態において、テナント対応リソース・スケジューラは、少なくとも１つのクォータ（quota）に基づいてリソースを割り当てる。実施形態において、システムは、ポリシー、ロール、及びルールのうちの少なくとも１つに基づいて、リソースに対するアクセスを制御するアクセス制御システムを含んでいる。
【００５５】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、計算リソース、メモリリソース、及び入出力リソースの少なくとも１つを作業負荷間で割り当て、少なくとも１つのリソースの作業負荷毎のリソース使用率を追跡する、前記のトランザクション・データベース用の作業負荷毎リソース・スケジューラとを含んでいる。
【００５６】
実施形態において、作業負荷毎リソース・スケジューラは、優先度の少なくとも１つのインジケータに基づいてリソースを割り当てる。実施形態において、作業負荷毎リソース・スケジューラは、少なくとも１つのクォータに基づいてリソースを割り当てる。実施形態において、システムは、作業負荷に適用されるポリシー、ロール、及びルールのうちの少なくとも１つに基づいて、リソースに対するアクセスを制御するアクセス制御システムを含んでいる。
【００５７】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、ポリシーに基づいて前記の分散データアーキテクチャ内で、計算リソース、メモリリソース、及び入出力リソースの少なくとも１つを割り当て、少なくとも１つのリソースのリソース使用率を追跡する、前記のトランザクション・データベース用のポリシー対応リソース・スケジューラとを含んでいる。
【００５８】
実施形態において、少なくとも１つのリソースは、優先度の少なくとも１つのインジケータに基づいて割り当てられる。実施形態において、少なくとも１つのリソースは、少なくとも１つのクォータに基づいて割り当てられる。実施形態において、システムは、ポリシー、ロール、及びルールのうちの少なくとも１つに基づいて、リソースに対するアクセスを制御するアクセス制御システムを含んでいる。
【００５９】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、レコードの履歴全体及びレコードの履歴のインデックスを保持する設定可能なリテンション・ウィンドウを有する、前記のトランザクション・データベースのテンポラル・ストレージエンジンとを含んでいる。
【００６０】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、レコードの全履歴を維持及びインデックス付けすると共に、ユーザが選択した時間間隔で履歴内のイベントのイベントストリームへのアクセスを容易にする、前記のデータベースのテンポラル・ストレージエンジンを備えている。
【００６１】
実施形態において、システムは、ユーザがクエリの時間間隔を指定するように構成されたトランザクション・データベースのクエリ言語を含み、そのトランザクション・データベースは、指定された時間間隔でクエリに応答するイベントストリームを提供する。
【００６２】
実施形態において、システムは、インスタンス、クラス、データベース、及びキーに編成された、オブジェクトリレーショナル・データモデルを使用する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。そのオブジェクトリレーショナル・データモデルは、半構造化されていてスキーマ・フリーである。
【００６３】
実施形態において、そのデータモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含んでいる。実施形態において、トランザクション・データベースは、インスタンスとして定義される半構造化ドキュメントとしてトランザクション・データベースに挿入されるレコードを含んでいる。実施形態では、インスタンスがクラスにグループ化される。実施形態では、クラスがデータベースにグループ化される。実施形態では、トランザクション・データベースがキーによって制御されるアクセスを含んでいる。実施形態では、トランザクション・データベースが関数としてパラメータ化されたクエリを含んでいる。実施形態において、トランザクション・データベースは、インデックスを用いて構築される派生関係を含んでいる。
【００６４】
実施形態において、システムは、オブジェクトリレーショナル・データモデルを使用する分散データアーキテクチャを有するトランザクション・データベースを含み、オブジェクトリレーショナル・データモデルの派生関係は、トランザクション・データベースのインデックスとして構築される。
【００６５】
実施形態において、そのオブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含んでいる。実施形態において、トランザクション・データベースは、インスタンスとして定義される半構造化ドキュメントとして挿入されるレコードを含んでいる。実施形態では、インスタンスがクラスにグループ化される。実施形態では、クラスがデータベースにグループ化される。実施形態では、トランザクション・データベースへのアクセスがキーによって制御される。実施形態において、トランザクション・データベースに対するクエリは、関数としてパラメータ化される。
【００６６】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、トランザクション・データベースのインデックスを使用して実施される制約を有するオブジェクトリレーショナル・データモデルを使用する。
【００６７】
実施形態において、そのオブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含んでいる。実施形態において、トランザクション・データベースは、インスタンスとして定義される半構造化文書として挿入されるレコードを含んでいる。実施形態では、インスタンスがクラスにグループ化される。実施形態では、クラスがデータベースにグループ化される。
【００６８】
実施形態では、トランザクション・データベースへのアクセスがキーによって制御される。実施形態において、トランザクション・データベースに対するクエリは、関数としてパラメータ化される。実施形態において、トランザクション・データベースは、インデックスで構築された派生関係を含んでいる。
【００６９】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、前記のトランザクション・データベースからのドメイン固有の埋め込みアプリケーション言語出力を公開する複数のドライバによって媒介される、前記のトランザクション・データベース用のクエリ言語を含んでいる。
【００７０】
実施形態において、システムは、複数のアプリケーション言語について埋め込み式ドメイン固有言語で公開するデータベースドライバを実装する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
【００７１】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含み、前記の分散データアーキテクチャは、複数のレコードのカプセル化を可能にするクエリ言語を実装し、複数のレコードにわたるトランザクションを単一の要求クエリがカプセル化することを可能にする。
【００７２】
実施形態において、システムは、インデックスによって裏打ちされる非主キーアクセスを必要とするクエリ・セマンティクスを実装する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
【００７３】
実施形態において、システムは、認証されたユーザにトークンを発行するサービスによって実行されるアイデンティティ（identity）管理を含む、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。そのトークンにより、ユーザは、トランザクション・データベースで更なるアクションを実行することができる。
【００７４】
実施形態において、トークンを発行するサービスは、トランザクション・データベースの内部サービスである。実施形態において、トークンを発行するサービスは、トランザクション・データベースの外部で実行されるサードパーティ・サービスである。
【００７５】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、キーベースのロール割り当てを使用して、前記のトランザクション・データベース内の１つ以上のデータレコードに対する行レベルアクセスを制限する、アクセス制御を備えている。
【００７６】
実施形態において、そのアクセス制御は、アイデンティティの割り当てを通じて管理される行レベルセキュリティを含んでいる。実施形態において、トランザクション・データベースは、アクセス制御クエリ式をアクセス制御リストに割り当てることにより、ユーザ、ロール、及びグループのうちの少なくとも１つの決定が実施されるアクセス権を含んでいる。実施形態において、データベーストランザクションを実行するアクターのアイデンティティは、ストアドプロシージャのコンテキスト内でアクセス可能である。
【００７７】
実施形態において、システムは、グローバル・トランザクションログを使用して追跡及び報告されるトランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
【００７８】
実施形態において、そのトランザクション・データベースは、ユーザが設定した保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開する。実施形態において、トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関与するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含んでいる。
【００７９】
実施形態において、システムは、グローバル・トランザクションログを使用して記録される管理及びアプリケーションのトランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
【００８０】
実施形態において、そのトランザクション・データベースは、ユーザが設定した保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開する。実施形態において、トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関与するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含んでいる。
【００８１】
実施形態において、システムは、データベーストランザクションの全てのポイントでデータの暗号化を使用する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
【００８２】
実施形態において、そのトランザクション・データベースは、ＳＳＬを介して暗号化される、データベースクラスタ内のトラフィックを含んでいる。実施形態において、トランザクション・データベースは、ＳＳＬを介して暗号化される、トランザクション・データベースへのパブリック・インタフェース上のトラフィックを含んでいる。実施形態において、トランザクション・データベースは、公開キー／秘密キーのペアを介して認証されるトランザクション・データベースとやり取りするアプリケーションを含んでいる。実施形態では、トランザクション・データベースの少なくとも１つのオペレーティングシステム機能が使用されて、データレスト、ログ情報、及び秘密キーの少なくとも１つでデータが保護される。実施形態では、その少なくとも１つのオペレーティングシステム機能がファイル暗号化である。
【００８３】
実施形態において、システムは、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含んでいる。そのシステムには、トランザクション・データベースのクラスタ内のデータベースのクラスタトポロジ構成が含まれ、データベースのクエリコーディネータ、データレプリカ、及びログレプリカとして機能する。構成トポロジは、システムによって自動的に導出される。
【００８４】
実施形態では、クラスタ内のトランザクション・データベースについて、一貫したクラスタ状態が維持される。
【００８５】
実施形態において、システムは、各々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含んでいる。クラスタの少なくとも１つのトランザクション・データベースのメンバーは、クエリコーディネータ、データレプリカ、及びログレプリカとして機能する。プレディケート（predicates）は、データベースクラスタのレプリカに自動的にプッシュされる。
【００８６】
実施形態では、クラスタの各メンバーが、クエリコーディネータ、データレプリカ、及びログレプリカとして機能する。
【００８７】
実施形態において、システムは、データ構造を介して有効化されるデータ書き込みを含む分散データアーキテクチャを有する、トランザクション・データベースを含み、前記のデータ構造は、ローカル・ストレージエンジン用に適所に修正され、圧縮ログ構造化マージツリーとして実装される。
【００８８】
実施形態において、トランザクションは、グローバル・トランザクションログにバッチでコミットされる。実施形態では、トランザクションがログ先行書き込みとしてコミットされる。実施形態において、トランザクション・データベースは、少なくとも１つのトランザクション・データベースがレプリカである、クラスタの一部である。レプリカは、グローバル・トランザクションログを取得し、ログに基づいてトランザクションをアトミックに一括してレプリカに書き込む。実施形態において、トランザクション・データベースは、同期上書きが回避されるように、不変バージョンで構成されるテンポラル・データモデルを使用する。
【００８９】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、プロセススケジューラを使用してリソースを動的に割り当て、トランザクション・データベースのサービス品質ポリシーを実施する、テナント対応リソースマネージャとを含んでいる。
【００９０】
実施形態において、システムは、トランザクションを一連のインターリーブされた潜在的に並列化可能な計算及び入力／出力サブクエリとして評価し、実行がトランザクション間の予測可能できめ細かいバリアをもたらすことを保証する、データベース用のクエリプランナを含んでいる。
【００９１】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、そのトランザクション・データベース用のジャーナル化されたトポロジ認識タスクスケジューラによって管理される、バックグラウンド・クエリタスクとを含んでいる。
【００９２】
実施形態では、タスクがクラスタ全体で１つのインスタンスに制限される。実施形態では、タスクがデータベース毎に１つのインスタンスに制限される。実施形態では、タスクが特定のデータ範囲に割り当てられる。実施形態において、システムは、特定のデータ範囲のデータレプリカである、タスクの実行ノードを含んでいる。実施形態において、バックグラウンド・クエリタスクの各タスクの実行状態は、一貫したメタデータストアに保持され、スケジュールされたタスクが、ノードに依存しない方法で実行される。実施形態では、ノードが故障すると、そのタスクは、他の有効なノードに自動的に再割り当てされるか、再起動されるか、又は再開されるかの少なくとも１つである。実施形態では、ノードがクラスタからリムーブされると、そのタスクは、他の有効なノードに自動的に再割り当てされるか、再起動されるか、又は再開されるかの少なくとも１つである。実施形態において、タスク実行スループットは、テナント毎、ユーザ毎、及びワークロード毎の少なくとも１つに基づいて、リソース・スケジューラにより制御される。実施形態において、特定のテナントに関連付けられていない作業のタスク実行は、低優先度でスケジュールされ、アイドルリソースが許可するときに、そのタスクを進めることができる。
【００９３】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、一貫性メカニズムと、トランザクション・データベースの複数のトポロジにわたるコヒーレントな状態の一貫性を確保する、プロセススケジューラとを含んでいる。
【００９４】
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、複数の構成済みトランザクション・データベースのクラスタを管理する、管理プラットフォームとを含んでいる。クラスタ内の複数のデータベースは、単一のシステムとして機能する。
【００９５】
実施形態において、その管理プラットフォームは、複数のトランザクション・データベースを自動的に構成する。実施形態において、クラスタ管理機能は、アプリケーション・プログラミング・インタフェースを使用して実装される。実施形態では、単一の識別子を有するトランザクション・データベース・エンドポイントが、企業情報技術システムへの接続として提供され、そのエンドポイントのリソースが、管理プラットフォームによって管理される。実施形態では、エンドポイントの識別子がＤＮＳ名である。実施形態において、エンドポイントのリソースは、企業情報技術システムによる需要を満たすように、クラスタ管理プラットフォームの制御下で動的にスケーリングされる。
【００９６】
実施形態において、システムは、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含んでいる。トランザクション・データベースのクラスタの構成は、オペレータが構成を指定すると、データベースによって自動的に実行される。
【００９７】
実施形態において、オペレータは、トランザクション・データベースのクラスタについての構成の、少なくとも１つのパラメータを指定し、システムは、トランザクション・データベースのクラスタを構成するために必要なステップを、自動的に決定及び実行する。実施形態では、トランザクション・データベースのクラスタの構成中に、データストレージのリソースが失われると、システムが、フォールト・トレラントな方法で動作し続けるように構成される。
【００９８】
実施形態において、システムは、運用データベースが展開されるタイプのクラウドの特定のインフラストラクチャ機能の構成を必要とすることなく、クラウド・インフラストラクチャに展開されるように自動的に構成される、運用データベースを含んでいる。
【００９９】
実施形態において、システムは、リソースを使用するアプリケーション、リソースを使用する作業負荷、リソースを使用するテナント、リソースを使用するユーザ、及びリソースの使用に関連付けられたキーのうちの、少なくとも１つによるリソースの使用に基づいて、トランザクションを自動的に追跡及び測定するように構成される、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
【０１００】
実施形態において、システムは、データの保存及び検索のためのトランザクション・データベースシステムを含み、このシステムは、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。トランザクション・データベースは、ソフトウェア・アプリケーションがオブジェクト指向データモデル又はリレーショナル・データモデルを使用するかどうかに関係なく、ソフトウェア・アプリケーションのデータベースサポートを有効にする如くトランザクション・データベースが構成されるように、ソフトウェア・アプリケーションのデータモデルに適応する半構造化ドキュメントモデルを使用する。
【０１０１】
実施形態では、トランザクション・データベースがＮｏＳＱＬデータベースである。
【０１０２】
実施形態において、システムは、分散データアーキテクチャと、その分散データアーキテクチャの少なくとも一部が展開されるデータセンターの能力の認識により、データトランザクションのルーティングが発生するルーティング層とを有する、トランザクション・データベースを含んでいる。
【０１０３】
実施形態において、データベースシステムは、複数のクエリモデルを可能にするクエリエンジンを有するデータベースを含み、それら複数のクエリモデルには、ＳＱＬ形式クエリ、ｎｏＳＱＬ形式クエリ、グラフベースクエリ、地理空間クエリ、分析形式のクエリ、キー／値クエリ、ドキュメントクエリ、テンポラル・クエリ、及び検索クエリの中から選択される、少なくとも２つのクエリモデルが含まれ、更にデータベースシステムは、クエリエンジンを介して配信されたデータベースに対するクエリに応答するように構成された、一連のデータベース関数を含んでいる。
【０１０４】
実施形態では、データベースが行レベルセキュリティのアクセス機能を提供する。実施形態では、データベースが識別の行レベル処理を提供する。実施形態では、データベースが認証の行レベル処理を提供する。実施形態では、データベースがエラスティック・アーキテクチャを有する。実施形態では、データベースがマスターレス構成及び動作を可能にする。実施形態では、データベースが再帰的なマルチ・テナンシー構成及び動作を可能にする。実施形態において、データベースは、複数の、地理的に多様なデータセンターか、或いは、クラウド・インフラストラクチャ・プロバイダへと、複製されるように構成される。
【０１０５】
実施形態では、データベースがリレーショナル・クエリ言語で展開される。実施形態では、データベースにプロセス分離機能が提供される。実施形態では、データベースのプロセス分離を可能にするために、データベースが再帰的なスケジューリングで展開される。実施形態において、データベースは、プロセス分離に関連して完全に公平なキューイングの、再帰的な実装で展開される。実施形態において、データベースは、データベースのデータベースクラスタ全体を含む動的リソース・スケジューリングで展開される。
【０１０６】
実施形態において、データベースは、クエリ毎に動的リソース・スケジューリングで展開される。実施形態において、データベースは、ユーザ毎に動的リソース・スケジューリングで展開される。実施形態では、データベースが分散ストレージ層と共に展開される。実施形態では、分散ストレージ層がトランザクション分解アルゴリズムと共に展開される。実施形態において、データベースは分散され、データベースは、分散ストレージ層の異なるストレージノードに情報を複製するレプリケーションログを使用する、レプリケーションアルゴリズムで展開される。
【０１０７】
実施形態では、データベースがオンディスク・ストレージエンジンと共に展開される。実施形態では、クエリ毎のサービス品質管理を有するデータベースが提供される。実施形態において、データベースは、データベース内のバックグラウンド分析タスクのネイティブな実行を可能にする。実施形態では、データベースが運用データベースであり、データベースに対して有向非循環分析タスクグラフが運用される。実施形態では、データベースがカラムナ分析機能を含んでいる。実施形態では、データベースがクエリのストリーミングを可能にする。
【０１０８】
実施形態では、データベースが企業向けのオンプレミス・データベースである。実施形態では、トランザクション・データベースがマルチユーザ・ゲームシステムと統合される。実施形態では、トランザクション・データベースが金融ネットワークシステムと統合される。実施形態では、トランザクション・データベースが、金融ネットワークシステムに関連付けられた少なくとも１つの金融台帳と統合される。実施形態では、トランザクション・データベースがアイデンティティ管理システムと統合される。実施形態では、トランザクション・データベースが顧客関係管理ネットワークと統合される。実施形態では、トランザクション・データベースがロケーションベースのサービスシステムと統合される。
【図面の簡単な説明】
【０１０９】
【図１Ａ】本開示によるトランザクション・データベースの様々な実施形態の方法及びシステムを示す概略図である。
【図１Ｂ】本開示によるトランザクション・データベースの様々な実施形態の方法及びシステムを示す概略図である。
【発明を実施するための形態】
【０１１０】
＜全体概要＞
図１Ａ及び図１Ｂは、例示的かつ非限定的な実施形態によるデータベース１００を示している。データベース１００は、ルートデータベース１０２を含んでもよい。ルートデータベース１０２は、追加データベース１０４を含んでもよい。追加データベース１０４は、キー１０６、インデックス１０８、及びクラス１１０を含んでもよい。例えば、追加データベース１０４は、階層的に仕組まれた他の追加のデータベース１０４を含んでもよい。追加データベース１０４は、他の追加データベース１０４に接続することができる。クラス１１０は、インスタンス１１２を含んでもよい。インデックス１０８は、インスタンス１１２を指し示すことができる。
【０１１１】
実施形態において、データベース１００は、企業の進行中の運用に関連するデータを含む運用データベースであり、最新のイベント及びトランザクションを反映するために更新が継続的に行われるデータを含むと共に、リアルタイムでのデータの動的な管理及び処理を可能にする機能を包含している。実施形態において、データベース１００は適応性があり、様々なストレージ環境（分散ストレージ及びクラウドストレージ環境を含む）に適応するなど、データベース１００を特定の企業や環境のニーズに適応させることができる機能のセットを含み、様々な形式のクエリを使用するように適応し、様々なアプリケーション及びサービスを有効にするために適応する。
【０１１２】
データベース１００は、一貫性モデル１１４、マルチデータ・センター・レプリケーション層１１６、クエリ・ストリーミングエンジン１１８、バックグラウンド・タスクエンジン１４８、分析タスクエンジン１２０、エラスティック・アーキテクチャ１２２、ＱｏＳ管理エンジン１２４、動的リソース・スケジューリング１２６、セキュリティエンジン１２８、及びプロセス分離エンジン１３０を含んでもよい。プロセス分離は、再帰的プロセス実行部１８６及び再帰的ＣＦＱアルゴリズム１８８を含んでもよい。バックグラウンド・タスクエンジン１４８は、ＤＡＧタスク実行エンジン１７４を含んでもよい。セキュリティエンジン１２８は、低ナレッジ暗号化セキュリティ１６６及び行レベルセキュリティ１６８を含んでもよい。行レベルセキュリティ１６８は、行レベル認証１７０、行レベル識別１７２などを含んでいてよい。
【０１１３】
一貫性モデル１１４は、リレーショナル・クエリ言語１３２に接続することができる。リレーショナル・クエリ言語１３２は、マルチモデル・クエリ関数１３４、リレーショナル・クエリ関数１３６などを含んでいてもよい。更に、リレーショナル・クエリ言語１３２は、カラムナ分析システム１３８をサポートすることができる。実施形態において、データベース１００は、カラムナ分析システム１３８を含んでいてもよい。
【０１１４】
カラムナ分析システム１３８は、オンライン分析データベースで提供されるものと同様の、マテリアライズドビューに関する機能を提供することができる。これは、企業の運用に使用される運用データと分析データのストリームとの間の、様々な形式の中間データを含んでいてもよい。
【０１１５】
データベース１００は、マルチ・テナンシーエンジン１４０とマスターレス構成及び動作とをサポートしてもよい。マルチ・テナンシーエンジン１４０は、複数のテナント１４２がデータベース１００にアクセスすることを可能にする。マルチ・テナンシーエンジン１４０は、再帰的マルチ・テナンシー１６０、ゾーン選択１６２、及びマルチテナント暗号化１６４を含んでいてもよい。
【０１１６】
実施形態において、ゾーン選択システム１６２は、分散データベースのために提供される。ゾーン選択により、論理データセットが複製されるべき物理データセンターを、動的に選択することができる。例えば、ヨーロッパのユーザは、ヨーロッパなどに保存されたデータを有していてもよい。従来の市販のシステムでは、データベース内でそれを行う方法がない。代わりに、オペレータは、運用レベルでデータベースを展開し、新しいデータベースクラスタをセットアップする必要がある。地理的な選択を実現するために、ユーザは、運用レベルで展開し、新しいＤＢクラスタをセットアップしなければならない（ほとんどのシステムでは全く提供されていない機能）。
【０１１７】
マルチデータ・センター・レプリケーション層１１６は、分散ストレージエンジン１４６内に格納することができるストレージ・リソースに接続されてもよい。分散ストレージエンジン１４６は、マルチデータ・センター・レプリケーション１７６をサポートしてもよく、分散ストレージ層アルゴリズムを含んでいてもよい。分散ストレージ層アルゴリズムは、ハイブリッド論理クロックアルゴリズム１７８、トランザクション分解アルゴリズム１８０、レプリケーションアルゴリズム１８２などであってよい。分散ストレージエンジン１４６は、オンディスク・ストレージエンジン１８４も含むことができる。
【０１１８】
データベース１００は、機能的成果（functional product）ドメイン１５０をサポートすることができる。機能的成果ドメイン１５０は、リレーショナルドメイン、ドキュメントドメイン、グラフドメイン、検索ドメイン、地理空間ドメインなどを含んでいてもよい。
【０１１９】
データベース１００は、運用的成果（operational product）ドメイン１５２をサポートすることができる。運用的成果ドメイン１５２は、エラスティック・アーキテクチャ１２２、マスターレス・アーキテクチャ１５４、ＱｏＳ管理１５６、サブクエリ計測１９０、及びマルチデータ・センター・レプリケーション１５８を含むことができる。
【０１２０】
データベース１００は、クエリ毎及びユーザ毎に、マシンリソース消費メトリクスを記録することができる。これらのメトリクスは、リアルタイムで記録することができ、動的リソース・スケジューリング１２６に通知して、マシンリソースの割り当てを実施するために使用される。これらのメトリクスは、ログ、グラフ、及びヘッダーの形式で、開発者に公開することができる。
【０１２１】
マルチデータ・センター・レプリケーション１５８は、マルチデータ・センター・レプリケーション層１１６によってサポートされ、地理的レプリケーション１９２、マルチクラウド・レプリケーション１９４などを含んでいてよい。
【０１２２】
実施形態において、データベースは、ユーザ定義のソートされたインデックスのための機能を含んでいてもよい。これには、更新時間による、モデリング・ページランク、リーダーボード（leaderboards）、及び一意のレコードリストと、レコードの有効時間の操作をしない宣言的な方法での他のランキング・セマンティクスとを含めることができる。
【０１２３】
＜基礎＞
データベース１００は、いくつかの相互に関係するサブシステムで構成されてもよい。これらのサブシステムには、機能的なプログラミング・パラダイムに基づく機能的なリレーショナル・クエリ言語１３２、強力な一貫性のあるトランザクション分解エンジン、オンディスク・ストレージエンジン１４４、テナント対応リソース・スケジューラ、行レベル・セキュリティエンジン、行レベル識別、行レベル分離管理、バックグラウンド・タスクスケジューラ、及びデータセンター対応ルーティング層が含まれていてよい。
【０１２４】
データベース１００は、エラスティック・アーキテクチャ１２２、マスターレス構成及び動作、並びにマルチ・テナンシー構成及び動作をサポートしてもよい。データベース１００は、全体的に複製されてもよい。
【０１２５】
機能的なリレーショナル・クエリ言語１３２は、Ｌｉｓｐに基づくものであってよく、リレーショナル、ドキュメント、グラフ、テンポラル、検索、地理空間、分析、及びバッチ処理のアクセスパターンを統合し、同時に、それらの実行コンテキストを制限し、柔軟性、使い易さ、及び安全性を高める。リレーショナル・クエリ言語１３２は、オペレータがリレーショナル・クエリ関数１３６を実行できるようにすることができる。
【０１２６】
実施形態では、データベース１００へ統合アーキテクチャが提供されている。データストレージは、検索クエリ、グラフクエリ、テンポラル・クエリ、地理空間クエリ、キー／値クエリ、ドキュメントクエリ、及び分析クエリのいずれかを含む、様々なクエリモデルをサポートするデータタイプについて有効にされる。更に、各クエリモデルの機能へのアクセスを可能にする統合クエリ言語が提供されている。その結果、企業などのユーザは、特定のクエリモデルの使用をサポートするためだけにデータを保存する必要があるという制約を受けず、それに代えて、クエリモデルを気にせずに保存を行うことができ、任意の全てのクエリモデルを使用することができる。
【０１２７】
マルチデータ・センター・レプリケーション層１１６は、強く一貫したトランザクション分解エンジンを含んでいてもよい。Ｃａｌｖｉｎに基づいており分散グローバルログにより裏付けられるといった、強力な一貫性のあるトランザクション分解エンジンを使用して、スケーラビリティを制限することなく、正確さ及び使い安さを最大限に高めることができる。実施形態において、トランザクション分解アルゴリズムは、Ｃａｌｖｉｎアルゴリズムに基づくものであって、データベースにより保存された履歴情報を複製するようにＲａｆｔログを使用して拡張されているため、分散ストレージノードは、クラスタ全体の調整を必要とすることなく、過去の時点から読み出しを行うことができる。これにより、他の利点の中でも、ＣｏｃｋｒｏａｃｈＤＢ（登録商標）が行っている如く他のシステムのようにグローバルインターネットを横断することなく、強力で一貫性のある完全なトランザクション読み取りが可能になる。実施形態では、ロックレスのタイムスタンプベースの複製アプローチが、一連のタイムスタンプ付きの分離されたスナップショットで実装され、これらのスナップショットは、受け入れられた後、スナップショットの並べ替えにより必要に応じて直列化される。
【０１２８】
オンディスク・ストレージエンジン１４４は、ログ構造化マージツリー（Ｇｏｏｇｌｅ  ＢｉｇＴａｂｌｅ（登録商標）に類似）に基づくものであってよく、ＩＯスループットを最大化することができる。
【０１２９】
オペレーティングシステムのカーネルと同様に動作し得るテナント対応リソース・スケジューラは、優先度及びクォータに基づいて、競合するアプリケーション及び作業負荷に対し、計算リソース、メモリリソース、及びＩＯリソースを公平に割り当てることができる。テナント対応リソース・スケジューラは、データベース１００内のマルチ・テナンシーエンジン１４０をサポートしてもよい。マルチ・テナンシーエンジン１４０は、複数のテナント１４２による単一のデータベース１００の使用をサポートしてもよい。更に、マルチ・テナンシーエンジン１４０は、再帰的マルチ・テナンシーをサポートしてもよい。
【０１３０】
行レベルのセキュリティ、識別、及び分離管理は、ファイルシステムの同様の機能に似ていることがあり、データアクセスを透過的に保護することができる。
【０１３１】
例えば、Ａｐａｃｈｅ  Ｈａｄｏｏｐ  ＹＡＲＮと同様に動作し得るバックグラウンド・タスクスケジューラは、長時間実行ジョブの非同期実行を可能にする。実施形態において、データベースは、データベース内のバックグラウンド分析タスクのネイティブな実行を可能にする。ユーザは、マップリデュースシステム（Ｈａｄｏｏｐ（登録商標）やＳｐａｒｋ（登録商標）など）と同様に、分析を非同期で実行できるが、タスクは運用データベースでネイティブに実行できる。実施形態において、データベースは、データベースに格納された企業の運用データに対するプロセスとして、タスク（分析タスクなど）の有向非循環グラフを作成する機能を有効にする。
【０１３２】
例えば、ソフトウェアのロードバランサと同様に動作し得るデータセンター対応ルーティング層は、事実上のレイテンシを最小化し、グローバルな可用性を最大化することができる。
【０１３３】
オペレーティングシステムが、優先順位付けされて潜在的に競合するユーザ及びプロセスのセットに対して、マシンリソースを動的に割り当てるのと同じように、データベース１００は、全体的に分散されたデータリソースを、優先順位付けされて潜在的に競合するアプリケーション、ユーザ、及び作業負荷のセットに対して、動的に割り当てることができる。
【０１３４】
実施形態では、データベース１００が、トランザクションＮｏＳＱＬデータベースとして実装されてもよい。データベース１００は、ＳＱＬベースのデータベースと同等の機能を有し得るアーキテクチャと、ＳＱＬ及びＮｏＳＱＬデータベースの特徴を包含する特徴のセットとを有していてもよい。これにより、データベース１００は、ＳＱＬの安全性及び正確さの特性を取り入れながら、ＮｏＳＱＬの生産性見込みの向上の実現が保証される。データベース１００は、Ｓｃａｌａ及びＪａｖａで実装されてもよく、全ての主要なオペレーティングシステム上のＪａｖａ仮想マシン（ＪＶＭ）で実行されてもよい。
【０１３５】
＜データモデル＞
最新のアプリケーションは、表データやリレーショナルデータと排他的に相互作用しなくなっている。適応性には、同じシステム内で複数のデータ構造をサポートする必要がある。この要件を念頭に置いて、データベース１００は、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、厳密な上位集合であり得る、半構造化された継承無しのオブジェクトリレーショナル・データモデルを実装してもよい。半構造化モデルは、時間の経過と共に進化することができ、ＳＱＬシステムでの作業時に通常発生するオブジェクトリレーショナルのインピーダンスの不一致を解消することができるため、既存のアプリケーションデータにうまく適合することが示される。
【０１３６】
データベース１００において、レコードは、インスタンス１１２と呼ばれる半構造化ドキュメントとして挿入されてもよく、インスタンス１１２は、再帰的にネストされたオブジェクト及び配列とスカラー型とを含んでいてよい。
【０１３７】
インスタンス１１２は、クラス１１０にグループ化されてもよく、クラス１１０は、リレーショナルデータベースのテーブルに類似していてもよい。クラス内の完全又は部分的に共有されたスキーマは、オプションであって必須のものではない。
【０１３８】
クラス１１０は、追加データベース１０４にグループ化されてもよい。これらの追加データベース１０４は、他の追加データベース１０４を再帰的に含んでいてもよい。追加データベース１０４は、ルートデータベース１０２にグループ化されてもよい。
【０１３９】
データベースアクセスは、キー１０６によって制御することができる。キー１０６は、アクセスを要求すると共に特定のデータベースコンテキストを覆い隠すアプリケーションを識別する、証明書であってもよい。キー１０６には、優先度、リソースクォータ、及びアクセス制御の役割を割り当てることができる。
【０１４０】
関係及びビューは、インデックス１０８で構築することができる。インデックスは、入力インスタンス１１２のセットが、語句（term）及び値で構成される１つ以上の結果セットに変換されたものであってもよい。インデックス１０８は、部分的に適用されたクエリとして表現することができ、それらの入力を変換、カバー、及び順序付けし、一意の制約を実施し、更に依存データを読み取ることができる。インデックス１０８は、クエリ式で明示的に参照することができる。パフォーマンスの不連続性を回避するために、オプティマイザは、開発者に代わってインデックスアプリケーションの決定を行わない場合がある。
【０１４１】
スキーマは、構造型又は依存型で構成されてもよく、検証を宣言することによりオプションで実施されてもよい。検証は、挿入、更新、削除などに適用されるクエリ式に、部分的に適用されてもよい。
【０１４２】
アプリケーション間でロジックを共有するため、所定の場所でアップグレードすることが困難な虞のあるアプリケーションからロジックを抽出するため、又はカスタムセキュリティモデルを作成するために、関数としてクエリをパラメータ化することができる。
【０１４３】
クエリ・ストリーミングエンジン１１８は、クエリをストリーミングすることができる。クエリは、プロパティとしてストリーミングされてもよい。データベース１００は、アプリケーションがクエリへの関係（interest）を登録し、更新イベントをリアルタイムで受信することを、実現させることができる。
【０１４４】
実施形態において、クエリ・ストリーミングエンジン１１８は、データベースの分散ストレージエンジン１４６に関与していてもよい。そうすることにより、ストリーミングクエリは、一貫した更新を受信することができ、様々なトランザクション分離レベルを実装することができる。
【０１４５】
実施形態では、複数レベルの論理データベースのネスティングと共に、再帰的スキーマを使用することができる。
【０１４６】
実施形態において、データベース１００は、機能的で、柔軟性があり、型安全なＬｉｓｐに基づいて、新しいリレーショナル・クエリ言語１３２を実装することができる。リレーショナル・クエリ言語１３２により、オペレータは、マルチモデル・クエリ関数１３４、リレーショナル・クエリ関数１３６などを実行することができる。リレーショナル・クエリ言語１３２との対話は、異なるアプリケーション言語用のドライバを介して実装され得る、ドメイン固有言語（ＤＳＬ）によって取り成すことができる。リレーショナル・クエリ言語は、機能的クエリ言語１９６を含んでいてもよい。機能的クエリ言語１９６は、マルチモデル・クエリ関数１３４、リレーショナル・クエリ関数１３６、テンポラル・クエリ関数１９８などをサポートすることができる。
【０１４７】
データベース１００を使用する開発者は、トランザクション・コンテキスト内の機能スタイルで、アプリケーション・ネイティブコードであると考えられるものを書くことができる。１つのリクエストで、複数のレコードに及ぶトランザクションをカプセル化することができる。データベース１００のドライバは、ネイティブ表現に反映して、それを内部ワイヤプロトコルへと直列化することができる。そして、トランザクションは、データベースによってアトミックに送信及び実行される。リレーショナル・クエリ言語１３２は、リレーショナル、ドキュメント、グラフ、テンポラル、分析、及びバッチ処理のアクセスパターンを統合すると共に、それらの実行コンテキストを制限して、柔軟性、使い易さ、及び安全性を高めることができる。リレーショナル・クエリモデルは、グラフ、ドキュメントなどの管理に必要なコンポーネントを提供することができる。リレーショナル・クエリ言語１３２は、クエリモデルをサポートしてもよい。クエリモデルは、基盤となるアーキテクチャ及び実装の選択肢から明らかになることがある。
【０１４８】
＜実装＞
適応型運用データベースのリレーショナル・クエリ言語１３２は、安全性、予測可能性、及び性能を向上させるように設計された、いくつかのトレードオフを行うことができる。
【０１４９】
クエリは、ホストアプリケーション言語で記述され、その安全メカニズムを継承し、インジェクション攻撃につながる虞のある文字列評価ステップの必要性を除外することができる。
【０１５０】
全てのクエリ機能が、全ての実行コンテキストで許可されるわけではない。例えば、同期インタフェースでは、テーブルスキャンが許可されない場合があり、全てのインデックス１０８を明示的に参照する必要がある。これにより、顧客向けの作業負荷に対して、一貫したスケーラブルな性能プロファイルが保証される。
【０１５１】
しかしながら、タスクスケジューラ用の非同期インタフェースでは、テーブルスキャンが許可されてもよく、プランナは、インデックスが存在する場合、暗黙的にそれを利用することを選択してもよい。これにより、分析及び機械学習のタスクの、構築及び最適化の柔軟性が向上する場合がある。分析タスクは、分析タスクエンジン１２０によって構築及び最適化されてもよい。分析タスクは、カラムナ分析タスク１３８を含んでもよい。
【０１５２】
同期クエリ（及び非同期クエリの全てのサブクエリ）は、アトミックかつトランザクション的に実行することができる。セッション・トランザクションは、サポートされない場合がある。実行計画を構築する前にデータベースがトランザクション全体を受信するため、最大の並列化及びデータの局所性を伴った実行を進めることができる。プレディケート・プッシュダウンのような最適化の機会は、普遍的かつ予測可能に適用される。
【０１５３】
データベース１００は、例えば、ＳＱＬのオフセット／制限スタイルの代わりに、安定したカーソルベースのページングを提供することができる。
【０１５４】
データベースセッションは、ステートレスであってもよい。全てのトランザクションは、アクセストークンで識別することができ、アクセストークンは、トランザクション・コンテキストで閉じられ、トランザクションの最高水準点も含むことができる。これにより、データベースクラスタは、厳密な直列化を維持しながら、最小負荷ノードに対してトランザクションを動的にルーティングすることができる。このため、接続が非常に低いオーバヘッドになって一時的な使用に適していることが保証され、これにより、サーバレス・アプリケーションや組み込みデバイスからのアクセスを実用的にすることができる。
【０１５５】
これらの改善は、レガシークエリ言語では困難又は不可能である場合があり、それは、レガシークエリ言語が、言語を拡張するのではなく言語を制限する必要があり、標準の互換性を損なうためである。
【０１５６】
データベース１００のリレーショナル・クエリ言語１３２の拡張性により、データベースは、カスタム構文の移植と閉じた標準モデルでの拡張との負担を伴わずに、地理的インデックス付け、全文検索、反復機械学習などの他のデータドメインに共通する、効果的な無制限数の追加機能を組み込むことができる。
【０１５７】
例として、Ｓｃａｌａで書かれた次のトランザクションは、大文字と小文字を区別しないタグを含むブログ投稿を挿入する：
【０１５８】
Create( ("classes 110/posts"),
Obj("data" -> Obj("title" -> "All Aboard",
"tags" -> Map(Lambda { tag => Casefold(tag) },
Arr("Ship", "Travel")))))
【０１５９】
この読み取り専用トランザクションは、インデックスの「travel」タグによって投稿を検索する：
【０１６０】
Paginate(
Match(Ref("indexes 108/posts_by_tags"), "travel")))
【０１６１】
この読み取り専用トランザクションは、ブログ投稿とそれらへのインバウンド参照との結合を、主キーによって実行する：
【０１６２】
Paginate(
Join(Match(Ref("indexes 108/posts_by_tags"),"travel"),
Ref("indexes 108/linkbacks_by_post"))))
【０１６３】
＜ネイティブ・マルチ・テナンシー＞
実施形態では、データベースがネイティブ・マルチ・テナンシー機能をサポートしてもよい。実施形態では、データベースにより、単一の運用チームによって運用される単一のクラスタが、最大理論的利用度で任意数の完全に分離された作業負荷をサポートできるようになる場合がある。データベースにより、単一の企業内でマルチアプリケーションや作業負荷の分離が可能になる。これには、クラウド及び施設の展開（premises deployments）にそのような機能を提供することも含まれる（クラウドアカウント内でマルチテナント・システムを許可するなど）。クラスタ又はアカウント内の論理データベースの数に、意味のある実用的な制限がない場合がある。クエリが未処理の場合にリソースが使用されないように、全体的な使用率を最大化することができる。ネイティブ・マルチ・テナンシー機能の実装を、コアデータベース内で完全に有効にすることができる。実施形態において、これらの機能は、例えば、論理データベースが再帰すること、すなわち他のデータベースを含むことを許可することにより、提供することができる。これは、「テナント」及び「論理データベース」が、データベースのプラットフォームに関して同じものとして本質的に扱われることを意味し、又、本開示全体での論理データベースへの参照は、マルチテナント状態で定義及び使用されるものを包含すると理解されるべきである。データベースのＡＰＩは、例えば、サーバキーと同じ権限を持ち、キーの追加／リムーブ及び子テナント（及び／又は子データベース）の追加／リムーブの権限を有するものといった、「管理者（admin）」キータイプを提供することにより、マルチ・テナンシーをサポートすることができる。実施形態では、キーの権限からスキーマ操作を分離することができる。実施形態において、任意のクエリのキーは、リソースの借方（debits）のアカウントとしても機能し得る、ルートデータベース１０２の範囲を覆い隠すことができる。
【０１６４】
データベースの再帰は、以下のように実装することができる。全ての論理データベースは同じ一意のＩＤスペースに存在できるため、主キーのサイズを増やす必要はない。更に、キーはそれらの論理データベースを覆い隠すため、単一データベースのクエリについて再帰的なルックアップは必要ない。実装の圧倒的大部分は、データベースの再帰の存在に依存しなくてもよい。一般的に再帰的なシステムは、テナンシー・ツリーの最大深さを想定する特殊なシステムよりも、実装が簡単である。
【０１６５】
グローバル・ルックアップの場合、キーはシステムへの主要なエントリポイントであってもよい。そのため、これらは特定のスコープに属するが、クライアントに付与してルックアップに使用できるグローバル識別子も必要になる場合がある。同様に、スコープを介してスコープの所有者（そのデータベース）を見つける必要がある場合がある。
【０１６６】
キーのグローバル識別子は、一意であると必ずしも信頼できるとは限らない。このため、そのグローバル識別子でキーを検索すると、一連のインスタンスが返される場合がある。秘密のパラメータを一致させると、使用する適切なインスタンスが明らかになる場合がある。スコープ識別子は単に内部的なものであるため、一意であることが保証される。そのスコープ識別子でデータベースを検索すると、単一のインスタンスが生成される。スコープ識別子がグローバルに一意でない場合は、エラーが返される。
【０１６７】
管理者キーは、そのスコープの「ルートキー」と見なされることがある。このため、その独自のテナントや任意の子テナントに対して、任意のロール（管理者、サーバ、クライアント）のキーを作成することが許可される場合がある。更に、子テナントの作成及び構成が許可されることもある。
【０１６８】
マルチ・テナンシーのデータモデルは、クォータや関連するテレメトリについてなどのＱｏＳ機能といった、他の機能をサポートするように構成されてもよい。
【０１６９】
＜テンポラリティ＞
通常、履歴データは、リアルタイムでは、又は現在のデータと同じクエリ機能では、アクセスすることができない。アプリケーションを更に複雑にすることなく基本的な対話パターンをサポートするために、データベース１００内の全てのレコード（スキーマレコードを含む）をテンポラルにすることができる。
【０１７０】
インスタンス１１２が変更されるとき、それらの以前のコンテンツは上書きされない。その代わりに、作成、更新、又は削除のイベントの何れかとして、現在のトランザクション・タイムスタンプでの新しいインスタンスバージョンを、インスタンス履歴に挿入することができる。データベース１００は、クラス毎及びデータベース毎の基礎で構成可能な保持ポリシーをサポートしてもよい。
【０１７１】
インデックス読み取り、結合、又はデータベース１００内の他のクエリ式を含む全ての読み取りは、過去の任意の時点で一貫して実行されるか、或いは、任意の２時点間のイベントの変更フィードに変換することができる。これは、監査（auditing）、ロールバック、キャッシュの一貫性、２番目のシステムへの同期に役立ち、適応型運用データベースの分離モデルの基本的な部分を形成することがある。
【０１７２】
特権アクター（Privileged actors）は、履歴バージョンを直接操作することで、データの不一致を修正し、個人を特定できる情報をスクラブし、データをフューチャ（future）へ挿入し、又は他の保守タスクを実行することができる。
【０１７３】
テンポラル・データベースは、時系列データベースと区別される場合がある。時系列データベースは、時間と共に変化する値の低遅延記録用に最適化されており、多くの場合、温度、株価、燃料消費データなどのサンプルデータを処理する。又、それらは、道路を通過する車の数、投票数、ソーシャルメディア投稿の「いいね」の数などのイベントを、カウント及び集計するのにも有用である。そのため、数値データを書き込むために大幅に最適化されている。この最適化を実現するために、時系列データベースは通常、複数のキー、数値以外の型、大きなデータサイズ、又はインデックスを含まない、非常に単純なトランザクションパターンのみをサポートする。それらは、期間をまたいで集約されたトレンド（trends）を簡単に調査できるが、複雑なビジネス・トランザクションは運用データベースの領域に残り、複雑な分析はカラムナ分析又はマップ／リデュース分析システムの領域に残る。従来の時系列データベースは、通常、非常に単純なトランザクションパターンのみをサポートする。
【０１７４】
対照的に、本明細書で説明するテンポラル・データベースは、単に時間で順序付けされたサンプル数値データを記録するのではなく、保持期間内のビジネスデータへの全ての変更を追跡する。換言すれば、それは履歴データベースである。例えば、トランザクションが処理されると、以前の状態を上書きするのではなく、追加する。その結果、過去のタイムスタンプを使用して複合型クエリ（complex query）を実行することで、存在する全て（world）の以前の状態を表示することができる。
【０１７５】
実施形態において、本明細書で説明するデータベース・プラットフォームは、より高レベルのビジネス・トランザクション及び分析ソリューションのみならず、データセンターの運用メトリックなど、時間と共に変化する値を含む様々な時系列ユースケースのソリューションを含み得る、テンポラル・データベースを提供してもよい。
【０１７６】
実施形態では、全てのレコード（スキーマを含む）がテンポラルであり、構成可能な保持ポリシーをサポートすることができる。レコードが更新又は削除されても、それらの以前の内容は上書きされず、代わりに、現在のトランザクション・タイムスタンプでの新しい不変バージョンを、作成、更新、或いは削除イベントとして、インスタンス履歴に挿入することができる。インデックスを含むトランザクションを含む全てのトランザクションは、過去（又は将来）の時点で実行するか、或いは、任意の２つの時点間のイベントの変更フィードへと変換することができる。実施形態では、全てのトランザクションを、過去の任意の時点で実行するか、又は変更フィードへと変換することができる。
【０１７７】
これは、ビジネス・トランザクションの監査、開発者のミスやセキュリティ侵害の取り消し（データベース全体の削除も取り消すことができる）、携帯電話などの部分的に接続されたクライアントの同期、アクティビティフィードの構築、分析システムの最新状態の維持、及び本明細書に記載されている分離モデルのサポートに、非常に役立つものである。
【０１７８】
テンポラリティが開発努力を支援する１つの方法は、「スナップショット」によるものである。例えば、「Ｆｒｉｅｎｄ  Ｌｏｃａｔｏｒ」アプリの構築時など、特定時間や日付範囲内のエンティティの状態について質問する必要がある場合、スナップショット・インスタンスが有用である。一例として、アプリのユーザは、現在の場所を更新するためにチェックインすることがあり、その結果、データベースは、ユーザインスタンスのフィールドを次のように設定する：
【０１７９】
update(ref(class('users'), 123), params: { data: { location: 'Sydney' } })
{
"ref": { "@ref": "classes/users/123" },
"ts": <clock_time>,
"data": {
"location": "Sydney"
}
}
【０１８０】
ユーザが先週の同じ時間にいた場所をユーザに示すために、アプリは、次のように過去のタイムスタンプを使用して、ユーザレコードを単に取得してもよい：
【０１８１】
get(ref(class('users'), 123), ts: <week ago>)
{
"ref": { "@ref": "classes/users/123" },
"ts": <week_ago>,
"data": {
"location": "San Francisco"
}
}
【０１８２】
データベースはインデックスでもテンポラリティを維持するため、次のように、ユーザの全ての友人が過去にいた場所について、インデックスをクエリすることができる：
【０１８３】
paginate(match(index('friends_by_location'), ref(class('users'), 123)))
{
"data": [
["Austin", { "@ref": "classes/users/789" }],
["Los Angeles", { "@ref": "classes/users/234" }],
["New York", { "@ref": "classes/users/456" }],
["Oakland", { "@ref": "classes/users/567" }
]
}
【０１８４】
paginate(match(index('friends_by_location'), ref(class('users'), 123)), ts: <week ago>)
{
"data": [
["Chicago", { "@ref": "classes/users/456" }],
["Fremont", { "@ref": "classes/users/789" }],
["Houston", { "@ref": "classes/users/567" }],
["San Diego", { "@ref": "classes/users/234" }
]
}
【０１８５】
例えば、ユーザが最近行った場所のジャーナルビューをユーザに提供するなど、変更フィードを使用することができる。イベント関数は、スナップショットを超えるテンポラリティを取得してもよい。イベントビューは、次のように、結果セットが時間と共に変化したデータの変更フィードを返す：
【０１８６】
map(paginate(ref(class('users'), 123), after: <week_ago>, events: true)) do |event|
get(select('resource', event), select('ts', event))
end
{
"data": [
{
"ref": { "@ref": "classes/users/123" },
"ts": <week_ago>,
"data": {
"location": "San Francisco"
}
},
"ref": { "@ref": "classes/users/123" },
"ts": <day_ago>,
"data": {
"location": "Melbourne"
}
},
{
"ref": { "@ref": "classes/users/123" },
"ts": <minute_ago>,
"data": {
"location": "Sydney"
}
}
]
}
【０１８７】
時系列データベースは、数値のシーケンスのみを格納する。それらは、格納する数値の単純なリストや集約よりも高度なクエリに応答することはできない。本明細書で提供されるテンポラル・データベースは、テンポラリティをデータベースのトランザクション・クエリエンジンへとエンコードする。このため、従来の時系列データベースよりも、はるかに強力で汎用的である。実際、時系列データベースは、テンポラル・データベースからのデータを使用して、テンポラル・データベース又はアプリケーションレベルでロールアップ集計を実行するなどして、テンポラル・データベース内に作成することができる。
【０１８８】
上記のように、実施形態では、データベースのユーザが、監査ログ、「元に戻す」機能、ソーシャル・タイムライン、及びデータモデル移行といった機能を有効にするなど、データへの履歴アクセスを希望する場合があり、それらの全てがテンポラルな機能によってサポートされている。履歴アクセス機能は、セット及びインスタンス履歴の標準化されたレンダリングについての要件と、非テンポラル（つまり「スナップショット」）読み取り専用クエリをテンポラル・クエリに変換するための一般的なクエリサポートとに、対応することができる。
【０１８９】
実施形態では、バージョン履歴のインスタンスイベント構造が以下のように見える：
【０１９０】
{
"resource": ref,
"action": [ "create" | "delete" ],
"ts": timestamp
}
【０１９１】
この形式には、いくつかの顕著な欠点があり、指定された「ts」の差分は、ディスクに保存されるが、ユーザは別のクエリを発行しないと使用することができない。アクション要素は、「create」という用語をオーバーロードして、以前に欠落していたインスタンスの作成と、既存のインスタンスの更新との双方を示す。これらの問題を解決するために、代わりにインスタンスイベントを次のようにレンダリングする：
【０１９２】
{
"instance": ref,
"action": [ "create" | "update" | "delete" ],
"ts": timestamp,
"data": diff
}
【０１９３】
従って、「action」の値には、タイムスタンプの前にこのインスタンスに「create」が存在することを示す「update」が追加された、３つのバリアントが含まれる（「delete」は介在しない）。データの値には、次のようにタイムスタンプの差が含まれる：
【０１９４】
Action: data
Create: instance data at ts
Update: diff from ts □ 1 to ts
Delete: null
【０１９５】
設定履歴のイベント構造は、次のようになる：
【０１９６】
{
"resource": ref,
"action": [ "create" | "delete" ],
"ts": timestamp,
"values": tuple
}
【０１９７】
上記のインスタンスイベントと同様に、この構造にはいくつかの問題がある。「values」の要素は、アドホックな追加であり、多くのインデックスでは「resource」の値を複製する。ソースインスタンスの「ref」をカバーしないインデックスでは、「resource」のレンダリングが不要であり、誤解を招く虞がある。セットイベントをよりよく説明するために、実施形態はセットイベントを次のようにレンダリングしてもよい：
【０１９８】
{
"instance": ref,
"action": [ "add" | "remove" ],
"ts": timestamp,
"data": tuple,
}
【０１９９】
タプル（tuple）は、インデックス設定に関して記載されているように、「values」キーを置き換えて「data」の下にレンダリングされる。ソースインスタンスの参照は、インスタンスイベントの場合と同様に、「instance」の下に公開される。セットイベントをインスタンス履歴と区別するために、セットイベントは、「add」アクションと「remove」アクションとを使用してもよい。履歴では、「add」がセット内のタプルの存在を示し、「remove」がタイムスタンプでタプルが存在しないことを示している。「action」は、タイプタグと同じように、イベントの全てのバリアント（例えば「create」、「update」、「delete」、「add」、及び「remove」など）を記述する場合があることに注意されたい。データベース及びドライバは、これらのバリアントを「action」で区別することができる。
【０２００】
実施形態では、ページングのための「paginate」関数などのイベントクエリ関数を提供することができる。スナップショットクエリと履歴クエリとを切り替えるために、クライアントは、「events」パラメータを追加することにより、ページネーションの呼び出しを変更することができる。テンポラルな機能を有効にするために、スナップショット用と履歴用とに１回ずつ、ページネーション関数が２回実装される。ページネーションとクエリ・セマンティクスとの混同は、単一の引数として任意のセットを取ってそのセットの履歴の表現を返す、ページネーション関数に好適に構成された「events()」関数を提供することにより、回避することができる。
【０２０１】
既存のクエリがどのように表現されるかの例は、イベント関数を使用して示される。以前は、「classes/people/1」などのインスタンスの履歴をページングするクライアントは、次のようなクエリを発行する場合があった。
【０２０２】
{
"paginate": { "@ref": "classes/people/1" },
"events": true
}
【０２０３】
「events()」関数を使用すると、この同じクエリは次のように表現される。
【０２０４】
{
"paginate":
{
"events": { "@ref": "classes/people/1" },
}
}
【０２０５】
結果のクエリは、「paginate()」に渡されたセット内のアイテムを、セットをページングする行為で合成しなくなった。このように、ページネーションは、スナップショット又は履歴を含む任意のコレクションに対して、その中のアイテムの構造を気にすることなく定義することができる。
【０２０６】
構成における「paginate()」関数及び「events()」関数のセマンティクスは、非テンポラルな特徴のみを可能にする状況よりも、僅かに複雑である。以前は、「paginate(events = true)」が使用された場合、ページ化されたサブクエリ（sub□query）は履歴であって、それらの任意のサブクエリは履歴などであり、再帰的であった。上記の「events()」関数を使用すると、クライアントは、どのサブクエリがスナップショット又は履歴であるかを選択的に指定できるため、これまで不可能だった構成が可能になる。クエリが無意味又は不合理であることが静的に既知の場合、評価エラーが表示されることがある。例えば、「events()」が「events()」のサブクエリにならないように、ルールを設定することができる。これは、「events()」の全てのサブクエリがスナップショットクエリである必要があることを意味し、ネストされた履歴結合や履歴中の履歴といった、面倒なパターンを排除する。
【０２０７】
実施形態では、そのセマンティクスに関連する以下の特徴を備えた、シングルトン・クエリ関数を提供することができる。インスタンス参照に関連付けられた２つのイベントタイムラインが存在し、インスタンスのデータの履歴と、インスタンスの存在の履歴とである。インスタンスイベントのタイムラインは、経時的なインスタンスのデータの履歴を表している。それは、インスタンスの参照を「events()」に渡すことで取得できる。この履歴のイベントには、インスタンスのタイムライン内の全ての作成、更新、及び削除イベントが含まれ、上記のインスタンスイベントに関して説明したデータが含まれる。
【０２０８】
セットイベントのタイムラインは、時間の経過と共にシングルトンセットにインスタンスが存在する履歴を表している。それは、インスタンスの「ref」を新しい「singleton()」関数に渡すことで取得できる。この履歴の設定イベントは、夫々「add」及び「remove」として表現されるなど、インスタンスのタイムライン内でのイベントの作成及び削除のために、制限される場合がある。これらのイベントのデータは、インスタンスの参照を含むシングルトンのタプルである。インスタンス参照を使用して「paginate(events = true)」を呼び出すと、そのインスタンスのデータの履歴が生成されることがある。従って、「paginate("classes/people/1")」として構造化されたクエリは、「paginate(events("classes/people/1"))」と同じ結果を生成する。
【０２０９】
挿入クエリ関数には、定義されたセマンティクスが提供されてもよい。インスタンスイベントが上記で定義されているように、イベントのアクションは前のイベントに関連しており、つまり、非削除のイベントは、その前に作成があり、他のイベントが作成の場合、更新になる。従って、「insert()」関数は、アクションパラメータを受け入れる必要がなくなる。「insert()」のセマンティクスは、データなし（パラメータ内）の「insert()」が指定のタイムスタンプを持つ削除イベントを生成するように、定義することができる。「insert()」に空でないデータを提供すると、指定されたタイムスタンプに先行するイベントに関して、作成又は更新が行われる。
【０２１０】
「insert()」クエリの結果は、イベントをレンダリングするように構成されてもよい。
【０２１１】
リムーブクエリ関数についてのセマンティクスを提供することができる。実施形態では、同じタイムスタンプに、同じインスタンスについての２つのイベントが存在しない場合がある。従って、「remove()」関数は、アクションパラメータを必要としない。「remove()」のセマンティクスは、指定されたタイムスタンプで任意のインスタンスイベントを削除するように、定義することができる。
【０２１２】
上述のイベント関数の変形を提供することにより、同時に２つのイベントがタイムラインで正しくソートされるように、全体の順序付けを定義することができる。
【０２１３】
インスタンスは、論理的に同じタイムスタンプに２つのイベントを持つことはできず、すなわち、トランザクション時間が遅いイベントは常に優先されるため、インスタンスイベントの順序はいくぶん恣意的である。但し、セットには通常、同じタイムスタンプに「add」イベントと「remove」イベントとの双方がある。その場合、「remove」が常に「add」よりも時間的に前に発生するというルールを設定するなどして、タイムラインを解決するように、セマンティクスを定義することができる。同じタイムスタンプを共有するインスタンスイベントは、論理的な一貫性のためにイベントを設定するように、同様に順序付けすることができ、つまり、削除は更新の前に発生するように定義することができ、更新は作成の前に発生するように定義することができる。タイムスタンプを共有するインスタンスイベントと設定イベントとの間の順序は、異種セットをページングしている間は安定しているという利点があるが、それはいくぶん恣意的である。例えば、削除の前にリムーブが行われ、追加の前に作成が行われるようにアサートするなど、様々な順序で定義することができる。これらの定義をまとめると、「remove」＜「delete」＜「update」＜「create」＜「add」となる。
【０２１４】
＜ストリーミングクエリ＞
実施形態では、クエリのストリーミングを可能にするデータベースが提供される。これには、プロパティとしてのクエリのストリーミングが含まれる場合がある。例えば、データベースは、ユーザがライブでクエリに注意を向け（listen to a query live）、そのクエリに関して追加又はリムーブされた要素についての更新を受け取るようにすることができる。これは、メッセージバス（message bus）として、或いは、チャットやゲームなどのリアルタイムアプリケーションを扱うときに有用である。実施形態において、データベースは、複雑なクエリを含む一般的なプロパティとして任意のクエリをストリーミングし、変更フィードなどのクエリに対するライブ更新を受信することができる。実施形態において、クエリのストリーミングは、テンポラル・データモデルを使用して、変更フィード及び他の機能を有効にすることができる。
【０２１５】
＜セキュリティ＞
レガシー追加データベース１０４は、ワークステーションでの少数の内部ビジネスユーザ向けに設計された、スキーマレベルのユーザ認証のみを実装してもよい。しかし、現代のアプリケーションは、公共のインターネット上で何百万もの信頼できない潜在的に悪意のある攻撃者にさらされる虞があり、少なくとも、識別システム、行レベルセキュリティ、及びトランスポート暗号化を実装する必要がある。行レベルセキュリティには、行レベル識別、行レベル認証などが含まれる。
【０２１６】
データベース１００は、ＡＰＩサーバを介して、或いは、モバイル、ブラウザ、組み込みアプリケーションなどの信頼できないクライアントに対して直接的に、管理レベルとアプリケーションレベルとの双方の識別及びセキュリティを配信するために、これらの懸念を内部化することができる。
【０２１７】
セキュリティの懸念をデータベースにプッシュすることにより、同じデータセットと相互作用する全てのアプリケーションが、同じアクセス制御を実施し、重大なビジネスリスクである攻撃面を劇的に削減することが保証される。
【０２１８】
＜識別＞
データベース１００内のアプリケーションアクター（ユーザ又は顧客など）は、組み込みのパスワード認証を使用して、或いは、認証を他のプロバイダに委任する信頼できるサービスを介して、識別することができる。識別されると、アプリケーションアクターは、自分達のＩＤ及びアクセスコンテキストを覆い隠す更なる要求を実行するために使用可能な、トークンを受信することができる。
【０２１９】
これにより、信頼できないモバイル、ウェブ、又は他のファットクライアントが、データベースと直接やり取りし、行レベルのアクセス制御システムに参加することが可能になる場合がある。インスタンス１１２として識別されたアクターは、管理コントロールにアクセスすることはできない。
【０２２０】
システムアクターは、キー１０６によって識別されてもよく、キー１０６は、様々なレベルの特権を有していてよい。キー１０６は、特定の論理データベース範囲を覆い隠してもよく、再帰的階層内の親の追加データベース１０４にアクセスしなくてもよいが、オプションで子の追加データベース１０４にアクセスしてもよい。
【０２２１】
＜アクセス制御＞
システムアクターは、上位のアクターによってのみ変更され得る、キー１０６に割り当てられたロールを有していてもよい。これらのロールは、アクティビティを、管理アクセス、全てのインスタンスデータへの読み取り／書き込みアクセス、又はパブリック・インスタンスデータのみへのアクセスに制限する場合がある。
【０２２２】
適応型運用データベースは、行レベル・セキュリティエンジンを含んでいてよい。セキュリティエンジン１２８は、アプリケーションアクセス制御用の行レベルセキュリティ１６８を含むことができ、これは、ＩＤの割り当てを通じて管理され、インスタンス１１２、インデックス１０８、ストアドプロシージャ、及びクラス１００上の、アクセス制御リストの読み取り、更新、作成、削除を行うことができる。更に、セキュリティエンジン１６６は、アプリケーション毎にセキュリティパラメータを設定するために、行レベルセキュリティ１６８を備えていてもよい。
【０２２３】
アクセスグループなどのデータ駆動型の権利決定は、アクセス制御クエリ式をアクセス制御リスト（ＡＣＬ）に割り当てることによって実装することができる。これらのクエリ式は、ロールを含むオブジェクト上でパラメータ化でき、ロールを実行できるＩＤのセットを返す必要がある。
【０２２４】
データベース内で完全にカスタムアクセスロジックを実装するために、トランザクションを実行するアクターのＩＤへ、ストアドプロシージャのコンテキスト内でアクセスすることができる。データベース１００は、常に行レベルのアクセス制御を透過的に実施することができ、それを回避する方法はない。
【０２２５】
＜監査及びロギング＞
データベース１００内の全ての管理トランザクション及びアプリケーション・トランザクションは、オプションで記録されてもよく、更に、基礎となるテンポラルモデルは、構成された保持期間内に全てのレコードの以前の内容を保持する場合がある。
【０２２６】
データベース１００は、データの出所をネイティブに追跡しなくてもよいが、データベース１００とやり取りするアプリケーションは、全てのトランザクションにアクター情報をタグ付けすることができ、インスタンスバージョンの一部としてそのデータに履歴的にアクセスすることができる。
【０２２７】
＜暗号化＞
実施形態では、データベース１００がワイヤ上のデータを暗号化することができる。クラスタトラフィックは、セキュア・ソケット・レイヤー（ＳＳＬ）を介して暗号化でき、各ノードに固有の公開キー／秘密キーのペアを介してオプションで認証できる。
【０２２８】
更に、パブリック・インタフェース上のトラフィックは、ＳＳＬを介して暗号化されてもよい。データベース１００とやり取りするアプリケーションは、公開キー／秘密キーのペアを介して認証されてもよく、認証局に依存してクラスタ自体の証明書を認証してもよい。
【０２２９】
ファイルシステム暗号化などのオペレーティングシステム・メカニズムを使用して、保存データ、ログ、及びディスク上の任意の秘密キー１０６を保護することができる。
【０２３０】
＜暗号化された状態＞
実施形態において、データベースは、保存データの暗号化機能を実装してもよい。実施形態では、例えば、（マルチテナントの状況を含む）全ての論理データベースが、それ自体がルートシークレットによって暗号化されて保存される、独自の対称暗号化キーを有してもよい。ルートから下って、別のシークレットが作成される度に、対称キーを復号化し、新しいシークレットで再暗号化して、追加のコピーを保存する。新しいデータベースの場合、アクセス階層内の全ての以前のシークレットで暗号化された、新しい暗号化キーを作成することができる。このようにして、暗号化キーは、ディスク上に復号化された状態で保存されることはなく、ネットワークを介して渡されることもない。サーバでのＳＳＬターミネーションは、使用中のキーのローカルＴＣＰスニッフィングを防ぐために使用できる。暗号化前に圧縮、トークン化などを適用してもよい。実施形態において、階層内の前任者をリムーブするオプションは、データベース・プラットフォームのホストによってさえデータを回復不能にするであろう。
【０２３１】
実施形態では、ワイヤ暗号化も同じ対称キーで置き換えることができるため、読み取り時にデータを解読する必要はない。メタデータの側面は、インデックス作成やバックグラウンド・タスクを容易にするために暗号化されない場合がある。
【０２３２】
実施形態では、クライアント側の暗号化を使用して、データベースがデータを全く把握していないようにすることができる。
【０２３３】
実施形態では、単一のオペレータがマスターキーを解読するための完全なパスワードを保持しないように、構成を提供することができる。オペレータは、少なくとも２つのオペレータ、少なくとも３つのオペレータなどからログインを受信する限り、マスター復号化キーを解読してもよい。そのキーの暗号化されたストア自体を攻撃することは、２人のオペレータのパスワードを所有している場合でも、簡単ではない。
【０２３４】
別の必要性は、一旦マスターキーを解読すると、それを必要とするクラスタ内の他のコンポーネントへ安全に配信することである。これは、クライアント認証でＳＳＬを使用することによって実現できる。これにより、誰かがデータベースクラスタ内の新しいノードの新しい証明書に署名できるようになる必要があるため、別のセキュリティポイントが導入される。
【０２３５】
＜スケーラビリティ＞
データベース１００は、水平方向及び垂直方向にスケーラブルであり、自己調整可能であり、単一障害点がないように設計されてもよい。データベース１００クラスタ内の全てのノードは、３つのロールを同時に実行することができる。これらのロールには、クエリコーディネータとしての機能、データレプリカとしての機能、及びログレプリカとしての機能が含まれていてよい。
【０２３６】
ノードのロールを構成するために、操作タスクが必要ない場合がある。
【０２３７】
＜クラスタトポロジ＞
データベース１００クラスタは、３つ以上の論理データセンターで構成されてもよい（物理データセンターは、複数の論理データセンターを含んでもよい）。
【０２３８】
コンプライアンス、冗長性、及び待ち時間に関するアプリケーションの決定から、物理ハードウェアの運用管理を抽象化する必要性は、適応性の主要な要件である。適応型運用データベースでこの抽象化を実現するために、論理データベースレベルでレプリケーションを動的に構成してもよい。各物理データセンターには、グローバルメタデータのコピーと、そのデータセンターに割り当てられた各論理データベースのコンテンツのコピーとを、含めることができる。
【０２３９】
例えば、企業は、複数のクラウド・インフラストラクチャ・プロバイダ並びにオンプレミス・ハードウェアにまたがる、単一のデータベース１００クラスタを展開してもよい。企業内の開発者は、データベース毎にアプリケーションデータを配置する場所を選択し、それらの決定をオペレータの介入なしで経時的に変更することができる。その逆もまた真かもしれず、オペレータは、個々のアプリケーションの複製計画（replication strategies）に影響を与えることなく、クラスタの物理的構成を変更することができる。
【０２４０】
実施形態において、タイムスタンプベースの複製アプローチは、一連のタイムスタンプ付きの分離されたスナップショットで実施され、スナップショットの並べ替えによって必要に応じて直列化される。
【０２４１】
＜ルーティング＞
任意のデータセンター内の任意のデータベースノードは、クラスタ内の任意の論理データベースに対する要求を受信してもよい。そのノードがその特定の論理データベースのデータを所有していない場合、別のデータセンターにある可能性があるノードに転送する場合がある。これにより、論理データベースが割り当てられているデータセンターに、負荷が集中する場合がある。一部の運用条件では、非対称ルーティングを使用して、帯域幅を部分的に局所化することもできる。
【０２４２】
トランザクションが正しいデータセンターにルーティングされると、ローカルノードは、クエリコーディネータとして機能し、又、基になるデータを所有するデータレプリカに読み取りプレディケートをプッシュし、応答を待機し、トランザクションに書き込みが含まれる場合に書き込みバッファを蓄積することにより、トランザクションの実行を開始する。読み取りプレディケートは、行レベルのルックアップのように単純な場合もあれば、部分クエリ・サブツリーのように複雑な場合もある。マルチレベルのプレディケート・プッシュダウンがサポートされている。これにより、レイテンシを劇的に短縮することができ、並列性及びデータの局所性の向上によりスループットが向上する。
【０２４３】
トランザクションが読み取り専用（又は非同期）である場合、応答はすぐにクライアントに返されてもよく、トランザクションが書き込みを含む場合、それがトランザクション分解のために適切なログレプリカに転送されてもよい。ログレプリカは、トランザクションを関連するデータレプリカへ転送してもよく、そのデータレプリカは、トランザクションを明確に分解することができ、クライアントに接続されたノードへ応答を返すものであり、その後、そのノードがクライアントへ応答を返してもよい。
【０２４４】
＜データ分割＞
各データセンター内で、論理データレイアウトは、マルチレベルの順序付けされたハッシュを介して、線形リング（linear ring）へと分割されてもよい。例えば、単一のデータベースのデータは、リング内で一緒にレイアウトすることができる。そのデータベース内で、同じクラスのインスタンスデータ、及び、同じインデックスのインデックスエントリを、共にグループ化することができる。データの順序付けは完全（total）であるため、インデックスタームの任意のセットやインスタンス主キー１０６をまたいで、範囲クエリが可能となる。
【０２４５】
データベース１００は、所定の場所でレコードの更新をすることは決してないかもしれないが、書き込みホットスポットが依然として部分範囲内で可能である虞がある。これを軽減するために、バックグラウンドのリバランス・タスクを、常に低い優先度で実行することができる。バックグラウンドのリバランス・タスクは、バックグラウンド・タスクエンジン１４８によって実行することができる。
【０２４６】
インスタンス（その履歴を含む）や特定のインデックスエントリの読み取り又は書き込み速度が、中央サイズをかなりのマージンで超える場合、読み取り及び書き込みのホットスポットが発生する虞がある。この場合、データベース１００は、複数の範囲にわたってインスタンス又はインデックスエントリを適応的に分割し、読み取り時に部分的な分散−収集クエリを実行することができる。
【０２４７】
＜フォールト・トレランス＞
データベース１００は、それほど洗練されていないシステムでの可用性に影響する多くの種類の障害に対して、回復機能を有する場合がある。特に、データベース１００クラスタは、データセンターレベルであっても、単一障害点に対して脆弱ではない。
【０２４８】
データベース１００が耐性を有するいくつかの特定の障害は、ノードが一時的に利用できない場合（プロセスクラッシュ、ハードウェア再起動）、ノードが永続的に利用できない場合（物理的なハードウェア障害）、ノードが遅くなる場合（ローカルリソースの競合又はハードウェアの劣化）、及び、ネットワークパーティションがデータセンターを分離する場合であり、この場合、分離されたデータセンターは、引き続き読み取りを処理できるが、書き込みを受け入れることはできない。
【０２４９】
データベース１００クラスタは、データセットの複数のレプリカを維持することに固有の冗長性により、障害に直面して可用性を維持することができる。例えば、５つのデータセンターで構成されたクラスタでは、３つのデータセンターが使用可能である限り、クラスタは全ての要求に応答することができる。
【０２５０】
データベース１００クラスタは、複数のデータセンターにおける部分的又は全体的な障害にも関わらず、トランザクションに応答することができるかもしれないが、それでも劣化状態になる虞がある。別のデータセンターで追加の障害が同時発生すると、可用性に影響する場合がある。
【０２５１】
データベース１００は、故障したノードやデータセンターを自動的に廃止しないかもしれず、この決定は、カスケード障害のトリガーを回避するために、オペレータに任される場合がある。
【０２５２】
実施形態において、データベース・プラットフォームは、ストリーム処理（Ｓｐａｒｋ／Ｙａｒｎ（登録商標）やＳａｍｚａ（登録商標）など）、グラフコンポーネント（Ｎｅｏ４Ｊ（登録商標）など）、キャッシング（Ｍｅｍｃａｃｈｅｄ（登録商標）など）、検索コンポーネント（ＥｌａｓｔｉｃＳｅａｒｃｈ（登録商標）など）、分析コンポーネント（Ｖｅｒｔｉｃａ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＲｅｄｓｈｉｆｔ（登録商標）など）、メッセージブローカリング（Ｋａｆｋａ（登録商標）など）、ストレージコンポーネント（Ｓ３（登録商標）など）、及び時系列コンポーネント（Ｉｎｆｌｕｘ（登録商標）など）といった、様々な運用データ管理コンポーネントを含むことができる。
【０２５３】
＜性能＞
データベース１００のスループットは、線形にスケーリングすることができる。レガシーなＳＱＬシステムと異なり、適応型運用データベースは、計画の発見的変更の引き金となる虞があり、かつ、予期しない性能エラーをもたらす虞のある、全体的なデータセットのサイズにしきい値を課さなくてもよい。
【０２５４】
更に、適応型運用データベースの書き込みアクティビティは、競合下で十分に応答することができ、読み取り又は重複しない書き込みの干渉を回避することができる。
【０２５５】
データベース１００は、プレディケート・プッシュダウン機能を含んでいてもよい。プレディケート・プッシュダウンは、複雑なクエリの並列化に非常に効果的である。プレディケート・プッシュダウンは、例えば、書き込みのコミット、書き込み効果の観察、及び結果セットでの計算実行の双方について、クラスタサイズを大きくすることで、クエリ毎のレイテンシを改善することができる。歴史的な理由から、これらの機能は他の分散型データベースシステムではほとんど見られることがない。
【０２５６】
＜永続性＞
データベース１００は、ローカル・ストアモジュール（ＬＳＭ）としても知られるローカル・ストアエンジンを含んでもよい。ローカル・ストアエンジンは、圧縮されたログ構造化マージツリーとして実装することができる。ローカル・ストアモジュール（ＬＳＭ）・ストレージエンジン１４４には、磁気ドライブとＳＳＤとの双方が好適である。ストレージエンジン１４４は、分散ストレージエンジン１４６内に含まれてもよい。分散ストレージエンジン１４６は、マルチデータ・センター・レプリケーション１７６をサポートしてもよく、分散ストレージ層アルゴリズムを含んでもよい。分散ストレージ層アルゴリズムは、ハイブリッド論理クロックアルゴリズム１７８、トランザクション分解アルゴリズム１８０、レプリケーションアルゴリズム１８２などであってもよい。更に、分散ストレージエンジン１４６は、オンディスク・ストレージエンジン１８４を含んでもよい。
【０２５７】
＜読み取りと書き込み＞
データベース１００は、ログ構造化されたマージツリーを含んでもよい。ログ構造のマージツリーは、ランダム書き込みをバルク書き込みへと変換し、書き込みスループットを大幅に向上させるように設計することができる。挿入マーカー及び削除マーカーは、フラットコミットログに記録することができ、ソートされたメモリテーブルに蓄積される。データベース１００のテンポラル・データモデルは、不変バージョンで構成されるため、例えば特別な場合を除いてデータの上書きがなくてもよい。
【０２５８】
メモリテーブルが固定サイズに達すると、それはログ構造化マージツリー内の不変レベルとしてディスクにダンプすることができる。その後、メモリテーブル及びコミットログを、アトミックにフラッシュできる。
【０２５９】
＜性能＞
ローカルインデックス構造などの様々な他の最適化は、データ項目が存在するかどうかを見つけるための、各レベルファイル自体を通したシークの必要性を最小化するために、適応型運用データベースのメモリに保持することができる。
【０２６０】
レベルファイル自体は、ディスク及びＩＯの使用量を削減するために、ディスク上で圧縮されてもよい。これにより、ファイルシステム・キャッシュの性能も向上する場合がある。レベルファイルが不変である可能性があるため、圧縮はレベルファイル毎に１回だけ行われ、パフォーマンスへの影響を最小限に抑える。
【０２６１】
適応型運用データベースにおけるマルチレベル読み取りの待ち時間の影響を軽減するために、レベル数が固定サイズを超えたら、コンパクションと呼ばれるローカル・バックグラウンド処理をトリガーしてもよい。コンパクションは、レベルファイルのバッチの内容のインクリメンタル・マージソートを実行してもよく、新しい結合ファイルを発行してもよい。このプロセスでは、期限切れのデータを削除してもよく、削除マーカーを消してもよく、ディスク上のストレージ使用量が減少する。
【０２６２】
コンパクションは、非同期的に実行され得るが、進行は時間と共に保証されなければならず、さもないと読み取り性能が低下する虞がある。コンパクションのタスクは、それらのリソース要求と同期トランザクションの優先順位付けの必要性とのバランスを取るために、データベース１００のプロセススケジューラを介して管理することができる。
【０２６３】
＜一貫性＞
データベース１００は、一貫性モデル１１４を含んでもよい。データベース１００の一貫性モデル１１４は、可用性、スケーラビリティ、スループット、或いは読み取りレイテンシを損なうことなく、グローバルに分散したクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性を提供するように設計することができる。
【０２６４】
実施形態において、グローバルに分散されたクラスタは、複数の地理的に多様なデータセンターやクラウド・インフラストラクチャ・プロバイダへ複製されてもよい。実施形態において、本開示のデータベース・プラットフォームは、異なるストレージ環境にわたるグローバルな複製を含む複製下で一貫性を維持し、更に実施形態では、データベースが企業の情報技術インフラストラクチャに具備される場合において、一貫性を維持することを含む（サービスとして提供されるだけではない）。
【０２６５】
全ての書き込みは、グローバル・トランザクションログにおけるそれらの位置に基づいて、順序付けることができる。各ノードは、最後に適用されたログ位置を認識することができるため、全ての読み取りトランザクションは、それらを実行するクエリコーディネータの最後に複製されたログ位置で、一貫性が保証される。データベースドライバは、それらの最後のリクエストのログ位置の最高水準点（因果関係のトークンに相当）を維持し、グローバル・トランザクション順序の単調に進むビューを保証する。
【０２６６】
最後に、書き込みトランザクションは、単一の論理データベースに制限されてもよいが、適切な許可が割り当てられていれば、複数の論理追加データベース１０４に再帰的にまたがる読み取り専用トランザクションを、読み取りコミットされる一貫性で実行することができる。
【０２６７】
データベース１００におけるトランザクションの分解は、最適化されたバージョンのＲａｆｔにより裏打ちされた、Ｃａｌｖｉｎプロトコルに基づいてもよい。Ｒａｆｔは、分散トランザクションログを複製する役割を果たしてもよく、Ｃａｌｖｉｎは、複数のデータレプリカにわたってトランザクションの分解を管理してもよい。
【０２６８】
Ｃａｌｖｉｎ及びＲａｆｔの構成に基づくデータベース１００は、読み取り性能を改善するために、テンポラリティと関わり合う場合がある。データベース１００は履歴を保存することができるため、Ｒａｆｔのログは、履歴更新をノードに複製することができ、そのために、ノードは、クラスタ全体で調整することなく、過去の時点から読み取りを引き出すことができる。Ｃａｌｖｉｎ及びＲａｆｔの構成に基づくデータベース１００は、グローバルなインターネットを横断することなく、強力で一貫性のある完全なトランザクション読み取りを可能にする。
【０２６９】
Ｃａｌｖｉｎ及びＲａｆｔの構成に基づくデータベース１００は、論理データセットがどの物理データセンターに複製されるべきかを、動的に選択することができる。データベース１００は、様々なコンピューティングハードウェアにわたって、地理などにわたって、データセットを複製することができる。
【０２７０】
グローバルに複製されたトランザクションログは、論理データベース内の全てのトランザクションの順序を維持することができる。そのログは、エポックと呼ばれる順序付けられた一連のバッチとして処理できる。データベース１００内の典型的なエポックウィンドウは、１０〜２０ミリ秒であり、これは、クラスタがトランザクション・アプリケーションを並列化するのに役立つ一方で、トランザクション処理の待ち時間に最小限の影響を与える。
【０２７１】
トランザクションがクエリコーディネータに提示されると、コーディネータは、トランザクションに最新の既知のログ・タイムスタンプをスタンプし、そのタイムスタンプでトランザクションを投機的に実行して、読み取り及び書き込みのインテントを見出す。トランザクションに書き込みが含まれる場合、それは最も近いログレプリカに転送され、他のレプリカとの合意により承諾されるように、次のエポックの一部としてそこで記録される場合がある。
【０２７２】
この時点で、必要なデータセンター間通信のみが発生した可能性がある。エポック内の及びトランザクションログに関するトランザクションの順序は解決され、各データセンターは、トランザクションの影響を解決するために、独立的かつ決定論的に進めることができる。
【０２７３】
次いで、トランザクションは、その読み取り及び書き込みのインテントによって決定されるように、各ローカルデータ・レプリカに転送されてもよい。各データレプリカは、そのパーティション内のデータの読み取り又は書き込みを含む、エポック内のトランザクションのサブセットのみを受信し、それらを所定の順序で処理する。各データレプリカは、それが所有していない値の読み取りをブロックしてもよく、読み取り用に関連する他の全てのパーティションへ読み取りを転送してもよい。トランザクションの全ての読み取り値を受信すると、トランザクションを分解してローカル書き込みを適用することができる。元の投機的実行の前提条件が失敗である場合、例えば、変更された値に依存する読み取りが、読み取りインテントのセットでカバーされなくなる場合は、トランザクションが中止されることがある。
【０２７４】
トランザクションログがトランザクションのグローバルな順序を維持することができ、データノードがログ内の自身の位置を認識することができるため、読み取りは、常にローカルデータセンターから一貫して提供することができ、２つのトランザクションの因果順序は、常に夫々のログ位置の順序によって決定することができる。
【０２７５】
Ｃａｌｖｉｎベースのシステムにおけるトランザクションのスループットは、各エポック内のノード間の競合の度合いによって制約される。実施形態では、データベース１００内の分解コンテキストが、論理データベースによって分割されてもよいため、全体的なトランザクションのスループットは制限されない。
【０２７６】
実施形態において、分散トランザクションログは、パフォーマンスを改善するために、ストリーミング、リカバリ、圧縮、及び再試行のメカニズムで拡張されてもよい。
【０２７７】
実施形態において、トランザクション分解エンジン１８０は、パフォーマンスを改善するために、ストリーミング、リカバリ、圧縮、及び再試行のメカニズムで拡張されてもよい。
【０２７８】
＜復元性＞
適応型運用データベースのトランザクション処理パイプラインは、ノード障害や各ステップでの待ち時間に耐性がある。調整ノードがローカルのログレプリカと通信できない場合、そのトランザクションを別のログレプリカへ安全に転送することができる。データレプリカがローカルのログレプリカからエポックバッチをタイムリーに受信しない場合、別のログレプリカからエポックバッチを取得することができる。トランザクションの適用中に、データレプリカが他のパーティションからトランザクションの読み取りの一部を受けない場合、その失敗したパーティションの他のレプリカから、特定のログ位置で欠損値を安全に読み取ることができる。
【０２７９】
＜サービスの質＞
急速に変化する作業負荷に効果的に応答するために、データベース１００は、リソースを動的に割り当ててサービスの質を強化することができる、プロセススケジューラを実装してもよい。スケジューラは、データベース１００クラスタ内の論理データベース階層をミラーリングする、一連の再帰的なワークキューとして実装することができる。個々のトランザクションは、まずはそれらの実行コンテキスト（同期又は非同期）によって、次いで、論理データベースの優先度或いはアクセスキーがある場合はアクセスキーの優先度である、それらの優先度のコンテキストによって、キューへとスロット化される。
【０２８０】
協調型マルチタスクを介して、実行を進めてもよい。トランザクションは、再帰的な重み付け均等化キューイングアルゴリズムに従って実行するために選択することができ、ネイティブスレッドにスケジュールすることができる。データベース１００は、クエリプランナを含んでいてもよい。クエリプランナは、インターリーブされて潜在的に並列化可能な一連の計算及びＩＯステージとして、トランザクションを評価することができ、予測可能なきめ細かいバリア（例えばループの繰り返し）で常に実行が生じることを保証できる。これにより、継続の複雑さを制限することができ、複雑で移植性のないプリエンプティブ・マルチタスクスキームを必要とせずに、各ＩＯ又は計算実行スレッドから予測可能な量のリソースが消費される度に、エグゼキュータのコンテキストスイッチとスケジューリングの再入力とができるようになる。
【０２８１】
実施形態では、動的リソース・スケジューリング１２６がデータベースに提供される。これには、データベースクラスタ全体でのリソースの使用のスケジューリングと、論理データベース全体のレベルではなく、きめ細かいレベルでのリソースのスケジューリングとが含まれてよい。リソースの動的割り当て又は動的リソース・スケジューリング１２６は、利用率を最大化し、インフラストラクチャのフットプリントを最小化することができる。動的リソース・スケジューリング１２６は、セキュリティモデルを含んでもよい。セキュリティモデルは、データ自体を分離して、クエリ毎のレベルなどのきめ細かいレベルのデータへ、詳細な優先順位及びアクセスを割り当てることができる。動的リソース・スケジューリング１２６は、クエリ毎、ユーザ毎などの動的リソース・スケジューリングを可能にする。
【０２８２】
＜動的リソース割り当てのセキュリティモデル＞
実施形態では、セキュリティモデルがデータ自体を分離するので、ユーザは、どのユーザやプロセスがどのデータに、どの優先順位で、どのアクセスで利用できるかを、完全な粒度で指定することができる。従来のデータベースは、ユーザやプロセスが特定の論理データベースにアクセスできるか否かを管理するなど、管理セキュリティに焦点を当てており、単一の論理ＤＢを超えるアクセスという概念はほとんどない（マシンへの総管理アクセスを除く）。従来のアプローチでは、通常、ユーザはデータベース内の部分的なデータセットへのアクセスを制御できない。本明細書で説明するデータベース・プラットフォームは、データベース内のデータの再帰的階層を提供することができる（ファイルシステム上のフォルダと同様）。企業はアクセスを制御できるため、ユーザは部分的なデータセットへのアクセスを許可される（フラットなアクセス制御のセットではなく、階層を含む）。更に、プラットフォームの各データベース内で、ユーザは、ユーザ毎に個々の行へのアクセスを管理することができる。他のデータベースの場合、行レベルセキュリティは、存在する範囲で、プロセスを分離せずに、検証が困難な方法で実装されるため、ほとんどのユーザはそのような機能を全く使用しない。他の従来のアプローチは、データベースへのインタフェースを保護しない。ユーザは、与えられたユーザであり、特定の行にアクセスできると主張できるが、データベースは、ユーザを認証することができない。本明細書で説明するデータベース・プラットフォームは、データベースを使用するアプリケーションのアプリケーションレベルの開発を必要とせずに、ネイティブデータベース機能として、行レベルセキュリティと共に、識別及び認証を提供することができる。
【０２８３】
歴史的に、ＦｉｒｅＢａｓｅ（登録商標）やＰａｒｓｅ（登録商標）などのプラットフォーム・アズ・ア・サービスのシステムは、限られた事前構成された行レベルセキュリティ、識別、及び認証モデルを備えた、マルチテナント・システムであった。特定のデータにアクセスする機能をユーザに付与できるが、本明細書で説明するデータベース・プラットフォームのように、複数のタイプのユーザやスキーマを作成することはできなかった。そのようなシステムにはＱｏＳ管理がないため、洗練されたクエリモデルを公開することはできなかった（例えばクエリ間でリソースを割り当てる）。
【０２８４】
本明細書で説明するプラットフォームでは、企業又は他のユーザが、例えば、アプリケーションコンテキスト内などで、「このアプリのこのユーザはユーザが作成したデータにのみアクセスできる」と言うことができ、そしてそのユーザは、それらの特定のレコードにのみアクセスできる。例えば、企業は分析チームに全てに対する読み取り専用アクセスを許可する（例えば全てのデータセットに対するものであるが、データの書き込みや変更はできない）。従来のＳＱＬデータベースでは、これらのタイプのルールをデータセット毎に割り当てる必要があり、１人のユーザによるユーザ自身の作成へのアクセスを全く制限できなかった。ＡＰＩ／プロキシ又は同様のシステムを経由せずにデータベースと通信するために、ユーザにデータを公開することはできず、複雑さ、遅延、及びオーバヘッドが追加された。
【０２８５】
データベース１００は、データベース上のデータの再帰的階層を含んでもよい。再帰的階層により、オペレータは、階層アクセスを制御できるため、部分的なデータセットへのアクセスが提供される。更に、再帰的階層により、オペレータは、ユーザ毎及び／又はデータベース毎に個々の行へのアクセスを管理できる。再帰的階層により、複数のタイプのユーザ及びスキーマを作成できる。例えば、再帰的階層により、オペレータは、データベース１００のユーザに、そのユーザが作成したデータへのアクセスのみを許可することができる。
【０２８６】
全体的な影響は、データベース１００の作業負荷がビジネス優先度によって再帰的に順序付けられ、低優先度のタスクがクラスタに残っているアイドル容量へ入り込むことができ、総利用率を劇的に改善することである。多様なアプリケーション、データセット、及び作業負荷を、単一のデータベースクラスタでホストできれば、従来の静的にプロビジョニングされてサイロ化されたデータアーキテクチャと比較して、価格／パフォーマンスが向上する。
【０２８７】
サービス品質（ＱｏＳ）は、ＱｏＳ管理エンジン１２４によってクエリ毎に割り当てることができる。サービス品質は、プロセス分離エンジン１３０を含んでもよい。プロセス分離１３０により、オペレータは、同じデータに対するクエリの実行優先度を変えることができる。例えば、オペレータは、顧客向けのクエリに高い優先度を割り当て、レポートを作成する分析クエリに低い優先度を割り当ててもよい。顧客の使用が急増すると、優先度の低いクエリが優先される場合がある。
【０２８８】
プロセス分離エンジン１３０により、オペレータは、相対的優先度に従って時間内にクエリを順序付けすることができる。データベース１００のプロセス分離エンジン１３０は、データベースカーネルに深く組み込まれていてもよい。プロセス分離エンジン１３０により、オペレータは、様々な機能の待ち時間プロファイルを制御することができる。プロセス分離エンジン１３０は、スケジューラ、プロセススケジューラ、再帰的プロセススケジューラ、完全に公平なキューイング（ＣＦＱ）アルゴリズム１８８の再帰的な実行などの、再帰的プロセス実行部すなわち１８６を使用して実装されてもよい。
【０２８９】
＜プロセス分離の利点＞
上述のように、データベースは、プロセス分離エンジン１３０を含んでもよい。プロセス分離により、コンテナシステムと同様に、競合する作業負荷を、１つのデータベースクラスタで安全かつ確実にホストできる。データベース内のプロセス分離により、ユーザは、同じデータに対するクエリの実行優先度を変えることができる。アプリケーションの優先順位は別のシステムで実行できるが、データベース内のプロセス分離により、少しの複雑さと少しのハードウェアとでプロセスの分離から恩恵を受ける、様々なアクティビティが可能になる。例えば、企業は、顧客向けのクエリに高い優先度を与え、標準レポートの作成に使用される分析クエリなどの重要度の低い項目に、比較的低い優先度を与えてもよい（例えば、顧客の使用が急増したときに、低い優先度のものが優先権を得るように）。従来のシステム（ＰｏｓｔｇｒｅＳＱＬ（登録商標）やＯｒａｃｌｅ（登録商標）データベースなど）では、ピーク容量を確保するために、ユーザはシステムを静的にプロビジョニングする必要がある。リソースを集中的に使用する低価値のタスクをユーザが実行している場合でも、ユーザは、実行中に他の全ての進行中のものに干渉しないように、十分な物理ハードウェアをプロビジョニングする必要がある。ピーク容量をプロビジョニングする必要があるため、ほとんどの企業が平均で１桁の使用率であって、つまり、ほとんどの企業は、ハードウェアに大きな料金を払って、様々なレベルのクエリプロセスをサポートするリソースについて、十分な可用性を確保している。
【０２９０】
実施形態において、データベース・プラットフォームは、仮想化及びコンテナシステムを使用して、データベースに使用されるハードウェアリソースをプロビジョニング又はセグメント化することができる。プロセスの分離（各プロセスのＱｏＳの分離を含む）により、企業は、相対的な優先度に従って時間内にプロセスをセグメント化できる（そして、その分離機能は、本明細書で説明するデータベース・プラットフォームのデータベースカーネルに組み込まれる）。まれな例外を除き、従来のデータベースシステムは、常にアクティブな全てのクエリに対してリソースを均等に分配する。特定のクエリパターンは、予測不可能な方法で他を枯渇させる傾向がある。その結果、高価値で低リソースのクエリと低価値で高リソースのクエリとを、同じ従来の方法で実行することは非常に危険であるため、ほとんどの企業は、運用プロセス、アプリケーション、及びサービスとは全く異なるデータベースで、分析などのアイテムを実行する。ユーザが論理データベースレベルで優先順位を割り当てることができるまれなシステムでさえ、データベース内の同じデータセットで動作しているクエリを分離することができない。
【０２９１】
データベースカーネルでプロセス分離及びＱｏＳを行うことの重要な利点は、オペレータがハードウェアを統合し、無駄な能力を排除できることである。又、アプリケーション開発者は、様々な機能、サービス、プロセスなどの、待ち時間プロファイルを制御することができる。更に、テナント毎に異なるクラウド又はハードウェアスライスをプロビジョニングする必要はなく、実際、静的プロビジョニングの決定を行う必要はない。代わりに、プロセス毎に定義されているＱｏＳを用いて、ユーザは、必要に応じて、クエリを実行し、データの取得を開始し、ハードウェアを追加することができる。
【０２９２】
＜バックグラウンド・タスク＞
データベース１００は、バックグラウンド・タスクエンジン１４８を含んでもよい。バックグラウンド・タスクエンジン１４８は、バックグラウンド・タスクを実行することができる。バックグラウンド・タスクには、スキーマの変更、アンチエントロピーチェック、ユーザが提示した長時間実行クエリなどが含まれてよい。データベース１００内のバックグラウンド・タスクは、ジャーナル化されたトポロジ認識タスクスケジューラによって内部的に管理されてもよい。バックグラウンド・タスクエンジン１４８は、有向非循環グラフ（ＤＡＧ）タスク実行エンジン１７４を含んでもよい。
【０２９３】
実施形態において、データベースは、データベースに格納された企業の運用データに対するプロセスとして、タスク（分析タスクなど）の有向非循環グラフ（ＤＡＧ）の実行機能を有効にする。
【０２９４】
アプリケーションは、バックグラウンドクエリの提示によりタスクスケジューラとやり取りできる。例えば、最も単純なトランザクションは、論理データベースの一部のサブセットにマップし、結果セットを出力できる。より複雑なパイプラインは、変換及び集約の有向非循環グラフを通じてデータを処理できる。この方法の各ステップでは、サブタスクが進行するにつれて、中間結果が局所的にジャーナルされる場合がある。その後、結果を再分割して責任ノード（responsible node）へ転送し、存続させるか、又は次の処理ステップへ渡すことができる。
【０２９５】
バックグラウンドクエリは、特定のクエリのロジックに対して不変の一貫した状態を提供するために、データベース１００の状態のスナップショットで実行することができる。バックグラウンドクエリの最終結果は、一連の新しい又は更新されたインスタンス１１２として、通常のトランザクション処理パイプラインのエントリを介して公開される。
【０２９６】
＜集約＞
データベース１００は、ビルトイン、任意のユーザ定義の集約、及びターム内の範囲クエリとして、共通の集約をサポートしてもよい。
【０２９７】
集約はコンポーネントを有してもよい。コンポーネントには、ユーザ定義又は組み込みの集約関数タイプがある。ユーザ定義又は組み込みの集約関数タイプは、次のような内部インタフェースを有してよい：
initialize: T
add(L, T): T
remove(L, T): T
merge(T, T): T
finalize(T): L
【０２９８】
「T」は内部集約状態のタイプであり、「L」は集約される要素のタイプである。「merge()」は可換かつ結合的でなければならず、「merge(initialize(),initialize())」は「initialize()」と等しくなければならないことに注意されたい。実施されない場合、これは少なくともドキュメント化されるべきである。
【０２９９】
一例では、平均は次のようになり得る：
def initialize: return (0,0)
def add(el, (sum, count)): return (sum + 1, count + el)
def remove(el, (sum, count)): return (sum - 1, count - el)
def merge((sum1, count1), (sum2, count2)): return (sum1 + sum2, count1 + count2)
def finalize((sum1, count1)): return sum1 / count1
【０３００】
関数定義ＡＰＩは、構造内のジェネリック関数／ストアドプロシージャに対応することができ、ジェネリック関数を参照して定義を乾燥させる（DRY up definitions）ことができる。汎用関数は、クエリの実行中に通常の結果セットで呼び出すこともでき、これによって、汎用関数がより便利になり、テストがより容易になる。
【０３０１】
一例では、これらはこのメソッドを使用して呼び出されてもよい：
call(aggregation_function, *L)：１つ又は複数の要素の集約を追加及び終了
【０３０２】
この例で続けて、インデックスの場合、何かを集約するために、次のような特別な種類のインデックスを作成してもよい：
term bindings
value bindings
aggregation bindings
【０３０３】
集約バインディングは、入力要素上の関数呼び出しのように見えてもよく、ユーザ定義又は組み込みの集約関数を参照してもよい。
【０３０４】
集約バインディングは、常に最後に来てもよい。インデックスに集約バインディングがある場合、「ref」毎に値タプルを有することが保証されなくなることがある。代わりに、値がサブタームのように機能することができる。強力な一貫性により、集約に対する追加及びリムーブを推測する（dead reckon）ことが可能になる場合がある。バージョンが作成、更新、及びリムーブされると、「doclist」の値が一時的に更新される場合がある。
【０３０５】
インデックスが集約だけでなく任意の値をカバーする場合、「match()」関数又は「range()」関数の値のペアに対して範囲クエリを実行し、それらを再び集約関数に渡してマージしてもよい。
【０３０６】
一般的な集約は、組み込み関数を含んでもよい。組み込み関数には、次のものが含まれ得る：
max()：top(l)と同等
min()：bottom(l)と同等
count()：要素の数を数える
distinct()：一意の「L's」のリストを保持する
sum()：確認された全ての要素の合計を保持する
average()：平均を保持する
median()：中央値を保持する
【０３０７】
追加の組み込み関数は、損失のある（lossy）集約を含んでもよい。損失のある集約には、次のものが含まれ得る：
top(N)：順序付けられたリストでＮ個の最小「L's」を保持する（retain the N smallest L's）
(score, gamelD)のハイスコアリスト
bottom(N)：上記の逆
histogram(...)：ユーザ定義のバケット（bucketing）でヒストグラムを維持する
【０３０８】
インデックス「doclist」の値は、「T」タイプであってもよいが、「match()」の結果は、ファイナライザを適用してもよく、「L」タイプであってもよい。開発者は、通常、結果セットで「T」タイプを見ることがない。「T」タイプは、データベース１００によってメタデータとして利用可能にされてもよい。
【０３０９】
インデックスに複数のタームがある場合、各タームレベルで同じ集約を実行することができる。これにより、データベース１００のユーザは、階層化されたバケットを作成できる。
【０３１０】
データベース１００は、Ｎエントリ毎に部分的集約のスナップショットを実現し、スナップショットに加えて先頭又は末尾のインデックスタプル又はインスタンスに基づいて、実行時に最終結果を計算することができる。
【０３１１】
複数タームのインデックス付き集約のティアは、複数回計算される代わりにマージされてもよい。
【０３１２】
＜ジョブスケジューラ＞
データベース１００は、ジョブスキャナを含んでもよい。ジョブスキャナは、定期的なメンテナンスタスクを自動的にスケジュールすることができる。定期的なメンテナンスタスクは、継続的な管理タスク及び単一発行タスクであってよい。単一発行タスクは、ユーザのアクションによってトリガーされることがある。ユーザアクションは、インデックス定義アクションを変更する場合がある。データベース１００は、スケジュールされて実行中のタスクと最近終了したタスクとの内省を実行することができる。
【０３１３】
ジョブスキャナは、テーブルスキャンとしても知られる、データセット上で常時実行されるループを含んでもよい。テーブルスキャンは、遭遇した各ライブ行に対して、一連の未処理（outstanding）のジョブ要求を実行することができる。このレベルでは、調整がグローバルに適用される場合がある。
【０３１４】
テーブルスキャナのすぐ上のサブシステムは、基礎となるデータに適用されている処理中（in-flight）のジョブのリストを維持することができる。このサブシステムは、ジョブキューのアクティビティを監視することができ、新しいジョブが到着すると、それらを処理中のリストに挿入する。処理中のジョブがデータセット全体に適用されると、ジョブに完了のマークが付けられる場合がある。
【０３１５】
例示的かつ非限定的な実施形態において、このジョブスキャナのアーキテクチャは、以下のようなコードで実装されてもよい：
foreach Row in Tables: // 調整される
foreach Job in Queue:
Job(Row) match { // 実際には、アック／エラーがバッチされる
case Done => acknowledge job
case Error => retry N times
case _ => continue
【０３１６】
ジョブは、独自の完了状態と確認応答セマンティクスとを維持できる。ジョブスケジューラはキューに「少なくとも１回」のセマンティクスを実装できるため、ジョブはべき等（idempotent）でなければならない。
【０３１７】
データベース１００は、現在の反復でデータベース１００によって読み取られたバイト数に基づいて、反復間の単純なスリープを介して、スキャナのスループットを絞ることができる。
【０３１８】
データベース１００は、スキャナを含んでもよい。スキャナは、データセットのスナップショット上で動作することができる。
【０３１９】
データベース１００は、マッパーを含んでもよい。マッパーは、スキャナを使用して、データセット内のインスタンスのサブセットをスキャンできる。タスクがインスタンスに関係ある場合、インスタンス内の各バージョンに適用されるクロージャを返す場合がある。
【０３２０】
マッパーは、ジョブを実行してもよい。ジョブには、ユーザが開始した要求（インデックス作成など）及び管理タスク（データガベージコレクション、再分割など）が含まれる場合がある。
【０３２１】
マッパーは、ユーザが開始した作業について入力キューをチェックし、それらのジョブを静的に定義された管理タスクにミックスすることができる。
【０３２２】
マッパーは、マップタスクを実行してもよい。マップタスクは、コールバックで構成することができる。
【０３２３】
タスクは、全てのインスタンスバージョンが消費された後に、作業を実行しなければならない場合がある。マッパーは、データの終わりを示すために、空のセットでもう一度２番目のコールバックを呼び出すようにアレンジできる。
【０３２４】
＜キュー＞
データベース１００は、キューを含んでもよい。キューは、時間分割される場合がある。キューは、ジョブの状態をサポートすることができる。
【０３２５】
キューは、時間パラメータを含むことができる。時間パラメータは、既存のものであってもよい。時間パラメータは、ジョブが実行に好適になる時間として使用できる。
【０３２６】
キューは、状態パラメータを含むことができる。状態パラメータは、スケジュールされた状態パラメータ、処理状態パラメータ、及び終了状態パラメータであってもよい。
【０３２７】
キューは、エンキュー関数を含んでもよい。
【０３２８】
キューは、デキュー関数を含んでもよい。
【０３２９】
データベース１００は、レプリカ毎に１つのキューを、そのノードへ型付けされた永続的なチャネルの類似物として維持することができる。データベース１００の単一発行ジョブのコーディネータノードは、トポロジ内の各レプリカにジョブを展開することができる。
【０３３０】
バックグラウンド・タスクは、クラスタ全体又はデータベース毎に１つのインスタンスに制限されるか、特定のデータ範囲に割り当てられる場合がある。バックグラウンド・タスクに特定のデータ範囲が割り当てられている場合、実行中のノードは、その範囲のデータレプリカである可能性がある。各バックグラウンド・タスクの実行状態は、一貫性のあるメタデータストアに保持されるため、スケジュールされたタスクがノードに依存しない方法で実行される。例えば、ノードに障害が発生したり、クラスタから離脱したりした場合、そのタスクは、他の有効なノードに自動的に再割り当てされ、再起動又は再開される。
【０３３１】
データベース１００は、リソース・スケジューラを含んでもよい。バックグラウンド・タスクの実行スループットは、適応型運用データベースのリソース・スケジューラによって制御することができる。例えば、テナントに関連付けられていない一般的なバックグラウンド・タスクの作業は、低優先度で実行され、アイドルリソースが同期要求へのバックグラウンド・タスクの影響を許可及び排除するため、バックグラウンド・タスクを続行することができる。
【０３３２】
＜運用管理＞
データベース１００の運用管理インフラストラクチャは、一貫性メカニズム及びプロセススケジューラを再利用して、データベースが常にコヒーレントな状態にあること、及び、運用変更によって生成される作業が他の作業負荷に悪影響を与えないことを保証する。
【０３３３】
＜トポロジの変更＞
データベース１００クラスタの複製トポロジは、一貫したステートマシンとして維持されてもよい。クラスタの状態が変化すると、全てのノードで一貫して複製されたメタデータストアに目的の状態がコミットされ、バックグラウンド・タスクは、クラスタを現在の状態から目的の状態に段階的に移行させることができる。
【０３３４】
状態遷移は、クラスタ内の物理ノードの追加、リムーブ、又は交換、データセンターの追加又はリムーブ、論理データベースの複製構成の変更などを含んでよい。
【０３３５】
クラスタの遷移状態中、ノード障害及び他の中断は、クラスタの可用性に影響を与えないことができる。スーパーバイザプロセスを実行しているノードに障害が発生すると、スーパーバイザロールでのリース（lease）が期限切れになり、別のノードがそのロールを引き受ける場合がある。各移行プロセス内の全ての増分ステップは、べき等であってよく、安全に再起動又は復帰することができる。
【０３３６】
＜その他のメンテナンスタスク＞
データベース１００は、他のメンテナンスタスクを含んでもよい。他のメンテナンスタスクには、論理形式及びストレージ形式のバックアップの作成、アンチエントロピーチェックの実行、及びオンディスクストレージ形式のアップグレードが含まれていてよい。
【０３３７】
これらのメンテナンスタスクは、ステートマシンの移行を必要としなくてもよいが、生産トラフィックへの影響を避けるために、プロセススケジューラになお依拠することがある。
【０３３８】
本開示の詳細な実施形態が、本明細書に開示されており、しかしながら、開示された実施形態は、本開示の単なる例示であり、様々な形態で具現化できることを理解されたい。従って、本明細書で開示される特定の構造及び機能の詳細は、限定として解釈されるべきではなく、単に特許請求の範囲の根拠として、及び実質的に任意の適切に詳細な構造において本開示を様々に採用するように、当業者へ教示するための代表的な根拠として、解釈されるべきである。
【０３３９】
本明細書で使用される「１つ（a）」又は「１つ（an）」という用語は、１つ又は複数として定義される。本明細書で使用される「別の、他の（another）」という用語は、少なくとも第２以上として定義される。本明細書で使用される「含む（including）」及び／又は「有する（having）」という用語は、含む（すなわちオープントランジション（open transition））として定義される。
【０３４０】
本開示のいくつかの実施形態のみを示して説明したが、添付の特許請求の範囲で説明するような本開示の精神及び範囲から逸脱することなく、多くの変更及び修正を行うことができることは、当業者には明らかであろう。本明細書で参照されている、国内外の全ての特許出願及び特許、並びに他の全ての刊行物は、法律で許可されている範囲で、その全体が本明細書に組み込まれている。
【０３４１】
本明細書で説明される方法及びシステムは、プロセッサ上でコンピュータソフトウェア、プログラムコード、及び／又は命令を実行する機械を介して、部分的又は全体的に展開することができる。本開示は、機械上の方法として、機械の一部又は機械に関するものとしてのシステム若しくは装置として、或いは、１つ以上の機械で実行されるコンピュータ可読媒体に組み入れられるコンピュータプログラム製品として、実装することができる。実施形態において、プロセッサは、サーバ、クラウドサーバ、クライアント、ネットワーク・インフラストラクチャ、モバイルコンピューティング・プラットフォーム、固定コンピューティング・プラットフォーム、或いは他のコンピューティング・プラットフォームの、一部であってもよい。プロセッサは、プログラム命令、コード、バイナリ命令などを実行可能な、任意の種類の計算又は処理デバイスであってよい。プロセッサは、シグナルプロセッサ、デジタルプロセッサ、埋め込みプロセッサ、マイクロプロセッサ、又は、コプロセッサ（数学コプロセッサ、グラフィックコプロセッサ、通信コプロセッサなど）、及びそこに格納されているプログラムコードやプログラム命令の実行を直接的又は間接的に促進することができるものといった、任意のバリアントであってよく、或いはそれらを含んでいてもよい。更に、プロセッサは、複数のプログラム、スレッド、及びコードの実行が可能であってもよい。スレッドを同時に実行して、プロセッサのパフォーマンスを向上させると共に、アプリケーションの同時操作を容易にすることができる。実現のために、本明細書で説明される方法、プログラムコード、プログラム命令などは、１つ以上のスレッドで実行されてもよい。スレッドは、関連付けられた優先順位が割り当てられている可能性のある他のスレッドを生成してもよく、プロセッサは、優先順位、或いは、プログラムコードで提供される命令に基づいた他の順序に基づいて、それらのスレッドを実行する。プロセッサ、又はそれを利用する任意の機械は、本明細書及び他の場所で説明される方法、コード、命令、及びプログラムを保存する、非一過性のメモリを含んでもよい。プロセッサは、本明細書及び他の場所で説明される方法、コード、及び命令を格納できる非一過性の記憶媒体に対して、インタフェースを介してアクセスしてもよい。方法、プログラム、コード、プログラム命令、又はコンピュータデバイスや処理デバイスによって実行可能な他のタイプの命令を格納するための、プロセッサに関連付けられた記憶媒体には、限定されるものではないが、ＣＤ−ＲＯＭ、ＤＶＤ、メモリ、ハードディスク、フラッシュドライブ、ＲＡＭ、ＲＯＭ、キャッシュなどのうちの１つ以上が含まれていてよい。
【０３４２】
プロセッサには、マルチプロセッサの速度及びパフォーマンスを向上させることができる、１つ以上のコアが含まれてよい。実施形態において、そのプロセッサは、デュアルコアプロセッサ、クアッドコアプロセッサ、他のチップレベルマルチプロセッサ、及び、２つ以上の独立したコア（ダイと呼ばれる）を結合する類のものであってよい。
【０３４３】
本明細書に記載の方法及びシステムは、サーバ、クライアント、ファイアウォール、ゲートウェイ、ハブ、ルーター、又は他のそのようなコンピュータ及び／又はネットワークハードウェア上で、コンピュータソフトウェアを実行する機械を通じて、部分的又は全体的に展開されてよい。ソフトウェアプログラムは、ファイルサーバと、プリントサーバと、ドメインサーバと、インターネットサーバと、イントラネットサーバと、クラウドサーバと、セカンダリサーバ、ホストサーバ、分散サーバなどの他のバリアントとを含み得る、サーバに関連付けることができる。サーバには、メモリと、プロセッサと、コンピュータ読み取り可能メディアと、ストレージメディアと、ポート（物理及び仮想）と、通信デバイスと、有線又は無線のメディアなどを介して他のサーバ、クライアント、マシン、及びデバイスにアクセス可能なインタフェースとのうちの、１つ以上が含まれてよい。本明細書及び他の場所で説明される方法、プログラム、又はコードは、サーバによって実行されてもよい。更に、本出願で説明されている方法の実行に必要な他のデバイスは、サーバに関連付けられたインフラストラクチャの一部と見なすことができる。
【０３４４】
サーバは、クライアント、他のサーバ、プリンター、データベースサーバ、プリントサーバ、ファイルサーバ、通信サーバ、分散サーバ、ソーシャルネットワークなどを含むがこれらに限定されない他のデバイスへの、インタフェースを提供してもよい。更に、この結合及び／又は接続により、ネットワークを介したプログラムのリモート実行が容易になる場合がある。一部又は全てのそれらのデバイスのネットワーキングは、本開示の範囲から逸脱することなく、１つ又は複数の場所での、プログラム又は方法の並列処理を促進することができる。加えて、インタフェースを介してサーバに接続されたデバイスの何れかは、方法、プログラム、コード、及び／又は命令を保存可能な、少なくとも１つの記憶媒体を含んでもよい。セントラルリポジトリは、様々なデバイスで実行されるプログラム命令を提供する場合がある。この実装において、リモートリポジトリは、プログラムコード、命令、及びプログラムのための記憶媒体として機能することができる。
【０３４５】
ソフトウェアプログラムは、ファイルクライアントと、プリントクライアントと、ドメインクライアントと、インターネットクライアントと、イントラネットクライアントと、二次クライアント、ホストクライアント、分散クライアントなどの他のバリアントとを含み得る、クライアントに関連付けられてもよい。クライアントには、メモリと、プロセッサと、コンピュータ読み取り可能メディアと、ストレージメディアと、ポート（物理及び仮想）と、通信デバイスと、有線又は無線のメディアなどを介して他のクライアント、サーバ、マシン、及びデバイスにアクセス可能なインタフェースとのうちの、１つ以上が含まれてよい。本明細書及び他の場所で説明される方法、プログラム、又はコードは、クライアントによって実行されてもよい。更に、本出願で説明されている方法の実行に必要な他のデバイスは、クライアントに関連付けられたインフラストラクチャの一部と見なすことができる。
【０３４６】
クライアントは、サーバ、他のクライアント、プリンター、データベースサーバ、プリントサーバ、ファイルサーバ、通信サーバ、分散サーバなどを含むがこれらに限定されない他のデバイスへの、インタフェースを提供してもよい。更に、この結合及び／又は接続により、ネットワークを介したプログラムのリモート実行が容易になる場合がある。一部又は全てのそれらのデバイスのネットワーキングは、本開示の範囲から逸脱することなく、１つ又は複数の場所での、プログラム又は方法の並列処理を促進することができる。加えて、インタフェースを介してクライアントに接続されたデバイスの何れかは、方法、プログラム、アプリケーション、コード、及び／又は命令を保存可能な、少なくとも１つの記憶媒体を含んでもよい。セントラルリポジトリは、様々なデバイスで実行されるプログラム命令を提供する場合がある。この実装において、リモートリポジトリは、プログラムコード、命令、及びプログラムのための記憶媒体として機能することができる。
【０３４７】
本明細書で説明される方法及びシステムは、ネットワーク・インフラストラクチャを介して、部分的又は全体的に展開されてもよい。ネットワーク・インフラストラクチャには、コンピューティングデバイス、サーバ、ルーター、ハブ、ファイアウォール、クライアント、パーソナルコンピュータ、通信デバイス、ルーティングデバイス、及び、当業界で既知のその他の能動的及び受動的なデバイス、モジュール、及び／又はコンポーネントなどの、要素が含まれてよい。ネットワーク・インフラストラクチャに関連付けられたコンピューティング及び／又は非コンピューティングデバイスは、他のコンポーネントとは別に、フラッシュメモリ、バッファ、スタック、ＲＡＭ、ＲＯＭなどの記憶媒体を含んでもよい。本明細書及び他の場所で説明されるプロセス、方法、プログラムコード、命令は、ネットワーク・インフラストラクチャの要素のうちの１つ又は複数によって実行することができる。本明細書で説明される方法及びシステムは、ソフトウェア・アズ・ア・サービス（ＳａａＳ）、プラットフォーム・アズ・ア・サービス（ＰａａＳ）、及び／又はインフラストラクチャ・アズ・ア・サービス（ＩａａＳ）の機能を包含するものを含む、あらゆる種類のプライベート、コミュニティ、又はハイブリッドのクラウドコンピューティング・ネットワーク、或いは、クラウドコンピューティング環境での使用に適合させることができる。
【０３４８】
本明細書及び他の場所で説明される方法、プログラムコード、及び命令は、複数のセルを有するセルラーネットワーク上で実装されてもよい。セルラーネットワークは、周波数分割多元接続（ＦＤＭＡ）ネットワーク、或いは、符号分割多元接続（ＣＤＭＡ）ネットワークの何れかである。セルラーネットワークは、モバイルデバイス、セルサイト、基地局、中継器、アンテナ、タワーなどを含んでもよい。セルネットワークは、ＧＳＭ、ＧＰＲＳ、３Ｇ、ＥＶＤＯ、メッシュ、又はその他のネットワークタイプであってもよい。
【０３４９】
本明細書及び他の場所で説明される方法、プログラムコード、及び命令は、モバイルデバイス上に或いはモバイルデバイスを介して実装されてもよい。モバイルデバイスには、ナビゲーション機器、携帯電話、モバイルフォン、携帯情報端末、ラップトップ、パームトップ、ネットブック、ポケットベル、電子書籍リーダー、音楽プレーヤーなどが含まれてよい。これらのデバイスには、他のコンポーネントとは別に、フラッシュメモリ、バッファ、ＲＡＭ、ＲＯＭ、及び１つ以上のコンピューティングデバイスなどの、記憶媒体が含まれてよい。モバイルデバイスに関連付けられたコンピューティングデバイスは、そこに格納されたプログラムコード、方法、及び命令を実行できるようになってもよい。或いは、モバイルデバイスは、他のデバイスと連携して命令を実行するように構成されてもよい。モバイルデバイスは、サーバと接続されてプログラムコードを実行するように構成された、基地局と通信する場合がある。モバイルデバイスは、ピアツーピアネットワーク、メッシュネットワーク、又は他の通信ネットワーク上で通信することができる。プログラムコードは、サーバに関連付けられた記憶媒体に格納され、サーバ内に埋め込まれたコンピューティングデバイスによって実行されてもよい。基地局は、コンピューティングデバイス及び記憶媒体を含んでよい。その記憶装置は、基地局に関連付けられたコンピューティングデバイスによって実行される、プログラムコード及び命令を記憶してもよい。
【０３５０】
コンピュータソフトウェア、プログラムコード、及び／又は命令は、以下を含む機械可読媒体に格納及び／又はアクセスすることができる：一定期間に計算に使用されるデジタルデータを保持するコンピュータコンポーネント、デバイス、及び記録媒体；ランダムアクセスメモリ（ＲＡＭ）として知られる半導体ストレージ；光ディスクと、ハードディスク、テープ、ドラム、カード、及びその他の種類といった磁気ストレージの形式とのような、典型的により永続的なストレージ用の大容量ストレージ；プロセッサレジスタ、キャッシュメモリ、揮発性メモリ、不揮発性メモリ；ＣＤ、ＤＶＤといった光学ストレージ；フラッシュメモリ（ＵＳＢスティックやキーなど）、フロッピーディスク、磁気テープ、紙テープ、パンチカード、独立型ＲＡＭディスク、Ｚｉｐドライブ、リムーバブル大容量ストレージ、オフラインといったリムーバブルメディア；ダイナミックメモリ、スタティックメモリ、読み取り／書き込みストレージ、可変ストレージ、読み取り専用、ランダムアクセス、シーケンシャルアクセス、ロケーションアドレス可能、ファイルアドレス可能、コンテンツアドレス可能、ネットワーク接続ストレージ、ストレージエリアネットワーク、バーコード、磁気インクなどといった、他のコンピューターメモリ。
【０３５１】
本明細書で説明される方法及びシステムは、物理的及び／又は無形のアイテムを、ある状態から別の状態に変換することができる。更に、本明細書で説明される方法及びシステムは、物理的及び／又は無形のアイテムを表すデータを、ある状態から別の状態に変換することもできる。
【０３５２】
図面全体のフローチャート及びブロック図内のものを含む、本明細書で説明及び図示された要素は、要素間の論理的境界を意味する。しかしながら、ソフトウェア又はハードウェアのエンジニアリング慣行に従って、描かれた要素及びそれらの機能は、モノリシックソフトウェア構造として、独立型ソフトウェアモジュールとして、或いは、外部ルーチン、コード、サービスなど、又はそれらの任意の組み合わせを採用したモジュールとして、そこに格納されたプログラム命令を実行可能なプロセッサを有する、コンピュータ実行可能なメディアを介してマシンに実装することができ、そしてそのような実装は全て、本開示の範囲内にあり得る。そのような機械の例には、これらに限定されるものではないが、携帯情報端末、ラップトップ、パーソナルコンピュータ、携帯電話、その他の携帯型コンピューティングデバイス、医療機器、有線又は無線の通信デバイス、トランスデューサ、チップ、計算機、衛星、タブレットＰＣ、電子書籍、ガジェット、電子デバイス、人工知能を備えたデバイス、コンピューティングデバイス、ネットワーク機器、サーバ、ルーターなどが含まれてよい。更に、フローチャート及びブロック図に描かれた要素や他の論理コンポーネントは、プログラム命令を実行可能なマシン上で実装されてもよい。従って、前述の図面及び説明は、開示されたシステムの機能的側面を示しているが、これらの機能的側面を実装するためのソフトウェアの特定の配置は、明示的に述べられるか文脈から明確でない限り、これらの説明から推測されるべきではない。同様に、上記で特定及び説明された様々なステップが変更されてもよく、ステップの順序が本明細書で開示された技術の特定の用途に適合されてもよいことは、理解されるであろう。そのような変形及び修正は全て、本開示の範囲内に含まれることが意図されている。そのため、様々なステップの順序の描写及び／又は説明は、特定の用途で必要とされない限り、又は明示的に述べられるか文脈から明確でない限り、それらのステップの特定の実行順序を必要とすると理解されるべきではない。
【０３５３】
上述の方法及び／又はプロセス、並びにそれらに関連するステップは、特定の用途に適した、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの任意の組み合わせにおいて、実現することができる。ハードウェアは、汎用コンピュータ及び／又は専用コンピューティングデバイスや特定のコンピューティングデバイス、又は特定のコンピューティングデバイスの特定の側面やコンポーネントを含んでもよい。プロセスは、内部及び／又は外部メモリと共に、１つ又は複数の、マイクロプロセッサ、マイクロコントローラ、埋め込みマイクロコントローラ、プログラム可能なデジタルシグナルプロセッサ、又は他のプログラム可能なデバイスにおいて、実現することができる。加えて又は代わりに、プロセスは、特定用途向け集積回路、プログラム可能なゲートアレイ、プログラム可能なアレイロジック、又は電子信号を処理するように構成することができる任意の他のデバイスやデバイスの組み合わせにおいて、具体化されてもよい。更に、１つ又は複数のプロセスが、機械可読媒体上で実行可能なコンピュータ実行可能コードとして実現できることは、理解されよう。
【０３５４】
コンピュータ実行可能コードは、Ｃなどの構造化プログラミング言語、Ｃ＋＋などのオブジェクト指向プログラミング言語、或いは、プロセッサの異種の組み合わせ、プロセッサアーキテクチャ、或いは、様々なハードウェア及びソフトウェア、又はプログラム指示を実行できる任意の他のマシンの組み合わせと同様に、上記のデバイスの何れかで実行するために保存、コンパイル、又は解釈できる、任意の他の高レベル又は低レベルプログラミング言語（アセンブリ言語、ハードウェア記述言語、及びデータベースプログラミング言語とテクノロジとを含む）を使用して、作成することができる。
【０３５５】
従って、一態様において、上記の方法及びそれらの組み合わせは、１つ又は複数のコンピューティングデバイス上で実行するときにそれらのステップを実行する、コンピュータ実行可能コードで具現化することができる。別の態様において、方法は、それらのステップを実行するシステムで具現化することができ、いくつかの方法でデバイスに分散されてもよく、或いは、機能の全てが専用の独立型デバイスや他のハードウェアに統合されてもよい。他の態様において、上記のプロセスに関連するステップを実行するための手段は、上述したハードウェア及び／又はソフトウェアの何れかを含んでよい。そのような置換及び組み合わせは全て、本開示の範囲内に含まれることが意図されている。
【０３５６】
本開示は、詳細に示されて説明された好ましい実施形態に関連して開示されたが、それに対する様々な修正及び改善は、当業者には容易に明らかになるであろう。従って、本開示の精神及び範囲は、前述の例によって限定されるものではなく、法律で許容される最も広い意味で理解されるべきである。
【０３５７】
本開示を説明する文脈における（特に添付の特許請求の範囲における）、「１つ（a）」と「１つ（an）」と「その（the）」という用語及び類似の指示物の使用は、本明細書で特に明記しない限り、又は文脈により明らかに矛盾しない限り、単数及び複数の両方を包含すると解釈されるべきである。「含む（comprising）」、「有する（having）」、「含む（including）」、及び「含む（containing）」という用語は、特に断り書きのない限り、無制限の用語（つまり「含むが、これに限定されない」という意味）と解釈されるべきである。本明細書における値の範囲の列挙は、本明細書で特に明記しない限り、範囲内に入る各個別の値を個別に参照する略記法として機能することを意図しているだけであり、各個別の値は、本明細書に個別に列挙されているかのように明細書に組み込まれている。本明細書で説明される全ての方法は、本明細書で特に指示されない限り、又は文脈によって明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるありとあらゆる例、又は例示的な言葉（例えば、「など」）の使用は、単に本開示をより良く解明することを意図しており、特に請求されない限り本開示の範囲の限定をもたらすものではない。請求されていない要素が開示の実施に不可欠であることを、明細書中の言語が示していると解釈されるべきではない。
【０３５８】
前述の記載により、当業者は、現在その最良のモードであると考えられるものを作成及び使用することができるが、当業者は、本明細書の特定の実施形態、方法、及び例の、変形、組み合わせ、及び等価物の存在を、理解及び認識するであろう。従って、本開示は、上記の実施形態、方法、及び例によって限定されるべきではなく、本開示の範囲及び精神内の全ての実施形態及び方法によって限定されるべきである。
【０３５９】
特定の機能を実行するための「手段」又は特定の機能を実行するための「ステップ」を、明示的に述べていない特許請求の範囲内の要素は、米国特許法第１１２条（ｆ）で指定された「手段」又は「ステップ」の節として解釈されるものではない。特に、特許請求の範囲での「ステップ」の使用は、米国特許法第１１２条（ｆ）の規定を呼び出すことを意図したものではない。
【０３６０】
当業者は、本発明のシステムの機能的利益を享受するために、多数の設計構成が可能であることを理解することができる。従って、本発明の実施形態の多種多様な構成及び配置を考慮すると、本発明の範囲は、上記の実施形態によって狭められるのではなく、添付の特許請求の範囲の広さによって反映される。
【符号の説明】
【０３６１】
１００：データベース、１０６：キー、１０８：インデックス、１１０：クラス、１１２：インスタンス、１１８：クエリ・ストリーミングエンジン、１２２：エラスティック・アーキテクチャ、１２６：動的リソース・スケジューリング、１３０：プロセス分離エンジン、１３２：リレーショナル・クエリ言語、１３８：カラムナ分析システム、１４０：マルチ・テナンシーエンジン、１４２：テナント、１４４：オンディスク・ストレージエンジン、１４８：バックグラウンド・タスクエンジン、１５４：マスターレス・アーキテクチャ、１５６：ＱｏＳ管理、１６０：再帰的マルチ・テナンシー、１６８：行レベルセキュリティ、１７０：行レベル認証、１７２：行レベル識別、１７４：ＤＡＧタスク実行エンジン、１８０：トランザクション分解アルゴリズム、１８２：レプリケーションアルゴリズム、１８４：オンディスク・ストレージエンジン、１９６：機能的クエリ言語、１９８：テンポラル・クエリ関数
【図１Ａ】
2020514935.tif 000003
【図１Ｂ】
2020514935.tif 000004
【国際調査報告】
2020514935.tif 000005
2020514935.tif 000006
2020514935.tif 000007
2020514935.tif 000008
2020514935.tif 000009
2020514935.tif 000010
2020514935.tif 000011
2020514935.tif 000012
2020514935.tif 000013
2020514935.tif 000014
2020514935.tif 000015
2020514935.tif 000016