JP2020514935A - データベース用の方法及びシステム - Google Patents
データベース用の方法及びシステム Download PDFInfo
- Publication number
- JP2020514935A JP2020514935A JP2020500016A JP2020500016A JP2020514935A JP 2020514935 A JP2020514935 A JP 2020514935A JP 2020500016 A JP2020500016 A JP 2020500016A JP 2020500016 A JP2020500016 A JP 2020500016A JP 2020514935 A JP2020514935 A JP 2020514935A
- Authority
- JP
- Japan
- Prior art keywords
- database
- transaction
- transactional
- transactions
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/105—Multiple levels of security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Abstract
データ記憶及び検索のためのデータベースシステムであって、トランザクション・データベースへのクエリ式を受け入れるように構成された動的データセットへの、リアルタイムアクセスを提供する分散データアーキテクチャを有し、トランザクション・データベースの少なくとも1つの基礎となるデータ構造から抽出されたトランザクション・データベースを概して含む。データベースシステムは、クエリ式を使用するクエリを介して、ユーザがトランザクション・データベースに問い合わせするように構成されたユーザインタフェースを含む。トランザクション・データベースは、動的データセット内のデータの現在の状態を反映するクエリへの応答を配信する。
Description
(関連出願との相互参照)
本出願は、2017年3月15日に出願された「データベース用の方法及びシステム」という名称の米国特許仮出願第62/471,584号の優先権を主張するものであり、それは参照により本明細書に完全に記載されているかのように組み込まれる。
本出願は、2017年3月15日に出願された「データベース用の方法及びシステム」という名称の米国特許仮出願第62/471,584号の優先権を主張するものであり、それは参照により本明細書に完全に記載されているかのように組み込まれる。
(分野)
本開示は、データベース用の方法及びシステム、並びに、トランザクション・データベースを展開する方法及びシステムに関するものであり、前記のトランザクション・データベースは、動的データセットへのリアルタイムアクセスを提供する分散データアーキテクチャを有し、前記の動的データセットは、トランザクション・データベースの少なくとも1つの基礎となるデータ構造から抽象化された、トランザクション・データベースへのクエリ式を受け入れるように構成されている。
本開示は、データベース用の方法及びシステム、並びに、トランザクション・データベースを展開する方法及びシステムに関するものであり、前記のトランザクション・データベースは、動的データセットへのリアルタイムアクセスを提供する分散データアーキテクチャを有し、前記の動的データセットは、トランザクション・データベースの少なくとも1つの基礎となるデータ構造から抽象化された、トランザクション・データベースへのクエリ式を受け入れるように構成されている。
(関連技術の説明)
従来の企業データベースは、主にビジネスレポートを実行するために作成及び最適化されていた。企業は、オンプレミス環境とクラウド環境との混合を含む様々な分散環境で大規模に展開されるアプリケーションなどの、運用機能をサポートするデータベースを、ますます必要としている。運用機能では、様々な地理的位置からリアルタイムでデータにアクセスする必要がある。従来の企業データベースは、SQLクエリやNoSQLクエリなどの従来のデータベースクエリ形式を使用するが、アプリケーション、プロセス、及びサービスが動作する関連運用データは、リレーショナルドメイン、ドキュメントドメイン、グラフドメイン、地理空間ドメイン、及び時間ドメインなどの、様々なドメインから、非常に広範な種類の形式を用いることがある。企業のワークフローには、ユーザ、プロセス、アプリケーションなどの中の広範なやり取りが関係するため、企業の内外で(多くの場合、マルチ・テナンシーと様々なアクセス権を有するユーザによるアクセスとが含まれる)、SaaS、Web、モバイル、及び前提のアプリケーション(premises application)と操作を含み、論理データベースのレベルでセキュリティを適用する従来のデータベースセキュリティシステムは、十分な粒度を提供しない。従来のデータベースでは、プロセスをきめ細かなレベルで効果的に分離できないため、通常、価値の高いプロセス(重要な操作をサポートするプロセスなど)を価値の低いプロセス(分析をサポートするプロセスなど)から分離し、その結果、機能毎に全く異なるデータベースが使用され、多くの場合、ピーク需要に備えてプロビジョニングする必要のある高価なハードウェアを高度に活用していない。従って、従来のデータベースのこれらの制限及び他の制限に対処するデータベースを含む、改善されたデータベース・プラットフォームが必要である。
従来の企業データベースは、主にビジネスレポートを実行するために作成及び最適化されていた。企業は、オンプレミス環境とクラウド環境との混合を含む様々な分散環境で大規模に展開されるアプリケーションなどの、運用機能をサポートするデータベースを、ますます必要としている。運用機能では、様々な地理的位置からリアルタイムでデータにアクセスする必要がある。従来の企業データベースは、SQLクエリやNoSQLクエリなどの従来のデータベースクエリ形式を使用するが、アプリケーション、プロセス、及びサービスが動作する関連運用データは、リレーショナルドメイン、ドキュメントドメイン、グラフドメイン、地理空間ドメイン、及び時間ドメインなどの、様々なドメインから、非常に広範な種類の形式を用いることがある。企業のワークフローには、ユーザ、プロセス、アプリケーションなどの中の広範なやり取りが関係するため、企業の内外で(多くの場合、マルチ・テナンシーと様々なアクセス権を有するユーザによるアクセスとが含まれる)、SaaS、Web、モバイル、及び前提のアプリケーション(premises application)と操作を含み、論理データベースのレベルでセキュリティを適用する従来のデータベースセキュリティシステムは、十分な粒度を提供しない。従来のデータベースでは、プロセスをきめ細かなレベルで効果的に分離できないため、通常、価値の高いプロセス(重要な操作をサポートするプロセスなど)を価値の低いプロセス(分析をサポートするプロセスなど)から分離し、その結果、機能毎に全く異なるデータベースが使用され、多くの場合、ピーク需要に備えてプロビジョニングする必要のある高価なハードウェアを高度に活用していない。従って、従来のデータベースのこれらの制限及び他の制限に対処するデータベースを含む、改善されたデータベース・プラットフォームが必要である。
ここでは、企業が使用する運用データベースやその他のデータベースを大幅に改善できるデータベース機能を備えた、改善されたデータベース・プラットフォームの方法及びシステムを提供する。これらには、リレーショナル・クエリ、キー/値クエリ、ドキュメントクエリ、検索クエリ、地理空間クエリ、グラフクエリ、及びテンポラル・クエリなどの、様々なクエリドメインを処理可能な、統合クエリモデルが含まれる。データベース・プラットフォームには、行レベルセキュリティ、行レベル認証、及び/又は行レベル識別(identity)などを含む、改善されたセキュリティ機能を含めることができる。QoS向けを含むプロセスの分離により、同じデータベースに対して実行される、クエリの優先順位付けが可能になり、これによって、同じデータベースで高価値の操作関連クエリと低価値のクエリとを処理できるようになり、ハードウェアの需要が減り、ハードウェアの使用率が低下する。マルチ・テナンシーが有効になり、データストレージ用の地理的ゾーンの選択を含む、グローバルな分配及び強力な一貫性のあるレプリケーションが可能になる。これらの及び他の多くの特徴及び能力は、本開示に記載されている。
実施形態では、SQLベースのデータベースとの機能的な同等性と、SQL及びNoSQLデータベースの特徴を包含する特徴セットとを有する、データベース用のアーキテクチャが提供される。実施形態では、SQL及びNoSQLの双方の機能を可能にし、リレーショナル・クエリモデルの使用を可能にする、データベースが提供される。実施形態では、検索クエリモデル、グラフクエリモデル、テンポラル・クエリモデル、地理空間クエリモデル、キー/値クエリモデル、ドキュメントクエリモデル、及び分析クエリモデルを含む、1つ又は複数の追加クエリモデルの使用を可能にする、リレーショナルデータベースが提供される。
実施形態では、異種のクエリモデルの使用を可能にするリレーショナルデータベース言語が提供される。実施形態では、行レベルセキュリティを含むデータベースが提供される。実施形態では、識別の行レベルの処理を提供するデータベースが提供される。実施形態では、行レベル認証を提供するデータベースが提供される。実施形態では、エラスティック(elastic)・アーキテクチャを提供するデータベースが提供される。実施形態では、マスターレス(masterless)構成及び操作を可能にするデータベースが提供される。実施形態では、再帰的なマルチ・テナンシー構成及び動作を可能にするデータベースが提供される。実施形態では、複数の地理的に多様なデータセンターやクラウド・インフラストラクチャ・プロバイダに複製できる、データベースが提供される。実施形態では、機能的なリレーショナル・クエリ言語がデータベースへ提供される。
実施形態では、データベースにプロセス分離機能が提供される。実施形態では、データベースのプロセス分離を可能にするために、再帰的スケジューリングが提供される。実施形態では、データベースのプロセス分離に関連して、完全に公平なキューイングの再帰的な実装が提供される。実施形態では、データベースクラスタ全体を含み、データベースへ動的リソース・スケジューリングが提供される。実施形態では、データベースへの動的リソース・スケジューリングが、クエリ毎に提供される。実施形態では、データベースへの動的リソース・スケジューリングが、ユーザ毎に提供される。本明細書では、データベースの分散ストレージ層を提供する。分散ストレージ層には、分散データベース用のトランザクション分解(resolution)アルゴリズムが提供される場合がある。
実施形態では、異なるストレージノードに情報を複製するレプリケーションログを使用するなどの、分散データベース用のレプリケーションアルゴリズムが提供される。実施形態では、分散データベース用のオンディスク・ストレージエンジンが提供される。実施形態では、クエリ毎のサービス品質管理を有するデータベースが提供される。実施形態では、データベース内のバックグラウンド分析タスクの実行が可能なデータベースが提供される。実施形態では、運用データベースに対して有向非循環タスクグラフが作用する。実施形態では、データベースがカラムナ分析(columnar analytics)機能を含んでもよい。実施形態では、ストリーミングクエリを可能にするデータベースが提供される。
実施形態において、データの保存及び検索のためのデータベースシステムは、動的データセットへのリアルタイムアクセスを提供する分散データアーキテクチャを有する、トランザクション・データベースを含んでおり、前記の動的データセットは、トランザクション・データベースへのクエリ式を受け入れるように構成され、トランザクション・データベースは、そのトランザクション・データベースの少なくとも1つの基礎となるデータ構造から抽象化される。実施形態において、データベースシステムは、クエリ式を使用するクエリを介してユーザがトランザクション・データベースをクエリするように構成された、ユーザインタフェースを含んでいる。トランザクション・データベースは、動的データセット内のデータの現在の状態を反映する、クエリへの応答を配信する。
実施形態において、ユーザインタフェースは、複数のユーザによる同時クエリを容易にする。実施形態において、トランザクション・データベースは、クエリへの応答を返すのに必要な時間を実質的に損なうことなく、少なくとも千人のユーザによるクエリへの応答を促進する。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態において、トランザクション・データベースは、トランザクションのロック及びコミットの少なくとも一方に、コンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがRaftアルゴリズムである。
実施形態において、トランザクション・データベースは、データベーストランザクションの単相ロックを可能にする。実施形態において、トランザクション・データベースは、データベーストランザクションの単相コミットを可能にする。実施形態では、データベースが企業向けのオンプレミス・データベースである。実施形態では、データベースがクラウド・データベースである。実施形態では、データベースがパブリッククラウド・データベースである。実施形態では、データベースがプライベートクラウド・データベースである。
実施形態では、トランザクション・データベースが電子商取引システムと統合される。実施形態では、トランザクション・データベースがソーシャル・ネットワークシステムと統合される。実施形態では、トランザクション・データベースが広告ネットワークシステムと統合される。実施形態では、トランザクション・データベースが通信ネットワークと統合される。実施形態では、トランザクション・データベースがロケーションベースのサービスシステムと統合される。実施形態では、トランザクション・データベースが非トランザクション・データベースと統合される。実施形態では、トランザクション・データベースがオペレーティングシステムと統合される。
実施形態では、トランザクション・データベースがディスクストレージ・インフラストラクチャを使用する。実施形態において、トランザクション・データベースは、ストレージエリアネットワーク・ストレージ・インフラストラクチャを使用する。実施形態において、トランザクション・データベースは、データストレージ用のオペレーティングシステム・コンポーネントと統合される。実施形態では、トランザクション・データベースがマルチクラウド展開をサポートする。実施形態において、トランザクション・データベースは、インスタンス分割のために主キーを用いるデータ分割を使用し、インデックスに対して用語分割を使用する。実施形態において、トランザクション・データベースは、圧縮ログ構造化マージツリー(compressed log-structured merge trees)として実装される、ローカル・ストレージエンジンを使用する。
実施形態において、データの保存及び検索のためのデータベースシステムは、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。そのデータベースへのクエリは、トランザクション・データベースへアクセスするクライアントシステムのクライアントドライバ・ホストファイル内の、組み込み式ドメイン固有言語として実装される、機能的クエリ言語で表現される。実施形態において、クライアントドライバ・ホストファイルは、ソフトウェア開発ツールのデータベース機能の開始時にアクセスされる。
実施形態において、システムは、分散グローバルログを使用して、分散システムのための複数のデータトランザクションの原子性、一貫性、独立性、及び永続性を提供する、トランザクションエンジンを含んでいる。
実施形態では、分散システムが分散データアーキテクチャを有するデータベースである。実施形態では、その分散システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態では、分散システムがコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがRaftアルゴリズムである。実施形態において、分散システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散システムは、データベーストランザクションの単相コミットを可能にする。
実施形態において、データの保存及び検索のためのシステムは、一回のネットワーク往復中に(in a single network round trip)実行される、データトランザクション・ロック及びデータトランザクション・コミットの少なくとも一方を有する、分散システムを含んでいる。
実施形態では、その分散システムが分散データアーキテクチャを有するデータベースである。実施形態において、その分散システムは、分散システム全体のデータトランザクションについてのグローバルログを使用する。実施形態では、その分散システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態において、分散システムは、コンセンサスアルゴリズムを使用して、そのデータベースをロックするか、トランザクションをコミットするかを決定する。実施形態では、コンセンサスアルゴリズムがRaftアルゴリズムである。実施形態において、分散システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散システムは、データベーストランザクションの単相コミットを可能にする。
実施形態において、システムは、トランザクション・データベースのメモリ内に保存される際、並びに、トランザクション・データベースによって使用されるメモリロケーションへの及び同メモリロケーションからの送信中に暗号化される、データを備えた分散データアーキテクチャを有する、トランザクション・データベースを含んでいる。
実施形態では、そのトランザクション・データベースが機能的クエリ言語を使用する。実施形態において、そのトランザクション・データベースは、トランザクションのロック及びコミットの少なくとも一方にコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがRaftコンセンサスアルゴリズムである。実施形態において、トランザクション・データベースは、データベーストランザクションの単相ロックを可能にする。実施形態において、トランザクション・データベースは、データベーストランザクションの単相コミットを可能にする。
実施形態において、システムは、分散データ記憶及び検索システムと、データベースレコードの全履歴を維持及びインデックス付けするテンポラル・ストレージエンジンとを含んでいる。このシステムは、ユーザが選択するように構成された時間間隔での、データベーストランザクションのイベントストリームへのアクセスを容易にする。イベントストリームへのアクセス権は、イベントストリーム内の複数のイベント毎に個別に制御される。
実施形態において、その分散データ記憶及び検索システムは、分散データアーキテクチャを有するデータベースである。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態では、分散データ記憶及び検索システムがコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがRaftコンセンサスアルゴリズムである。実施形態において、分散システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散システムは、データベーストランザクションの単相コミットを可能にする。
実施形態において、システムは、ステートレスセッションを可能にし、トランザクション・コンテキストを覆い隠す(closes over)アクセストークンで各データトランザクションを識別する、データの記憶及び検索のための分散システムを含んでいる。
実施形態において、その分散システムは、分散データアーキテクチャを有するトランザクション・データベースである。実施形態において、トランザクション・データベース用のクエリは、ホストアプリケーション言語で記述され、ホストアプリケーション言語のセキュリティ機能を継承する。実施形態において、トランザクション・データベース用のクエリは、アトミックに(atomically)かつトランザクション毎に実行される。実施形態において、本質的にスケーラブルではないホストアプリケーション言語のクエリ・セマンティクスは、スケーラブルなセマンティクスに置き換えられる。実施形態において、分散システムは、トランザクション・データベース内のレコードのネイティブな地理的インデックス付けを可能にするように構成される。実施形態において、分散システムは、トランザクション・データベースでのネイティブな全文検索を可能にするように構成される。実施形態において、分散システムは、トランザクション・データベースを介したネイティブな反復機械学習を可能にするように構成される。
実施形態において、システムは、完全なトランザクション・オブジェクトとして送信されたクエリを受け入れるクエリ言語を使用する、分散データ記憶及び検索システムを含み、前記の完全なトランザクション・オブジェクトは、その分散データ記憶及び検索システムの読み書きのための単相プロセスを可能にする。
実施形態において、その分散データ記憶及び検索システムは、分散データアーキテクチャを有するデータベースである。実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースが機能的クエリ言語を使用する。実施形態では、分散データ記憶及び検索システムがコンセンサスアルゴリズムを使用する。実施形態では、コンセンサスアルゴリズムがRaftコンセンサスアルゴリズムである。実施形態において、分散データ記憶及び検索システムは、データベーストランザクションの単相ロックを可能にする。実施形態において、分散データ記憶及び検索システムは、データベーストランザクションの単相コミットを可能にする。
実施形態において、システムは、グローバル・トランザクションログ内の各トランザクションの位置に基づく、トランザクションの厳密な直列化可能性を使用して提供される、トランザクション一貫性を有する分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、そのトランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、ユーザがトランザクションの保存の時間間隔を設定できるようにする、テンポラル・ストレージエンジンを使用する。実施形態において、トランザクションの厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序(global transaction order)の単調に進むビュー(monotonically advancing view)を保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、クライアント間で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
実施形態において、システムは、グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性を使用して提供される、ロックレスのトランザクション一貫性を有する、分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、ユーザがトランザクションの保存の時間間隔を設定できるようにする、テンポラル・ストレージエンジンを使用する。実施形態において、トランザクションの厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最近適用されたログ位置を共有し、それによりクライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
実施形態において、システムは、コンセンサス戦略(consensus strategy)をデータベースロックに適用することによりデータベーストランザクションに提供される、トランザクション一貫性を有する分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するよう構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
実施形態において、システムは、グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性の使用と、データベーストランザクションについての楽観的ロッキングの使用とにより、データベーストランザクションに提供される、トランザクション一貫性を有する分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、ドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最近適用されたログ位置を共有し、それによりクライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
実施形態において、システムは、グローバル・トランザクションログ内のトランザクション位置に基づいた厳密な直列化可能性を使用して、データベーストランザクションに提供される、直列化可能保証を含む分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態において、トランザクション・データベースは、NoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
実施形態において、システムは、データベーストランザクションがグローバルログに記録される、分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態では、読み取り専用トランザクションが直列化可能である。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。実施形態において、クラスタ内のトランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最後に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供する。実施形態において、トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限される。権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持する。
実施形態において、システムは、分散データ記憶及び検索システムを含んでおり、この分散データ記憶及び検索システムを使用する少なくとも1つのテナントに固有のグローバルログで、データベーストランザクションが分散データ記憶及び検索システムに記録される。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの保存のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。
実施形態において、システムは、データベーストランザクションが、テナント、ポリシー、及びロールのうちの少なくとも1つによって分割されたグローバルログに記録される、分散データ記憶及び検索システムを含んでいる。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。実施形態において、トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含んでいる。
実施形態において、システムは、複数の分散システムについての複数の独立したトランザクションログにおける読み取りのトランザクション位置に基づいた、厳密な直列化可能性を使用して、複数の分散システムにわたる読み取りにトランザクション一貫性を提供する、分散データ記憶及び検索システムを含んでいる。
実施形態では、その複数の分散システムからの分散システムの少なくとも1つが、トランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの保存のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。
実施形態において、システムは、ハイブリッドクロックを使用して複数の分散データベースにわたってトランザクションの一貫性を提供し、クロック位置の対応の理解に基づいて直列化されたデータベーストランザクションを含む、分散データ記憶及び検索システムを含んでおり、前記のクロック位置は、複数の分散データベースの夫々のトランザクションログにトランザクションを記録するために使用される、複数のクロックについてのものである。
実施形態では、その分散データ記憶及び検索システムがトランザクション・データベースである。実施形態では、トランザクション・データベースがNoSQLクエリ言語を使用する。実施形態において、トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用する。実施形態において、厳密な直列化可能性は、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供される。
実施形態において、システムは、分散データ記憶及び検索システム用のテンポラル・アプリケーション・プログラミング・インタフェースを含んでおり、前記の分散データ記憶及び検索システムは、そのデータ記憶及び検索システム内のインスタンスのクラスに関連するイベントのストリームへサブスクライブするユーザを、前記のテンポラル・アプリケーション・プログラミング・インタフェースを介して受け入れるように構成されている。
実施形態において、そのテンポラル・アプリケーション・プログラミング・インタフェースは、関心のあるイベントにサブスクライブするリスナーを受け入れるように構成される。実施形態では、そのテンポラル・アプリケーション・プログラミング・インタフェースを介して、別のシステムにテーブルがストリーミングされる。実施形態では、テンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブするために、システムにインデックスが構成される。実施形態において、システムは、イベントについてテンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブするアプリケーションを含んでおり、前記のイベントは、そのアプリケーションに対して指定されるものである。実施形態では、テンポラル・アプリケーション・プログラミング・インタフェースを介して、時間的一貫性の保証と共に、ストリーミングクエリの範囲内のイベントストリームが提供される。実施形態では、分散データ記憶及び検索システムがトランザクション・データベースである。実施形態において、トランザクション・データベースは、指定された時間間隔でクエリに応じて、イベントのストリームを提供するように構成される。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、トランザクション・データベースのデータベースレコードの個々の行のレベルで、ユーザがセキュリティ許可を実施することを可能にする、行レベルアクセス制御システムとを含んでいる。
実施形態において、トランザクション・データベースは、トランザクション・データベースがデータ処理機能を提供するアプリケーションのエンドユーザによる、データベースへのダイレクトアクセスを容易にするように構成される。実施形態では、ポリシーに基づいてダイレクトアクセスが構成される。実施形態では、ポリシーに基づいた作業負荷についてダイレクトアクセスが構成される。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、データインフラストラクチャ能力の認識と、前記のトランザクション・データベースを使用するテナント、トランザクション、及び作業負荷の少なくとも1つに対するサービス品質要件の認識とに基づいて、前記のトランザクション・データベースについてのトランザクションをルーティングするように構成されている。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、計算リソース、メモリリソース、及び入出力リソースの少なくとも1つをテナント間で割り当て、少なくとも1つのリソースのテナント毎のリソース使用率を追跡する、前記のトランザクション・データベース用のテナント対応リソース・スケジューラとを含んでいる。
実施形態において、テナント対応リソース・スケジューラは、少なくとも1つの優先度インジケータに基づいてリソースを割り当てる。実施形態において、テナント対応リソース・スケジューラは、少なくとも1つのクォータ(quota)に基づいてリソースを割り当てる。実施形態において、システムは、ポリシー、ロール、及びルールのうちの少なくとも1つに基づいて、リソースに対するアクセスを制御するアクセス制御システムを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、計算リソース、メモリリソース、及び入出力リソースの少なくとも1つを作業負荷間で割り当て、少なくとも1つのリソースの作業負荷毎のリソース使用率を追跡する、前記のトランザクション・データベース用の作業負荷毎リソース・スケジューラとを含んでいる。
実施形態において、作業負荷毎リソース・スケジューラは、優先度の少なくとも1つのインジケータに基づいてリソースを割り当てる。実施形態において、作業負荷毎リソース・スケジューラは、少なくとも1つのクォータに基づいてリソースを割り当てる。実施形態において、システムは、作業負荷に適用されるポリシー、ロール、及びルールのうちの少なくとも1つに基づいて、リソースに対するアクセスを制御するアクセス制御システムを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、ポリシーに基づいて前記の分散データアーキテクチャ内で、計算リソース、メモリリソース、及び入出力リソースの少なくとも1つを割り当て、少なくとも1つのリソースのリソース使用率を追跡する、前記のトランザクション・データベース用のポリシー対応リソース・スケジューラとを含んでいる。
実施形態において、少なくとも1つのリソースは、優先度の少なくとも1つのインジケータに基づいて割り当てられる。実施形態において、少なくとも1つのリソースは、少なくとも1つのクォータに基づいて割り当てられる。実施形態において、システムは、ポリシー、ロール、及びルールのうちの少なくとも1つに基づいて、リソースに対するアクセスを制御するアクセス制御システムを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、レコードの履歴全体及びレコードの履歴のインデックスを保持する設定可能なリテンション・ウィンドウを有する、前記のトランザクション・データベースのテンポラル・ストレージエンジンとを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、レコードの全履歴を維持及びインデックス付けすると共に、ユーザが選択した時間間隔で履歴内のイベントのイベントストリームへのアクセスを容易にする、前記のデータベースのテンポラル・ストレージエンジンを備えている。
実施形態において、システムは、ユーザがクエリの時間間隔を指定するように構成されたトランザクション・データベースのクエリ言語を含み、そのトランザクション・データベースは、指定された時間間隔でクエリに応答するイベントストリームを提供する。
実施形態において、システムは、インスタンス、クラス、データベース、及びキーに編成された、オブジェクトリレーショナル・データモデルを使用する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。そのオブジェクトリレーショナル・データモデルは、半構造化されていてスキーマ・フリーである。
実施形態において、そのデータモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含んでいる。実施形態において、トランザクション・データベースは、インスタンスとして定義される半構造化ドキュメントとしてトランザクション・データベースに挿入されるレコードを含んでいる。実施形態では、インスタンスがクラスにグループ化される。実施形態では、クラスがデータベースにグループ化される。実施形態では、トランザクション・データベースがキーによって制御されるアクセスを含んでいる。実施形態では、トランザクション・データベースが関数としてパラメータ化されたクエリを含んでいる。実施形態において、トランザクション・データベースは、インデックスを用いて構築される派生関係を含んでいる。
実施形態において、システムは、オブジェクトリレーショナル・データモデルを使用する分散データアーキテクチャを有するトランザクション・データベースを含み、オブジェクトリレーショナル・データモデルの派生関係は、トランザクション・データベースのインデックスとして構築される。
実施形態において、そのオブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含んでいる。実施形態において、トランザクション・データベースは、インスタンスとして定義される半構造化ドキュメントとして挿入されるレコードを含んでいる。実施形態では、インスタンスがクラスにグループ化される。実施形態では、クラスがデータベースにグループ化される。実施形態では、トランザクション・データベースへのアクセスがキーによって制御される。実施形態において、トランザクション・データベースに対するクエリは、関数としてパラメータ化される。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、トランザクション・データベースのインデックスを使用して実施される制約を有するオブジェクトリレーショナル・データモデルを使用する。
実施形態において、そのオブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含んでいる。実施形態において、トランザクション・データベースは、インスタンスとして定義される半構造化文書として挿入されるレコードを含んでいる。実施形態では、インスタンスがクラスにグループ化される。実施形態では、クラスがデータベースにグループ化される。
実施形態では、トランザクション・データベースへのアクセスがキーによって制御される。実施形態において、トランザクション・データベースに対するクエリは、関数としてパラメータ化される。実施形態において、トランザクション・データベースは、インデックスで構築された派生関係を含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、前記のトランザクション・データベースからのドメイン固有の埋め込みアプリケーション言語出力を公開する複数のドライバによって媒介される、前記のトランザクション・データベース用のクエリ言語を含んでいる。
実施形態において、システムは、複数のアプリケーション言語について埋め込み式ドメイン固有言語で公開するデータベースドライバを実装する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含み、前記の分散データアーキテクチャは、複数のレコードのカプセル化を可能にするクエリ言語を実装し、複数のレコードにわたるトランザクションを単一の要求クエリがカプセル化することを可能にする。
実施形態において、システムは、インデックスによって裏打ちされる非主キーアクセスを必要とするクエリ・セマンティクスを実装する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
実施形態において、システムは、認証されたユーザにトークンを発行するサービスによって実行されるアイデンティティ(identity)管理を含む、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。そのトークンにより、ユーザは、トランザクション・データベースで更なるアクションを実行することができる。
実施形態において、トークンを発行するサービスは、トランザクション・データベースの内部サービスである。実施形態において、トークンを発行するサービスは、トランザクション・データベースの外部で実行されるサードパーティ・サービスである。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースを含んでおり、前記の分散データアーキテクチャは、キーベースのロール割り当てを使用して、前記のトランザクション・データベース内の1つ以上のデータレコードに対する行レベルアクセスを制限する、アクセス制御を備えている。
実施形態において、そのアクセス制御は、アイデンティティの割り当てを通じて管理される行レベルセキュリティを含んでいる。実施形態において、トランザクション・データベースは、アクセス制御クエリ式をアクセス制御リストに割り当てることにより、ユーザ、ロール、及びグループのうちの少なくとも1つの決定が実施されるアクセス権を含んでいる。実施形態において、データベーストランザクションを実行するアクターのアイデンティティは、ストアドプロシージャのコンテキスト内でアクセス可能である。
実施形態において、システムは、グローバル・トランザクションログを使用して追跡及び報告されるトランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
実施形態において、そのトランザクション・データベースは、ユーザが設定した保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開する。実施形態において、トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関与するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含んでいる。
実施形態において、システムは、グローバル・トランザクションログを使用して記録される管理及びアプリケーションのトランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
実施形態において、そのトランザクション・データベースは、ユーザが設定した保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開する。実施形態において、トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関与するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含んでいる。
実施形態において、システムは、データベーストランザクションの全てのポイントでデータの暗号化を使用する、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
実施形態において、そのトランザクション・データベースは、SSLを介して暗号化される、データベースクラスタ内のトラフィックを含んでいる。実施形態において、トランザクション・データベースは、SSLを介して暗号化される、トランザクション・データベースへのパブリック・インタフェース上のトラフィックを含んでいる。実施形態において、トランザクション・データベースは、公開キー/秘密キーのペアを介して認証されるトランザクション・データベースとやり取りするアプリケーションを含んでいる。実施形態では、トランザクション・データベースの少なくとも1つのオペレーティングシステム機能が使用されて、データレスト、ログ情報、及び秘密キーの少なくとも1つでデータが保護される。実施形態では、その少なくとも1つのオペレーティングシステム機能がファイル暗号化である。
実施形態において、システムは、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含んでいる。そのシステムには、トランザクション・データベースのクラスタ内のデータベースのクラスタトポロジ構成が含まれ、データベースのクエリコーディネータ、データレプリカ、及びログレプリカとして機能する。構成トポロジは、システムによって自動的に導出される。
実施形態では、クラスタ内のトランザクション・データベースについて、一貫したクラスタ状態が維持される。
実施形態において、システムは、各々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含んでいる。クラスタの少なくとも1つのトランザクション・データベースのメンバーは、クエリコーディネータ、データレプリカ、及びログレプリカとして機能する。プレディケート(predicates)は、データベースクラスタのレプリカに自動的にプッシュされる。
実施形態では、クラスタの各メンバーが、クエリコーディネータ、データレプリカ、及びログレプリカとして機能する。
実施形態において、システムは、データ構造を介して有効化されるデータ書き込みを含む分散データアーキテクチャを有する、トランザクション・データベースを含み、前記のデータ構造は、ローカル・ストレージエンジン用に適所に修正され、圧縮ログ構造化マージツリーとして実装される。
実施形態において、トランザクションは、グローバル・トランザクションログにバッチでコミットされる。実施形態では、トランザクションがログ先行書き込みとしてコミットされる。実施形態において、トランザクション・データベースは、少なくとも1つのトランザクション・データベースがレプリカである、クラスタの一部である。レプリカは、グローバル・トランザクションログを取得し、ログに基づいてトランザクションをアトミックに一括してレプリカに書き込む。実施形態において、トランザクション・データベースは、同期上書きが回避されるように、不変バージョンで構成されるテンポラル・データモデルを使用する。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、プロセススケジューラを使用してリソースを動的に割り当て、トランザクション・データベースのサービス品質ポリシーを実施する、テナント対応リソースマネージャとを含んでいる。
実施形態において、システムは、トランザクションを一連のインターリーブされた潜在的に並列化可能な計算及び入力/出力サブクエリとして評価し、実行がトランザクション間の予測可能できめ細かいバリアをもたらすことを保証する、データベース用のクエリプランナを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、そのトランザクション・データベース用のジャーナル化されたトポロジ認識タスクスケジューラによって管理される、バックグラウンド・クエリタスクとを含んでいる。
実施形態では、タスクがクラスタ全体で1つのインスタンスに制限される。実施形態では、タスクがデータベース毎に1つのインスタンスに制限される。実施形態では、タスクが特定のデータ範囲に割り当てられる。実施形態において、システムは、特定のデータ範囲のデータレプリカである、タスクの実行ノードを含んでいる。実施形態において、バックグラウンド・クエリタスクの各タスクの実行状態は、一貫したメタデータストアに保持され、スケジュールされたタスクが、ノードに依存しない方法で実行される。実施形態では、ノードが故障すると、そのタスクは、他の有効なノードに自動的に再割り当てされるか、再起動されるか、又は再開されるかの少なくとも1つである。実施形態では、ノードがクラスタからリムーブされると、そのタスクは、他の有効なノードに自動的に再割り当てされるか、再起動されるか、又は再開されるかの少なくとも1つである。実施形態において、タスク実行スループットは、テナント毎、ユーザ毎、及びワークロード毎の少なくとも1つに基づいて、リソース・スケジューラにより制御される。実施形態において、特定のテナントに関連付けられていない作業のタスク実行は、低優先度でスケジュールされ、アイドルリソースが許可するときに、そのタスクを進めることができる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、一貫性メカニズムと、トランザクション・データベースの複数のトポロジにわたるコヒーレントな状態の一貫性を確保する、プロセススケジューラとを含んでいる。
実施形態において、システムは、分散データアーキテクチャを有するトランザクション・データベースと、複数の構成済みトランザクション・データベースのクラスタを管理する、管理プラットフォームとを含んでいる。クラスタ内の複数のデータベースは、単一のシステムとして機能する。
実施形態において、その管理プラットフォームは、複数のトランザクション・データベースを自動的に構成する。実施形態において、クラスタ管理機能は、アプリケーション・プログラミング・インタフェースを使用して実装される。実施形態では、単一の識別子を有するトランザクション・データベース・エンドポイントが、企業情報技術システムへの接続として提供され、そのエンドポイントのリソースが、管理プラットフォームによって管理される。実施形態では、エンドポイントの識別子がDNS名である。実施形態において、エンドポイントのリソースは、企業情報技術システムによる需要を満たすように、クラスタ管理プラットフォームの制御下で動的にスケーリングされる。
実施形態において、システムは、夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含んでいる。トランザクション・データベースのクラスタの構成は、オペレータが構成を指定すると、データベースによって自動的に実行される。
実施形態において、オペレータは、トランザクション・データベースのクラスタについての構成の、少なくとも1つのパラメータを指定し、システムは、トランザクション・データベースのクラスタを構成するために必要なステップを、自動的に決定及び実行する。実施形態では、トランザクション・データベースのクラスタの構成中に、データストレージのリソースが失われると、システムが、フォールト・トレラントな方法で動作し続けるように構成される。
実施形態において、システムは、運用データベースが展開されるタイプのクラウドの特定のインフラストラクチャ機能の構成を必要とすることなく、クラウド・インフラストラクチャに展開されるように自動的に構成される、運用データベースを含んでいる。
実施形態において、システムは、リソースを使用するアプリケーション、リソースを使用する作業負荷、リソースを使用するテナント、リソースを使用するユーザ、及びリソースの使用に関連付けられたキーのうちの、少なくとも1つによるリソースの使用に基づいて、トランザクションを自動的に追跡及び測定するように構成される、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。
実施形態において、システムは、データの保存及び検索のためのトランザクション・データベースシステムを含み、このシステムは、分散データアーキテクチャを有するトランザクション・データベースを含んでいる。トランザクション・データベースは、ソフトウェア・アプリケーションがオブジェクト指向データモデル又はリレーショナル・データモデルを使用するかどうかに関係なく、ソフトウェア・アプリケーションのデータベースサポートを有効にする如くトランザクション・データベースが構成されるように、ソフトウェア・アプリケーションのデータモデルに適応する半構造化ドキュメントモデルを使用する。
実施形態では、トランザクション・データベースがNoSQLデータベースである。
実施形態において、システムは、分散データアーキテクチャと、その分散データアーキテクチャの少なくとも一部が展開されるデータセンターの能力の認識により、データトランザクションのルーティングが発生するルーティング層とを有する、トランザクション・データベースを含んでいる。
実施形態において、データベースシステムは、複数のクエリモデルを可能にするクエリエンジンを有するデータベースを含み、それら複数のクエリモデルには、SQL形式クエリ、noSQL形式クエリ、グラフベースクエリ、地理空間クエリ、分析形式のクエリ、キー/値クエリ、ドキュメントクエリ、テンポラル・クエリ、及び検索クエリの中から選択される、少なくとも2つのクエリモデルが含まれ、更にデータベースシステムは、クエリエンジンを介して配信されたデータベースに対するクエリに応答するように構成された、一連のデータベース関数を含んでいる。
実施形態では、データベースが行レベルセキュリティのアクセス機能を提供する。実施形態では、データベースが識別の行レベル処理を提供する。実施形態では、データベースが認証の行レベル処理を提供する。実施形態では、データベースがエラスティック・アーキテクチャを有する。実施形態では、データベースがマスターレス構成及び動作を可能にする。実施形態では、データベースが再帰的なマルチ・テナンシー構成及び動作を可能にする。実施形態において、データベースは、複数の、地理的に多様なデータセンターか、或いは、クラウド・インフラストラクチャ・プロバイダへと、複製されるように構成される。
実施形態では、データベースがリレーショナル・クエリ言語で展開される。実施形態では、データベースにプロセス分離機能が提供される。実施形態では、データベースのプロセス分離を可能にするために、データベースが再帰的なスケジューリングで展開される。実施形態において、データベースは、プロセス分離に関連して完全に公平なキューイングの、再帰的な実装で展開される。実施形態において、データベースは、データベースのデータベースクラスタ全体を含む動的リソース・スケジューリングで展開される。
実施形態において、データベースは、クエリ毎に動的リソース・スケジューリングで展開される。実施形態において、データベースは、ユーザ毎に動的リソース・スケジューリングで展開される。実施形態では、データベースが分散ストレージ層と共に展開される。実施形態では、分散ストレージ層がトランザクション分解アルゴリズムと共に展開される。実施形態において、データベースは分散され、データベースは、分散ストレージ層の異なるストレージノードに情報を複製するレプリケーションログを使用する、レプリケーションアルゴリズムで展開される。
実施形態では、データベースがオンディスク・ストレージエンジンと共に展開される。実施形態では、クエリ毎のサービス品質管理を有するデータベースが提供される。実施形態において、データベースは、データベース内のバックグラウンド分析タスクのネイティブな実行を可能にする。実施形態では、データベースが運用データベースであり、データベースに対して有向非循環分析タスクグラフが運用される。実施形態では、データベースがカラムナ分析機能を含んでいる。実施形態では、データベースがクエリのストリーミングを可能にする。
実施形態では、データベースが企業向けのオンプレミス・データベースである。実施形態では、トランザクション・データベースがマルチユーザ・ゲームシステムと統合される。実施形態では、トランザクション・データベースが金融ネットワークシステムと統合される。実施形態では、トランザクション・データベースが、金融ネットワークシステムに関連付けられた少なくとも1つの金融台帳と統合される。実施形態では、トランザクション・データベースがアイデンティティ管理システムと統合される。実施形態では、トランザクション・データベースが顧客関係管理ネットワークと統合される。実施形態では、トランザクション・データベースがロケーションベースのサービスシステムと統合される。
<全体概要>
図1A及び図1Bは、例示的かつ非限定的な実施形態によるデータベース100を示している。データベース100は、ルートデータベース102を含んでもよい。ルートデータベース102は、追加データベース104を含んでもよい。追加データベース104は、キー106、インデックス108、及びクラス110を含んでもよい。例えば、追加データベース104は、階層的に仕組まれた他の追加のデータベース104を含んでもよい。追加データベース104は、他の追加データベース104に接続することができる。クラス110は、インスタンス112を含んでもよい。インデックス108は、インスタンス112を指し示すことができる。
図1A及び図1Bは、例示的かつ非限定的な実施形態によるデータベース100を示している。データベース100は、ルートデータベース102を含んでもよい。ルートデータベース102は、追加データベース104を含んでもよい。追加データベース104は、キー106、インデックス108、及びクラス110を含んでもよい。例えば、追加データベース104は、階層的に仕組まれた他の追加のデータベース104を含んでもよい。追加データベース104は、他の追加データベース104に接続することができる。クラス110は、インスタンス112を含んでもよい。インデックス108は、インスタンス112を指し示すことができる。
実施形態において、データベース100は、企業の進行中の運用に関連するデータを含む運用データベースであり、最新のイベント及びトランザクションを反映するために更新が継続的に行われるデータを含むと共に、リアルタイムでのデータの動的な管理及び処理を可能にする機能を包含している。実施形態において、データベース100は適応性があり、様々なストレージ環境(分散ストレージ及びクラウドストレージ環境を含む)に適応するなど、データベース100を特定の企業や環境のニーズに適応させることができる機能のセットを含み、様々な形式のクエリを使用するように適応し、様々なアプリケーション及びサービスを有効にするために適応する。
データベース100は、一貫性モデル114、マルチデータ・センター・レプリケーション層116、クエリ・ストリーミングエンジン118、バックグラウンド・タスクエンジン148、分析タスクエンジン120、エラスティック・アーキテクチャ122、QoS管理エンジン124、動的リソース・スケジューリング126、セキュリティエンジン128、及びプロセス分離エンジン130を含んでもよい。プロセス分離は、再帰的プロセス実行部186及び再帰的CFQアルゴリズム188を含んでもよい。バックグラウンド・タスクエンジン148は、DAGタスク実行エンジン174を含んでもよい。セキュリティエンジン128は、低ナレッジ暗号化セキュリティ166及び行レベルセキュリティ168を含んでもよい。行レベルセキュリティ168は、行レベル認証170、行レベル識別172などを含んでいてよい。
一貫性モデル114は、リレーショナル・クエリ言語132に接続することができる。リレーショナル・クエリ言語132は、マルチモデル・クエリ関数134、リレーショナル・クエリ関数136などを含んでいてもよい。更に、リレーショナル・クエリ言語132は、カラムナ分析システム138をサポートすることができる。実施形態において、データベース100は、カラムナ分析システム138を含んでいてもよい。
カラムナ分析システム138は、オンライン分析データベースで提供されるものと同様の、マテリアライズドビューに関する機能を提供することができる。これは、企業の運用に使用される運用データと分析データのストリームとの間の、様々な形式の中間データを含んでいてもよい。
データベース100は、マルチ・テナンシーエンジン140とマスターレス構成及び動作とをサポートしてもよい。マルチ・テナンシーエンジン140は、複数のテナント142がデータベース100にアクセスすることを可能にする。マルチ・テナンシーエンジン140は、再帰的マルチ・テナンシー160、ゾーン選択162、及びマルチテナント暗号化164を含んでいてもよい。
実施形態において、ゾーン選択システム162は、分散データベースのために提供される。ゾーン選択により、論理データセットが複製されるべき物理データセンターを、動的に選択することができる。例えば、ヨーロッパのユーザは、ヨーロッパなどに保存されたデータを有していてもよい。従来の市販のシステムでは、データベース内でそれを行う方法がない。代わりに、オペレータは、運用レベルでデータベースを展開し、新しいデータベースクラスタをセットアップする必要がある。地理的な選択を実現するために、ユーザは、運用レベルで展開し、新しいDBクラスタをセットアップしなければならない(ほとんどのシステムでは全く提供されていない機能)。
マルチデータ・センター・レプリケーション層116は、分散ストレージエンジン146内に格納することができるストレージ・リソースに接続されてもよい。分散ストレージエンジン146は、マルチデータ・センター・レプリケーション176をサポートしてもよく、分散ストレージ層アルゴリズムを含んでいてもよい。分散ストレージ層アルゴリズムは、ハイブリッド論理クロックアルゴリズム178、トランザクション分解アルゴリズム180、レプリケーションアルゴリズム182などであってよい。分散ストレージエンジン146は、オンディスク・ストレージエンジン184も含むことができる。
データベース100は、機能的成果(functional product)ドメイン150をサポートすることができる。機能的成果ドメイン150は、リレーショナルドメイン、ドキュメントドメイン、グラフドメイン、検索ドメイン、地理空間ドメインなどを含んでいてもよい。
データベース100は、運用的成果(operational product)ドメイン152をサポートすることができる。運用的成果ドメイン152は、エラスティック・アーキテクチャ122、マスターレス・アーキテクチャ154、QoS管理156、サブクエリ計測190、及びマルチデータ・センター・レプリケーション158を含むことができる。
データベース100は、クエリ毎及びユーザ毎に、マシンリソース消費メトリクスを記録することができる。これらのメトリクスは、リアルタイムで記録することができ、動的リソース・スケジューリング126に通知して、マシンリソースの割り当てを実施するために使用される。これらのメトリクスは、ログ、グラフ、及びヘッダーの形式で、開発者に公開することができる。
マルチデータ・センター・レプリケーション158は、マルチデータ・センター・レプリケーション層116によってサポートされ、地理的レプリケーション192、マルチクラウド・レプリケーション194などを含んでいてよい。
実施形態において、データベースは、ユーザ定義のソートされたインデックスのための機能を含んでいてもよい。これには、更新時間による、モデリング・ページランク、リーダーボード(leaderboards)、及び一意のレコードリストと、レコードの有効時間の操作をしない宣言的な方法での他のランキング・セマンティクスとを含めることができる。
<基礎>
データベース100は、いくつかの相互に関係するサブシステムで構成されてもよい。これらのサブシステムには、機能的なプログラミング・パラダイムに基づく機能的なリレーショナル・クエリ言語132、強力な一貫性のあるトランザクション分解エンジン、オンディスク・ストレージエンジン144、テナント対応リソース・スケジューラ、行レベル・セキュリティエンジン、行レベル識別、行レベル分離管理、バックグラウンド・タスクスケジューラ、及びデータセンター対応ルーティング層が含まれていてよい。
データベース100は、いくつかの相互に関係するサブシステムで構成されてもよい。これらのサブシステムには、機能的なプログラミング・パラダイムに基づく機能的なリレーショナル・クエリ言語132、強力な一貫性のあるトランザクション分解エンジン、オンディスク・ストレージエンジン144、テナント対応リソース・スケジューラ、行レベル・セキュリティエンジン、行レベル識別、行レベル分離管理、バックグラウンド・タスクスケジューラ、及びデータセンター対応ルーティング層が含まれていてよい。
データベース100は、エラスティック・アーキテクチャ122、マスターレス構成及び動作、並びにマルチ・テナンシー構成及び動作をサポートしてもよい。データベース100は、全体的に複製されてもよい。
機能的なリレーショナル・クエリ言語132は、Lispに基づくものであってよく、リレーショナル、ドキュメント、グラフ、テンポラル、検索、地理空間、分析、及びバッチ処理のアクセスパターンを統合し、同時に、それらの実行コンテキストを制限し、柔軟性、使い易さ、及び安全性を高める。リレーショナル・クエリ言語132は、オペレータがリレーショナル・クエリ関数136を実行できるようにすることができる。
実施形態では、データベース100へ統合アーキテクチャが提供されている。データストレージは、検索クエリ、グラフクエリ、テンポラル・クエリ、地理空間クエリ、キー/値クエリ、ドキュメントクエリ、及び分析クエリのいずれかを含む、様々なクエリモデルをサポートするデータタイプについて有効にされる。更に、各クエリモデルの機能へのアクセスを可能にする統合クエリ言語が提供されている。その結果、企業などのユーザは、特定のクエリモデルの使用をサポートするためだけにデータを保存する必要があるという制約を受けず、それに代えて、クエリモデルを気にせずに保存を行うことができ、任意の全てのクエリモデルを使用することができる。
マルチデータ・センター・レプリケーション層116は、強く一貫したトランザクション分解エンジンを含んでいてもよい。Calvinに基づいており分散グローバルログにより裏付けられるといった、強力な一貫性のあるトランザクション分解エンジンを使用して、スケーラビリティを制限することなく、正確さ及び使い安さを最大限に高めることができる。実施形態において、トランザクション分解アルゴリズムは、Calvinアルゴリズムに基づくものであって、データベースにより保存された履歴情報を複製するようにRaftログを使用して拡張されているため、分散ストレージノードは、クラスタ全体の調整を必要とすることなく、過去の時点から読み出しを行うことができる。これにより、他の利点の中でも、CockroachDB(登録商標)が行っている如く他のシステムのようにグローバルインターネットを横断することなく、強力で一貫性のある完全なトランザクション読み取りが可能になる。実施形態では、ロックレスのタイムスタンプベースの複製アプローチが、一連のタイムスタンプ付きの分離されたスナップショットで実装され、これらのスナップショットは、受け入れられた後、スナップショットの並べ替えにより必要に応じて直列化される。
オンディスク・ストレージエンジン144は、ログ構造化マージツリー(Google BigTable(登録商標)に類似)に基づくものであってよく、IOスループットを最大化することができる。
オペレーティングシステムのカーネルと同様に動作し得るテナント対応リソース・スケジューラは、優先度及びクォータに基づいて、競合するアプリケーション及び作業負荷に対し、計算リソース、メモリリソース、及びIOリソースを公平に割り当てることができる。テナント対応リソース・スケジューラは、データベース100内のマルチ・テナンシーエンジン140をサポートしてもよい。マルチ・テナンシーエンジン140は、複数のテナント142による単一のデータベース100の使用をサポートしてもよい。更に、マルチ・テナンシーエンジン140は、再帰的マルチ・テナンシーをサポートしてもよい。
行レベルのセキュリティ、識別、及び分離管理は、ファイルシステムの同様の機能に似ていることがあり、データアクセスを透過的に保護することができる。
例えば、Apache Hadoop YARNと同様に動作し得るバックグラウンド・タスクスケジューラは、長時間実行ジョブの非同期実行を可能にする。実施形態において、データベースは、データベース内のバックグラウンド分析タスクのネイティブな実行を可能にする。ユーザは、マップリデュースシステム(Hadoop(登録商標)やSpark(登録商標)など)と同様に、分析を非同期で実行できるが、タスクは運用データベースでネイティブに実行できる。実施形態において、データベースは、データベースに格納された企業の運用データに対するプロセスとして、タスク(分析タスクなど)の有向非循環グラフを作成する機能を有効にする。
例えば、ソフトウェアのロードバランサと同様に動作し得るデータセンター対応ルーティング層は、事実上のレイテンシを最小化し、グローバルな可用性を最大化することができる。
オペレーティングシステムが、優先順位付けされて潜在的に競合するユーザ及びプロセスのセットに対して、マシンリソースを動的に割り当てるのと同じように、データベース100は、全体的に分散されたデータリソースを、優先順位付けされて潜在的に競合するアプリケーション、ユーザ、及び作業負荷のセットに対して、動的に割り当てることができる。
実施形態では、データベース100が、トランザクションNoSQLデータベースとして実装されてもよい。データベース100は、SQLベースのデータベースと同等の機能を有し得るアーキテクチャと、SQL及びNoSQLデータベースの特徴を包含する特徴のセットとを有していてもよい。これにより、データベース100は、SQLの安全性及び正確さの特性を取り入れながら、NoSQLの生産性見込みの向上の実現が保証される。データベース100は、Scala及びJavaで実装されてもよく、全ての主要なオペレーティングシステム上のJava仮想マシン(JVM)で実行されてもよい。
<データモデル>
最新のアプリケーションは、表データやリレーショナルデータと排他的に相互作用しなくなっている。適応性には、同じシステム内で複数のデータ構造をサポートする必要がある。この要件を念頭に置いて、データベース100は、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、厳密な上位集合であり得る、半構造化された継承無しのオブジェクトリレーショナル・データモデルを実装してもよい。半構造化モデルは、時間の経過と共に進化することができ、SQLシステムでの作業時に通常発生するオブジェクトリレーショナルのインピーダンスの不一致を解消することができるため、既存のアプリケーションデータにうまく適合することが示される。
最新のアプリケーションは、表データやリレーショナルデータと排他的に相互作用しなくなっている。適応性には、同じシステム内で複数のデータ構造をサポートする必要がある。この要件を念頭に置いて、データベース100は、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、厳密な上位集合であり得る、半構造化された継承無しのオブジェクトリレーショナル・データモデルを実装してもよい。半構造化モデルは、時間の経過と共に進化することができ、SQLシステムでの作業時に通常発生するオブジェクトリレーショナルのインピーダンスの不一致を解消することができるため、既存のアプリケーションデータにうまく適合することが示される。
データベース100において、レコードは、インスタンス112と呼ばれる半構造化ドキュメントとして挿入されてもよく、インスタンス112は、再帰的にネストされたオブジェクト及び配列とスカラー型とを含んでいてよい。
インスタンス112は、クラス110にグループ化されてもよく、クラス110は、リレーショナルデータベースのテーブルに類似していてもよい。クラス内の完全又は部分的に共有されたスキーマは、オプションであって必須のものではない。
クラス110は、追加データベース104にグループ化されてもよい。これらの追加データベース104は、他の追加データベース104を再帰的に含んでいてもよい。追加データベース104は、ルートデータベース102にグループ化されてもよい。
データベースアクセスは、キー106によって制御することができる。キー106は、アクセスを要求すると共に特定のデータベースコンテキストを覆い隠すアプリケーションを識別する、証明書であってもよい。キー106には、優先度、リソースクォータ、及びアクセス制御の役割を割り当てることができる。
関係及びビューは、インデックス108で構築することができる。インデックスは、入力インスタンス112のセットが、語句(term)及び値で構成される1つ以上の結果セットに変換されたものであってもよい。インデックス108は、部分的に適用されたクエリとして表現することができ、それらの入力を変換、カバー、及び順序付けし、一意の制約を実施し、更に依存データを読み取ることができる。インデックス108は、クエリ式で明示的に参照することができる。パフォーマンスの不連続性を回避するために、オプティマイザは、開発者に代わってインデックスアプリケーションの決定を行わない場合がある。
スキーマは、構造型又は依存型で構成されてもよく、検証を宣言することによりオプションで実施されてもよい。検証は、挿入、更新、削除などに適用されるクエリ式に、部分的に適用されてもよい。
アプリケーション間でロジックを共有するため、所定の場所でアップグレードすることが困難な虞のあるアプリケーションからロジックを抽出するため、又はカスタムセキュリティモデルを作成するために、関数としてクエリをパラメータ化することができる。
クエリ・ストリーミングエンジン118は、クエリをストリーミングすることができる。クエリは、プロパティとしてストリーミングされてもよい。データベース100は、アプリケーションがクエリへの関係(interest)を登録し、更新イベントをリアルタイムで受信することを、実現させることができる。
実施形態において、クエリ・ストリーミングエンジン118は、データベースの分散ストレージエンジン146に関与していてもよい。そうすることにより、ストリーミングクエリは、一貫した更新を受信することができ、様々なトランザクション分離レベルを実装することができる。
実施形態では、複数レベルの論理データベースのネスティングと共に、再帰的スキーマを使用することができる。
実施形態において、データベース100は、機能的で、柔軟性があり、型安全なLispに基づいて、新しいリレーショナル・クエリ言語132を実装することができる。リレーショナル・クエリ言語132により、オペレータは、マルチモデル・クエリ関数134、リレーショナル・クエリ関数136などを実行することができる。リレーショナル・クエリ言語132との対話は、異なるアプリケーション言語用のドライバを介して実装され得る、ドメイン固有言語(DSL)によって取り成すことができる。リレーショナル・クエリ言語は、機能的クエリ言語196を含んでいてもよい。機能的クエリ言語196は、マルチモデル・クエリ関数134、リレーショナル・クエリ関数136、テンポラル・クエリ関数198などをサポートすることができる。
データベース100を使用する開発者は、トランザクション・コンテキスト内の機能スタイルで、アプリケーション・ネイティブコードであると考えられるものを書くことができる。1つのリクエストで、複数のレコードに及ぶトランザクションをカプセル化することができる。データベース100のドライバは、ネイティブ表現に反映して、それを内部ワイヤプロトコルへと直列化することができる。そして、トランザクションは、データベースによってアトミックに送信及び実行される。リレーショナル・クエリ言語132は、リレーショナル、ドキュメント、グラフ、テンポラル、分析、及びバッチ処理のアクセスパターンを統合すると共に、それらの実行コンテキストを制限して、柔軟性、使い易さ、及び安全性を高めることができる。リレーショナル・クエリモデルは、グラフ、ドキュメントなどの管理に必要なコンポーネントを提供することができる。リレーショナル・クエリ言語132は、クエリモデルをサポートしてもよい。クエリモデルは、基盤となるアーキテクチャ及び実装の選択肢から明らかになることがある。
<実装>
適応型運用データベースのリレーショナル・クエリ言語132は、安全性、予測可能性、及び性能を向上させるように設計された、いくつかのトレードオフを行うことができる。
適応型運用データベースのリレーショナル・クエリ言語132は、安全性、予測可能性、及び性能を向上させるように設計された、いくつかのトレードオフを行うことができる。
クエリは、ホストアプリケーション言語で記述され、その安全メカニズムを継承し、インジェクション攻撃につながる虞のある文字列評価ステップの必要性を除外することができる。
全てのクエリ機能が、全ての実行コンテキストで許可されるわけではない。例えば、同期インタフェースでは、テーブルスキャンが許可されない場合があり、全てのインデックス108を明示的に参照する必要がある。これにより、顧客向けの作業負荷に対して、一貫したスケーラブルな性能プロファイルが保証される。
しかしながら、タスクスケジューラ用の非同期インタフェースでは、テーブルスキャンが許可されてもよく、プランナは、インデックスが存在する場合、暗黙的にそれを利用することを選択してもよい。これにより、分析及び機械学習のタスクの、構築及び最適化の柔軟性が向上する場合がある。分析タスクは、分析タスクエンジン120によって構築及び最適化されてもよい。分析タスクは、カラムナ分析タスク138を含んでもよい。
同期クエリ(及び非同期クエリの全てのサブクエリ)は、アトミックかつトランザクション的に実行することができる。セッション・トランザクションは、サポートされない場合がある。実行計画を構築する前にデータベースがトランザクション全体を受信するため、最大の並列化及びデータの局所性を伴った実行を進めることができる。プレディケート・プッシュダウンのような最適化の機会は、普遍的かつ予測可能に適用される。
データベース100は、例えば、SQLのオフセット/制限スタイルの代わりに、安定したカーソルベースのページングを提供することができる。
データベースセッションは、ステートレスであってもよい。全てのトランザクションは、アクセストークンで識別することができ、アクセストークンは、トランザクション・コンテキストで閉じられ、トランザクションの最高水準点も含むことができる。これにより、データベースクラスタは、厳密な直列化を維持しながら、最小負荷ノードに対してトランザクションを動的にルーティングすることができる。このため、接続が非常に低いオーバヘッドになって一時的な使用に適していることが保証され、これにより、サーバレス・アプリケーションや組み込みデバイスからのアクセスを実用的にすることができる。
これらの改善は、レガシークエリ言語では困難又は不可能である場合があり、それは、レガシークエリ言語が、言語を拡張するのではなく言語を制限する必要があり、標準の互換性を損なうためである。
データベース100のリレーショナル・クエリ言語132の拡張性により、データベースは、カスタム構文の移植と閉じた標準モデルでの拡張との負担を伴わずに、地理的インデックス付け、全文検索、反復機械学習などの他のデータドメインに共通する、効果的な無制限数の追加機能を組み込むことができる。
例として、Scalaで書かれた次のトランザクションは、大文字と小文字を区別しないタグを含むブログ投稿を挿入する:
Create( ("classes 110/posts"),
Obj("data" -> Obj("title" -> "All Aboard",
"tags" -> Map(Lambda { tag => Casefold(tag) },
Arr("Ship", "Travel")))))
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")))
Match(Ref("indexes 108/posts_by_tags"), "travel")))
この読み取り専用トランザクションは、ブログ投稿とそれらへのインバウンド参照との結合を、主キーによって実行する:
Paginate(
Join(Match(Ref("indexes 108/posts_by_tags"),"travel"),
Ref("indexes 108/linkbacks_by_post"))))
Join(Match(Ref("indexes 108/posts_by_tags"),"travel"),
Ref("indexes 108/linkbacks_by_post"))))
<ネイティブ・マルチ・テナンシー>
実施形態では、データベースがネイティブ・マルチ・テナンシー機能をサポートしてもよい。実施形態では、データベースにより、単一の運用チームによって運用される単一のクラスタが、最大理論的利用度で任意数の完全に分離された作業負荷をサポートできるようになる場合がある。データベースにより、単一の企業内でマルチアプリケーションや作業負荷の分離が可能になる。これには、クラウド及び施設の展開(premises deployments)にそのような機能を提供することも含まれる(クラウドアカウント内でマルチテナント・システムを許可するなど)。クラスタ又はアカウント内の論理データベースの数に、意味のある実用的な制限がない場合がある。クエリが未処理の場合にリソースが使用されないように、全体的な使用率を最大化することができる。ネイティブ・マルチ・テナンシー機能の実装を、コアデータベース内で完全に有効にすることができる。実施形態において、これらの機能は、例えば、論理データベースが再帰すること、すなわち他のデータベースを含むことを許可することにより、提供することができる。これは、「テナント」及び「論理データベース」が、データベースのプラットフォームに関して同じものとして本質的に扱われることを意味し、又、本開示全体での論理データベースへの参照は、マルチテナント状態で定義及び使用されるものを包含すると理解されるべきである。データベースのAPIは、例えば、サーバキーと同じ権限を持ち、キーの追加/リムーブ及び子テナント(及び/又は子データベース)の追加/リムーブの権限を有するものといった、「管理者(admin)」キータイプを提供することにより、マルチ・テナンシーをサポートすることができる。実施形態では、キーの権限からスキーマ操作を分離することができる。実施形態において、任意のクエリのキーは、リソースの借方(debits)のアカウントとしても機能し得る、ルートデータベース102の範囲を覆い隠すことができる。
実施形態では、データベースがネイティブ・マルチ・テナンシー機能をサポートしてもよい。実施形態では、データベースにより、単一の運用チームによって運用される単一のクラスタが、最大理論的利用度で任意数の完全に分離された作業負荷をサポートできるようになる場合がある。データベースにより、単一の企業内でマルチアプリケーションや作業負荷の分離が可能になる。これには、クラウド及び施設の展開(premises deployments)にそのような機能を提供することも含まれる(クラウドアカウント内でマルチテナント・システムを許可するなど)。クラスタ又はアカウント内の論理データベースの数に、意味のある実用的な制限がない場合がある。クエリが未処理の場合にリソースが使用されないように、全体的な使用率を最大化することができる。ネイティブ・マルチ・テナンシー機能の実装を、コアデータベース内で完全に有効にすることができる。実施形態において、これらの機能は、例えば、論理データベースが再帰すること、すなわち他のデータベースを含むことを許可することにより、提供することができる。これは、「テナント」及び「論理データベース」が、データベースのプラットフォームに関して同じものとして本質的に扱われることを意味し、又、本開示全体での論理データベースへの参照は、マルチテナント状態で定義及び使用されるものを包含すると理解されるべきである。データベースのAPIは、例えば、サーバキーと同じ権限を持ち、キーの追加/リムーブ及び子テナント(及び/又は子データベース)の追加/リムーブの権限を有するものといった、「管理者(admin)」キータイプを提供することにより、マルチ・テナンシーをサポートすることができる。実施形態では、キーの権限からスキーマ操作を分離することができる。実施形態において、任意のクエリのキーは、リソースの借方(debits)のアカウントとしても機能し得る、ルートデータベース102の範囲を覆い隠すことができる。
データベースの再帰は、以下のように実装することができる。全ての論理データベースは同じ一意のIDスペースに存在できるため、主キーのサイズを増やす必要はない。更に、キーはそれらの論理データベースを覆い隠すため、単一データベースのクエリについて再帰的なルックアップは必要ない。実装の圧倒的大部分は、データベースの再帰の存在に依存しなくてもよい。一般的に再帰的なシステムは、テナンシー・ツリーの最大深さを想定する特殊なシステムよりも、実装が簡単である。
グローバル・ルックアップの場合、キーはシステムへの主要なエントリポイントであってもよい。そのため、これらは特定のスコープに属するが、クライアントに付与してルックアップに使用できるグローバル識別子も必要になる場合がある。同様に、スコープを介してスコープの所有者(そのデータベース)を見つける必要がある場合がある。
キーのグローバル識別子は、一意であると必ずしも信頼できるとは限らない。このため、そのグローバル識別子でキーを検索すると、一連のインスタンスが返される場合がある。秘密のパラメータを一致させると、使用する適切なインスタンスが明らかになる場合がある。スコープ識別子は単に内部的なものであるため、一意であることが保証される。そのスコープ識別子でデータベースを検索すると、単一のインスタンスが生成される。スコープ識別子がグローバルに一意でない場合は、エラーが返される。
管理者キーは、そのスコープの「ルートキー」と見なされることがある。このため、その独自のテナントや任意の子テナントに対して、任意のロール(管理者、サーバ、クライアント)のキーを作成することが許可される場合がある。更に、子テナントの作成及び構成が許可されることもある。
マルチ・テナンシーのデータモデルは、クォータや関連するテレメトリについてなどのQoS機能といった、他の機能をサポートするように構成されてもよい。
<テンポラリティ>
通常、履歴データは、リアルタイムでは、又は現在のデータと同じクエリ機能では、アクセスすることができない。アプリケーションを更に複雑にすることなく基本的な対話パターンをサポートするために、データベース100内の全てのレコード(スキーマレコードを含む)をテンポラルにすることができる。
通常、履歴データは、リアルタイムでは、又は現在のデータと同じクエリ機能では、アクセスすることができない。アプリケーションを更に複雑にすることなく基本的な対話パターンをサポートするために、データベース100内の全てのレコード(スキーマレコードを含む)をテンポラルにすることができる。
インスタンス112が変更されるとき、それらの以前のコンテンツは上書きされない。その代わりに、作成、更新、又は削除のイベントの何れかとして、現在のトランザクション・タイムスタンプでの新しいインスタンスバージョンを、インスタンス履歴に挿入することができる。データベース100は、クラス毎及びデータベース毎の基礎で構成可能な保持ポリシーをサポートしてもよい。
インデックス読み取り、結合、又はデータベース100内の他のクエリ式を含む全ての読み取りは、過去の任意の時点で一貫して実行されるか、或いは、任意の2時点間のイベントの変更フィードに変換することができる。これは、監査(auditing)、ロールバック、キャッシュの一貫性、2番目のシステムへの同期に役立ち、適応型運用データベースの分離モデルの基本的な部分を形成することがある。
特権アクター(Privileged actors)は、履歴バージョンを直接操作することで、データの不一致を修正し、個人を特定できる情報をスクラブし、データをフューチャ(future)へ挿入し、又は他の保守タスクを実行することができる。
テンポラル・データベースは、時系列データベースと区別される場合がある。時系列データベースは、時間と共に変化する値の低遅延記録用に最適化されており、多くの場合、温度、株価、燃料消費データなどのサンプルデータを処理する。又、それらは、道路を通過する車の数、投票数、ソーシャルメディア投稿の「いいね」の数などのイベントを、カウント及び集計するのにも有用である。そのため、数値データを書き込むために大幅に最適化されている。この最適化を実現するために、時系列データベースは通常、複数のキー、数値以外の型、大きなデータサイズ、又はインデックスを含まない、非常に単純なトランザクションパターンのみをサポートする。それらは、期間をまたいで集約されたトレンド(trends)を簡単に調査できるが、複雑なビジネス・トランザクションは運用データベースの領域に残り、複雑な分析はカラムナ分析又はマップ/リデュース分析システムの領域に残る。従来の時系列データベースは、通常、非常に単純なトランザクションパターンのみをサポートする。
対照的に、本明細書で説明するテンポラル・データベースは、単に時間で順序付けされたサンプル数値データを記録するのではなく、保持期間内のビジネスデータへの全ての変更を追跡する。換言すれば、それは履歴データベースである。例えば、トランザクションが処理されると、以前の状態を上書きするのではなく、追加する。その結果、過去のタイムスタンプを使用して複合型クエリ(complex query)を実行することで、存在する全て(world)の以前の状態を表示することができる。
実施形態において、本明細書で説明するデータベース・プラットフォームは、より高レベルのビジネス・トランザクション及び分析ソリューションのみならず、データセンターの運用メトリックなど、時間と共に変化する値を含む様々な時系列ユースケースのソリューションを含み得る、テンポラル・データベースを提供してもよい。
実施形態では、全てのレコード(スキーマを含む)がテンポラルであり、構成可能な保持ポリシーをサポートすることができる。レコードが更新又は削除されても、それらの以前の内容は上書きされず、代わりに、現在のトランザクション・タイムスタンプでの新しい不変バージョンを、作成、更新、或いは削除イベントとして、インスタンス履歴に挿入することができる。インデックスを含むトランザクションを含む全てのトランザクションは、過去(又は将来)の時点で実行するか、或いは、任意の2つの時点間のイベントの変更フィードへと変換することができる。実施形態では、全てのトランザクションを、過去の任意の時点で実行するか、又は変更フィードへと変換することができる。
これは、ビジネス・トランザクションの監査、開発者のミスやセキュリティ侵害の取り消し(データベース全体の削除も取り消すことができる)、携帯電話などの部分的に接続されたクライアントの同期、アクティビティフィードの構築、分析システムの最新状態の維持、及び本明細書に記載されている分離モデルのサポートに、非常に役立つものである。
テンポラリティが開発努力を支援する1つの方法は、「スナップショット」によるものである。例えば、「Friend Locator」アプリの構築時など、特定時間や日付範囲内のエンティティの状態について質問する必要がある場合、スナップショット・インスタンスが有用である。一例として、アプリのユーザは、現在の場所を更新するためにチェックインすることがあり、その結果、データベースは、ユーザインスタンスのフィールドを次のように設定する:
update(ref(class('users'), 123), params: { data: { location: 'Sydney' } })
{
"ref": { "@ref": "classes/users/123" },
"ts": <clock_time>,
"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"
}
}
{
"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" }
]
}
{
"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" }
]
}
{
"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"
}
}
]
}
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
}
"resource": ref,
"action": [ "create" | "delete" ],
"ts": timestamp
}
この形式には、いくつかの顕著な欠点があり、指定された「ts」の差分は、ディスクに保存されるが、ユーザは別のクエリを発行しないと使用することができない。アクション要素は、「create」という用語をオーバーロードして、以前に欠落していたインスタンスの作成と、既存のインスタンスの更新との双方を示す。これらの問題を解決するために、代わりにインスタンスイベントを次のようにレンダリングする:
{
"instance": ref,
"action": [ "create" | "update" | "delete" ],
"ts": timestamp,
"data": diff
}
"instance": ref,
"action": [ "create" | "update" | "delete" ],
"ts": timestamp,
"data": diff
}
従って、「action」の値には、タイムスタンプの前にこのインスタンスに「create」が存在することを示す「update」が追加された、3つのバリアントが含まれる(「delete」は介在しない)。データの値には、次のようにタイムスタンプの差が含まれる:
Action: data
Create: instance data at ts
Update: diff from ts □ 1 to ts
Delete: null
Create: instance data at ts
Update: diff from ts □ 1 to ts
Delete: null
設定履歴のイベント構造は、次のようになる:
{
"resource": ref,
"action": [ "create" | "delete" ],
"ts": timestamp,
"values": tuple
}
"resource": ref,
"action": [ "create" | "delete" ],
"ts": timestamp,
"values": tuple
}
上記のインスタンスイベントと同様に、この構造にはいくつかの問題がある。「values」の要素は、アドホックな追加であり、多くのインデックスでは「resource」の値を複製する。ソースインスタンスの「ref」をカバーしないインデックスでは、「resource」のレンダリングが不要であり、誤解を招く虞がある。セットイベントをよりよく説明するために、実施形態はセットイベントを次のようにレンダリングしてもよい:
{
"instance": ref,
"action": [ "add" | "remove" ],
"ts": timestamp,
"data": tuple,
}
"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」パラメータを追加することにより、ページネーションの呼び出しを変更することができる。テンポラルな機能を有効にするために、スナップショット用と履歴用とに1回ずつ、ページネーション関数が2回実装される。ページネーションとクエリ・セマンティクスとの混同は、単一の引数として任意のセットを取ってそのセットの履歴の表現を返す、ページネーション関数に好適に構成された「events()」関数を提供することにより、回避することができる。
既存のクエリがどのように表現されるかの例は、イベント関数を使用して示される。以前は、「classes/people/1」などのインスタンスの履歴をページングするクライアントは、次のようなクエリを発行する場合があった。
{
"paginate": { "@ref": "classes/people/1" },
"events": true
}
"paginate": { "@ref": "classes/people/1" },
"events": true
}
「events()」関数を使用すると、この同じクエリは次のように表現される。
{
"paginate":
{
"events": { "@ref": "classes/people/1" },
}
}
"paginate":
{
"events": { "@ref": "classes/people/1" },
}
}
結果のクエリは、「paginate()」に渡されたセット内のアイテムを、セットをページングする行為で合成しなくなった。このように、ページネーションは、スナップショット又は履歴を含む任意のコレクションに対して、その中のアイテムの構造を気にすることなく定義することができる。
構成における「paginate()」関数及び「events()」関数のセマンティクスは、非テンポラルな特徴のみを可能にする状況よりも、僅かに複雑である。以前は、「paginate(events = true)」が使用された場合、ページ化されたサブクエリ(sub□query)は履歴であって、それらの任意のサブクエリは履歴などであり、再帰的であった。上記の「events()」関数を使用すると、クライアントは、どのサブクエリがスナップショット又は履歴であるかを選択的に指定できるため、これまで不可能だった構成が可能になる。クエリが無意味又は不合理であることが静的に既知の場合、評価エラーが表示されることがある。例えば、「events()」が「events()」のサブクエリにならないように、ルールを設定することができる。これは、「events()」の全てのサブクエリがスナップショットクエリである必要があることを意味し、ネストされた履歴結合や履歴中の履歴といった、面倒なパターンを排除する。
実施形態では、そのセマンティクスに関連する以下の特徴を備えた、シングルトン・クエリ関数を提供することができる。インスタンス参照に関連付けられた2つのイベントタイムラインが存在し、インスタンスのデータの履歴と、インスタンスの存在の履歴とである。インスタンスイベントのタイムラインは、経時的なインスタンスのデータの履歴を表している。それは、インスタンスの参照を「events()」に渡すことで取得できる。この履歴のイベントには、インスタンスのタイムライン内の全ての作成、更新、及び削除イベントが含まれ、上記のインスタンスイベントに関して説明したデータが含まれる。
セットイベントのタイムラインは、時間の経過と共にシングルトンセットにインスタンスが存在する履歴を表している。それは、インスタンスの「ref」を新しい「singleton()」関数に渡すことで取得できる。この履歴の設定イベントは、夫々「add」及び「remove」として表現されるなど、インスタンスのタイムライン内でのイベントの作成及び削除のために、制限される場合がある。これらのイベントのデータは、インスタンスの参照を含むシングルトンのタプルである。インスタンス参照を使用して「paginate(events = true)」を呼び出すと、そのインスタンスのデータの履歴が生成されることがある。従って、「paginate("classes/people/1")」として構造化されたクエリは、「paginate(events("classes/people/1"))」と同じ結果を生成する。
挿入クエリ関数には、定義されたセマンティクスが提供されてもよい。インスタンスイベントが上記で定義されているように、イベントのアクションは前のイベントに関連しており、つまり、非削除のイベントは、その前に作成があり、他のイベントが作成の場合、更新になる。従って、「insert()」関数は、アクションパラメータを受け入れる必要がなくなる。「insert()」のセマンティクスは、データなし(パラメータ内)の「insert()」が指定のタイムスタンプを持つ削除イベントを生成するように、定義することができる。「insert()」に空でないデータを提供すると、指定されたタイムスタンプに先行するイベントに関して、作成又は更新が行われる。
「insert()」クエリの結果は、イベントをレンダリングするように構成されてもよい。
リムーブクエリ関数についてのセマンティクスを提供することができる。実施形態では、同じタイムスタンプに、同じインスタンスについての2つのイベントが存在しない場合がある。従って、「remove()」関数は、アクションパラメータを必要としない。「remove()」のセマンティクスは、指定されたタイムスタンプで任意のインスタンスイベントを削除するように、定義することができる。
上述のイベント関数の変形を提供することにより、同時に2つのイベントがタイムラインで正しくソートされるように、全体の順序付けを定義することができる。
インスタンスは、論理的に同じタイムスタンプに2つのイベントを持つことはできず、すなわち、トランザクション時間が遅いイベントは常に優先されるため、インスタンスイベントの順序はいくぶん恣意的である。但し、セットには通常、同じタイムスタンプに「add」イベントと「remove」イベントとの双方がある。その場合、「remove」が常に「add」よりも時間的に前に発生するというルールを設定するなどして、タイムラインを解決するように、セマンティクスを定義することができる。同じタイムスタンプを共有するインスタンスイベントは、論理的な一貫性のためにイベントを設定するように、同様に順序付けすることができ、つまり、削除は更新の前に発生するように定義することができ、更新は作成の前に発生するように定義することができる。タイムスタンプを共有するインスタンスイベントと設定イベントとの間の順序は、異種セットをページングしている間は安定しているという利点があるが、それはいくぶん恣意的である。例えば、削除の前にリムーブが行われ、追加の前に作成が行われるようにアサートするなど、様々な順序で定義することができる。これらの定義をまとめると、「remove」<「delete」<「update」<「create」<「add」となる。
<ストリーミングクエリ>
実施形態では、クエリのストリーミングを可能にするデータベースが提供される。これには、プロパティとしてのクエリのストリーミングが含まれる場合がある。例えば、データベースは、ユーザがライブでクエリに注意を向け(listen to a query live)、そのクエリに関して追加又はリムーブされた要素についての更新を受け取るようにすることができる。これは、メッセージバス(message bus)として、或いは、チャットやゲームなどのリアルタイムアプリケーションを扱うときに有用である。実施形態において、データベースは、複雑なクエリを含む一般的なプロパティとして任意のクエリをストリーミングし、変更フィードなどのクエリに対するライブ更新を受信することができる。実施形態において、クエリのストリーミングは、テンポラル・データモデルを使用して、変更フィード及び他の機能を有効にすることができる。
実施形態では、クエリのストリーミングを可能にするデータベースが提供される。これには、プロパティとしてのクエリのストリーミングが含まれる場合がある。例えば、データベースは、ユーザがライブでクエリに注意を向け(listen to a query live)、そのクエリに関して追加又はリムーブされた要素についての更新を受け取るようにすることができる。これは、メッセージバス(message bus)として、或いは、チャットやゲームなどのリアルタイムアプリケーションを扱うときに有用である。実施形態において、データベースは、複雑なクエリを含む一般的なプロパティとして任意のクエリをストリーミングし、変更フィードなどのクエリに対するライブ更新を受信することができる。実施形態において、クエリのストリーミングは、テンポラル・データモデルを使用して、変更フィード及び他の機能を有効にすることができる。
<セキュリティ>
レガシー追加データベース104は、ワークステーションでの少数の内部ビジネスユーザ向けに設計された、スキーマレベルのユーザ認証のみを実装してもよい。しかし、現代のアプリケーションは、公共のインターネット上で何百万もの信頼できない潜在的に悪意のある攻撃者にさらされる虞があり、少なくとも、識別システム、行レベルセキュリティ、及びトランスポート暗号化を実装する必要がある。行レベルセキュリティには、行レベル識別、行レベル認証などが含まれる。
レガシー追加データベース104は、ワークステーションでの少数の内部ビジネスユーザ向けに設計された、スキーマレベルのユーザ認証のみを実装してもよい。しかし、現代のアプリケーションは、公共のインターネット上で何百万もの信頼できない潜在的に悪意のある攻撃者にさらされる虞があり、少なくとも、識別システム、行レベルセキュリティ、及びトランスポート暗号化を実装する必要がある。行レベルセキュリティには、行レベル識別、行レベル認証などが含まれる。
データベース100は、APIサーバを介して、或いは、モバイル、ブラウザ、組み込みアプリケーションなどの信頼できないクライアントに対して直接的に、管理レベルとアプリケーションレベルとの双方の識別及びセキュリティを配信するために、これらの懸念を内部化することができる。
セキュリティの懸念をデータベースにプッシュすることにより、同じデータセットと相互作用する全てのアプリケーションが、同じアクセス制御を実施し、重大なビジネスリスクである攻撃面を劇的に削減することが保証される。
<識別>
データベース100内のアプリケーションアクター(ユーザ又は顧客など)は、組み込みのパスワード認証を使用して、或いは、認証を他のプロバイダに委任する信頼できるサービスを介して、識別することができる。識別されると、アプリケーションアクターは、自分達のID及びアクセスコンテキストを覆い隠す更なる要求を実行するために使用可能な、トークンを受信することができる。
データベース100内のアプリケーションアクター(ユーザ又は顧客など)は、組み込みのパスワード認証を使用して、或いは、認証を他のプロバイダに委任する信頼できるサービスを介して、識別することができる。識別されると、アプリケーションアクターは、自分達のID及びアクセスコンテキストを覆い隠す更なる要求を実行するために使用可能な、トークンを受信することができる。
これにより、信頼できないモバイル、ウェブ、又は他のファットクライアントが、データベースと直接やり取りし、行レベルのアクセス制御システムに参加することが可能になる場合がある。インスタンス112として識別されたアクターは、管理コントロールにアクセスすることはできない。
システムアクターは、キー106によって識別されてもよく、キー106は、様々なレベルの特権を有していてよい。キー106は、特定の論理データベース範囲を覆い隠してもよく、再帰的階層内の親の追加データベース104にアクセスしなくてもよいが、オプションで子の追加データベース104にアクセスしてもよい。
<アクセス制御>
システムアクターは、上位のアクターによってのみ変更され得る、キー106に割り当てられたロールを有していてもよい。これらのロールは、アクティビティを、管理アクセス、全てのインスタンスデータへの読み取り/書き込みアクセス、又はパブリック・インスタンスデータのみへのアクセスに制限する場合がある。
システムアクターは、上位のアクターによってのみ変更され得る、キー106に割り当てられたロールを有していてもよい。これらのロールは、アクティビティを、管理アクセス、全てのインスタンスデータへの読み取り/書き込みアクセス、又はパブリック・インスタンスデータのみへのアクセスに制限する場合がある。
適応型運用データベースは、行レベル・セキュリティエンジンを含んでいてよい。セキュリティエンジン128は、アプリケーションアクセス制御用の行レベルセキュリティ168を含むことができ、これは、IDの割り当てを通じて管理され、インスタンス112、インデックス108、ストアドプロシージャ、及びクラス100上の、アクセス制御リストの読み取り、更新、作成、削除を行うことができる。更に、セキュリティエンジン166は、アプリケーション毎にセキュリティパラメータを設定するために、行レベルセキュリティ168を備えていてもよい。
アクセスグループなどのデータ駆動型の権利決定は、アクセス制御クエリ式をアクセス制御リスト(ACL)に割り当てることによって実装することができる。これらのクエリ式は、ロールを含むオブジェクト上でパラメータ化でき、ロールを実行できるIDのセットを返す必要がある。
データベース内で完全にカスタムアクセスロジックを実装するために、トランザクションを実行するアクターのIDへ、ストアドプロシージャのコンテキスト内でアクセスすることができる。データベース100は、常に行レベルのアクセス制御を透過的に実施することができ、それを回避する方法はない。
<監査及びロギング>
データベース100内の全ての管理トランザクション及びアプリケーション・トランザクションは、オプションで記録されてもよく、更に、基礎となるテンポラルモデルは、構成された保持期間内に全てのレコードの以前の内容を保持する場合がある。
データベース100内の全ての管理トランザクション及びアプリケーション・トランザクションは、オプションで記録されてもよく、更に、基礎となるテンポラルモデルは、構成された保持期間内に全てのレコードの以前の内容を保持する場合がある。
データベース100は、データの出所をネイティブに追跡しなくてもよいが、データベース100とやり取りするアプリケーションは、全てのトランザクションにアクター情報をタグ付けすることができ、インスタンスバージョンの一部としてそのデータに履歴的にアクセスすることができる。
<暗号化>
実施形態では、データベース100がワイヤ上のデータを暗号化することができる。クラスタトラフィックは、セキュア・ソケット・レイヤー(SSL)を介して暗号化でき、各ノードに固有の公開キー/秘密キーのペアを介してオプションで認証できる。
実施形態では、データベース100がワイヤ上のデータを暗号化することができる。クラスタトラフィックは、セキュア・ソケット・レイヤー(SSL)を介して暗号化でき、各ノードに固有の公開キー/秘密キーのペアを介してオプションで認証できる。
更に、パブリック・インタフェース上のトラフィックは、SSLを介して暗号化されてもよい。データベース100とやり取りするアプリケーションは、公開キー/秘密キーのペアを介して認証されてもよく、認証局に依存してクラスタ自体の証明書を認証してもよい。
ファイルシステム暗号化などのオペレーティングシステム・メカニズムを使用して、保存データ、ログ、及びディスク上の任意の秘密キー106を保護することができる。
<暗号化された状態>
実施形態において、データベースは、保存データの暗号化機能を実装してもよい。実施形態では、例えば、(マルチテナントの状況を含む)全ての論理データベースが、それ自体がルートシークレットによって暗号化されて保存される、独自の対称暗号化キーを有してもよい。ルートから下って、別のシークレットが作成される度に、対称キーを復号化し、新しいシークレットで再暗号化して、追加のコピーを保存する。新しいデータベースの場合、アクセス階層内の全ての以前のシークレットで暗号化された、新しい暗号化キーを作成することができる。このようにして、暗号化キーは、ディスク上に復号化された状態で保存されることはなく、ネットワークを介して渡されることもない。サーバでのSSLターミネーションは、使用中のキーのローカルTCPスニッフィングを防ぐために使用できる。暗号化前に圧縮、トークン化などを適用してもよい。実施形態において、階層内の前任者をリムーブするオプションは、データベース・プラットフォームのホストによってさえデータを回復不能にするであろう。
実施形態において、データベースは、保存データの暗号化機能を実装してもよい。実施形態では、例えば、(マルチテナントの状況を含む)全ての論理データベースが、それ自体がルートシークレットによって暗号化されて保存される、独自の対称暗号化キーを有してもよい。ルートから下って、別のシークレットが作成される度に、対称キーを復号化し、新しいシークレットで再暗号化して、追加のコピーを保存する。新しいデータベースの場合、アクセス階層内の全ての以前のシークレットで暗号化された、新しい暗号化キーを作成することができる。このようにして、暗号化キーは、ディスク上に復号化された状態で保存されることはなく、ネットワークを介して渡されることもない。サーバでのSSLターミネーションは、使用中のキーのローカルTCPスニッフィングを防ぐために使用できる。暗号化前に圧縮、トークン化などを適用してもよい。実施形態において、階層内の前任者をリムーブするオプションは、データベース・プラットフォームのホストによってさえデータを回復不能にするであろう。
実施形態では、ワイヤ暗号化も同じ対称キーで置き換えることができるため、読み取り時にデータを解読する必要はない。メタデータの側面は、インデックス作成やバックグラウンド・タスクを容易にするために暗号化されない場合がある。
実施形態では、クライアント側の暗号化を使用して、データベースがデータを全く把握していないようにすることができる。
実施形態では、単一のオペレータがマスターキーを解読するための完全なパスワードを保持しないように、構成を提供することができる。オペレータは、少なくとも2つのオペレータ、少なくとも3つのオペレータなどからログインを受信する限り、マスター復号化キーを解読してもよい。そのキーの暗号化されたストア自体を攻撃することは、2人のオペレータのパスワードを所有している場合でも、簡単ではない。
別の必要性は、一旦マスターキーを解読すると、それを必要とするクラスタ内の他のコンポーネントへ安全に配信することである。これは、クライアント認証でSSLを使用することによって実現できる。これにより、誰かがデータベースクラスタ内の新しいノードの新しい証明書に署名できるようになる必要があるため、別のセキュリティポイントが導入される。
<スケーラビリティ>
データベース100は、水平方向及び垂直方向にスケーラブルであり、自己調整可能であり、単一障害点がないように設計されてもよい。データベース100クラスタ内の全てのノードは、3つのロールを同時に実行することができる。これらのロールには、クエリコーディネータとしての機能、データレプリカとしての機能、及びログレプリカとしての機能が含まれていてよい。
データベース100は、水平方向及び垂直方向にスケーラブルであり、自己調整可能であり、単一障害点がないように設計されてもよい。データベース100クラスタ内の全てのノードは、3つのロールを同時に実行することができる。これらのロールには、クエリコーディネータとしての機能、データレプリカとしての機能、及びログレプリカとしての機能が含まれていてよい。
ノードのロールを構成するために、操作タスクが必要ない場合がある。
<クラスタトポロジ>
データベース100クラスタは、3つ以上の論理データセンターで構成されてもよい(物理データセンターは、複数の論理データセンターを含んでもよい)。
データベース100クラスタは、3つ以上の論理データセンターで構成されてもよい(物理データセンターは、複数の論理データセンターを含んでもよい)。
コンプライアンス、冗長性、及び待ち時間に関するアプリケーションの決定から、物理ハードウェアの運用管理を抽象化する必要性は、適応性の主要な要件である。適応型運用データベースでこの抽象化を実現するために、論理データベースレベルでレプリケーションを動的に構成してもよい。各物理データセンターには、グローバルメタデータのコピーと、そのデータセンターに割り当てられた各論理データベースのコンテンツのコピーとを、含めることができる。
例えば、企業は、複数のクラウド・インフラストラクチャ・プロバイダ並びにオンプレミス・ハードウェアにまたがる、単一のデータベース100クラスタを展開してもよい。企業内の開発者は、データベース毎にアプリケーションデータを配置する場所を選択し、それらの決定をオペレータの介入なしで経時的に変更することができる。その逆もまた真かもしれず、オペレータは、個々のアプリケーションの複製計画(replication strategies)に影響を与えることなく、クラスタの物理的構成を変更することができる。
実施形態において、タイムスタンプベースの複製アプローチは、一連のタイムスタンプ付きの分離されたスナップショットで実施され、スナップショットの並べ替えによって必要に応じて直列化される。
<ルーティング>
任意のデータセンター内の任意のデータベースノードは、クラスタ内の任意の論理データベースに対する要求を受信してもよい。そのノードがその特定の論理データベースのデータを所有していない場合、別のデータセンターにある可能性があるノードに転送する場合がある。これにより、論理データベースが割り当てられているデータセンターに、負荷が集中する場合がある。一部の運用条件では、非対称ルーティングを使用して、帯域幅を部分的に局所化することもできる。
任意のデータセンター内の任意のデータベースノードは、クラスタ内の任意の論理データベースに対する要求を受信してもよい。そのノードがその特定の論理データベースのデータを所有していない場合、別のデータセンターにある可能性があるノードに転送する場合がある。これにより、論理データベースが割り当てられているデータセンターに、負荷が集中する場合がある。一部の運用条件では、非対称ルーティングを使用して、帯域幅を部分的に局所化することもできる。
トランザクションが正しいデータセンターにルーティングされると、ローカルノードは、クエリコーディネータとして機能し、又、基になるデータを所有するデータレプリカに読み取りプレディケートをプッシュし、応答を待機し、トランザクションに書き込みが含まれる場合に書き込みバッファを蓄積することにより、トランザクションの実行を開始する。読み取りプレディケートは、行レベルのルックアップのように単純な場合もあれば、部分クエリ・サブツリーのように複雑な場合もある。マルチレベルのプレディケート・プッシュダウンがサポートされている。これにより、レイテンシを劇的に短縮することができ、並列性及びデータの局所性の向上によりスループットが向上する。
トランザクションが読み取り専用(又は非同期)である場合、応答はすぐにクライアントに返されてもよく、トランザクションが書き込みを含む場合、それがトランザクション分解のために適切なログレプリカに転送されてもよい。ログレプリカは、トランザクションを関連するデータレプリカへ転送してもよく、そのデータレプリカは、トランザクションを明確に分解することができ、クライアントに接続されたノードへ応答を返すものであり、その後、そのノードがクライアントへ応答を返してもよい。
<データ分割>
各データセンター内で、論理データレイアウトは、マルチレベルの順序付けされたハッシュを介して、線形リング(linear ring)へと分割されてもよい。例えば、単一のデータベースのデータは、リング内で一緒にレイアウトすることができる。そのデータベース内で、同じクラスのインスタンスデータ、及び、同じインデックスのインデックスエントリを、共にグループ化することができる。データの順序付けは完全(total)であるため、インデックスタームの任意のセットやインスタンス主キー106をまたいで、範囲クエリが可能となる。
各データセンター内で、論理データレイアウトは、マルチレベルの順序付けされたハッシュを介して、線形リング(linear ring)へと分割されてもよい。例えば、単一のデータベースのデータは、リング内で一緒にレイアウトすることができる。そのデータベース内で、同じクラスのインスタンスデータ、及び、同じインデックスのインデックスエントリを、共にグループ化することができる。データの順序付けは完全(total)であるため、インデックスタームの任意のセットやインスタンス主キー106をまたいで、範囲クエリが可能となる。
データベース100は、所定の場所でレコードの更新をすることは決してないかもしれないが、書き込みホットスポットが依然として部分範囲内で可能である虞がある。これを軽減するために、バックグラウンドのリバランス・タスクを、常に低い優先度で実行することができる。バックグラウンドのリバランス・タスクは、バックグラウンド・タスクエンジン148によって実行することができる。
インスタンス(その履歴を含む)や特定のインデックスエントリの読み取り又は書き込み速度が、中央サイズをかなりのマージンで超える場合、読み取り及び書き込みのホットスポットが発生する虞がある。この場合、データベース100は、複数の範囲にわたってインスタンス又はインデックスエントリを適応的に分割し、読み取り時に部分的な分散−収集クエリを実行することができる。
<フォールト・トレランス>
データベース100は、それほど洗練されていないシステムでの可用性に影響する多くの種類の障害に対して、回復機能を有する場合がある。特に、データベース100クラスタは、データセンターレベルであっても、単一障害点に対して脆弱ではない。
データベース100は、それほど洗練されていないシステムでの可用性に影響する多くの種類の障害に対して、回復機能を有する場合がある。特に、データベース100クラスタは、データセンターレベルであっても、単一障害点に対して脆弱ではない。
データベース100が耐性を有するいくつかの特定の障害は、ノードが一時的に利用できない場合(プロセスクラッシュ、ハードウェア再起動)、ノードが永続的に利用できない場合(物理的なハードウェア障害)、ノードが遅くなる場合(ローカルリソースの競合又はハードウェアの劣化)、及び、ネットワークパーティションがデータセンターを分離する場合であり、この場合、分離されたデータセンターは、引き続き読み取りを処理できるが、書き込みを受け入れることはできない。
データベース100クラスタは、データセットの複数のレプリカを維持することに固有の冗長性により、障害に直面して可用性を維持することができる。例えば、5つのデータセンターで構成されたクラスタでは、3つのデータセンターが使用可能である限り、クラスタは全ての要求に応答することができる。
データベース100クラスタは、複数のデータセンターにおける部分的又は全体的な障害にも関わらず、トランザクションに応答することができるかもしれないが、それでも劣化状態になる虞がある。別のデータセンターで追加の障害が同時発生すると、可用性に影響する場合がある。
データベース100は、故障したノードやデータセンターを自動的に廃止しないかもしれず、この決定は、カスケード障害のトリガーを回避するために、オペレータに任される場合がある。
実施形態において、データベース・プラットフォームは、ストリーム処理(Spark/Yarn(登録商標)やSamza(登録商標)など)、グラフコンポーネント(Neo4J(登録商標)など)、キャッシング(Memcached(登録商標)など)、検索コンポーネント(ElasticSearch(登録商標)など)、分析コンポーネント(Vertica(登録商標)、Sybase(登録商標)、及びRedshift(登録商標)など)、メッセージブローカリング(Kafka(登録商標)など)、ストレージコンポーネント(S3(登録商標)など)、及び時系列コンポーネント(Influx(登録商標)など)といった、様々な運用データ管理コンポーネントを含むことができる。
<性能>
データベース100のスループットは、線形にスケーリングすることができる。レガシーなSQLシステムと異なり、適応型運用データベースは、計画の発見的変更の引き金となる虞があり、かつ、予期しない性能エラーをもたらす虞のある、全体的なデータセットのサイズにしきい値を課さなくてもよい。
データベース100のスループットは、線形にスケーリングすることができる。レガシーなSQLシステムと異なり、適応型運用データベースは、計画の発見的変更の引き金となる虞があり、かつ、予期しない性能エラーをもたらす虞のある、全体的なデータセットのサイズにしきい値を課さなくてもよい。
更に、適応型運用データベースの書き込みアクティビティは、競合下で十分に応答することができ、読み取り又は重複しない書き込みの干渉を回避することができる。
データベース100は、プレディケート・プッシュダウン機能を含んでいてもよい。プレディケート・プッシュダウンは、複雑なクエリの並列化に非常に効果的である。プレディケート・プッシュダウンは、例えば、書き込みのコミット、書き込み効果の観察、及び結果セットでの計算実行の双方について、クラスタサイズを大きくすることで、クエリ毎のレイテンシを改善することができる。歴史的な理由から、これらの機能は他の分散型データベースシステムではほとんど見られることがない。
<永続性>
データベース100は、ローカル・ストアモジュール(LSM)としても知られるローカル・ストアエンジンを含んでもよい。ローカル・ストアエンジンは、圧縮されたログ構造化マージツリーとして実装することができる。ローカル・ストアモジュール(LSM)・ストレージエンジン144には、磁気ドライブとSSDとの双方が好適である。ストレージエンジン144は、分散ストレージエンジン146内に含まれてもよい。分散ストレージエンジン146は、マルチデータ・センター・レプリケーション176をサポートしてもよく、分散ストレージ層アルゴリズムを含んでもよい。分散ストレージ層アルゴリズムは、ハイブリッド論理クロックアルゴリズム178、トランザクション分解アルゴリズム180、レプリケーションアルゴリズム182などであってもよい。更に、分散ストレージエンジン146は、オンディスク・ストレージエンジン184を含んでもよい。
データベース100は、ローカル・ストアモジュール(LSM)としても知られるローカル・ストアエンジンを含んでもよい。ローカル・ストアエンジンは、圧縮されたログ構造化マージツリーとして実装することができる。ローカル・ストアモジュール(LSM)・ストレージエンジン144には、磁気ドライブとSSDとの双方が好適である。ストレージエンジン144は、分散ストレージエンジン146内に含まれてもよい。分散ストレージエンジン146は、マルチデータ・センター・レプリケーション176をサポートしてもよく、分散ストレージ層アルゴリズムを含んでもよい。分散ストレージ層アルゴリズムは、ハイブリッド論理クロックアルゴリズム178、トランザクション分解アルゴリズム180、レプリケーションアルゴリズム182などであってもよい。更に、分散ストレージエンジン146は、オンディスク・ストレージエンジン184を含んでもよい。
<読み取りと書き込み>
データベース100は、ログ構造化されたマージツリーを含んでもよい。ログ構造のマージツリーは、ランダム書き込みをバルク書き込みへと変換し、書き込みスループットを大幅に向上させるように設計することができる。挿入マーカー及び削除マーカーは、フラットコミットログに記録することができ、ソートされたメモリテーブルに蓄積される。データベース100のテンポラル・データモデルは、不変バージョンで構成されるため、例えば特別な場合を除いてデータの上書きがなくてもよい。
データベース100は、ログ構造化されたマージツリーを含んでもよい。ログ構造のマージツリーは、ランダム書き込みをバルク書き込みへと変換し、書き込みスループットを大幅に向上させるように設計することができる。挿入マーカー及び削除マーカーは、フラットコミットログに記録することができ、ソートされたメモリテーブルに蓄積される。データベース100のテンポラル・データモデルは、不変バージョンで構成されるため、例えば特別な場合を除いてデータの上書きがなくてもよい。
メモリテーブルが固定サイズに達すると、それはログ構造化マージツリー内の不変レベルとしてディスクにダンプすることができる。その後、メモリテーブル及びコミットログを、アトミックにフラッシュできる。
<性能>
ローカルインデックス構造などの様々な他の最適化は、データ項目が存在するかどうかを見つけるための、各レベルファイル自体を通したシークの必要性を最小化するために、適応型運用データベースのメモリに保持することができる。
ローカルインデックス構造などの様々な他の最適化は、データ項目が存在するかどうかを見つけるための、各レベルファイル自体を通したシークの必要性を最小化するために、適応型運用データベースのメモリに保持することができる。
レベルファイル自体は、ディスク及びIOの使用量を削減するために、ディスク上で圧縮されてもよい。これにより、ファイルシステム・キャッシュの性能も向上する場合がある。レベルファイルが不変である可能性があるため、圧縮はレベルファイル毎に1回だけ行われ、パフォーマンスへの影響を最小限に抑える。
適応型運用データベースにおけるマルチレベル読み取りの待ち時間の影響を軽減するために、レベル数が固定サイズを超えたら、コンパクションと呼ばれるローカル・バックグラウンド処理をトリガーしてもよい。コンパクションは、レベルファイルのバッチの内容のインクリメンタル・マージソートを実行してもよく、新しい結合ファイルを発行してもよい。このプロセスでは、期限切れのデータを削除してもよく、削除マーカーを消してもよく、ディスク上のストレージ使用量が減少する。
コンパクションは、非同期的に実行され得るが、進行は時間と共に保証されなければならず、さもないと読み取り性能が低下する虞がある。コンパクションのタスクは、それらのリソース要求と同期トランザクションの優先順位付けの必要性とのバランスを取るために、データベース100のプロセススケジューラを介して管理することができる。
<一貫性>
データベース100は、一貫性モデル114を含んでもよい。データベース100の一貫性モデル114は、可用性、スケーラビリティ、スループット、或いは読み取りレイテンシを損なうことなく、グローバルに分散したクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性を提供するように設計することができる。
データベース100は、一貫性モデル114を含んでもよい。データベース100の一貫性モデル114は、可用性、スケーラビリティ、スループット、或いは読み取りレイテンシを損なうことなく、グローバルに分散したクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性を提供するように設計することができる。
実施形態において、グローバルに分散されたクラスタは、複数の地理的に多様なデータセンターやクラウド・インフラストラクチャ・プロバイダへ複製されてもよい。実施形態において、本開示のデータベース・プラットフォームは、異なるストレージ環境にわたるグローバルな複製を含む複製下で一貫性を維持し、更に実施形態では、データベースが企業の情報技術インフラストラクチャに具備される場合において、一貫性を維持することを含む(サービスとして提供されるだけではない)。
全ての書き込みは、グローバル・トランザクションログにおけるそれらの位置に基づいて、順序付けることができる。各ノードは、最後に適用されたログ位置を認識することができるため、全ての読み取りトランザクションは、それらを実行するクエリコーディネータの最後に複製されたログ位置で、一貫性が保証される。データベースドライバは、それらの最後のリクエストのログ位置の最高水準点(因果関係のトークンに相当)を維持し、グローバル・トランザクション順序の単調に進むビューを保証する。
最後に、書き込みトランザクションは、単一の論理データベースに制限されてもよいが、適切な許可が割り当てられていれば、複数の論理追加データベース104に再帰的にまたがる読み取り専用トランザクションを、読み取りコミットされる一貫性で実行することができる。
データベース100におけるトランザクションの分解は、最適化されたバージョンのRaftにより裏打ちされた、Calvinプロトコルに基づいてもよい。Raftは、分散トランザクションログを複製する役割を果たしてもよく、Calvinは、複数のデータレプリカにわたってトランザクションの分解を管理してもよい。
Calvin及びRaftの構成に基づくデータベース100は、読み取り性能を改善するために、テンポラリティと関わり合う場合がある。データベース100は履歴を保存することができるため、Raftのログは、履歴更新をノードに複製することができ、そのために、ノードは、クラスタ全体で調整することなく、過去の時点から読み取りを引き出すことができる。Calvin及びRaftの構成に基づくデータベース100は、グローバルなインターネットを横断することなく、強力で一貫性のある完全なトランザクション読み取りを可能にする。
Calvin及びRaftの構成に基づくデータベース100は、論理データセットがどの物理データセンターに複製されるべきかを、動的に選択することができる。データベース100は、様々なコンピューティングハードウェアにわたって、地理などにわたって、データセットを複製することができる。
グローバルに複製されたトランザクションログは、論理データベース内の全てのトランザクションの順序を維持することができる。そのログは、エポックと呼ばれる順序付けられた一連のバッチとして処理できる。データベース100内の典型的なエポックウィンドウは、10〜20ミリ秒であり、これは、クラスタがトランザクション・アプリケーションを並列化するのに役立つ一方で、トランザクション処理の待ち時間に最小限の影響を与える。
トランザクションがクエリコーディネータに提示されると、コーディネータは、トランザクションに最新の既知のログ・タイムスタンプをスタンプし、そのタイムスタンプでトランザクションを投機的に実行して、読み取り及び書き込みのインテントを見出す。トランザクションに書き込みが含まれる場合、それは最も近いログレプリカに転送され、他のレプリカとの合意により承諾されるように、次のエポックの一部としてそこで記録される場合がある。
この時点で、必要なデータセンター間通信のみが発生した可能性がある。エポック内の及びトランザクションログに関するトランザクションの順序は解決され、各データセンターは、トランザクションの影響を解決するために、独立的かつ決定論的に進めることができる。
次いで、トランザクションは、その読み取り及び書き込みのインテントによって決定されるように、各ローカルデータ・レプリカに転送されてもよい。各データレプリカは、そのパーティション内のデータの読み取り又は書き込みを含む、エポック内のトランザクションのサブセットのみを受信し、それらを所定の順序で処理する。各データレプリカは、それが所有していない値の読み取りをブロックしてもよく、読み取り用に関連する他の全てのパーティションへ読み取りを転送してもよい。トランザクションの全ての読み取り値を受信すると、トランザクションを分解してローカル書き込みを適用することができる。元の投機的実行の前提条件が失敗である場合、例えば、変更された値に依存する読み取りが、読み取りインテントのセットでカバーされなくなる場合は、トランザクションが中止されることがある。
トランザクションログがトランザクションのグローバルな順序を維持することができ、データノードがログ内の自身の位置を認識することができるため、読み取りは、常にローカルデータセンターから一貫して提供することができ、2つのトランザクションの因果順序は、常に夫々のログ位置の順序によって決定することができる。
Calvinベースのシステムにおけるトランザクションのスループットは、各エポック内のノード間の競合の度合いによって制約される。実施形態では、データベース100内の分解コンテキストが、論理データベースによって分割されてもよいため、全体的なトランザクションのスループットは制限されない。
実施形態において、分散トランザクションログは、パフォーマンスを改善するために、ストリーミング、リカバリ、圧縮、及び再試行のメカニズムで拡張されてもよい。
実施形態において、トランザクション分解エンジン180は、パフォーマンスを改善するために、ストリーミング、リカバリ、圧縮、及び再試行のメカニズムで拡張されてもよい。
<復元性>
適応型運用データベースのトランザクション処理パイプラインは、ノード障害や各ステップでの待ち時間に耐性がある。調整ノードがローカルのログレプリカと通信できない場合、そのトランザクションを別のログレプリカへ安全に転送することができる。データレプリカがローカルのログレプリカからエポックバッチをタイムリーに受信しない場合、別のログレプリカからエポックバッチを取得することができる。トランザクションの適用中に、データレプリカが他のパーティションからトランザクションの読み取りの一部を受けない場合、その失敗したパーティションの他のレプリカから、特定のログ位置で欠損値を安全に読み取ることができる。
適応型運用データベースのトランザクション処理パイプラインは、ノード障害や各ステップでの待ち時間に耐性がある。調整ノードがローカルのログレプリカと通信できない場合、そのトランザクションを別のログレプリカへ安全に転送することができる。データレプリカがローカルのログレプリカからエポックバッチをタイムリーに受信しない場合、別のログレプリカからエポックバッチを取得することができる。トランザクションの適用中に、データレプリカが他のパーティションからトランザクションの読み取りの一部を受けない場合、その失敗したパーティションの他のレプリカから、特定のログ位置で欠損値を安全に読み取ることができる。
<サービスの質>
急速に変化する作業負荷に効果的に応答するために、データベース100は、リソースを動的に割り当ててサービスの質を強化することができる、プロセススケジューラを実装してもよい。スケジューラは、データベース100クラスタ内の論理データベース階層をミラーリングする、一連の再帰的なワークキューとして実装することができる。個々のトランザクションは、まずはそれらの実行コンテキスト(同期又は非同期)によって、次いで、論理データベースの優先度或いはアクセスキーがある場合はアクセスキーの優先度である、それらの優先度のコンテキストによって、キューへとスロット化される。
急速に変化する作業負荷に効果的に応答するために、データベース100は、リソースを動的に割り当ててサービスの質を強化することができる、プロセススケジューラを実装してもよい。スケジューラは、データベース100クラスタ内の論理データベース階層をミラーリングする、一連の再帰的なワークキューとして実装することができる。個々のトランザクションは、まずはそれらの実行コンテキスト(同期又は非同期)によって、次いで、論理データベースの優先度或いはアクセスキーがある場合はアクセスキーの優先度である、それらの優先度のコンテキストによって、キューへとスロット化される。
協調型マルチタスクを介して、実行を進めてもよい。トランザクションは、再帰的な重み付け均等化キューイングアルゴリズムに従って実行するために選択することができ、ネイティブスレッドにスケジュールすることができる。データベース100は、クエリプランナを含んでいてもよい。クエリプランナは、インターリーブされて潜在的に並列化可能な一連の計算及びIOステージとして、トランザクションを評価することができ、予測可能なきめ細かいバリア(例えばループの繰り返し)で常に実行が生じることを保証できる。これにより、継続の複雑さを制限することができ、複雑で移植性のないプリエンプティブ・マルチタスクスキームを必要とせずに、各IO又は計算実行スレッドから予測可能な量のリソースが消費される度に、エグゼキュータのコンテキストスイッチとスケジューリングの再入力とができるようになる。
実施形態では、動的リソース・スケジューリング126がデータベースに提供される。これには、データベースクラスタ全体でのリソースの使用のスケジューリングと、論理データベース全体のレベルではなく、きめ細かいレベルでのリソースのスケジューリングとが含まれてよい。リソースの動的割り当て又は動的リソース・スケジューリング126は、利用率を最大化し、インフラストラクチャのフットプリントを最小化することができる。動的リソース・スケジューリング126は、セキュリティモデルを含んでもよい。セキュリティモデルは、データ自体を分離して、クエリ毎のレベルなどのきめ細かいレベルのデータへ、詳細な優先順位及びアクセスを割り当てることができる。動的リソース・スケジューリング126は、クエリ毎、ユーザ毎などの動的リソース・スケジューリングを可能にする。
<動的リソース割り当てのセキュリティモデル>
実施形態では、セキュリティモデルがデータ自体を分離するので、ユーザは、どのユーザやプロセスがどのデータに、どの優先順位で、どのアクセスで利用できるかを、完全な粒度で指定することができる。従来のデータベースは、ユーザやプロセスが特定の論理データベースにアクセスできるか否かを管理するなど、管理セキュリティに焦点を当てており、単一の論理DBを超えるアクセスという概念はほとんどない(マシンへの総管理アクセスを除く)。従来のアプローチでは、通常、ユーザはデータベース内の部分的なデータセットへのアクセスを制御できない。本明細書で説明するデータベース・プラットフォームは、データベース内のデータの再帰的階層を提供することができる(ファイルシステム上のフォルダと同様)。企業はアクセスを制御できるため、ユーザは部分的なデータセットへのアクセスを許可される(フラットなアクセス制御のセットではなく、階層を含む)。更に、プラットフォームの各データベース内で、ユーザは、ユーザ毎に個々の行へのアクセスを管理することができる。他のデータベースの場合、行レベルセキュリティは、存在する範囲で、プロセスを分離せずに、検証が困難な方法で実装されるため、ほとんどのユーザはそのような機能を全く使用しない。他の従来のアプローチは、データベースへのインタフェースを保護しない。ユーザは、与えられたユーザであり、特定の行にアクセスできると主張できるが、データベースは、ユーザを認証することができない。本明細書で説明するデータベース・プラットフォームは、データベースを使用するアプリケーションのアプリケーションレベルの開発を必要とせずに、ネイティブデータベース機能として、行レベルセキュリティと共に、識別及び認証を提供することができる。
実施形態では、セキュリティモデルがデータ自体を分離するので、ユーザは、どのユーザやプロセスがどのデータに、どの優先順位で、どのアクセスで利用できるかを、完全な粒度で指定することができる。従来のデータベースは、ユーザやプロセスが特定の論理データベースにアクセスできるか否かを管理するなど、管理セキュリティに焦点を当てており、単一の論理DBを超えるアクセスという概念はほとんどない(マシンへの総管理アクセスを除く)。従来のアプローチでは、通常、ユーザはデータベース内の部分的なデータセットへのアクセスを制御できない。本明細書で説明するデータベース・プラットフォームは、データベース内のデータの再帰的階層を提供することができる(ファイルシステム上のフォルダと同様)。企業はアクセスを制御できるため、ユーザは部分的なデータセットへのアクセスを許可される(フラットなアクセス制御のセットではなく、階層を含む)。更に、プラットフォームの各データベース内で、ユーザは、ユーザ毎に個々の行へのアクセスを管理することができる。他のデータベースの場合、行レベルセキュリティは、存在する範囲で、プロセスを分離せずに、検証が困難な方法で実装されるため、ほとんどのユーザはそのような機能を全く使用しない。他の従来のアプローチは、データベースへのインタフェースを保護しない。ユーザは、与えられたユーザであり、特定の行にアクセスできると主張できるが、データベースは、ユーザを認証することができない。本明細書で説明するデータベース・プラットフォームは、データベースを使用するアプリケーションのアプリケーションレベルの開発を必要とせずに、ネイティブデータベース機能として、行レベルセキュリティと共に、識別及び認証を提供することができる。
歴史的に、FireBase(登録商標)やParse(登録商標)などのプラットフォーム・アズ・ア・サービスのシステムは、限られた事前構成された行レベルセキュリティ、識別、及び認証モデルを備えた、マルチテナント・システムであった。特定のデータにアクセスする機能をユーザに付与できるが、本明細書で説明するデータベース・プラットフォームのように、複数のタイプのユーザやスキーマを作成することはできなかった。そのようなシステムにはQoS管理がないため、洗練されたクエリモデルを公開することはできなかった(例えばクエリ間でリソースを割り当てる)。
本明細書で説明するプラットフォームでは、企業又は他のユーザが、例えば、アプリケーションコンテキスト内などで、「このアプリのこのユーザはユーザが作成したデータにのみアクセスできる」と言うことができ、そしてそのユーザは、それらの特定のレコードにのみアクセスできる。例えば、企業は分析チームに全てに対する読み取り専用アクセスを許可する(例えば全てのデータセットに対するものであるが、データの書き込みや変更はできない)。従来のSQLデータベースでは、これらのタイプのルールをデータセット毎に割り当てる必要があり、1人のユーザによるユーザ自身の作成へのアクセスを全く制限できなかった。API/プロキシ又は同様のシステムを経由せずにデータベースと通信するために、ユーザにデータを公開することはできず、複雑さ、遅延、及びオーバヘッドが追加された。
データベース100は、データベース上のデータの再帰的階層を含んでもよい。再帰的階層により、オペレータは、階層アクセスを制御できるため、部分的なデータセットへのアクセスが提供される。更に、再帰的階層により、オペレータは、ユーザ毎及び/又はデータベース毎に個々の行へのアクセスを管理できる。再帰的階層により、複数のタイプのユーザ及びスキーマを作成できる。例えば、再帰的階層により、オペレータは、データベース100のユーザに、そのユーザが作成したデータへのアクセスのみを許可することができる。
全体的な影響は、データベース100の作業負荷がビジネス優先度によって再帰的に順序付けられ、低優先度のタスクがクラスタに残っているアイドル容量へ入り込むことができ、総利用率を劇的に改善することである。多様なアプリケーション、データセット、及び作業負荷を、単一のデータベースクラスタでホストできれば、従来の静的にプロビジョニングされてサイロ化されたデータアーキテクチャと比較して、価格/パフォーマンスが向上する。
サービス品質(QoS)は、QoS管理エンジン124によってクエリ毎に割り当てることができる。サービス品質は、プロセス分離エンジン130を含んでもよい。プロセス分離130により、オペレータは、同じデータに対するクエリの実行優先度を変えることができる。例えば、オペレータは、顧客向けのクエリに高い優先度を割り当て、レポートを作成する分析クエリに低い優先度を割り当ててもよい。顧客の使用が急増すると、優先度の低いクエリが優先される場合がある。
プロセス分離エンジン130により、オペレータは、相対的優先度に従って時間内にクエリを順序付けすることができる。データベース100のプロセス分離エンジン130は、データベースカーネルに深く組み込まれていてもよい。プロセス分離エンジン130により、オペレータは、様々な機能の待ち時間プロファイルを制御することができる。プロセス分離エンジン130は、スケジューラ、プロセススケジューラ、再帰的プロセススケジューラ、完全に公平なキューイング(CFQ)アルゴリズム188の再帰的な実行などの、再帰的プロセス実行部すなわち186を使用して実装されてもよい。
<プロセス分離の利点>
上述のように、データベースは、プロセス分離エンジン130を含んでもよい。プロセス分離により、コンテナシステムと同様に、競合する作業負荷を、1つのデータベースクラスタで安全かつ確実にホストできる。データベース内のプロセス分離により、ユーザは、同じデータに対するクエリの実行優先度を変えることができる。アプリケーションの優先順位は別のシステムで実行できるが、データベース内のプロセス分離により、少しの複雑さと少しのハードウェアとでプロセスの分離から恩恵を受ける、様々なアクティビティが可能になる。例えば、企業は、顧客向けのクエリに高い優先度を与え、標準レポートの作成に使用される分析クエリなどの重要度の低い項目に、比較的低い優先度を与えてもよい(例えば、顧客の使用が急増したときに、低い優先度のものが優先権を得るように)。従来のシステム(PostgreSQL(登録商標)やOracle(登録商標)データベースなど)では、ピーク容量を確保するために、ユーザはシステムを静的にプロビジョニングする必要がある。リソースを集中的に使用する低価値のタスクをユーザが実行している場合でも、ユーザは、実行中に他の全ての進行中のものに干渉しないように、十分な物理ハードウェアをプロビジョニングする必要がある。ピーク容量をプロビジョニングする必要があるため、ほとんどの企業が平均で1桁の使用率であって、つまり、ほとんどの企業は、ハードウェアに大きな料金を払って、様々なレベルのクエリプロセスをサポートするリソースについて、十分な可用性を確保している。
上述のように、データベースは、プロセス分離エンジン130を含んでもよい。プロセス分離により、コンテナシステムと同様に、競合する作業負荷を、1つのデータベースクラスタで安全かつ確実にホストできる。データベース内のプロセス分離により、ユーザは、同じデータに対するクエリの実行優先度を変えることができる。アプリケーションの優先順位は別のシステムで実行できるが、データベース内のプロセス分離により、少しの複雑さと少しのハードウェアとでプロセスの分離から恩恵を受ける、様々なアクティビティが可能になる。例えば、企業は、顧客向けのクエリに高い優先度を与え、標準レポートの作成に使用される分析クエリなどの重要度の低い項目に、比較的低い優先度を与えてもよい(例えば、顧客の使用が急増したときに、低い優先度のものが優先権を得るように)。従来のシステム(PostgreSQL(登録商標)やOracle(登録商標)データベースなど)では、ピーク容量を確保するために、ユーザはシステムを静的にプロビジョニングする必要がある。リソースを集中的に使用する低価値のタスクをユーザが実行している場合でも、ユーザは、実行中に他の全ての進行中のものに干渉しないように、十分な物理ハードウェアをプロビジョニングする必要がある。ピーク容量をプロビジョニングする必要があるため、ほとんどの企業が平均で1桁の使用率であって、つまり、ほとんどの企業は、ハードウェアに大きな料金を払って、様々なレベルのクエリプロセスをサポートするリソースについて、十分な可用性を確保している。
実施形態において、データベース・プラットフォームは、仮想化及びコンテナシステムを使用して、データベースに使用されるハードウェアリソースをプロビジョニング又はセグメント化することができる。プロセスの分離(各プロセスのQoSの分離を含む)により、企業は、相対的な優先度に従って時間内にプロセスをセグメント化できる(そして、その分離機能は、本明細書で説明するデータベース・プラットフォームのデータベースカーネルに組み込まれる)。まれな例外を除き、従来のデータベースシステムは、常にアクティブな全てのクエリに対してリソースを均等に分配する。特定のクエリパターンは、予測不可能な方法で他を枯渇させる傾向がある。その結果、高価値で低リソースのクエリと低価値で高リソースのクエリとを、同じ従来の方法で実行することは非常に危険であるため、ほとんどの企業は、運用プロセス、アプリケーション、及びサービスとは全く異なるデータベースで、分析などのアイテムを実行する。ユーザが論理データベースレベルで優先順位を割り当てることができるまれなシステムでさえ、データベース内の同じデータセットで動作しているクエリを分離することができない。
データベースカーネルでプロセス分離及びQoSを行うことの重要な利点は、オペレータがハードウェアを統合し、無駄な能力を排除できることである。又、アプリケーション開発者は、様々な機能、サービス、プロセスなどの、待ち時間プロファイルを制御することができる。更に、テナント毎に異なるクラウド又はハードウェアスライスをプロビジョニングする必要はなく、実際、静的プロビジョニングの決定を行う必要はない。代わりに、プロセス毎に定義されているQoSを用いて、ユーザは、必要に応じて、クエリを実行し、データの取得を開始し、ハードウェアを追加することができる。
<バックグラウンド・タスク>
データベース100は、バックグラウンド・タスクエンジン148を含んでもよい。バックグラウンド・タスクエンジン148は、バックグラウンド・タスクを実行することができる。バックグラウンド・タスクには、スキーマの変更、アンチエントロピーチェック、ユーザが提示した長時間実行クエリなどが含まれてよい。データベース100内のバックグラウンド・タスクは、ジャーナル化されたトポロジ認識タスクスケジューラによって内部的に管理されてもよい。バックグラウンド・タスクエンジン148は、有向非循環グラフ(DAG)タスク実行エンジン174を含んでもよい。
データベース100は、バックグラウンド・タスクエンジン148を含んでもよい。バックグラウンド・タスクエンジン148は、バックグラウンド・タスクを実行することができる。バックグラウンド・タスクには、スキーマの変更、アンチエントロピーチェック、ユーザが提示した長時間実行クエリなどが含まれてよい。データベース100内のバックグラウンド・タスクは、ジャーナル化されたトポロジ認識タスクスケジューラによって内部的に管理されてもよい。バックグラウンド・タスクエンジン148は、有向非循環グラフ(DAG)タスク実行エンジン174を含んでもよい。
実施形態において、データベースは、データベースに格納された企業の運用データに対するプロセスとして、タスク(分析タスクなど)の有向非循環グラフ(DAG)の実行機能を有効にする。
アプリケーションは、バックグラウンドクエリの提示によりタスクスケジューラとやり取りできる。例えば、最も単純なトランザクションは、論理データベースの一部のサブセットにマップし、結果セットを出力できる。より複雑なパイプラインは、変換及び集約の有向非循環グラフを通じてデータを処理できる。この方法の各ステップでは、サブタスクが進行するにつれて、中間結果が局所的にジャーナルされる場合がある。その後、結果を再分割して責任ノード(responsible node)へ転送し、存続させるか、又は次の処理ステップへ渡すことができる。
バックグラウンドクエリは、特定のクエリのロジックに対して不変の一貫した状態を提供するために、データベース100の状態のスナップショットで実行することができる。バックグラウンドクエリの最終結果は、一連の新しい又は更新されたインスタンス112として、通常のトランザクション処理パイプラインのエントリを介して公開される。
<集約>
データベース100は、ビルトイン、任意のユーザ定義の集約、及びターム内の範囲クエリとして、共通の集約をサポートしてもよい。
データベース100は、ビルトイン、任意のユーザ定義の集約、及びターム内の範囲クエリとして、共通の集約をサポートしてもよい。
集約はコンポーネントを有してもよい。コンポーネントには、ユーザ定義又は組み込みの集約関数タイプがある。ユーザ定義又は組み込みの集約関数タイプは、次のような内部インタフェースを有してよい:
initialize: T
add(L, T): T
remove(L, T): T
merge(T, T): T
finalize(T): L
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
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
関数定義APIは、構造内のジェネリック関数/ストアドプロシージャに対応することができ、ジェネリック関数を参照して定義を乾燥させる(DRY up definitions)ことができる。汎用関数は、クエリの実行中に通常の結果セットで呼び出すこともでき、これによって、汎用関数がより便利になり、テストがより容易になる。
一例では、これらはこのメソッドを使用して呼び出されてもよい:
call(aggregation_function, *L):1つ又は複数の要素の集約を追加及び終了
call(aggregation_function, *L):1つ又は複数の要素の集約を追加及び終了
この例で続けて、インデックスの場合、何かを集約するために、次のような特別な種類のインデックスを作成してもよい:
term bindings
value bindings
aggregation bindings
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():中央値を保持する
max():top(l)と同等
min():bottom(l)と同等
count():要素の数を数える
distinct():一意の「L's」のリストを保持する
sum():確認された全ての要素の合計を保持する
average():平均を保持する
median():中央値を保持する
追加の組み込み関数は、損失のある(lossy)集約を含んでもよい。損失のある集約には、次のものが含まれ得る:
top(N):順序付けられたリストでN個の最小「L's」を保持する(retain the N smallest L's)
(score, gamelD)のハイスコアリスト
bottom(N):上記の逆
histogram(...):ユーザ定義のバケット(bucketing)でヒストグラムを維持する
top(N):順序付けられたリストでN個の最小「L's」を保持する(retain the N smallest L's)
(score, gamelD)のハイスコアリスト
bottom(N):上記の逆
histogram(...):ユーザ定義のバケット(bucketing)でヒストグラムを維持する
インデックス「doclist」の値は、「T」タイプであってもよいが、「match()」の結果は、ファイナライザを適用してもよく、「L」タイプであってもよい。開発者は、通常、結果セットで「T」タイプを見ることがない。「T」タイプは、データベース100によってメタデータとして利用可能にされてもよい。
インデックスに複数のタームがある場合、各タームレベルで同じ集約を実行することができる。これにより、データベース100のユーザは、階層化されたバケットを作成できる。
データベース100は、Nエントリ毎に部分的集約のスナップショットを実現し、スナップショットに加えて先頭又は末尾のインデックスタプル又はインスタンスに基づいて、実行時に最終結果を計算することができる。
複数タームのインデックス付き集約のティアは、複数回計算される代わりにマージされてもよい。
<ジョブスケジューラ>
データベース100は、ジョブスキャナを含んでもよい。ジョブスキャナは、定期的なメンテナンスタスクを自動的にスケジュールすることができる。定期的なメンテナンスタスクは、継続的な管理タスク及び単一発行タスクであってよい。単一発行タスクは、ユーザのアクションによってトリガーされることがある。ユーザアクションは、インデックス定義アクションを変更する場合がある。データベース100は、スケジュールされて実行中のタスクと最近終了したタスクとの内省を実行することができる。
データベース100は、ジョブスキャナを含んでもよい。ジョブスキャナは、定期的なメンテナンスタスクを自動的にスケジュールすることができる。定期的なメンテナンスタスクは、継続的な管理タスク及び単一発行タスクであってよい。単一発行タスクは、ユーザのアクションによってトリガーされることがある。ユーザアクションは、インデックス定義アクションを変更する場合がある。データベース100は、スケジュールされて実行中のタスクと最近終了したタスクとの内省を実行することができる。
ジョブスキャナは、テーブルスキャンとしても知られる、データセット上で常時実行されるループを含んでもよい。テーブルスキャンは、遭遇した各ライブ行に対して、一連の未処理(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
foreach Row in Tables: // 調整される
foreach Job in Queue:
Job(Row) match { // 実際には、アック/エラーがバッチされる
case Done => acknowledge job
case Error => retry N times
case _ => continue
ジョブは、独自の完了状態と確認応答セマンティクスとを維持できる。ジョブスケジューラはキューに「少なくとも1回」のセマンティクスを実装できるため、ジョブはべき等(idempotent)でなければならない。
データベース100は、現在の反復でデータベース100によって読み取られたバイト数に基づいて、反復間の単純なスリープを介して、スキャナのスループットを絞ることができる。
データベース100は、スキャナを含んでもよい。スキャナは、データセットのスナップショット上で動作することができる。
データベース100は、マッパーを含んでもよい。マッパーは、スキャナを使用して、データセット内のインスタンスのサブセットをスキャンできる。タスクがインスタンスに関係ある場合、インスタンス内の各バージョンに適用されるクロージャを返す場合がある。
マッパーは、ジョブを実行してもよい。ジョブには、ユーザが開始した要求(インデックス作成など)及び管理タスク(データガベージコレクション、再分割など)が含まれる場合がある。
マッパーは、ユーザが開始した作業について入力キューをチェックし、それらのジョブを静的に定義された管理タスクにミックスすることができる。
マッパーは、マップタスクを実行してもよい。マップタスクは、コールバックで構成することができる。
タスクは、全てのインスタンスバージョンが消費された後に、作業を実行しなければならない場合がある。マッパーは、データの終わりを示すために、空のセットでもう一度2番目のコールバックを呼び出すようにアレンジできる。
<キュー>
データベース100は、キューを含んでもよい。キューは、時間分割される場合がある。キューは、ジョブの状態をサポートすることができる。
データベース100は、キューを含んでもよい。キューは、時間分割される場合がある。キューは、ジョブの状態をサポートすることができる。
キューは、時間パラメータを含むことができる。時間パラメータは、既存のものであってもよい。時間パラメータは、ジョブが実行に好適になる時間として使用できる。
キューは、状態パラメータを含むことができる。状態パラメータは、スケジュールされた状態パラメータ、処理状態パラメータ、及び終了状態パラメータであってもよい。
キューは、エンキュー関数を含んでもよい。
キューは、デキュー関数を含んでもよい。
データベース100は、レプリカ毎に1つのキューを、そのノードへ型付けされた永続的なチャネルの類似物として維持することができる。データベース100の単一発行ジョブのコーディネータノードは、トポロジ内の各レプリカにジョブを展開することができる。
バックグラウンド・タスクは、クラスタ全体又はデータベース毎に1つのインスタンスに制限されるか、特定のデータ範囲に割り当てられる場合がある。バックグラウンド・タスクに特定のデータ範囲が割り当てられている場合、実行中のノードは、その範囲のデータレプリカである可能性がある。各バックグラウンド・タスクの実行状態は、一貫性のあるメタデータストアに保持されるため、スケジュールされたタスクがノードに依存しない方法で実行される。例えば、ノードに障害が発生したり、クラスタから離脱したりした場合、そのタスクは、他の有効なノードに自動的に再割り当てされ、再起動又は再開される。
データベース100は、リソース・スケジューラを含んでもよい。バックグラウンド・タスクの実行スループットは、適応型運用データベースのリソース・スケジューラによって制御することができる。例えば、テナントに関連付けられていない一般的なバックグラウンド・タスクの作業は、低優先度で実行され、アイドルリソースが同期要求へのバックグラウンド・タスクの影響を許可及び排除するため、バックグラウンド・タスクを続行することができる。
<運用管理>
データベース100の運用管理インフラストラクチャは、一貫性メカニズム及びプロセススケジューラを再利用して、データベースが常にコヒーレントな状態にあること、及び、運用変更によって生成される作業が他の作業負荷に悪影響を与えないことを保証する。
データベース100の運用管理インフラストラクチャは、一貫性メカニズム及びプロセススケジューラを再利用して、データベースが常にコヒーレントな状態にあること、及び、運用変更によって生成される作業が他の作業負荷に悪影響を与えないことを保証する。
<トポロジの変更>
データベース100クラスタの複製トポロジは、一貫したステートマシンとして維持されてもよい。クラスタの状態が変化すると、全てのノードで一貫して複製されたメタデータストアに目的の状態がコミットされ、バックグラウンド・タスクは、クラスタを現在の状態から目的の状態に段階的に移行させることができる。
データベース100クラスタの複製トポロジは、一貫したステートマシンとして維持されてもよい。クラスタの状態が変化すると、全てのノードで一貫して複製されたメタデータストアに目的の状態がコミットされ、バックグラウンド・タスクは、クラスタを現在の状態から目的の状態に段階的に移行させることができる。
状態遷移は、クラスタ内の物理ノードの追加、リムーブ、又は交換、データセンターの追加又はリムーブ、論理データベースの複製構成の変更などを含んでよい。
クラスタの遷移状態中、ノード障害及び他の中断は、クラスタの可用性に影響を与えないことができる。スーパーバイザプロセスを実行しているノードに障害が発生すると、スーパーバイザロールでのリース(lease)が期限切れになり、別のノードがそのロールを引き受ける場合がある。各移行プロセス内の全ての増分ステップは、べき等であってよく、安全に再起動又は復帰することができる。
<その他のメンテナンスタスク>
データベース100は、他のメンテナンスタスクを含んでもよい。他のメンテナンスタスクには、論理形式及びストレージ形式のバックアップの作成、アンチエントロピーチェックの実行、及びオンディスクストレージ形式のアップグレードが含まれていてよい。
データベース100は、他のメンテナンスタスクを含んでもよい。他のメンテナンスタスクには、論理形式及びストレージ形式のバックアップの作成、アンチエントロピーチェックの実行、及びオンディスクストレージ形式のアップグレードが含まれていてよい。
これらのメンテナンスタスクは、ステートマシンの移行を必要としなくてもよいが、生産トラフィックへの影響を避けるために、プロセススケジューラになお依拠することがある。
本開示の詳細な実施形態が、本明細書に開示されており、しかしながら、開示された実施形態は、本開示の単なる例示であり、様々な形態で具現化できることを理解されたい。従って、本明細書で開示される特定の構造及び機能の詳細は、限定として解釈されるべきではなく、単に特許請求の範囲の根拠として、及び実質的に任意の適切に詳細な構造において本開示を様々に採用するように、当業者へ教示するための代表的な根拠として、解釈されるべきである。
本明細書で使用される「1つ(a)」又は「1つ(an)」という用語は、1つ又は複数として定義される。本明細書で使用される「別の、他の(another)」という用語は、少なくとも第2以上として定義される。本明細書で使用される「含む(including)」及び/又は「有する(having)」という用語は、含む(すなわちオープントランジション(open transition))として定義される。
本開示のいくつかの実施形態のみを示して説明したが、添付の特許請求の範囲で説明するような本開示の精神及び範囲から逸脱することなく、多くの変更及び修正を行うことができることは、当業者には明らかであろう。本明細書で参照されている、国内外の全ての特許出願及び特許、並びに他の全ての刊行物は、法律で許可されている範囲で、その全体が本明細書に組み込まれている。
本明細書で説明される方法及びシステムは、プロセッサ上でコンピュータソフトウェア、プログラムコード、及び/又は命令を実行する機械を介して、部分的又は全体的に展開することができる。本開示は、機械上の方法として、機械の一部又は機械に関するものとしてのシステム若しくは装置として、或いは、1つ以上の機械で実行されるコンピュータ可読媒体に組み入れられるコンピュータプログラム製品として、実装することができる。実施形態において、プロセッサは、サーバ、クラウドサーバ、クライアント、ネットワーク・インフラストラクチャ、モバイルコンピューティング・プラットフォーム、固定コンピューティング・プラットフォーム、或いは他のコンピューティング・プラットフォームの、一部であってもよい。プロセッサは、プログラム命令、コード、バイナリ命令などを実行可能な、任意の種類の計算又は処理デバイスであってよい。プロセッサは、シグナルプロセッサ、デジタルプロセッサ、埋め込みプロセッサ、マイクロプロセッサ、又は、コプロセッサ(数学コプロセッサ、グラフィックコプロセッサ、通信コプロセッサなど)、及びそこに格納されているプログラムコードやプログラム命令の実行を直接的又は間接的に促進することができるものといった、任意のバリアントであってよく、或いはそれらを含んでいてもよい。更に、プロセッサは、複数のプログラム、スレッド、及びコードの実行が可能であってもよい。スレッドを同時に実行して、プロセッサのパフォーマンスを向上させると共に、アプリケーションの同時操作を容易にすることができる。実現のために、本明細書で説明される方法、プログラムコード、プログラム命令などは、1つ以上のスレッドで実行されてもよい。スレッドは、関連付けられた優先順位が割り当てられている可能性のある他のスレッドを生成してもよく、プロセッサは、優先順位、或いは、プログラムコードで提供される命令に基づいた他の順序に基づいて、それらのスレッドを実行する。プロセッサ、又はそれを利用する任意の機械は、本明細書及び他の場所で説明される方法、コード、命令、及びプログラムを保存する、非一過性のメモリを含んでもよい。プロセッサは、本明細書及び他の場所で説明される方法、コード、及び命令を格納できる非一過性の記憶媒体に対して、インタフェースを介してアクセスしてもよい。方法、プログラム、コード、プログラム命令、又はコンピュータデバイスや処理デバイスによって実行可能な他のタイプの命令を格納するための、プロセッサに関連付けられた記憶媒体には、限定されるものではないが、CD−ROM、DVD、メモリ、ハードディスク、フラッシュドライブ、RAM、ROM、キャッシュなどのうちの1つ以上が含まれていてよい。
プロセッサには、マルチプロセッサの速度及びパフォーマンスを向上させることができる、1つ以上のコアが含まれてよい。実施形態において、そのプロセッサは、デュアルコアプロセッサ、クアッドコアプロセッサ、他のチップレベルマルチプロセッサ、及び、2つ以上の独立したコア(ダイと呼ばれる)を結合する類のものであってよい。
本明細書に記載の方法及びシステムは、サーバ、クライアント、ファイアウォール、ゲートウェイ、ハブ、ルーター、又は他のそのようなコンピュータ及び/又はネットワークハードウェア上で、コンピュータソフトウェアを実行する機械を通じて、部分的又は全体的に展開されてよい。ソフトウェアプログラムは、ファイルサーバと、プリントサーバと、ドメインサーバと、インターネットサーバと、イントラネットサーバと、クラウドサーバと、セカンダリサーバ、ホストサーバ、分散サーバなどの他のバリアントとを含み得る、サーバに関連付けることができる。サーバには、メモリと、プロセッサと、コンピュータ読み取り可能メディアと、ストレージメディアと、ポート(物理及び仮想)と、通信デバイスと、有線又は無線のメディアなどを介して他のサーバ、クライアント、マシン、及びデバイスにアクセス可能なインタフェースとのうちの、1つ以上が含まれてよい。本明細書及び他の場所で説明される方法、プログラム、又はコードは、サーバによって実行されてもよい。更に、本出願で説明されている方法の実行に必要な他のデバイスは、サーバに関連付けられたインフラストラクチャの一部と見なすことができる。
サーバは、クライアント、他のサーバ、プリンター、データベースサーバ、プリントサーバ、ファイルサーバ、通信サーバ、分散サーバ、ソーシャルネットワークなどを含むがこれらに限定されない他のデバイスへの、インタフェースを提供してもよい。更に、この結合及び/又は接続により、ネットワークを介したプログラムのリモート実行が容易になる場合がある。一部又は全てのそれらのデバイスのネットワーキングは、本開示の範囲から逸脱することなく、1つ又は複数の場所での、プログラム又は方法の並列処理を促進することができる。加えて、インタフェースを介してサーバに接続されたデバイスの何れかは、方法、プログラム、コード、及び/又は命令を保存可能な、少なくとも1つの記憶媒体を含んでもよい。セントラルリポジトリは、様々なデバイスで実行されるプログラム命令を提供する場合がある。この実装において、リモートリポジトリは、プログラムコード、命令、及びプログラムのための記憶媒体として機能することができる。
ソフトウェアプログラムは、ファイルクライアントと、プリントクライアントと、ドメインクライアントと、インターネットクライアントと、イントラネットクライアントと、二次クライアント、ホストクライアント、分散クライアントなどの他のバリアントとを含み得る、クライアントに関連付けられてもよい。クライアントには、メモリと、プロセッサと、コンピュータ読み取り可能メディアと、ストレージメディアと、ポート(物理及び仮想)と、通信デバイスと、有線又は無線のメディアなどを介して他のクライアント、サーバ、マシン、及びデバイスにアクセス可能なインタフェースとのうちの、1つ以上が含まれてよい。本明細書及び他の場所で説明される方法、プログラム、又はコードは、クライアントによって実行されてもよい。更に、本出願で説明されている方法の実行に必要な他のデバイスは、クライアントに関連付けられたインフラストラクチャの一部と見なすことができる。
クライアントは、サーバ、他のクライアント、プリンター、データベースサーバ、プリントサーバ、ファイルサーバ、通信サーバ、分散サーバなどを含むがこれらに限定されない他のデバイスへの、インタフェースを提供してもよい。更に、この結合及び/又は接続により、ネットワークを介したプログラムのリモート実行が容易になる場合がある。一部又は全てのそれらのデバイスのネットワーキングは、本開示の範囲から逸脱することなく、1つ又は複数の場所での、プログラム又は方法の並列処理を促進することができる。加えて、インタフェースを介してクライアントに接続されたデバイスの何れかは、方法、プログラム、アプリケーション、コード、及び/又は命令を保存可能な、少なくとも1つの記憶媒体を含んでもよい。セントラルリポジトリは、様々なデバイスで実行されるプログラム命令を提供する場合がある。この実装において、リモートリポジトリは、プログラムコード、命令、及びプログラムのための記憶媒体として機能することができる。
本明細書で説明される方法及びシステムは、ネットワーク・インフラストラクチャを介して、部分的又は全体的に展開されてもよい。ネットワーク・インフラストラクチャには、コンピューティングデバイス、サーバ、ルーター、ハブ、ファイアウォール、クライアント、パーソナルコンピュータ、通信デバイス、ルーティングデバイス、及び、当業界で既知のその他の能動的及び受動的なデバイス、モジュール、及び/又はコンポーネントなどの、要素が含まれてよい。ネットワーク・インフラストラクチャに関連付けられたコンピューティング及び/又は非コンピューティングデバイスは、他のコンポーネントとは別に、フラッシュメモリ、バッファ、スタック、RAM、ROMなどの記憶媒体を含んでもよい。本明細書及び他の場所で説明されるプロセス、方法、プログラムコード、命令は、ネットワーク・インフラストラクチャの要素のうちの1つ又は複数によって実行することができる。本明細書で説明される方法及びシステムは、ソフトウェア・アズ・ア・サービス(SaaS)、プラットフォーム・アズ・ア・サービス(PaaS)、及び/又はインフラストラクチャ・アズ・ア・サービス(IaaS)の機能を包含するものを含む、あらゆる種類のプライベート、コミュニティ、又はハイブリッドのクラウドコンピューティング・ネットワーク、或いは、クラウドコンピューティング環境での使用に適合させることができる。
本明細書及び他の場所で説明される方法、プログラムコード、及び命令は、複数のセルを有するセルラーネットワーク上で実装されてもよい。セルラーネットワークは、周波数分割多元接続(FDMA)ネットワーク、或いは、符号分割多元接続(CDMA)ネットワークの何れかである。セルラーネットワークは、モバイルデバイス、セルサイト、基地局、中継器、アンテナ、タワーなどを含んでもよい。セルネットワークは、GSM、GPRS、3G、EVDO、メッシュ、又はその他のネットワークタイプであってもよい。
本明細書及び他の場所で説明される方法、プログラムコード、及び命令は、モバイルデバイス上に或いはモバイルデバイスを介して実装されてもよい。モバイルデバイスには、ナビゲーション機器、携帯電話、モバイルフォン、携帯情報端末、ラップトップ、パームトップ、ネットブック、ポケットベル、電子書籍リーダー、音楽プレーヤーなどが含まれてよい。これらのデバイスには、他のコンポーネントとは別に、フラッシュメモリ、バッファ、RAM、ROM、及び1つ以上のコンピューティングデバイスなどの、記憶媒体が含まれてよい。モバイルデバイスに関連付けられたコンピューティングデバイスは、そこに格納されたプログラムコード、方法、及び命令を実行できるようになってもよい。或いは、モバイルデバイスは、他のデバイスと連携して命令を実行するように構成されてもよい。モバイルデバイスは、サーバと接続されてプログラムコードを実行するように構成された、基地局と通信する場合がある。モバイルデバイスは、ピアツーピアネットワーク、メッシュネットワーク、又は他の通信ネットワーク上で通信することができる。プログラムコードは、サーバに関連付けられた記憶媒体に格納され、サーバ内に埋め込まれたコンピューティングデバイスによって実行されてもよい。基地局は、コンピューティングデバイス及び記憶媒体を含んでよい。その記憶装置は、基地局に関連付けられたコンピューティングデバイスによって実行される、プログラムコード及び命令を記憶してもよい。
コンピュータソフトウェア、プログラムコード、及び/又は命令は、以下を含む機械可読媒体に格納及び/又はアクセスすることができる:一定期間に計算に使用されるデジタルデータを保持するコンピュータコンポーネント、デバイス、及び記録媒体;ランダムアクセスメモリ(RAM)として知られる半導体ストレージ;光ディスクと、ハードディスク、テープ、ドラム、カード、及びその他の種類といった磁気ストレージの形式とのような、典型的により永続的なストレージ用の大容量ストレージ;プロセッサレジスタ、キャッシュメモリ、揮発性メモリ、不揮発性メモリ;CD、DVDといった光学ストレージ;フラッシュメモリ(USBスティックやキーなど)、フロッピーディスク、磁気テープ、紙テープ、パンチカード、独立型RAMディスク、Zipドライブ、リムーバブル大容量ストレージ、オフラインといったリムーバブルメディア;ダイナミックメモリ、スタティックメモリ、読み取り/書き込みストレージ、可変ストレージ、読み取り専用、ランダムアクセス、シーケンシャルアクセス、ロケーションアドレス可能、ファイルアドレス可能、コンテンツアドレス可能、ネットワーク接続ストレージ、ストレージエリアネットワーク、バーコード、磁気インクなどといった、他のコンピューターメモリ。
本明細書で説明される方法及びシステムは、物理的及び/又は無形のアイテムを、ある状態から別の状態に変換することができる。更に、本明細書で説明される方法及びシステムは、物理的及び/又は無形のアイテムを表すデータを、ある状態から別の状態に変換することもできる。
図面全体のフローチャート及びブロック図内のものを含む、本明細書で説明及び図示された要素は、要素間の論理的境界を意味する。しかしながら、ソフトウェア又はハードウェアのエンジニアリング慣行に従って、描かれた要素及びそれらの機能は、モノリシックソフトウェア構造として、独立型ソフトウェアモジュールとして、或いは、外部ルーチン、コード、サービスなど、又はそれらの任意の組み合わせを採用したモジュールとして、そこに格納されたプログラム命令を実行可能なプロセッサを有する、コンピュータ実行可能なメディアを介してマシンに実装することができ、そしてそのような実装は全て、本開示の範囲内にあり得る。そのような機械の例には、これらに限定されるものではないが、携帯情報端末、ラップトップ、パーソナルコンピュータ、携帯電話、その他の携帯型コンピューティングデバイス、医療機器、有線又は無線の通信デバイス、トランスデューサ、チップ、計算機、衛星、タブレットPC、電子書籍、ガジェット、電子デバイス、人工知能を備えたデバイス、コンピューティングデバイス、ネットワーク機器、サーバ、ルーターなどが含まれてよい。更に、フローチャート及びブロック図に描かれた要素や他の論理コンポーネントは、プログラム命令を実行可能なマシン上で実装されてもよい。従って、前述の図面及び説明は、開示されたシステムの機能的側面を示しているが、これらの機能的側面を実装するためのソフトウェアの特定の配置は、明示的に述べられるか文脈から明確でない限り、これらの説明から推測されるべきではない。同様に、上記で特定及び説明された様々なステップが変更されてもよく、ステップの順序が本明細書で開示された技術の特定の用途に適合されてもよいことは、理解されるであろう。そのような変形及び修正は全て、本開示の範囲内に含まれることが意図されている。そのため、様々なステップの順序の描写及び/又は説明は、特定の用途で必要とされない限り、又は明示的に述べられるか文脈から明確でない限り、それらのステップの特定の実行順序を必要とすると理解されるべきではない。
上述の方法及び/又はプロセス、並びにそれらに関連するステップは、特定の用途に適した、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの任意の組み合わせにおいて、実現することができる。ハードウェアは、汎用コンピュータ及び/又は専用コンピューティングデバイスや特定のコンピューティングデバイス、又は特定のコンピューティングデバイスの特定の側面やコンポーネントを含んでもよい。プロセスは、内部及び/又は外部メモリと共に、1つ又は複数の、マイクロプロセッサ、マイクロコントローラ、埋め込みマイクロコントローラ、プログラム可能なデジタルシグナルプロセッサ、又は他のプログラム可能なデバイスにおいて、実現することができる。加えて又は代わりに、プロセスは、特定用途向け集積回路、プログラム可能なゲートアレイ、プログラム可能なアレイロジック、又は電子信号を処理するように構成することができる任意の他のデバイスやデバイスの組み合わせにおいて、具体化されてもよい。更に、1つ又は複数のプロセスが、機械可読媒体上で実行可能なコンピュータ実行可能コードとして実現できることは、理解されよう。
コンピュータ実行可能コードは、Cなどの構造化プログラミング言語、C++などのオブジェクト指向プログラミング言語、或いは、プロセッサの異種の組み合わせ、プロセッサアーキテクチャ、或いは、様々なハードウェア及びソフトウェア、又はプログラム指示を実行できる任意の他のマシンの組み合わせと同様に、上記のデバイスの何れかで実行するために保存、コンパイル、又は解釈できる、任意の他の高レベル又は低レベルプログラミング言語(アセンブリ言語、ハードウェア記述言語、及びデータベースプログラミング言語とテクノロジとを含む)を使用して、作成することができる。
従って、一態様において、上記の方法及びそれらの組み合わせは、1つ又は複数のコンピューティングデバイス上で実行するときにそれらのステップを実行する、コンピュータ実行可能コードで具現化することができる。別の態様において、方法は、それらのステップを実行するシステムで具現化することができ、いくつかの方法でデバイスに分散されてもよく、或いは、機能の全てが専用の独立型デバイスや他のハードウェアに統合されてもよい。他の態様において、上記のプロセスに関連するステップを実行するための手段は、上述したハードウェア及び/又はソフトウェアの何れかを含んでよい。そのような置換及び組み合わせは全て、本開示の範囲内に含まれることが意図されている。
本開示は、詳細に示されて説明された好ましい実施形態に関連して開示されたが、それに対する様々な修正及び改善は、当業者には容易に明らかになるであろう。従って、本開示の精神及び範囲は、前述の例によって限定されるものではなく、法律で許容される最も広い意味で理解されるべきである。
本開示を説明する文脈における(特に添付の特許請求の範囲における)、「1つ(a)」と「1つ(an)」と「その(the)」という用語及び類似の指示物の使用は、本明細書で特に明記しない限り、又は文脈により明らかに矛盾しない限り、単数及び複数の両方を包含すると解釈されるべきである。「含む(comprising)」、「有する(having)」、「含む(including)」、及び「含む(containing)」という用語は、特に断り書きのない限り、無制限の用語(つまり「含むが、これに限定されない」という意味)と解釈されるべきである。本明細書における値の範囲の列挙は、本明細書で特に明記しない限り、範囲内に入る各個別の値を個別に参照する略記法として機能することを意図しているだけであり、各個別の値は、本明細書に個別に列挙されているかのように明細書に組み込まれている。本明細書で説明される全ての方法は、本明細書で特に指示されない限り、又は文脈によって明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるありとあらゆる例、又は例示的な言葉(例えば、「など」)の使用は、単に本開示をより良く解明することを意図しており、特に請求されない限り本開示の範囲の限定をもたらすものではない。請求されていない要素が開示の実施に不可欠であることを、明細書中の言語が示していると解釈されるべきではない。
前述の記載により、当業者は、現在その最良のモードであると考えられるものを作成及び使用することができるが、当業者は、本明細書の特定の実施形態、方法、及び例の、変形、組み合わせ、及び等価物の存在を、理解及び認識するであろう。従って、本開示は、上記の実施形態、方法、及び例によって限定されるべきではなく、本開示の範囲及び精神内の全ての実施形態及び方法によって限定されるべきである。
特定の機能を実行するための「手段」又は特定の機能を実行するための「ステップ」を、明示的に述べていない特許請求の範囲内の要素は、米国特許法第112条(f)で指定された「手段」又は「ステップ」の節として解釈されるものではない。特に、特許請求の範囲での「ステップ」の使用は、米国特許法第112条(f)の規定を呼び出すことを意図したものではない。
当業者は、本発明のシステムの機能的利益を享受するために、多数の設計構成が可能であることを理解することができる。従って、本発明の実施形態の多種多様な構成及び配置を考慮すると、本発明の範囲は、上記の実施形態によって狭められるのではなく、添付の特許請求の範囲の広さによって反映される。
100:データベース、106:キー、108:インデックス、110:クラス、112:インスタンス、118:クエリ・ストリーミングエンジン、122:エラスティック・アーキテクチャ、126:動的リソース・スケジューリング、130:プロセス分離エンジン、132:リレーショナル・クエリ言語、138:カラムナ分析システム、140:マルチ・テナンシーエンジン、142:テナント、144:オンディスク・ストレージエンジン、148:バックグラウンド・タスクエンジン、154:マスターレス・アーキテクチャ、156:QoS管理、160:再帰的マルチ・テナンシー、168:行レベルセキュリティ、170:行レベル認証、172:行レベル識別、174:DAGタスク実行エンジン、180:トランザクション分解アルゴリズム、182:レプリケーションアルゴリズム、184:オンディスク・ストレージエンジン、196:機能的クエリ言語、198:テンポラル・クエリ関数
Claims (293)
- データの保存及び検索のためのデータベースシステムであって、
トランザクション・データベースへのクエリ式を受け入れるように構成された動的データセットへの、リアルタイムアクセスを提供する分散データアーキテクチャを有し、前記トランザクション・データベースの少なくとも1つの基礎となるデータ構造から抽出された前記トランザクション・データベースと、
前記クエリ式を使用するクエリを介して、ユーザが前記トランザクション・データベースに問い合わせするように構成されたユーザインタフェースと、を含み、
前記トランザクション・データベースは、前記動的データセット内のデータの現在の状態を反映するクエリへの応答を配信することを特徴とするデータベースシステム。 - 前記ユーザインタフェースは、複数のユーザによる同時のクエリを容易にするものであることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、クエリへの応答を返すのに必要な時間を実質的に損なうことなく、少なくとも1000人のユーザによるクエリへの応答を容易にすることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、トランザクションのロック及びコミットの少なくとも一方に、コンセンサスアルゴリズムを使用することを特徴とする請求項1記載のデータベースシステム。
- 前記コンセンサスアルゴリズムが、Raftアルゴリズムであることを特徴とする請求項5記載のデータベースシステム。
- 前記トランザクション・データベースは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項1記載のデータベースシステム。
- 前記データベースが、企業向けのオンプレミス・データベースであることを特徴とする請求項1記載のデータベースシステム。
- 前記データベースが、クラウドデータベースであることを特徴とする請求項1記載のデータベースシステム。
- 前記データベースが、パブリッククラウド・データベースであることを特徴とする請求項10記載のデータベースシステム。
- 前記データベースが、プライベートクラウド・データベースであることを特徴とする請求項10記載のデータベースシステム。
- 前記トランザクション・データベースは、電子商取引システムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、ソーシャル・ネットワークシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、広告ネットワークシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、通信ネットワークと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、ロケーションベースのサービスシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、非トランザクション・データベースと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、オペレーティングシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、ディスクストレージ・インフラストラクチャを使用することを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、ストレージエリアネットワーク・ストレージ・インフラストラクチャを使用することを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、データストレージ用のオペレーティングシステム・コンポーネントと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、マルチクラウド展開をサポートすることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、インスタンス分割のために主キーを用いるデータ分割を使用すると共に、インデックスに対してターム分割を使用することを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、圧縮ログ構造化マージツリーとして実装されるローカル・ストレージエンジンを使用することを特徴とする請求項1記載のデータベースシステム。
- データの保存及び検索のためのデータベースシステムであって、
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、前記トランザクション・データベースにアクセスするクライアントシステムのクライアントドライバ・ホストファイル内の埋め込み式ドメイン固有言語として実装される、機能的クエリ言語で表現されたクエリを受け入れるように構成されていることを特徴とするデータベースシステム。 - 前記クライアントドライバ・ホストファイルは、ソフトウェア開発ツールにおけるデータベース機能の開始時にアクセスされることを特徴とする請求項26記載のデータベースシステム。
- 分散グローバルログを使用して、分散システム用の複数のデータトランザクションに対して、原子性、一貫性、独立性、及び永続性を提供する、トランザクションエンジンを含むことを特徴とするシステム。
- 前記分散システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項28記載のシステム。
- 前記分散システムが、トランザクション・データベースであることを特徴とする請求項28記載のシステム。
- 前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項30記載のシステム。
- 前記分散システムは、コンセンサスアルゴリズムを使用することを特徴とする請求項28記載のシステム。
- 前記コンセンサスアルゴリズムが、Raftアルゴリズムであることを特徴とする請求項32記載のシステム。
- 前記分散システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項28記載のシステム。
- 前記分散システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項28記載のシステム。
- データの保存及び検索のためのシステムであって、
一回のネットワーク往復中に実行される、データトランザクション・ロック及びデータトランザクション・コミットの少なくとも一方を有する、分散システムを含むことを特徴とするシステム。 - 前記分散システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項36記載のシステム。
- 前記分散システムは、該分散システム全体のデータトランザクションについて、グローバルログを使用することを特徴とする請求項36記載のシステム。
- 前記分散システムが、トランザクション・データベースであることを特徴とする請求項36記載のシステム。
- 前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項39記載のシステム。
- 前記分散システムは、コンセンサスアルゴリズムを使用して、そのデータベースをロックするか、或いは、トランザクションをコミットするかを決定することを特徴とする請求項36記載のシステム。
- 前記コンセンサスアルゴリズムが、Raftアルゴリズムであることを特徴とする請求項41記載のシステム。
- 前記分散システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項36記載のシステム。
- 前記分散システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項36記載のシステム。
- データを有する分散データアーキテクチャを備えるトランザクション・データベースを含み、
前記データは、前記トランザクション・データベースのメモリ内で静止中に暗号化されると共に、メモリロケーションへの及びメモリロケーションからの伝送中に、前記トランザクション・データベースによって使用されることを特徴とするシステム。 - 前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項45記載のシステム。
- 前記トランザクション・データベースは、トランザクションのロック及びコミットのうちの少なくとも一方について、コンセンサスアルゴリズムを使用することを特徴とする請求項45記載のシステム。
- 前記コンセンサスアルゴリズムが、Raftコンセンサスアルゴリズムであることを特徴とする請求項47記載のシステム。
- 前記トランザクション・データベースは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項45記載のシステム。
- 前記トランザクション・データベースは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項45記載のシステム。
- 分散データ記憶及び検索システムと、
データベースレコードの履歴全体を保持及びインデックス付けするテンポラル・ストレージエンジンと、を含み、
ユーザが選択するように設定された時間間隔での、データベーストランザクションのイベントストリームへのアクセスを容易にし、
前記イベントストリームへのアクセス権が、前記イベントストリーム内の複数のイベント毎に独立して制御されることを特徴とするシステム。 - 前記分散データ記憶及び検索システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項51記載のシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項51記載のシステム。
- 前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項53記載のシステム。
- 前記分散データ記憶及び検索システムは、コンセンサスアルゴリズムを使用することを特徴とする請求項51記載のシステム。
- 前記コンセンサスアルゴリズムが、Raftコンセンサスアルゴリズムであることを特徴とする請求項55記載のシステム。
- 前記分散データ記憶及び検索システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項51記載のシステム。
- 前記分散データ記憶及び検索システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項51記載のシステム。
- ステートレスセッションを可能にすると共に、トランザクション・コンテキストを覆い隠すアクセストークンで各データトランザクションを識別する、データの記憶及び検索のための分散システムを含むことを特徴とするシステム。
- 前記分散システムが、分散データアーキテクチャを有するトランザクション・データベースであることを特徴とする請求項59記載のシステム。
- 前記トランザクション・データベースに対するクエリは、ホストアプリケーション言語で記述され、該ホストアプリケーション言語のセキュリティ機能を継承することを特徴とする請求項60記載のシステム。
- 前記トランザクション・データベースに対するクエリは、アトミックにかつトランザクション毎に実行されることを特徴とする請求項60記載のシステム。
- ホストアプリケーション言語の、本質的にスケーラブルではないクエリ・セマンティクスは、スケーラブルなセマンティクスに置き換えられることを特徴とする請求項60記載のシステム。
- 前記分散システムは、前記トランザクション・データベース内のレコードのネイティブな地理的インデックス付けを可能にするように構成されることを特徴とする請求項60記載のシステム。
- 前記分散システムは、前記トランザクション・データベース内でのネイティブな全文検索を可能にするように構成されることを特徴とする請求項60記載のシステム。
- 前記分散システムは、前記トランザクション・データベースを介したネイティブな反復機械学習を可能にするように構成されることを特徴とする請求項60記載のシステム。
- クエリ言語を使用する分散データ記憶及び検索システムを含み、
前記クエリ言語は、前記分散データ記憶及び検索システムの読み取り及び書き込みの単相プロセスを可能にする、完全なトランザクション・オブジェクトとして送信されたクエリを受け入れることを特徴とするシステム。 - 前記分散データ記憶及び検索システムが、分散データアーキテクチャを有するデータベースであることを特徴とする請求項67記載のシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項67記載のシステム。
- 前記トランザクション・データベースは、機能的クエリ言語を使用することを特徴とする請求項69記載のシステム。
- 前記分散データ記憶及び検索システムは、コンセンサスアルゴリズムを使用することを特徴とする請求項67記載のシステム。
- 前記コンセンサスアルゴリズムが、Raftコンセンサスアルゴリズムであることを特徴とする請求項71記載のシステム。
- 前記分散データ記憶及び検索システムは、データベーストランザクションの単相ロックを可能にすることを特徴とする請求項67記載のシステム。
- 前記分散データ記憶及び検索システムは、データベーストランザクションの単相コミットを可能にすることを特徴とする請求項67記載のシステム。
- グローバル・トランザクションログ内の各トランザクションの位置に基づく、トランザクションの厳密な直列化可能性を使用して提供される、トランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項75記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項76記載のシステム。
- 前記トランザクション・データベースは、トランザクションを保存する時間間隔をユーザが設定できるようにする、テンポラル・ストレージエンジンを使用することを特徴とする請求項76記載のシステム。
- 前記トランザクションの厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項75記載のシステム。
- 読み取り専用トランザクションが直列化可能であることを特徴とする請求項75記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項76記載のシステム。
- クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項76記載のシステム。
- 前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項76記載のシステム。 - グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性を使用して提供される、ロックレスのトランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項84記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項85記載のシステム。
- 前記トランザクション・データベースは、トランザクションの記憶のための時間間隔をユーザが設定できるようにする、テンポラル・ストレージエンジンを使用することを特徴とする請求項85記載のシステム。
- トランザクションの前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項84記載のシステム。
- 読み取り専用トランザクションが直列化可能であることを特徴とする請求項84記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項85記載のシステム。
- クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項85記載のシステム。
- 前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項85記載のシステム。 - コンセンサス戦略をデータベースロックに適用することによりデータベーストランザクションに提供される、トランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項93記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項94記載のシステム。
- 前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項94記載のシステム。
- 各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項93記載のシステム。
- 読み取り専用トランザクションが直列化可能であることを特徴とする請求項93記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項94記載のシステム。
- クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項94記載のシステム。
- 前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項94記載のシステム。 - グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性の使用と、データベーストランザクションについての楽観的ロッキングの使用とにより、前記データベーストランザクションに提供される、トランザクション一貫性を有する、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項102記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項103記載のシステム。
- 前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項103記載のシステム。
- 前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項102記載のシステム。
- 読み取り専用トランザクションが直列化可能であることを特徴とする請求項102記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、ドライバを含むことを特徴とする請求項103記載のシステム。
- クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項103記載のシステム。
- 前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項103記載のシステム。 - グローバル・トランザクションログ内のトランザクション位置に基づく厳密な直列化可能性を使用してデータベーストランザクションに提供される、直列化可能な保証を含む、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項111記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項112記載のシステム。
- 前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項112記載のシステム。
- 前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項111記載のシステム。
- 読み取り専用トランザクションが直列化可能であることを特徴とする請求項111記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項112記載のシステム。
- クラスタ内の前記トランザクション・データベースを使用する各データセンターは、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項112記載のシステム。
- 前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項112記載のシステム。 - データベーストランザクションがグローバルログで記録される、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムは、トランザクション・データベースであることを特徴とする請求項120記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項121記載のシステム。
- 前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項121記載のシステム。
- 各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項120記載のシステム。
- 読み取り専用トランザクションが直列化可能であることを特徴とする請求項120記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項121記載のシステム。
- クラスタ内の前記トランザクション・データベースを使用する各データセンターが、同期スキームを使用して、全てのクエリコーディネータ間で最も直近に適用されたログ位置を共有し、これにより、クライアント全体で一貫したビューを自動的に提供することを特徴とする請求項121記載のシステム。
- 前記トランザクション・データベースの書き込みトランザクションは、単一の論理データベースに制限され、
権限の検証時に、複数の論理データベースに再帰的にまたがる読み取り専用トランザクションは、単一データベースの読み取り専用トランザクションと同じ直列化可能性の保証を維持することを特徴とする請求項121記載のシステム。 - データベーストランザクションがグローバルログで記録される、分散データ記憶及び検索システムを含み、
前記グローバルログが、前記分散データ記憶及び検索システムを使用する少なくとも1つのテナントに固有のものであることを特徴とするシステム。 - 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項129記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項130記載のシステム。
- 前記トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項130記載のシステム。
- 各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項129記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項130記載のシステム。
- テナント、ポリシー、及びロールのうちの少なくとも1つによって分割されたグローバルログで、データベーストランザクションが記録される、分散データ記憶及び検索システムを含むことを特徴とするシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項135記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項136記載のシステム。
- 前記トランザクション・データベースは、前記データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項136記載のシステム。
- 各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項135記載のシステム。
- 前記トランザクション・データベースは、最後のリクエストのグローバルログ位置の最高水準点を維持すると共に、グローバル・トランザクション順序の単調に進むビューを保証するように構成される、データベースドライバを含むことを特徴とする請求項136記載のシステム。
- 厳密な直列化可能性を使用する複数の分散システムにわたる読み取りについて、トランザクション一貫性を提供する、分散データ記憶及び検索システムを含み、
前記厳密な直列化可能性は、前記複数の分散システムの複数の独立したトランザクションログにおける、読み取りのトランザクション位置に基づくものであることを特徴とするシステム。 - 前記複数の分散システムからの分散システムの少なくとも1つが、トランザクション・データベースであることを特徴とする請求項141記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項142記載のシステム。
- 前記トランザクション・データベースは、データベーストランザクションの記憶のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項142記載のシステム。
- 前記厳密な直列化可能性は、各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって提供されることを特徴とする請求項141記載のシステム。
- ハイブリッドクロックを使用する複数の分散データベースにわたるトランザクション一貫性を提供する、分散データ記憶及び検索システムを含み、
該分散データ記憶及び検索システムは、前記複数の分散データベースの夫々のトランザクションログにトランザクションを記録するために使用される、複数のクロックのクロック位置の対応の理解に基づいて直列化されたデータベーストランザクションを含むことを特徴とするシステム。 - 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項146記載のシステム。
- 前記トランザクション・データベースは、NoSQLクエリ言語を使用することを特徴とする請求項147記載のシステム。
- 前記トランザクション・データベースは、前記データベーストランザクションの保存のための時間間隔をユーザが設定するように構成された、テンポラル・ストレージエンジンを使用することを特徴とする請求項147記載のシステム。
- 各々が分散データアーキテクチャを有する複数のトランザクション・データベースの、グローバルに分散されたクラスタ内のマルチキー・トランザクションにわたって、厳密な直列化可能性が提供されることを特徴とする請求項146記載のシステム。
- 分散データ記憶及び検索システム用のテンポラル・アプリケーション・プログラミング・インタフェースを含み、
前記分散データ記憶及び検索システムは、前記データ記憶及び検索システム内のインスタンスのクラスに関連するイベントのストリームにサブスクライブするユーザを、前記テンポラル・アプリケーション・プログラミング・インタフェースを介して受け入れるように構成されていることを特徴とするシステム。 - 前記テンポラル・アプリケーション・プログラミング・インタフェースは、関心のあるイベントにサブスクライブするリスナーを受け入れるように構成されていることを特徴とする請求項151記載のシステム。
- 前記テンポラル・アプリケーション・プログラミング・インタフェースを介して、別のシステムへテーブルがストリーミングされることを特徴とする請求項151記載のシステム。
- 前記テンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブするためのインデックスが、当該システムに構成されることを特徴とする請求項151記載のシステム。
- 更に、アプリケーションを含み、
該アプリケーションは、該アプリケーションに対して指定されたイベントについて、前記テンポラル・アプリケーション・プログラミング・インタフェースにサブスクライブすることを特徴とする請求項151記載のシステム。 - ストリーミングクエリの範囲内のイベントのストリームが、時間的一貫性の保証と共に、前記テンポラル・アプリケーション・プログラミング・インタフェースを介して提供されることを特徴とする請求項151記載のシステム。
- 前記分散データ記憶及び検索システムが、トランザクション・データベースであることを特徴とする請求項151記載のシステム。
- 前記トランザクション・データベースは、指定された時間間隔で、クエリに応答して、イベントのストリームを提供するように構成されることを特徴とする請求項157記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースと、
該トランザクション・データベースのデータベースレコードの個々の行のレベルで、ユーザがセキュリティ許可を実施できるようにする、行レベルアクセス制御システムと、を含むことを特徴とするシステム。 - 前記トランザクション・データベースは、該トランザクション・データベースがデータ処理機能を提供するアプリケーションのエンドユーザによる、前記データベースへのダイレクトアクセスを容易にするように構成されることを特徴とする請求項159記載のシステム。
- 前記ダイレクトアクセスは、ポリシーに基づいて構成されることを特徴とする請求項160記載のシステム。
- 前記ダイレクトアクセスは、ポリシーに基づく作業負荷について構成されることを特徴とする請求項160記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、データインフラストラクチャ能力の認識と、前記トランザクション・データベースを使用するテナント、トランザクション、及び作業負荷のうちの少なくとも1つについての、サービス品質要件の認識とに基づいて、前記トランザクション・データベースのトランザクションをルーティングするように構成されていることを特徴とするシステム。 - 分散データアーキテクチャを有するトランザクション・データベースと、
計算リソース、メモリリソース、及び入出力リソースのうちの少なくとも1つをテナント間で割り当てると共に、前記少なくとも1つのリソースのテナント毎のリソース使用率を追跡する、前記トランザクション・データベース用のテナント対応リソース・スケジューラと、含むことを特徴とするシステム。 - 前記テナント対応リソース・スケジューラは、少なくとも1つの優先度インジケータに基づいてリソースを割り当てることを特徴とする請求項164記載のシステム。
- 前記テナント対応リソース・スケジューラは、少なくとも1つのクォータに基づいてリソースを割り当てることを特徴とする請求項164記載のシステム。
- 更に、ポリシー、ロール、及びルールのうちの少なくとも1つに基づいてリソースへのアクセスを制御する、アクセス制御システムを含むことを特徴とする請求項164記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースと、
計算リソース、メモリリソース、及び入出力リソースのうちの少なくとも1つを作業負荷間で割り当てると共に、前記少なくとも1つのリソースの作業負荷毎のリソース使用率を追跡する、前記トランザクション・データベース用の作業負荷毎リソース・スケジューラと、を含むことを特徴とするシステム。 - 前記作業負荷毎リソース・スケジューラは、少なくとも1つの優先度インジケータに基づいてリソースを割り当てることを特徴とする請求項168記載のシステム。
- 前記作業負荷毎リソース・スケジューラは、少なくとも1つのクォータに基づいてリソースを割り当てることを特徴とする請求項168記載のシステム。
- 更に、作業負荷に適用されるポリシー、ロール、及びルールのうちの少なくとも1つに基づいてリソースへのアクセスを制御する、アクセス制御システムを含むことを特徴とする請求項168記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースと、
計算リソース、メモリリソース、及び入出力リソースのうちの少なくとも1つを、ポリシーに基づいて前記分散データアーキテクチャ内で割り当てると共に、少なくとも1つのリソースのリソース使用率を追跡する、前記トランザクション・データベース用のポリシー対応リソース・スケジューラと、を含むことを特徴とするシステム。 - 前記少なくとも1つのリソースは、少なくとも1つの優先度インジケータに基づいて割り当てられることを特徴とする請求項172記載のシステム。
- 前記少なくとも1つのリソースは、少なくとも1つのクォータに基づいて割り当てられることを特徴とする請求項172記載のシステム。
- 更に、ポリシー、ロール、及びルールのうちの少なくとも1つに基づいてリソースへのアクセスを制御する、アクセス制御システムを含むことを特徴とする請求項172記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースと、
レコードの履歴全体と前記レコードの履歴のインデックスとを保持する設定可能な保持ウィンドウを備えた、前記トランザクション・データベース用のテンポラル・ストレージエンジンと、含むことを特徴とするシステム。 - 分散データアーキテクチャを有するトランザクション・データベースを含み、
前記データベースのテンポラル・ストレージエンジンが、レコードの履歴全体を維持及びインデックス付けすると共に、ユーザが選択した時間間隔での、履歴内のイベントのイベントストリームへのアクセスを容易にすることを特徴とするシステム。 - 更に、クエリの時間間隔を指定するようにユーザ向けに構成された、前記トランザクション・データベース用のクエリ言語を含み、
前記トランザクション・データベースは、前記指定された時間間隔で前記クエリに応答する、イベントストリームを提供することを特徴とする請求項177記載のシステム。 - インスタンス、クラス、データベース、及びキーに編成されたオブジェクトリレーショナル・データモデルを使用する分散データアーキテクチャを有する、トランザクション・データベースを含み、
前記オブジェクトリレーショナル・データモデルが、半構造化され、スキーマ・フリーであることを特徴とするシステム。 - 前記データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含むことを特徴とする請求項179記載のシステム。
- 前記トランザクション・データベースは、インスタンスとして定義された半構造化ドキュメントとして、前記トランザクション・データベースに挿入されるレコードを含むことを特徴とする請求項179記載のシステム。
- 前記インスタンスは、クラスへとグループ化されることを特徴とする請求項181記載のシステム。
- 前記クラスは、データベースへとグループ化されることを特徴とする請求項182記載のシステム。
- 前記トランザクション・データベースは、キーによって制御されるアクセスを含むことを特徴とする請求項179記載のシステム。
- 前記トランザクション・データベースは、関数としてパラメータ化されたクエリを含むことを特徴とする請求項179記載のシステム。
- 前記トランザクション・データベースは、インデックスで構築された派生関係を含むことを特徴とする請求項179記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースを含み、
該トランザクション・データベースは、オブジェクトリレーショナル・データモデルを使用し、
該オブジェクトリレーショナル・データモデルの派生関係は、前記トランザクション・データベースのインデックスとして構築されることを特徴とするシステム。 - 前記オブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含むことを特徴とする請求項187記載のシステム。
- 前記トランザクション・データベースは、インスタンスとして定義された半構造化ドキュメントとして挿入された、レコードを含むことを特徴とする請求項187記載のシステム。
- 前記インスタンスは、クラスへとグループ化されることを特徴とする請求項189記載のシステム。
- 前記クラスは、データベースへとグループ化されることを特徴とする請求項190記載のシステム。
- 前記トランザクション・データベースへのアクセスは、キーによって制御されることを特徴とする請求項187記載のシステム。
- 前記トランザクション・データベースに対するクエリは、関数としてパラメータ化されていることを特徴とする請求項187記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、前記トランザクション・データベースのインデックスを使用して実施される制約を有する、オブジェクトリレーショナル・データモデルを使用することを特徴とするシステム。 - 前記オブジェクトリレーショナル・データモデルは、リレーショナルパラダイム、ドキュメントパラダイム、オブジェクト指向パラダイム、及びグラフパラダイムの、定義されたスーパーセットを含むことを特徴とする請求項194記載のシステム。
- 前記トランザクション・データベースは、インスタンスとして定義された半構造化ドキュメントとして挿入された、レコードを含むことを特徴とする請求項194記載のシステム。
- 前記インスタンスは、クラスへとグループ化されることを特徴とする請求項196記載のシステム。
- 前記クラスは、データベースへとグループ化されることを特徴とする請求項197記載のシステム。
- 前記トランザクション・データベースへのアクセスは、キーによって制御されることを特徴とする請求項194記載のシステム。
- 前記トランザクション・データベースに対するクエリは、関数としてパラメータ化されていることを特徴とする請求項194記載のシステム。
- 前記トランザクション・データベースは、インデックスで構築された派生関係を含むことを特徴とする請求項194記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースを含み、
前記分散データアーキテクチャは、複数のドライバによって媒介される、前記トランザクション・データベース用のクエリ言語を含み、前記複数のドライバは、前記トランザクション・データベースから出力されるドメイン固有の組み込み式アプリケーション言語を公開するものであることを特徴とするシステム。 - 複数のアプリケーション言語用の埋め込み式ドメイン固有言語で公開するデータベースドライバを実装する、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- 複数のレコードのカプセル化を可能にするクエリ言語を実装すると共に、複数のレコードにまたがるトランザクションを単一の要求クエリでカプセル化できる、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- 非主キーアクセスがインデックスによって裏付けられることを必要とするクエリ・セマンティクスを実装する、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- 認証されたユーザにトークンを発行するサービスによって実行されるアイデンティティ管理を含む、分散データアーキテクチャを有するトランザクション・データベースを含み、
前記トークンは、前記ユーザが前記トランザクション・データベースで更なるアクションを実行することを可能にすることを特徴とするシステム。 - 前記トークンを発行する前記サービスは、前記トランザクション・データベースの内部サービスであることを特徴とする請求項206記載のシステム。
- 前記トークンを発行する前記サービスは、前記トランザクション・データベースの外部で実行されるサードパーティ・サービスであることを特徴とする請求項206記載のシステム。
- アクセス制御を備えた分散データアーキテクチャを有するトランザクション・データベースを含み、
前記アクセス制御は、キーベースのロール割り当てを使用して、前記トランザクション・データベース内の1つ以上のデータレコードへの行レベルアクセスを制限することを特徴とするシステム。 - 前記アクセス制御は、アイデンティティの割り当てによって管理される行レベルセキュリティを含むことを特徴とする請求項209記載のシステム。
- 前記トランザクション・データベースは、アクセス制御クエリ式をアクセス制御リストに割り当てることにより、ユーザ、ロール、及びグループのうちの少なくとも1つの決定が実施される、アクセス権を含むことを特徴とする請求項209記載のシステム。
- データベーストランザクションを実行するアクターのアイデンティティが、ストアドプロシージャのコンテキスト内でアクセス可能であることを特徴とする請求項209記載のシステム。
- グローバル・トランザクションログを使用して追跡及び報告されるトランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- 前記トランザクション・データベースは、ユーザ設定の保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開することを特徴とする請求項213記載のシステム。
- 前記トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関係するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含むことを特徴とする請求項213記載のシステム。
- グローバル・トランザクションログを使用して記録される、管理トランザクション及びアプリケーション・トランザクションを含む、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- 前記トランザクション・データベースは、ユーザ設定の保持期間内に全てのレコードの以前のコンテンツを保存する、テンポラル・ストレージモデルを展開することを特徴とする請求項216記載のシステム。
- 前記トランザクション・データベースは、トランザクションにアクター情報をタグ付けし、トランザクションに関係するデータベース・インスタンスバージョンを参照することにより履歴データにアクセスする、アプリケーションを含むことを特徴とする請求項216記載のシステム。
- データベーストランザクションの全てのポイントでデータの暗号化を使用する、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- 前記トランザクション・データベースは、SSLを介して暗号化された、データベースクラスタ内のトラフィックを含むことを特徴とする請求項219記載のシステム。
- 前記トランザクション・データベースは、SSLを介して暗号化された、前記トランザクション・データベースへのパブリック・インタフェース上のトラフィックを含むことを特徴とする請求項219記載のシステム。
- 前記トランザクション・データベースは、公開キー/秘密キーのペアを介して認証される、前記トランザクション・データベースとやり取りするアプリケーションを含むことを特徴とする請求項219記載のシステム。
- 前記トランザクション・データベースの少なくとも1つのオペレーティングシステム機能は、データレスト、ログ情報、及び秘密キーのうちの少なくとも1つでデータを保護するために使用されることを特徴とする請求項219記載のシステム。
- 前記少なくとも1つのオペレーティングシステム機能が、ファイル暗号化であることを特徴とする請求項223記載のシステム。
- 夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含み、
複数のトランザクション・データベースの前記クラスタ内のデータベースのクラスタトポロジ構成が、前記データベースのクエリコーディネータ、データレプリカ、及びログレプリカとして機能し、
前記構成トポロジは、当該システムによって自動的に導出されることを特徴とするシステム。 - 前記クラスタ内の前記複数のトランザクション・データベースについて、一貫したクラスタ状態が維持されることを特徴とする請求項225記載のシステム。
- 夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含み、
該クラスタの少なくとも1つのトランザクション・データベースメンバーが、クエリコーディネータ、データレプリカ、及びログレプリカとして機能し、
プレディケートがデータベースクラスタのレプリカへ自動的にプッシュされることを特徴とするシステム。 - 前記クラスタの各メンバーが、クエリコーディネータ、データレプリカ、及びログレプリカとして機能することを特徴とする請求項227記載のシステム。
- データ構造を介して有効化されるデータ書き込みを含む、分散データアーキテクチャを有するトランザクション・データベースを含み、
前記データ構造は、ローカル・ストレージエンジンのために適所に修正され、圧縮ログ構造化マージツリーとして実装されることを特徴とするシステム。 - トランザクションが、グローバル・トランザクションログにバッチでコミットされることを特徴とする請求項229記載のシステム。
- トランザクションが、ログ先行書き込みとしてコミットされることを特徴とする請求項229記載のシステム。
- 前記トランザクション・データベースは、少なくとも1つのトランザクション・データベースがレプリカであるクラスタの一部であり、
前記レプリカは、グローバル・トランザクションログを取得し、前記ログに基づいてトランザクションをアトミックに一括して前記レプリカへ書き込むことを特徴とする請求項229記載のシステム。 - 前記トランザクション・データベースは、同期上書きが回避されるように、不変バージョンで構成されるテンポラル・データモデルを使用することを特徴とする請求項229記載のシステム。
- 分散データアーキテクチャを有するトランザクション・データベースと、
スケジューラを使用してリソースを動的に割り当て、前記トランザクション・データベースのサービス品質ポリシーを実施するテナント対応リソースマネージャと、を含むことを特徴とするシステム。 - 更に、前記データベース用のクエリプランナを含み、
該クエリプランナは、一連のインターリーブされた潜在的に並列化可能な計算及び入力/出力サブクエリとしてトランザクションを評価し、実行がトランザクション間の予測可能できめ細かいバリアをもたらすことを保証することを特徴とする請求項234記載のシステム。 - 分散データアーキテクチャを有するトランザクション・データベースと、
前記トランザクション・データベース用のジャーナル化されたトポロジ認識タスクスケジューラにより管理されるバックグラウンド・クエリタスクと、を含むことを特徴とするシステム。 - タスクがクラスタ全体で1つのインスタンスに制限されることを特徴とする請求項236記載のシステム。
- タスクがデータベース毎に1つのインスタンスに制限されることを特徴とする請求項236記載のシステム。
- タスクが特定のデータ範囲に割り当てられることを特徴とする請求項236記載のシステム。
- 更に、特定のデータ範囲のデータレプリカであるタスクの、実行ノードを含むことを特徴とする請求項236記載のシステム。
- 前記バックグラウンド・クエリタスクの各タスクの実行状態は、一貫したメタデータストアに保持され、スケジュールされたタスクが、ノードに依存しない方法で実行されることを特徴とする請求項236記載のシステム。
- ノードが故障したとき、そのタスクは、他の有効なノードへ自動的に再割り当てされるか、再起動されるか、又は再開されるかのうち、少なくとも一つであることを特徴とする請求項236記載のシステム。
- ノードがクラスタからリムーブされるとき、そのタスクは、他の有効なノードへ自動的に再割り当てされるか、再起動されるか、又は再開されるかのうち、少なくとも1つであることを特徴とする請求項236記載のシステム。
- タスク実行スループットは、テナント毎、ユーザ毎、及び作業負荷毎のうちの少なくとも1つに基づいて、リソース・スケジューラによって制御されることを特徴とする請求項236記載のシステム。
- 特定のテナントに関連付けられていない作業のタスク実行は、低優先度でスケジュールされ、アイドルリソースが許可するときに、前記タスクを進めることができることを特徴とする請求項236記載のシステム。
- トランザクション・データベースを含み、
該トランザクション・データベースは、分散データアーキテクチャと、前記トランザクション・データベースの複数のトポロジにわたってコヒーレントな状態の一貫性を保証するように提供される、一貫性メカニズム及びスケジューラと、を有することを特徴とするシステム。 - 分散データアーキテクチャを有するトランザクション・データベースと、
複数の構成済みトランザクション・データベースのクラスタを管理する管理プラットフォームと、を含み
前記クラスタ内の前記複数のデータベースは、単一システムとして機能することを特徴とするシステム。 - 前記管理プラットフォームは、前記複数のトランザクション・データベースを自動的に構成することを特徴とする請求項247記載のシステム。
- アプリケーション・プログラミング・インターフェースを使用して、クラスタ管理機能が実装されることを特徴とする請求項247記載のシステム。
- 単一の識別子を有するトランザクション・データベース・エンドポイントが、企業情報技術システムへの接続として提供され、前記エンドポイントへのリソースが、前記管理プラットフォームによって管理されることを特徴とする請求項247記載のシステム。
- 前記エンドポイントの前記識別子が、DNS名であることを特徴とする請求項247記載のシステム。
- 前記エンドポイントのリソースは、前記企業情報技術システムによる需要を満たすように、前記クラスタ管理プラットフォームの制御下で動的にスケーリングされることを特徴とする請求項247記載のシステム。
- 夫々が分散データアーキテクチャを有する複数のトランザクション・データベースのクラスタを含み、
複数のトランザクション・データベースの前記クラスタの構成は、オペレータによる構成の指定時にデータベースによって自動的に実行されることを特徴とするシステム。 - 前記オペレータは、複数のトランザクション・データベースの前記クラスタの構成の、少なくとも1つのパラメータを指定し、当該システムは、複数のトランザクション・データベースの前記クラスタを構成するのに必要なステップを、自動的に決定及び実行することを特徴とする請求項253記載のシステム。
- 複数のトランザクション・データベースの前記クラスタの構成中にデータストレージのリソースが失われると、当該システムは、フォールト・トレラントな方法で動作し続けるように構成されていることを特徴とする請求項253記載のシステム。
- 運用データベースを含み、
該運用データベースは、該運用データベースが展開されるクラウドの種類の特定のインフラストラクチャ機能の構成を必要とせずに、クラウド・インフラストラクチャに展開されるように自動的に構成されることを特徴とするシステム。 - リソースを使用するアプリケーション、リソースを使用する作業負荷、リソースを使用するテナント、リソースを使用するユーザ、及びリソースの使用に関連付けられたキーのうちの、少なくとも1つによるリソースの使用に基づいて、トランザクションを自動的に追跡及び測定するように構成された、分散データアーキテクチャを有するトランザクション・データベースを含むことを特徴とするシステム。
- データの保存及び検索のためのトランザクション・データベースシステムであって、
分散データアーキテクチャを有するトランザクション・データベースを含み、
前記トランザクション・データベースは、ソフトウェア・アプリケーション用のデータモデルに適合する半構造化ドキュメントモデルを使用し、これにより、前記トランザクション・データベースは、ソフトウェア・アプリケーションがオブジェクト指向データモデルを使用するか、リレーショナル・データモデルを使用するかに関係なく、前記ソフトウェア・アプリケーションについてのデータベースサポートを有効にするように構成されることを特徴とするシステム。 - 前記トランザクション・データベースが、NoSQLデータベースであることを特徴とする請求項258記載のシステム。
- 分散データアーキテクチャとルーティング層とを有するトランザクション・データベースを含み、
前記ルーティング層では、前記分散データアーキテクチャの少なくとも一部が展開されるデータセンターの機能の認識により、データトランザクションのルーティングが発生することを特徴とするシステム。 - SQL形式クエリ、noSQL形式クエリ、グラフベースクエリ、地理空間クエリ、分析形式クエリ、キー/値クエリ、ドキュメントクエリ、テンポラル・クエリ、及び検索クエリの中から選択された少なくとも2つのクエリモデルを含む、複数のクエリモデルを有効にするクエリエンジンを有するデータベースと、
前記クエリエンジンを介して配信された、前記データベースに対するクエリに応答するように構成されたデータベース関数のセットと、を含むことを特徴とするデータベースシステム。 - 前記データベースは、行レベルセキュリティのアクセス機能を提供することを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、識別の行レベル処理を提供することを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、認証の行レベル処理を提供することを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、エラスティック・アーキテクチャを有することを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、マスターレス構成及び動作を可能にすることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、再帰的なマルチ・テナンシー構成及び動作を可能にすることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、複数の、地理的に多様なデータセンター又はクラウド・インフラストラクチャ・プロバイダに複製されるように構成されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、リレーショナル・クエリ言語と共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、プロセス分離機能が提供されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、該データベースのプロセス分離ができるように、再帰的スケジューリングと共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、プロセス分離に関連する完全に公平なキューイングの、再帰的実装と共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、該データベースのデータベースクラスタ全体を含む、動的リソース・スケジューリングと共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、クエリ毎の動的リソース・スケジューリングと共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、ユーザ毎の動的リソース・スケジューリングと共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、分散ストレージ層と共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記分散ストレージ層は、トランザクション分解アルゴリズムと共に展開されることを特徴とする請求項276記載のデータベースシステム。
- 前記データベースは分散され、前記データベースは、分散ストレージ層の異なるストレージノードに情報を複製するレプリケーションログを使用する、レプリケーションアルゴリズムと共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、オンディスク・ストレージエンジンと共に展開されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、クエリ毎のサービス品質管理を備えて提供されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、該データベース内のバックグラウンド分析タスクのネイティブな実行を可能にすることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースが運用データベースであり、該データベースに対して有向非循環分析タスクグラフが運用されることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、カラムナ分析機能を含むことを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、クエリのストリーミングを可能にすることを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、半構造化されたスキーマ・フリーのデータモデルを実装することを特徴とする請求項261記載のデータベースシステム。
- 前記データベースは、設定可能な保持ウィンドウ内で、各レコード及びインデックスの履歴を維持することを特徴とする請求項261記載のデータベースシステム。
- 前記データベースが、企業向けのオンプレミス・データベースであることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、マルチユーザ・ゲームシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、金融ネットワークシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、前記金融ネットワークシステムに関連する少なくとも1つの金融台帳と統合されることを特徴とする請求項289記載のデータベースシステム。
- 前記トランザクション・データベースは、アイデンティティ管理システムと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、顧客関係管理ネットワークと統合されることを特徴とする請求項1記載のデータベースシステム。
- 前記トランザクション・データベースは、ロケーションベースのサービスシステムと統合されることを特徴とする請求項1記載のデータベースシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762471584P | 2017-03-15 | 2017-03-15 | |
US62/471,584 | 2017-03-15 | ||
PCT/US2018/022653 WO2018170276A2 (en) | 2017-03-15 | 2018-03-15 | Methods and systems for a database |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020514935A true JP2020514935A (ja) | 2020-05-21 |
Family
ID=63522575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020500016A Pending JP2020514935A (ja) | 2017-03-15 | 2018-03-15 | データベース用の方法及びシステム |
Country Status (3)
Country | Link |
---|---|
US (11) | US20190361883A1 (ja) |
JP (1) | JP2020514935A (ja) |
WO (1) | WO2018170276A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022002092A (ja) * | 2020-06-22 | 2022-01-06 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | 地理情報システムエンジンシステム及び実現方法、装置並びに記憶媒体 |
KR20220008718A (ko) * | 2020-07-14 | 2022-01-21 | 쿠팡 주식회사 | 극히 높은 서버 가용성을 위해 네트워크 부하를 밸런싱하는 시스템 및 방법 |
KR102360061B1 (ko) * | 2020-11-17 | 2022-02-09 | 쿠팡 주식회사 | 데이터베이스 쿼리 효율 향상을 위한 시스템 및 방법. |
KR102498062B1 (ko) * | 2022-08-03 | 2023-02-10 | 주식회사 티유컨설팅 | 메타데이터 관리 시스템 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9847918B2 (en) * | 2014-08-12 | 2017-12-19 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
KR102405593B1 (ko) | 2017-08-23 | 2022-06-08 | 삼성전자 주식회사 | 전자 장치 및 그의 데이터 운용 방법 |
US10990282B1 (en) | 2017-11-28 | 2021-04-27 | Pure Storage, Inc. | Hybrid data tiering with cloud storage |
US10872144B1 (en) | 2017-12-07 | 2020-12-22 | Ent. Services Development Corporation Lp | Systems and methods for secure processing of data streams having differing security level classifications |
US10657280B2 (en) * | 2018-01-29 | 2020-05-19 | Sap Se | Mitigation of injection security attacks against non-relational databases |
US11436344B1 (en) | 2018-04-24 | 2022-09-06 | Pure Storage, Inc. | Secure encryption in deduplication cluster |
US11392553B1 (en) | 2018-04-24 | 2022-07-19 | Pure Storage, Inc. | Remote data management |
US11099771B2 (en) * | 2018-09-24 | 2021-08-24 | Salesforce.Com, Inc. | System and method for early removal of tombstone records in database |
US10977244B2 (en) | 2018-11-06 | 2021-04-13 | Snowflake Inc. | Tracking intermediate changes in database data |
US11086840B2 (en) | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
US11631118B2 (en) | 2018-12-21 | 2023-04-18 | Soham Inc | Distributed demand generation platform |
KR20200101217A (ko) * | 2019-02-19 | 2020-08-27 | 삼성전자주식회사 | 데이터베이스를 관리하기 위한 전자 장치 및 방법 |
CN112805695A (zh) * | 2019-03-20 | 2021-05-14 | 谷歌有限责任公司 | 共同分片和随机化共同分片 |
KR20210143823A (ko) * | 2019-03-20 | 2021-11-29 | 매튜 이. 워드 | 마이크로 led 어레이를 갖는 mems 구동 광학 패키지 |
US20200356559A1 (en) * | 2019-05-08 | 2020-11-12 | Datameer, Inc. | Query Combination In A Hybrid Multi-Cloud Database Environment |
US11354318B2 (en) * | 2019-08-06 | 2022-06-07 | Target Brands, Inc. | Real-time collection and distribution of event stream data |
US11461324B2 (en) * | 2019-08-29 | 2022-10-04 | Oracle International Corporation | First futamura projection in the context of SQL expression evaluation |
US11409626B2 (en) * | 2019-08-29 | 2022-08-09 | Snowflake Inc. | Decoupling internal and external tasks in a database environment |
US11327995B2 (en) | 2019-09-11 | 2022-05-10 | Micro Focus Llc | Complex data type encoding within columnar database |
US11695559B2 (en) * | 2019-09-30 | 2023-07-04 | Salesforce, Inc. | Nested tenancy that permits a hierarchy having a plurality of levels |
US11341317B2 (en) | 2019-10-16 | 2022-05-24 | Oracle International Corporation | Supporting piecewise update of JSON document efficiently |
US20210141791A1 (en) * | 2019-11-13 | 2021-05-13 | Adobe Inc. | Method and system for generating a hybrid data model |
US11789922B1 (en) | 2019-12-13 | 2023-10-17 | Amazon Technologies, Inc. | Admitting for performance ordered operations of atomic transactions across a distributed database |
CN111177782A (zh) * | 2019-12-30 | 2020-05-19 | 智慧神州(北京)科技有限公司 | 基于大数据的分布式数据的提取方法、装置与存储介质 |
CN111259004B (zh) * | 2020-01-08 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 一种存储引擎中数据索引的方法以及相关装置 |
WO2021158710A1 (en) * | 2020-02-04 | 2021-08-12 | Grav1Ty Inc. | Selective synchronization of database objects |
US11372871B1 (en) * | 2020-02-21 | 2022-06-28 | Rapid7, Inc. | Programmable framework for distributed computation of statistical functions over time-based data |
CN111414643A (zh) * | 2020-03-17 | 2020-07-14 | 深圳市前海随手财富管理有限公司 | 数据权限控制方法、装置、服务器及存储介质 |
CN111625600B (zh) * | 2020-05-21 | 2023-10-31 | 杭州安恒信息技术股份有限公司 | 数据存储的处理方法、系统、计算机设备及存储介质 |
CN111680063B (zh) * | 2020-05-25 | 2023-08-18 | 泰康保险集团股份有限公司 | Elasticsearch分页查询数据的方法及装置 |
US11231862B1 (en) * | 2020-06-30 | 2022-01-25 | Amazon Technologies, Inc. | Localized lookups for efficient database service request processing |
US20220035882A1 (en) * | 2020-08-03 | 2022-02-03 | Intuit Inc. | Personalized messaging and configuration service |
CN112069258B (zh) * | 2020-09-08 | 2024-04-19 | 北京金山云网络技术有限公司 | 事务进度的管理方法、装置及分布式数据库 |
US11775530B2 (en) * | 2020-12-08 | 2023-10-03 | Huawei Technologies Canada Co., Ltd. | Method to improve global query performance in an edge network |
US11489786B2 (en) | 2020-12-28 | 2022-11-01 | Arteris, Inc. | Queue management system, starvation and latency management system, and methods of use |
CN113779063A (zh) * | 2021-08-03 | 2021-12-10 | 广州心娱网络科技有限公司 | 报表数据的处理、显示方法、系统、装置及存储介质 |
CN114171809A (zh) * | 2021-11-24 | 2022-03-11 | 福建巨电新能源股份有限公司 | 基于云平台的车载电池管理系统、方法、服务器及存储介质 |
US11886433B2 (en) * | 2022-01-10 | 2024-01-30 | Red Hat, Inc. | Dynamic data batching for graph-based structures |
CN114116732B (zh) * | 2022-01-24 | 2022-04-05 | 北京奥星贝斯科技有限公司 | 处理事务的方法、装置、存储装置以及服务器 |
US11907776B2 (en) | 2022-03-04 | 2024-02-20 | Target Brands, Inc. | Integrated asynchronous access interface for data retrieval from distributed data sources |
US11962663B1 (en) | 2022-03-17 | 2024-04-16 | Amazon Technologies, Inc. | Server-specified filters for long-lived client requests to fetch data in response to events |
US11880726B1 (en) * | 2022-06-27 | 2024-01-23 | Amazon Technologies, Inc. | Fair queuing of request tasks spawned by requests to execute generative operations |
CN115221249B (zh) * | 2022-09-20 | 2023-02-24 | 金蝶软件(中国)有限公司 | 跨库数据查询方法、装置、计算机设备和存储介质 |
CN116150263B (zh) * | 2022-10-11 | 2023-07-25 | 中国兵器工业计算机应用技术研究所 | 一种分布式图计算引擎 |
CN116756375A (zh) * | 2023-05-09 | 2023-09-15 | 中电科大数据研究院有限公司 | 一种基于图谱的异构数据的处理系统 |
CN117193674B (zh) * | 2023-11-08 | 2024-03-29 | 浪潮软件科技有限公司 | 一种提升物联网设备海量数据存取效能的方法及装置 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8396766B1 (en) * | 1998-10-09 | 2013-03-12 | Diebold, Incorporated | Automated banking machine system and method |
US6401103B1 (en) * | 1999-08-06 | 2002-06-04 | International Business Machines Corporation | Apparatus, method, and article of manufacture for client-side optimistic locking in a stateless environment |
CA2488432C (en) * | 2002-04-03 | 2014-12-23 | Venture Catalyst Incorporated | System and method for customer contact management |
US7158998B2 (en) * | 2002-07-31 | 2007-01-02 | Cingular Wireless Ii, Llc | Efficient synchronous and asynchronous database replication |
US7240046B2 (en) * | 2002-09-04 | 2007-07-03 | International Business Machines Corporation | Row-level security in a relational database management system |
US7089253B2 (en) * | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
US7418600B2 (en) * | 2003-03-13 | 2008-08-26 | International Business Machines Corporation | Secure database access through partial encryption |
JP4041002B2 (ja) * | 2003-03-24 | 2008-01-30 | 株式会社三菱東京Ufj銀行 | データベース更新処理システム、データベース更新のための更新データ入力方法、更新データ処理方法、およびプログラム |
GB0323780D0 (en) * | 2003-10-10 | 2003-11-12 | Ibm | A data brokering method and system |
US8250030B2 (en) * | 2005-09-21 | 2012-08-21 | Infoblox Inc. | Provisional authority in a distributed database |
CA2578666C (en) * | 2006-02-13 | 2016-01-26 | Xkoto Inc. | Method and system for load balancing a distributed database |
US7523118B2 (en) * | 2006-05-02 | 2009-04-21 | International Business Machines Corporation | System and method for optimizing federated and ETL'd databases having multidimensionally constrained data |
EP2067104A1 (en) * | 2006-09-28 | 2009-06-10 | Xeround Systems Ltd. | Apparatus and method for a distributed storage global database |
US9177115B2 (en) * | 2007-08-22 | 2015-11-03 | International Business Machines Corporation | Data subscription management system |
US7783601B2 (en) * | 2007-11-08 | 2010-08-24 | Oracle International Corporation | Replicating and sharing data between heterogeneous data systems |
US9027030B2 (en) * | 2007-11-29 | 2015-05-05 | Red Hat, Inc. | Commit-one-phase distributed transactions with multiple starting participants |
US7895172B2 (en) * | 2008-02-19 | 2011-02-22 | Yahoo! Inc. | System and method for writing data dependent upon multiple reads in a distributed database |
WO2011044929A1 (en) * | 2009-10-13 | 2011-04-21 | Open Text Software Gmbh | Method for performing transactions on data and a transactional database |
US8954385B2 (en) * | 2010-06-28 | 2015-02-10 | Sandisk Enterprise Ip Llc | Efficient recovery of transactional data stores |
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
US8442962B2 (en) * | 2010-12-28 | 2013-05-14 | Sap Ag | Distributed transaction management using two-phase commit optimization |
EP2495658A1 (en) * | 2011-03-02 | 2012-09-05 | Accenture Global Services Limited | Computer network, computer system, computer implemented method, and computer program product for managing session tokens |
US9507841B2 (en) * | 2011-06-16 | 2016-11-29 | Sap Se | Consistent backup of a distributed database system |
US20130124262A1 (en) * | 2011-11-11 | 2013-05-16 | Cellco Partnership D/B/A Verizon Wireless | Cross channel explicit feedback and corrective action framework |
US9317395B2 (en) * | 2011-11-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Usage reporting from a cloud-hosted, distributed system |
US8732291B2 (en) * | 2012-01-13 | 2014-05-20 | Accenture Global Services Limited | Performance interference model for managing consolidated workloads in QOS-aware clouds |
US9230000B1 (en) * | 2012-06-04 | 2016-01-05 | Google Inc. | Pipelining Paxos state machines |
US8965921B2 (en) * | 2012-06-06 | 2015-02-24 | Rackspace Us, Inc. | Data management and indexing across a distributed database |
US9578130B1 (en) * | 2012-06-20 | 2017-02-21 | Amazon Technologies, Inc. | Asynchronous and idempotent distributed lock interfaces |
US20140040208A1 (en) * | 2012-07-31 | 2014-02-06 | Goetz Graefe | Early release of transaction locks based on tags |
US9268834B2 (en) * | 2012-12-13 | 2016-02-23 | Microsoft Technology Licensing, Llc | Distributed SQL query processing using key-value storage system |
US8887114B2 (en) * | 2013-03-13 | 2014-11-11 | Synopsys, Inc. | Automatic tap driver generation in a hybrid clock distribution system |
US9342557B2 (en) * | 2013-03-13 | 2016-05-17 | Cloudera, Inc. | Low latency query engine for Apache Hadoop |
US9218383B2 (en) * | 2013-03-15 | 2015-12-22 | International Business Machines Corporation | Differentiated secondary index maintenance in log structured NoSQL data stores |
US20150039587A1 (en) * | 2013-07-31 | 2015-02-05 | Oracle International Corporation | Generic sql enhancement to query any semi-structured data and techniques to efficiently support such enhancements |
US9536065B2 (en) * | 2013-08-23 | 2017-01-03 | Morphotrust Usa, Llc | System and method for identity management |
MX368512B (es) * | 2013-10-18 | 2019-10-07 | New York Air Brake Llc | Base de datos de relacion de plataforma heterogenea, distribuida, dinamicamente escalable. |
WO2015066085A1 (en) * | 2013-10-28 | 2015-05-07 | Bawaskar Swapnil Prakash | Selecting files for compaction |
US10346897B2 (en) * | 2014-05-30 | 2019-07-09 | Walmart Apollo, Llc | Method and system for smart order management and application level sharding |
US9565305B2 (en) * | 2014-06-12 | 2017-02-07 | Sriram Chakravarthy | Methods and systems of an automated answering system |
US10331649B2 (en) * | 2014-06-29 | 2019-06-25 | Microsoft Technology Licensing, Llc | Transactional access to records on secondary storage in an in-memory database |
WO2016025321A1 (en) * | 2014-08-13 | 2016-02-18 | OneCloud Labs, Inc. | Replication of virtualized infrastructure within distributed computing environments |
WO2016033180A1 (en) * | 2014-08-26 | 2016-03-03 | rift.IO, Inc. | Distributed transaction subsystem |
US10025802B2 (en) * | 2014-09-19 | 2018-07-17 | Amazon Technologies, Inc. | Automated configuration of log-coordinated storage groups |
US9449188B2 (en) * | 2014-10-10 | 2016-09-20 | Salesforce.Com, Inc. | Integration user for analytical access to read only data stores generated from transactional systems |
US10303726B2 (en) * | 2014-11-13 | 2019-05-28 | Sap Se | Decoupling filter injection and evaluation by forced pushdown of filter attributes in calculation models |
US10628418B2 (en) * | 2014-11-13 | 2020-04-21 | Sap Se | Data driven multi-provider pruning for query execution plan |
US10599677B2 (en) * | 2015-01-22 | 2020-03-24 | Brian J. Bulkowski | Methods and systems of splitting database indexes and digests |
US9904722B1 (en) * | 2015-03-13 | 2018-02-27 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US10067969B2 (en) * | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10678445B2 (en) * | 2015-06-10 | 2020-06-09 | Microsoft Technology Licensing, Llc | Recovery in data centers |
US9753780B2 (en) * | 2015-07-07 | 2017-09-05 | Sybase, Inc. | Topology-aware processor scheduling |
US10083203B2 (en) * | 2015-08-11 | 2018-09-25 | International Business Machines Corporation | Reducing the cost of update, delete, and append-only insert operations in a database |
-
2018
- 2018-03-15 WO PCT/US2018/022653 patent/WO2018170276A2/en active Application Filing
- 2018-03-15 JP JP2020500016A patent/JP2020514935A/ja active Pending
-
2019
- 2019-08-13 US US16/539,291 patent/US20190361883A1/en not_active Abandoned
- 2019-08-13 US US16/539,241 patent/US20190361916A1/en not_active Abandoned
- 2019-08-13 US US16/539,121 patent/US20190361881A1/en not_active Abandoned
- 2019-08-13 US US16/539,322 patent/US20190361894A1/en not_active Abandoned
- 2019-08-13 US US16/539,090 patent/US20190361915A1/en not_active Abandoned
- 2019-08-13 US US16/539,009 patent/US20190361914A1/en not_active Abandoned
- 2019-08-13 US US16/539,160 patent/US20190361848A1/en not_active Abandoned
- 2019-08-13 US US16/539,046 patent/US20190361880A1/en not_active Abandoned
- 2019-08-13 US US16/539,194 patent/US20190361882A1/en not_active Abandoned
- 2019-08-13 US US16/539,377 patent/US20190361895A1/en not_active Abandoned
-
2022
- 2022-03-03 US US17/686,398 patent/US20220188332A1/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022002092A (ja) * | 2020-06-22 | 2022-01-06 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | 地理情報システムエンジンシステム及び実現方法、装置並びに記憶媒体 |
JP7234298B2 (ja) | 2020-06-22 | 2023-03-07 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | 地理情報システムエンジンシステム及び実現方法、装置並びに記憶媒体 |
KR20220008718A (ko) * | 2020-07-14 | 2022-01-21 | 쿠팡 주식회사 | 극히 높은 서버 가용성을 위해 네트워크 부하를 밸런싱하는 시스템 및 방법 |
KR102422709B1 (ko) * | 2020-07-14 | 2022-07-20 | 쿠팡 주식회사 | 극히 높은 서버 가용성을 위해 네트워크 부하를 밸런싱하는 시스템 및 방법 |
US11627181B2 (en) | 2020-07-14 | 2023-04-11 | Coupang Corp. | Systems and methods of balancing network load for ultra high server availability |
KR102360061B1 (ko) * | 2020-11-17 | 2022-02-09 | 쿠팡 주식회사 | 데이터베이스 쿼리 효율 향상을 위한 시스템 및 방법. |
KR102498062B1 (ko) * | 2022-08-03 | 2023-02-10 | 주식회사 티유컨설팅 | 메타데이터 관리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
US20190361916A1 (en) | 2019-11-28 |
US20190361880A1 (en) | 2019-11-28 |
WO2018170276A2 (en) | 2018-09-20 |
US20190361882A1 (en) | 2019-11-28 |
US20190361883A1 (en) | 2019-11-28 |
US20190361848A1 (en) | 2019-11-28 |
US20190361914A1 (en) | 2019-11-28 |
US20190361894A1 (en) | 2019-11-28 |
WO2018170276A3 (en) | 2019-02-07 |
US20190361895A1 (en) | 2019-11-28 |
US20190361915A1 (en) | 2019-11-28 |
US20220188332A1 (en) | 2022-06-16 |
US20190361881A1 (en) | 2019-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220188332A1 (en) | Distributed transaction database log with immediate reads and batched writes | |
US10541938B1 (en) | Integration of distributed data processing platform with one or more distinct supporting platforms | |
US11762815B2 (en) | Multi-framework managed blockchain service | |
Bichsel et al. | A simple algorithm for shape from shading | |
Shakarami et al. | Data replication schemes in cloud computing: a survey | |
US20180173745A1 (en) | Systems and methods to achieve sequential consistency in replicated states without compromising performance in geo-distributed, replicated services | |
Mendes et al. | Charon: A secure cloud-of-clouds system for storing and sharing big data | |
Lehner et al. | Web-scale data management for the cloud | |
Mazumder | Big data tools and platforms | |
US11086841B1 (en) | Streams on shared database objects | |
Schwarzkopf | Operating system support for warehouse-scale computing | |
US10503923B1 (en) | Centralized data store for multiple data processing environments | |
US9875270B1 (en) | Locking item ranges for creating a secondary index from an online table | |
Chen et al. | Bestpeer++: A peer-to-peer based large-scale data processing platform | |
US11818012B2 (en) | Online restore to different topologies with custom data distribution | |
CN114616557A (zh) | 支持数据库中的区块链集合 | |
US11940995B1 (en) | Key prefix driven data encryption in tree structures | |
US11100129B1 (en) | Providing a consistent view of associations between independently replicated data objects | |
Jiang et al. | Alibaba hologres: A cloud-native service for hybrid serving/analytical processing | |
Zarei et al. | Past, present and future of Hadoop: A survey | |
Yang | From Google file system to omega: a decade of advancement in big data management at Google | |
Li | Introduction to Big Data | |
Lev-Ari et al. | Quick: a queuing system in cloudkit | |
US11803568B1 (en) | Replicating changes from a database to a destination and modifying replication capacity | |
Lazeb et al. | A new popularity-based data replication strategy in cloud systems |