JP2024509198A - シャード化データベース内のデータの論理削除 - Google Patents
シャード化データベース内のデータの論理削除 Download PDFInfo
- Publication number
- JP2024509198A JP2024509198A JP2023553603A JP2023553603A JP2024509198A JP 2024509198 A JP2024509198 A JP 2024509198A JP 2023553603 A JP2023553603 A JP 2023553603A JP 2023553603 A JP2023553603 A JP 2023553603A JP 2024509198 A JP2024509198 A JP 2024509198A
- Authority
- JP
- Japan
- Prior art keywords
- shard
- document
- query
- logical
- computer
- 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
- 238000012217 deletion Methods 0.000 title claims abstract description 52
- 230000037430 deletion Effects 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 107
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 91
- 230000008569 process Effects 0.000 claims description 78
- 238000003860 storage Methods 0.000 claims description 45
- 238000010926 purge Methods 0.000 claims description 19
- 230000014759 maintenance of location Effects 0.000 claims description 13
- 238000003780 insertion Methods 0.000 claims 1
- 230000037431 insertion Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 33
- 230000015654 memory Effects 0.000 description 31
- 230000006870 function Effects 0.000 description 14
- 230000008901 benefit Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/328—Management 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/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/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
Abstract
シャード化データベースのための方法、システムおよびコンピュータ・プログラム製品が提供される。方法は、指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取ることを含む。方法はさらに、指定されたドキュメントを識別する論理削除ドキュメントを論理削除シャードに挿入することであり、指定されたドキュメントがプライマリ・シャードに残っている、挿入することを含む。方法はさらに、クライアント・アプリケーションからクエリを受け取ることであり、指定されたドキュメントがクエリを満たす、受け取ることを含む。方法はさらに、指定されたドキュメントに関連づけられた論理削除ドキュメントが論理削除シャードに残っている間は、クエリに応答して指定されたドキュメントが返されることを阻止することを含む。
Description
本発明は一般に、シャード化データベース(sharded database)のための方法、システムおよびコンピュータ・プログラム製品に関する。より詳細には、本発明は、シャード化データベース内のデータの論理削除(soft deletion)のための方法、システムおよびコンピュータ・プログラム製品に関する。
最新のデータベース・システムは、高速の情報ストレージ、検索(searching)および取得(retrieval)機能を提供する。しかしながら、デジタル・コンテントの量は指数関数的な速度で増大しており、コンテントを格納および管理するためにかなりのストレージ・システムを必要とする。したがって、最新のデータベースはしばしば、大きなデータ・セットを収集、更新もしくは解析し、またはそれについて報告するコンピュータ・アプリケーションと対話し、またはそのようなコンピュータ・アプリケーションの部分である。
それらのデータ・セットが非常に大きく、それらのデータ・セットにアクセスする要求が高く、そのため単一のサーバの性能またはストレージしきい値に達する場合には、追加の性能およびストレージ能力を提供するために多数のサーバを横切ってデータを分散させることができる。そのような分散データベース・システム内のそれぞれのセグメントは「シャード(shard)」として知られている。ユーザ負荷を分散させ、データベース・システムの性能を最適化するように設計された戦略に従って、個々のシャードの機能を割り当てることができる。このようにデータベースを分散させることすなわち「シャーディングする」ことによって、性能およびストレージ限界を克服することができる。
この例示的な実施形態は、シャード化データベース内のデータの論理削除を提供する。一実施形態は、指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取ることを含む。この実施形態はさらに、指定されたドキュメントを識別する論理削除ドキュメントを論理削除シャードに挿入することであり、指定されたドキュメントがプライマリ・シャードに残っている、挿入することを含む。この実施形態はさらに、クライアント・アプリケーションからクエリを受け取ることであり、指定されたドキュメントがクエリを満たす、受け取ることを含む。この実施形態はさらに、指定されたドキュメントに関連づけられた論理削除ドキュメントが論理削除シャードに残っている間は、クエリに応答して指定されたドキュメントが返されることを阻止することを含む。この態様の他の実施形態は、この実施形態の動作を実行するようにそれぞれが構成された対応するコンピュータ・システム、装置、および1つまたは複数のコンピュータ・ストレージ・デバイス上に記録されたコンピュータ・プログラムを含む。このような実施形態は、プライマリ・シャード上での一切の書込みまたは削除動作なしで、かつプライマリ・シャードのインデックスに対する一切の変更なしで、プライマリ・データの論理削除およびリストアを可能にし、したがって時間のかかるこのようなプロセスを排除し、その結果、NoSQLデータベースの以前の論理削除プロセスに比べて性能を大幅に向上させる。
別の実施形態では、この実施形態がさらに、指定されたドキュメントをシャード化データベースにリストアするよう求めるリストア・リクエストを受け取ること、およびリストア・リクエストに応答して、指定されたドキュメントをシャード化データベースにリストアすることであり、リストアすることが、論理削除シャードから論理削除ドキュメントを除去することを含む、リストアすることを含む。したがって、この実施形態は、リストア・リクエストに応答した論理削除されたデータのリストアを可能にし、それによって、データの取消しまたは復旧機能を有することに慣れたエンド・ユーザに対して、期待される機能を提供し、コストのかかるデータ損失を回避する。
別の実施形態では、この実施形態がさらに、指定されたドキュメントを削除するよう求めるリクエストを受け取ってからの時間が規定された保存期間に達したことを検出すること、および指定されたドキュメントをシャード化データベースからパージする物理削除(hard deletion)プロセスを実行することを含む。したがって、この実施形態は、データをリストアするための期間を容認し、この期間の後にそのようなデータを永久に除去して、不必要なデータがデータベース・リソースを消費することを防ぐ。
一実施形態は、コンピュータ使用可能プログラム製品を含む。このコンピュータ使用可能プログラム製品は、コンピュータ可読ストレージ媒体と、ストレージ媒体上に格納されたプログラム命令とを含む。
一実施形態は、コンピュータ・システムを含む。このコンピュータ・システムは、プロセッサと、コンピュータ可読メモリと、コンピュータ可読ストレージ媒体と、メモリを介してプロセッサが実行するためにストレージ媒体上に格納されたプログラム命令とを含む。
添付の特許請求の範囲には、本発明の特徴と考えられる新規の特徴が記載されている。しかしながら、本発明自体および本発明の好ましい使用形態、さらに本発明の目的および利点は、例示的な実施形態の以下の詳細な説明を添付図面と併せて読んだときに、その説明を参照することによって最もよく理解される。
最新のデータベースは、クロス・プラットフォーム・キュメント指向型のNoSQL(ナット・オンリー・ストラクチャード・クエリ・ランゲージ(Not only Structured Query Language))データベースを含む。このようなデータベースは、シャーディングに有利となるように伝統的なテーブル・ベースのリレーショナル・データベース構造を避ける。盛んに増大しているデータベースが単一のサーバ上でランしているとき、そのデータベースは、最終的に、サーバが提供することができるコンピューティング・リソースの限界に達するであろう。それらの限界は、データを格納するための容量限界、ならびにクエリおよび他のデータベース・コマンドを取り扱うための処理限界を含む。
シャーディングは、データを、別個のサーバ上に格納されたデータの2つ以上のサブセットに分割することを含む。本明細書では、データのこのようなサブセットを「プライマリ・シャード」または「プライマリ・データ・シャード」と呼ぶ。この分散型アーキテクチャは、非常に大きなデータ・セットの展開および高スループット操作を支援することができる。したがって、シャーディングは、それぞれのサーバ上の多数のプライマリ・シャードに大量のデータを格納するためのスケーラブルなセットアップを実現する助けになる。
シャード化データベースはさらにデータ複製スキームを含むことができ、このスキームでは、データベースが、同じデータを保持した、それぞれのシャードのコピー・セットを生成する。複製セットでは任意の時点で、1つのシャードだけがプライマリ・シャードとしての機能を果たし、他の複製シャードは全てセカンダリ・シャードとなる。全ての書込みおよび読取り操作はプライマリ・シャードに向かい、次いで(必要に応じて)セットの中の他のセカンダリ・シャードに均一に分散する。
スケーラビリティに関してシャーディングが提供するこれらの利点にもかかわらず、プライマリ・シャードにデータを追加するプロセスまたはプライマリ・シャードからデータを削除するプロセスは、データベース性能に負の影響を与える比較的に時間のかかるプロセスであるという問題が存在する。プライマリ・シャードにデータを追加するときまたはプライマリ・シャードからデータを削除するときには、その変更を反映するようにインデックス・レコードを更新するために、プライマリ・インデックスを再構築しなければならない。インデックスはデータベースにアクセスするために使用され、大きなデータベースは、データベースに効率的にアクセスするために維持する必要があるいくつかの大きなインデックスを必要とすることがある。データベースが変更されるときには普通、インデックスを維持または更新する必要がある。このようなインデックスの再構築に長い時間がかかることがあり、この再構築により、インデックス更新が完了するまでそのインデックスがクエリに対して使用不能になる。
この問題は、シャード化データベース内で論理削除プロセスを実施する過去の試行によって悪化する。データが論理削除されているとき、そのデータを選択または使用することはできないが、データベースまたはサーバの通常の使用可能な機能を使用してリストアすることができる。対照的に、論理削除がなされない場合、データは常に物理削除され、このことは、データが永久に消失し、有効な場合もまたは有効でない場合もある並外れた労力なしにはリストアすることができないことを意味する。
データ損失は非常にコストがかかることがあり、データを取り消す機能または復活させる機能を有することに慣れたエンド・ユーザにとってフラストレーションの原因になることがある。したがって、論理削除機能の実施は、データ損失を防ぐため、および期待される機能をユーザに提供するために重要である。しかしながら、論理削除機能の実施は、他のタイプのシステム上では問題とはならない、あるタイプのシステムに対する固有の課題を提示する、システム特定の作業である。例えば、ドキュメント指向型NoSQLデータベースにおいて論理削除機能を実施する過去の努力は、データベース性能に負の影響を与えた。その理由は、過去の論理削除プロセスが、「論理削除された」データに使用不能のマークを付けるためにプライマリ・シャードにフラグまたは他のそのようなデータを書き込むことを含んでいたこと、「論理削除された」データがパージされるときには「論理削除された」データとフラグの両方が削除されること、さらに、これらの書込みおよび削除操作の各々に対してシャード・インデックス上でインデックス更新操作が実行されることにある。しかしながら、書込み、削除およびインデックス更新操作は、時間および処理に関して、データベースが実行するのにコストがかかる。したがって、これらの過去のタイプの論理削除技術は、コストがかかるいくつかの追加の操作であって、リストア可能なデータの利益と引き換えに性能が低下する望ましくないトレードオフを必要とするいくつかの追加の操作を必要とするという技術的問題を示す。
これらの技術的問題を解決するため、開示された実施形態は、論理削除されたプライマリ・データを参照する論理削除ドキュメント(SDD)を格納する論理削除シャード(SDS)と呼ばれる追加のシャードを導入する。プライマリ・シャード・データのステータスにかかわらずプライマリ・シャードからのデータの複製物を保持するセカンダリ・シャードとは異なり、SDSは、論理削除されているがまだパージされていないプライマリ・シャード・ドキュメントに関連したドキュメントだけを格納する。この期間の間、参照されたプライマリ・ドキュメントは、パージすなわち物理削除されない限り、およびパージすなわち物理削除されるまで、プライマリ・シャード内に留まる。論理削除されたデータが、パージされる代わりにリストアされる場合、このリストアは、関連するSDDをSDSから削除することを含む。このことは、プライマリ・シャード上での一切の書込みまたは削除動作なしで、かつプライマリ・シャードのインデックスに対する一切の変更なしで、プライマリ・データの論理削除およびリストアを可能にする。これらの時間のかかるプロセスを排除すると、その結果として、NoSQLデータベースの以前の論理削除プロセスに比べて性能が大幅に向上する。
論理削除を含むシャード化データベース・アプリケーションの例示的な一実施形態は、指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取り、これに応答して、指定されたドキュメントを識別するSDDをSDSに挿入する。指定されたドキュメントはプライマリ・シャード内に残す。その後に、アプリケーションが、指定されたドキュメントがクエリを満たすような態様のクエリをクライアント・アプリケーションから受け取った場合、アプリケーションは、指定されたドキュメントに関連づけられたSDDがSDSに残っている限り、指定されたドキュメントがクエリ結果と一緒に返されることを阻止する。
例示的な一実施形態では、データベース・アプリケーションが、NoSQLデータベース上で操作を実行する。実施形態は、NoSQLを含む広範囲の技術およびアーキテクチャのいずれかを含む。例えば、いくつかの実施形態では、このNoSQLデータベースが、ドキュメントの形態のデータを格納するドキュメント指向型のデータベースまたはドキュメント・ストアであり、それぞれのドキュメントは、データに構造度を提供するある種のメタデータである一意識別子(unique identifier)(UID)を有し、UIDは、知られているさまざまなデータ形式のいずれかに従ってフォーマットされたものとすることができ、ドキュメント・データは所望のフォーマットで格納される。いくつかの実施形態では、多数のデータベース・サーバが集合的にNoSQLデータベースのサービスを提供する。したがって、いくつかの実施形態では、NoSQLデータベースが、極端に量が多い異種のデータ・タイプの高速でアドホックな編成および解析を可能にする広く分散した非リレーショナルなデータベース・システムを含む。いくつかの実施形態では、NoSQLデータベースが、クラウド・データベース、非リレーショナル・データベース、ビッグ・データ・データベースもしくはNoSQLデータベースに対する他の無数の用語で呼ばれ、またはこれらの組合せで呼ばれるデータベースを含む。
SDDの実施形態は、指定されたドキュメントを、異なるさまざまなやり方のいずれかで参照することができる。例えば、いくつかの実施形態では、SDDが、指定されたドキュメントの一意識別子(UID)を含むことによって特定のドキュメントを識別する。その代わりにまたはそれに加えて、いくつかの実施形態では、SDDが、指定されたドキュメントを指すポインタを含む。
いくつかの実施形態では、アプリケーションがクライアント・アプリケーションからクエリを受け取った場合、データベース・アプリケーションは、そのクエリをプライマリ・データ・シャードに対して実行し、そのクエリをSDSに対して実行する。アプリケーションは、SDSに対するクエリからSDDが返されたことを検出することにより、プライマリ・シャードからのクエリ結果が論理削除されたドキュメントを含むことを識別する。アプリケーションは、SDDを評価することによって、論理削除されたドキュメントを識別することができる。それぞれのSDDは、プライマリ・シャードからの論理削除された一意のドキュメントを識別し、そのため、アプリケーションはこの情報を使用して、プライマリ・シャードから返されたクエリ結果の中から、論理削除されたドキュメントの位置を突き止める。例えば、いくつかの実施形態では、SDDが、プライマリ・シャード内の論理削除されたドキュメントのUIDを含み、アプリケーションが、SDSに対するクエリから返されたSDDのUIDを有する、クエリ結果の中のドキュメントの位置を突き止めることによって、クエリ結果の中から、論理削除されたドキュメントの位置を突き止める。アプリケーションが、クエリ結果の中の論理削除されたドキュメントの位置を突き止めた後、アプリケーションは、その論理削除されたドキュメントをクエリ結果から除去する。クエリ結果は、プライマリ・シャードからの論理削除されたドキュメントを含まないため、論理削除されたドキュメントを除外することによって、クエリ結果は期待通りに出現する。
例示的な一実施形態では、SDSに対するクエリを容易にするために、アプリケーションが、インデックスまたは複数のSDSインデックスを構築する。いくつかの実施形態では、このインデックス構築が、対応するSDDの位置にキーを関連づけることを含む。いくつかの実施形態では、データベース・アプリケーションが、プライマリ・シャードに対して1つまたは複数のインデックスを構築する。
実施態様に特有の考慮事項に応じてアプリケーションによって使用されることがある多くの異なるタイプのインデックスが存在する。例えば、構造化されていないデータまたは人間言語データについては、テキスト・ブロブ(text blob)をインデックス・エントリに変換するための言語アナライザを有するフル・テキスト・インデックスが使用されることがある。地理空間的または地理時間的データについては、多次元空間における点、多角形および他の形状にインデックスを付けることがある。いくつかの実施形態では、アプリケーションが、プライマリ・シャードに対して存在するインデックスの数およびタイプを整合させるように、1つまたは複数のSDSインデックスを構築する。これによって、SDSに対するクエリがプライマリ・シャードに対するクエリと一貫することが可能になる。
例示的な一実施形態では、アプリケーションがSDSに対するクエリを実行するときに、アプリケーションが、最初に、SDSインデックスのステータスをチェックして、SDSインデックス構築が完了しているのかまたは未完了であるのかを判定する。SDSのインデックス構築が完了しているとアプリケーションが判定した場合、アプリケーションは、SDSインデックスを使用してSDSのクエリを実行する。そうではなく、SDSのインデックス構築が完了していないとアプリケーションが判定した場合、アプリケーションは、フル・テーブル・スキャン(full table scan)を使用してSDSのクエリを実行する。
例示的な一実施形態では、プライマリ・シャード内のドキュメントが論理削除された後、そのドキュメントは論理削除された状態に留まり、規定された保存期間の間、リストアに対して使用可能である。いくつかの実施形態では、この規定された保存期間が、ユーザによって設定された期間である。アプリケーションは、規定された保存期間に等しい時間または規定された保存期間よりも長い時間の間、論理削除されたままの論理削除されたドキュメントがないか定期的にチェックする。論理削除されたドキュメントが、規定された保存期間の間、論理削除されたままであると、アプリケーションは、その論理削除されたドキュメントを、プライマリ・シャードからパージする。いくつかの実施形態では、アプリケーションが、シャード化データベースからの指定されたドキュメントに物理削除プロセスを実行することによって、論理削除されたドキュメントをパージする。このようないくつかの実施形態では、物理削除プロセスが、シャード化データベースのプライマリ・シャードから指定されたドキュメントを削除すること、続いて、プライマリ・シャードのインデックスを更新すること、続いて、SDSの論理削除インデックスを更新すること、続いて、指定されたドキュメントを識別するSDDを削除することを含む。
説明を明瞭にするため、その説明に限定されることを暗示することなく、例示的な実施形態は、いくつかの例示的な構成を使用して説明される。本開示から、当業者は、記載された目的を達成するための記載された構成の多くの改変、適合および変更を考案することができ、それらは、例示的な実施形態の範囲内で企図される。
さらに、図および例示的な実施形態では、データ処理環境の簡略図が使用される。実際のコンピューティング環境には、本明細書に示されていないもしくは本明細書に記載されていない追加の構造体もしくは構成要素、または、示された構造体もしくは構成要素とは異なるが本明細書に記載された機能と同様の機能を有する構造体もしくは構成要素が、例示的な実施形態の範囲を逸脱することなく存在することがある。
さらに、実際のまたは仮定の特定の構成要素に関して、例示的な実施形態は単なる例として記載されている。例示的なさまざまな実施形態によって説明されたステップを、例えば機械学習クラシファイヤ・モデルによってなされた判断に対する説明を提供するように適合させることができる。
これらのアーチファクトおよび他の同様のアーチファクトの特定の表現物(manifestation)が本発明を限定することは意図されていない。例示的な実施形態の範囲内で、これらのアーチファクトおよび他の同様のアーチファクトの適当な表現物を選択することができる。
本開示の例は、説明を明瞭にするためだけに使用されており、例示的な実施形態を限定するものではない。本明細書に挙げられた利点は単なる例であり、それらの利点が例示的な実施形態を限定することは意図されていない。特定の例示的な実施形態によって追加の利点または異なる利点が実現されることがある。さらに、特定の例示的な実施形態は、上に挙げた利点の一部もしくは全部を有することがあり、または上に挙げた利点を1つも持たないことがある。
さらに、例示的な実施形態は、任意のタイプのデータ、データ源、またはデータ・ネットワークを横切るデータ源へのアクセスに関して実施することができる。任意のタイプのデータ・ストレージ・デバイスが、本発明の範囲内で、データ処理システムにおいて局所的に、またはデータ・ネットワークを横切って、本発明の実施形態にデータを提供することができる。モバイル・デバイスを使用して実施形態が説明されている場合には、そのモバイル・デバイスとともに使用するのに適した任意のタイプのデータ・ストレージ・デバイスが、例示的な実施形態の範囲内で、モバイル・デバイスにおいて局所的に、またはデータ・ネットワークを横切って、そのような実施形態にデータを提供することができる。
例示的な実施形態は、特定のコード、対照的な説明、コンピュータ可読ストレージ媒体、高レベル特徴、履歴データ、設計、アーキテクチャ、プロトコル、レイアウト、概略図およびツールを単なる例として使用して説明されており、それらは例示的な実施形態に限定されない。さらに、いくつかの例では、説明を明瞭にするために、例示的な実施形態が、特定のソフトウェア、ツールおよびデータ処理環境を単なる例として使用して説明されている。例示的な実施形態は、他の匹敵するまたは同様の目的の構造体、システム、アプリケーションまたはアーキテクチャとともに使用することができる。例えば、本発明の範囲内で、他の匹敵するモバイル・デバイス、構造体、システム、アプリケーションまたはそれらのアーキテクチャを、本発明のそのような実施形態とともに使用することができる。例示的な一実施形態は、ハードウェア、ソフトウェアまたはそれらの組合せで実施することができる。
本開示の例は、説明を明瞭にするためだけに使用され、例示的な実施形態を限定しない。本開示から追加のデータ、操作、動作、タスク、活動および処理を考えつくことができ、それらは、例示的な実施形態の範囲内で企図される。
本明細書に記載された利点は例にすぎず、例示的な実施形態を限定することは意図されていない。特定の例示的な実施形態によって追加のまたは異なる利点を実現することができる。さらに、特定の例示的な実施形態は、上に挙げた利点の一部もしくは全部を有することがあり、または上に挙げた利点を持たないことがある。
図、具体的には図1および2を参照すると、これらの図は、例示的な実施形態を実施することができるデータ処理環境の例示的な図である。図1および2は単なる例であり、これらの図が、異なる実施形態を実施することができる環境に関する限定を主張または暗示することは意図されていない。特定の実施態様が、以下の説明に基づいて図示の環境に多くの変更を加えることがある。
図1は、例示的な実施形態を実施することができるデータ処理システムのネットワークのブロック図を示している。データ処理環境100は、例示的な実施形態を実施することができる、コンピュータのネットワークである。データ処理環境100はネットワーク102を含む。ネットワーク102は、データ処理環境100内で一緒に接続されたさまざまなデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体である。ネットワーク102は、有線通信リンク、無線通信リンクまたは光ファイバ・ケーブルなどの接続を含むことができる。
クライアントまたはサーバは、ネットワーク102に接続されたある種のデータ処理システムの役割の単なる例であり、クライアントまたはサーバが、これらのデータ処理システムの他の構成または役割を排除することは意図されていない。ネットワーク102にはデータ処理システム104が結合している。データ処理環境100内のデータ処理システム上でソフトウェア・アプリケーションを実行することができる。図1の処理システム104内で実行されると記載されたソフトウェア・アプリケーションはいずれも、別のデータ処理システム内で同様に実行されるように構成することができる。図1のデータ処理システム104内に格納されたデータもしくは情報またはデータ処理システム104内で生成されたデータもしくは情報はいずれも、別のデータ処理システム内に同様に格納されるように、または別のデータ処理システム内で同様に生成されるように構成することができる。データ処理システム104などのデータ処理システムはデータを含むことができ、コンピューティング・プロセスをその上で実行するソフトウェア・アプリケーションまたはソフトウェア・ツールを有することができる。一実施形態では、データ処理システム104がメモリ124を含み、メモリ124は、1つまたは複数の実施形態による本明細書に記載されたデータ・プロセッサ機能のうちの1つまたは複数を実施するように構成されたものとすることができるアプリケーション105Aを含む。
ネットワーク102には、サーバ106およびストレージ・ユニット108が結合している。ストレージ・ユニット108は、さまざまな実施形態に関して本明細書に記載されたデータ、例えば画像データおよび属性データを格納するように構成されたデータベース109を含む。サーバ106は従来型データ処理システムである。一実施形態では、サーバ106が、1つまたは複数の実施形態による本明細書に記載されたプロセッサ機能のうちの1つまたは複数を実施するように構成されたものとすることができるストリーム処理アプリケーション105Bの処理要素を含む。
ネットワーク102にはさらにクライアント110、112および114が結合されている。サーバ106またはクライアント110、112もしくは114などの従来型データ処理システムは、データを含むことができ、従来のコンピューティング・プロセスをシステム上で実行するソフトウェア・アプリケーションまたはソフトウェア・ツールを有することができる。
単なる例として、このようなアーキテクチャに限定されることを暗示することなく、図1は、実施形態の例示的な実施態様で使用可能なある種の構成要素を示している。例えば、サーバ106およびクライアント110、112、114は、単なる例としてサーバおよびクライアントとして示されており、このことは、クライアント-サーバ・アーキテクチャに限定されることを暗示しない。別の例として、いくつかのデータ処理システムを横断して、および図示されているようにデータ・ネットワークを横断して実施形態を分散させることができ、一方で、例示的な実施形態の範囲内で、単一のデータ処理システム上で別の実施形態を実施することもできる。従来型データ処理システム106、110、112および114はさらに、実施形態を実施するのに適したクラスタ、パーティションおよび他の構成の例示的なノードを表す。
デバイス132は、本明細書に記載された従来型コンピューティング・デバイスの例である。例えば、デバイス132は、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、固定もしくは携帯可能形式のクライアント110、ウェアラブル・コンピューティング・デバイス、または他の適当なデバイスの形態をとることができる。一実施形態では、デバイス132が、本明細書に記載されたプロセスを開始するタスクなどの1つまたは複数のデータ処理タスクをストリーム処理アプリケーション105Bによって実行するよう求めるリクエストをサーバ106に送る。図1の別の従来型データ処理システム内で実行されると記載されたソフトウェア・アプリケーションはいずれも、デバイス132内で同様に実行されるように構成することができる。図1の別の従来型データ処理システム内に格納されたデータもしくは情報または図1の別の従来型データ処理システム内で生成されたデータもしくは情報はいずれも、デバイス132内に同様に格納されるように、またはデバイス132内で同様に生成されるように構成することができる。
サーバ106、ストレージ・ユニット108、データ処理システム104、クライアント110、112および114ならびにデバイス132は、有線接続、無線通信プロトコルまたは他の適当なデータ接続性を使用してネットワーク102に結合することができる。クライアント110、112および114は例えばパーソナル・コンピュータまたはネットワーク・コンピュータとすることができる。
図示の例では、サーバ106が、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションなどのデータをクライアント110、112および114に提供することができる。この例では、クライアント110、112および114を、サーバ106のクライアントとすることができる。クライアント110、112、114またはこれらのクライアントのある組合せは、それら自体のデータ、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションを含むことができる。データ処理環境100は、図示されていない追加のサーバ、クライアントおよび他のデバイスを含むことができる。
図示の例では、メモリ124が、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションなどのデータをプロセッサ122に提供することができる。プロセッサ122は、それ自体のデータ、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションを含むことができる。データ処理環境100は、図示されていない追加のメモリ、プロセッサおよび他のデバイスを含むことができる。
図示の例では、データ処理環境100をインターネットとすることができる。ネットワーク102は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)および他のプロトコルを使用して互いに通信するネットワークおよびゲートウェイの集合を表すことがある。インターネットの中心には、主要なノードまたはホスト・コンピュータ間のデータ通信リンクのバックボーンであって、データおよびメッセージの経路を指定する数千の商用、政府、教育およびその他のコンピュータ・システムを含むバックボーンが存在する。当然ながら、データ処理環境100も、例えばイントラネット、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)などのいくつかの異なるタイプのネットワークとして実施することができる。図1は例であることが意図されており、図1が、異なる例示的な実施形態のアーキテクチャを限定することは意図されていない。
使用目的は他にもあるが、例示的な実施形態を実施することができるクライアント-サーバ環境を実施する目的にデータ処理環境100を使用することができる。クライアント-サーバ環境は、従来型クライアント・データ処理システムと従来型サーバ・データ処理システムとの間のインタラクティブ性を使用することによってアプリケーションが機能するように、ソフトウェア・アプリケーションおよびデータを、ネットワークを横断して分散させることを可能にする。データ処理環境100はさらにサービス指向アーキテクチャを使用することができ、サービス指向アーキテクチャでは、ネットワークを横断して分散した相互動作可能なソフトウェア構成要素を、コヒーレントなビジネス・アプリケーションとして一緒にパッケージングすることができる。データ処理環境100はさらにクラウドの形態をとることができ、最小限の管理労力またはサービスのプロバイダとの最小限の対話ですばやく供給およびリリースすることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械およびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするために、サービス送達のクラウド・コンピューティング・モデルを使用することができる。
図2を参照すると、この図は、例示的な実施形態を実施することができるデータ処理システムのブロック図を示している。データ処理システム200は、図1のデータ処理システム104、サーバ106もしくはクライアント110、112および114、または例示的な実施形態のためにプロセスを実施するコンピュータ使用可能プログラム・コードもしくは命令が置かれていてもよい別のタイプのデバイスなどの従来型コンピュータの例である。
データ処理システム200はさらに、例示的な実施形態のプロセスを実施するコンピュータ使用可能プログラム・コードまたは命令が置かれていてもよい図1の従来型データ処理システム132などの従来型データ処理システムまたはその構成を表している。データ処理システム200は、単なる例としてコンピュータとして説明されるが、コンピュータに限定されるわけではない。図1のデバイス132など他のデバイスの形態の実施態様は、タッチ・インタフェースを追加することなどによってデータ処理システム200を変更することができ、また、本明細書に記載されたデータ処理システム200の動作および機能の全般的な説明を逸脱することなく、データ処理システム200から、図示されたある種の構成要素を排除することもできる。
図示の例では、データ処理システム200が、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202ならびにサウス・ブリッジおよび入力/出力(I/O)コントローラ・ハブ(SB/ICH)204を含むハブ・アーキテクチャを使用する。ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202には、処理ユニット206、主メモリ208およびグラフィックス・プロセッサ210が結合されている。処理ユニット206は、1つまたは複数のプロセッサを含むことができ、1つまたは複数の異種プロセッサ・システムを使用して実施することができる。
処理ユニット206はマルチコア・プロセッサとすることができる。ある種の実施態様では、アクセラレーテッド・グラフィックス・ポート(accelerated graphics port)(AGP)を通してグラフィックス・プロセッサ210をNB/MCH202に結合することができる。
処理ユニット206はマルチコア・プロセッサとすることができる。ある種の実施態様では、アクセラレーテッド・グラフィックス・ポート(accelerated graphics port)(AGP)を通してグラフィックス・プロセッサ210をNB/MCH202に結合することができる。
図示の例では、サウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204にローカル・エリア・ネットワーク(LAN)アダプタ212が結合されている。サウス・ブリッジおよびI/Oコントローラ・ハブ204には、バス238を通して、オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、リード・オンリー・メモリ(ROM)224、ユニバーサル・シリアル・バス(USB)およびその他のポート232、ならびにPCI/PCIeデバイス234が結合されている。サウス・ブリッジおよびI/Oコントローラ・ハブ204には、バス240を通して、ハード・ディスク・ドライブ(HDD)または固体状態ドライブ(SSD)226およびCD-ROM230が結合されている。PCI/PCIeデバイス234は、例えばイーサネット(R)・アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードを含むことができる。PCIはカード・バス・コントローラを使用するが、PCIeはカード・バス・コントローラを使用しない。ROM224は例えば、フラッシュ・バイナリ入力/出力システム(BIOS)とすることができる。ハード・ディスク・ドライブ226およびCD-ROM230は例えば、インテグレーテッド・ドライブ・エレクトロニクス(IDE)、シリアル・アドバンスト・テクノロジ・アタッチメント(SATA)インタフェースまたはその変形、例えばエクスターナルSATA(eSATA)およびマイクロSATA(mSATA)を使用することができる。サウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204には、バス238を通してスーパーI/O(SIO)デバイス236が結合されていてもよい。
主メモリ208、ROM224またはフラッシュ・メモリ(図示せず)などのメモリは、コンピュータ使用可能ストレージ・デバイスのいくつかの例である。ハード・ディスク・ドライブまたは固体状態ドライブ226、CD-ROM230および同様に使用可能な他のデバイスは、コンピュータ使用可能ストレージ媒体を含むコンピュータ使用可能ストレージ・デバイスのいくつかの例である。
処理ユニット206上ではオペレーティング・システムがランする。このオペレーティング・システムは、図2のデータ処理システム200内のさまざまな構成要素の制御を調整および提供する。このオペレーティング・システムは、限定はされないがサーバ・システム、パーソナル・コンピュータおよびモバイル・デバイスを含む任意のタイプのコンピューティング・プラットフォーム用の市販オペレーティング・システムとすることができる。オペレーティング・システムとともに、オブジェクト指向プログラミング・システムまたは他のタイプのプログラミング・システムが動作してもよく、これらのプログラミング・システムは、データ処理システム200上で実行されているプログラムまたはアプリケーションからオペレーティング・システムに呼出しを提供することができる。
オペレーティング・システム、オブジェクト指向プログラミング・システム、および図1のアプリケーション105などのアプリケーションまたはプログラムに対する命令は、ストレージ・デバイス上に、例えばハード・ディスク・ドライブ226上のコード226Aの形態で置かれており、処理ユニット206によって実行するために、主メモリ208など、1つまたは複数のメモリのうちの少なくとも1つのメモリにロードすることができる。例示的な実施形態のプロセスは、コンピュータ実施命令を使用して処理ユニット206によって実行されてもよく、コンピュータ実施命令は、例えば主メモリ208、リード・オンリー・メモリ224などのメモリまたは1つもしくは複数の周辺デバイスに置かれていてもよい。
さらに、1つのケースでは、ネットワーク201Aを横切ってリモート・システム201Bからコード226Aをダウンロードすることができ、リモート・システム201Bのストレージ・デバイス201Dには同様のコード201Cが格納されている。別のケースでは、ネットワーク201Aを横切ってリモート・システム201Bにコード226Aをダウンロードすることができ、リモート・システム201Bのストレージ・デバイス201Dにはダウンロードされたコード201Cが格納されている。
実施態様に応じて図1~2のハードウェアを変更することができる。図1~2に示されたハードウェアに加えて、または図1~2に示されたハードウェアの代わりに、フラッシュ・メモリ、等価の不揮発性メモリ、または光ディスク・ドライブなどの他の内部ハードウェアまたは周辺デバイスを使用することができる。さらに、例示的な実施形態のプロセスを、マルチプロセッサ・データ処理システムに適用することができる。
例示のためのいくつかの例では、データ処理システム200をパーソナル・デジタル・アシスタント(PDA)とすることができ、PDAは一般に、オペレーティング・システム・ファイルもしくはユーザ生成データまたはその両方を格納するための不揮発性メモリを提供するフラッシュ・メモリを有するように構成されている。バス・システムは、システム・バス、I/OバスおよびPCIバスなどの1つまたは複数のバスを備えることができる。当然ながら、このバス・システムは、任意のタイプの通信ファブリックまたはアーキテクチャを使用して実施することができ、それらの通信ファブリックまたはアーキテクチャは、そのファブリックまたはアーキテクチャに接続された異なる構成要素またはデバイス間のデータ転送を提供する。
通信ユニットは、データを送受信するために使用される、モデムまたはネットワーク・アダプタなどの1つまたは複数のデバイスを含むことができる。メモリは例えば、主メモリ208、またはノース・ブリッジおよびメモリ・コントローラ・ハブ202内に見られるキャッシュなどのキャッシュとすることができる。処理ユニットは、1つまたは複数のプロセッサまたはCPUを含むことができる。
図1~2に示された例および上述の例は、アーキテクチャが限定されることを暗示するものではない。例えば、モバイル・デバイスまたはウェアラブル・デバイスの形態をとることに加えて、データ処理システム200を、タブレット・コンピュータ、ラップトップ・コンピュータまたは電話機とすることもできる。
コンピュータまたはデータ処理システムが、仮想機械、仮想デバイスまたは仮想構成要素として説明されている場合、その仮想機械、仮想デバイスまたは仮想構成要素は、データ処理システム200内に示された一部または全部の構成要素の仮想化された表現物を使用して、データ処理システム200の方式で動作する。例えば、仮想機械、仮想デバイスまたは仮想構成要素では、処理ユニット206が、ホスト・データ処理システム内で使用可能な全部または一部のハードウェア処理ユニット206の仮想化事例として表現され、主メモリ208が、ホスト・データ処理システム内で使用可能であってもよい主メモリ208の全体または一部分の仮想化事例として表現され、ディスク226が、ホスト・データ処理システム内で使用可能であってもよいディスク226の全体または一部分の仮想化事例として表現される。このようなケースのホスト・データ処理システムは、データ処理システム200によって表される。
図3を参照すると、この図は、例示的な一実施形態による例示的なシャード・システム300のブロック図を示している。図示の実施形態では、シャード・システム300が、多数のプライマリ・データベース・シャード312、314、316および318間で分散したデータ項目に1つまたは複数のクライアント・アプリケーション322がアクセスすることができるシャード化データベース302を含む。一実施形態では、シャード化データベース302が図1のデータベース109の例であり、クライアント・アプリケーション322が図1のアプリケーション105A/105Bの例である。
シャード・システム300は、クライアント・アプリケーション322ならびにプライマリ・データベース・シャード312、314、316および318を含む。システム300内のクライアント・アプリケーション322ならびにプライマリ・データベース・シャード312、314、316および318の量は変動しうる。いくつかの実施形態では、プライマリ・データベース・シャード312、314、316および318の各々が、システム300内の他のシャードを認識している必要がない別個の独立したデータベースである。このようないくつかの実施形態では、プライマリ・データベース・シャード312、314、316および318の各々が、例えば、別個のデータベース・サーバおよびリレーショナル・データベースを含む。いくつかの実施形態では、別個のコンピューティング・システム上にあってクライアント322間で互いに独立して動作する2つ以上のクライアント・アプリケーション322がある。このようないくつかの実施形態では、クライアント322の各々が、プライマリ・データベース・シャード312、314、316および318の中の、特定のデータ項目が格納されているかまたは特定のデータ項目を格納する特定のシャードの識別をその特定のデータ項目のプライマリ・キーに基づいて計算するためにハッシュ関数を利用するソフトウェア・プログラムの別個のインスタンスを実行する。いくつかの実施形態では、そのようなデータ項目が、類似の属性セットに対して異なる値を有する別個のレコードである。
一般に、プライマリ・データベース・シャード312、314、316および318のうちの特定の1つのプライマリ・データベース・シャードに既に格納されているデータ項目に対する操作を実行するため、クライアント・アプリケーション322は、データベース302にデータベース・コマンドを発行することによってそのデータ項目に関する1つまたは複数の命令を実行する。例えば、このような命令は、1つもしくは複数のプライマリ・クエリ・エンジン308によって処理されるクエリ・コマンド、または削除マネージャ304によって処理される削除コマンドを含みうる。いくつかの実施形態では、データベース302が、プライマリ・データベース・シャード312~318ごとにプライマリ・クエリ・エンジン308を含む。例示的な実施形態はさらに、削除されたデータをデータが削除されてから指定された期間内にリストアすることを可能にする、リストア・マネージャ324によって処理されるリストア・コマンドを用意している。
本発明の一実施形態によれば、データベース302は、削除されたデータをリストアすることができる。これは、システム300には論理削除シャード(SDS)320が含まれており、SDS320が、プライマリ・データベース・シャード312、314、316および318から削除されたドキュメントの論理削除ステータスを収容した論理削除ドキュメントを格納しているためである。指定された期間の後、論理削除ドキュメントは、削除されたデータをパージする物理削除プロセスの部分としてパージ・マネージャ306によってSDS320から除去される。指定された期間中に、SDSクエリ・エンジン310が、プライマリ・クエリ・エンジン308によって実行されたプライマリ・データベース・シャード312、314、316および318のそれぞれのクエリに対応するSDS320のクエリを実行する。プライマリ・データベース・シャード312、314、316および318の集合体およびSDS320に対してともに同じクエリが実行されるため、ならびにSDS320内のドキュメントは本質的に、論理削除されたプライマリ・データベース・シャード312、314、316および318からのドキュメントのコピーであるか、または論理削除されたプライマリ・データベース・シャード312、314、316および318からのドキュメントを参照しているため、SDSクエリ・エンジン310がSDS320内でドキュメントを見つけた場合、それは、1つのクエリがSDS320からのドキュメントと整合した場合、その同じクエリが、論理削除されたプライマリ・データベース・シャード312、314、316および318からのドキュメントとも整合することを意味する。したがって、データベース302は、プライマリ・シャード・クエリ結果の中から、クエリ結果として返されたSDS320ドキュメントによって識別されたクエリ結果を除去する。削除されたドキュメントがクエリ結果に含まれることは期待されていないと推定されるため、この動作は、検索結果から、論理削除されたドキュメントを除去する。
図4を参照すると、この図は、例示的な一実施形態によるシャード化データベース400のブロック図を示している。一実施形態では、シャード化データベース400が、図3のデータベース302または図1のデータベース109の例である。
図示の実施形態では、データベース400が、削除マネージャ402、パージ・マネージャ404、クエリ・サブトラクタ(query subtractor)406、クエリ・マネージャ408、プライマリ・データベース・シャード410、412および414、SDS416、インデックス・マネージャ418、インデックス・エンジン420、422および424、インデックス・シンクロナイザ(index synchronizer)426、SDSインデックス428、430および432、クエリ・アグリゲータ(query aggregator)434、プライマリ・クエリ・エンジン436、438および440、SDSクエリ・エンジン442、ならびにリストア・マネージャ444を含む。いくつかの実施形態では、本明細書に記載された機能が、ソフトウェアおよび/またはハードウェア・ベースのシステムの組合せ、例えば特定用途向け集積回路(ASIC)、コンピュータ・プログラムまたはスマート・フォン・アプリケーションを含みうる複数のシステム間で分散している。一実施形態では、削除マネージャ402が削除マネージャ304の例であり、パージ・マネージャ404がパージ・マネージャ306の例であり、プライマリ・データベース・シャード410、412および414がプライマリ・データベース・シャード312、314、316および318の例であり、SDS416がSDS320の例であり、プライマリ・クエリ・エンジン436、438および440がプライマリ・クエリ・エンジン308の例であり、SDSクエリ・エンジン442がSDSクエリ・エンジン310の例であり、リストア・マネージャ444がリストア・マネージャ324の例である。
図示の実施形態では、インデックス・マネージャ418が、対応するそれぞれのインデックス・エンジン420、422および424を呼び出すことによって、異なるプライマリ・シャード410、412および414にインデックス・リクエストをディスパッチする。インデックス・エンジン420、422および424はインデックス・リクエストを実行する。それぞれのプライマリ・シャード410、412および414に対して1つのインデックス・エンジン420、422および424が示されているが、代替実施形態は、それぞれのプライマリ・シャードに対して多数のインデックス・エンジンを含む。このようないくつかの実施形態では、データベース400が、プライマリ・シャード410、412および414に対して1つまたは複数のインデックスを構築する。実施態様に特有の考慮事項に応じてアプリケーションによって使用されることがある多くの異なるタイプのインデックスが存在する。例えば、構造化されていないデータまたは人間言語データについては、テキスト・ブロブをインデックス・エントリに変換するための言語アナライザを有するフル・テキスト・インデックスが使用されることがある。地理空間的または地理時間的データについては、多次元空間における点、多角形および他の形状にインデックスを付けることがある。このようないくつかの実施形態では、データベース400が、それぞれのインデックス・タイプに対して異なるタイプのインデックス・エンジンを含む。
いくつかの実施形態では、インデックス・シンクロナイザ426が、プライマリ・シャード410、412および414の各々に対して存在するインデックスの数およびタイプを整合させるように、SDS416に対する1つまたは複数のSDSインデックス428、430および432を非同期で構築および更新する。これによって、SDS416に対するクエリがプライマリ・シャード410、412および414に対するクエリと一貫することが可能になる。
いくつかの実施形態では、クエリ・マネージャ408がクライアント・アプリケーションからクエリを受け取った場合に、クエリ・マネージャ408が、プライマリ・データ・シャード410、412および414に対してそのクエリを実行するようプライマリ・クエリ・エンジン436、438および440に命令し、さらに、SDS416に対してそのクエリを実行するようSDSクエリ・エンジン442に命令する。クエリ・アグリゲータ434は、プライマリ・クエリ・エンジン436、438および440の各々からクエリ結果を受け取り、結果集約を実行して、それらの結果を集約された1つの結果セットに結合する。
クエリ・サブトラクタ406は、SDSクエリ・エンジン442が見つけたクエリ結果を受け取る。クエリ・サブトラクタ406は、SDS416に対するクエリからSDDが返されたことを検出することにより、プライマリ・シャード410、412および414からの集約された結果セットが論理削除されたドキュメントを含むことを認識する。クエリ・サブトラクタ406は、SDDを評価することによって、集約された結果セット中のドキュメントの中から、論理削除されたドキュメントを識別することができる。それぞれのSDDは、プライマリ・シャード410、412および414からの論理削除された一意のドキュメントを識別し、そのため、クエリ・サブトラクタ406はこの情報を使用して、集約された結果セットの中から論理削除されたドキュメントの位置を突き止める。
例えば、いくつかの実施形態では、SDDが、プライマリ・シャード410、412および414内の論理削除されたドキュメントのUIDを含み、クエリ・サブトラクタ406が、SDS416に対するクエリから返されたSDDのUIDを有する、クエリ結果の中のドキュメントの位置を突き止めることによって、集約された結果セットの中から論理削除ドキュメントの位置を突き止める。クエリ・サブトラクタ406が、クエリ結果の中の論理削除されたドキュメントの位置を突き止めた後、クエリ・サブトラクタ406は、その論理削除されたドキュメントをクエリ結果セットから除去する。このクエリ結果セットは、プライマリ・シャード410、412および414からの論理削除されたドキュメントを含まないため、論理削除されたドキュメントを除外することによって、クエリ結果セットは期待通りに出現する。パージ・マネージャは、プライマリ・シャードおよび論理削除シャード内のプライマリ・データおよびインデックスに対して物理削除を実行する。
例示的な一実施形態では、プライマリ・シャード410、412および414内のドキュメントが論理削除された後、そのドキュメントは論理削除された状態に留まり、規定された保存期間の間、リストア・マネージャ444によるリストアに対して使用可能である。いくつかの実施形態では、この規定された保存期間が、ユーザによって設定された期間である。アプリケーションは、規定された保存期間に等しい時間または規定された保存期間よりも長い時間の間、論理削除されたままの論理削除されたドキュメントがないか定期的にチェックする。論理削除されたドキュメントが、規定された保存期間の間、論理削除されたままであると、パージ・マネージャ404は、その論理削除されたドキュメントを、プライマリ・シャード410、412および414からパージする。いくつかの実施形態では、パージ・マネージャ404が、シャード化データベース400からの指定されたドキュメントに物理削除プロセスを実行することによって、論理削除されたドキュメントをパージする。このようないくつかの実施形態では、物理削除プロセスが、シャード化データベース400のプライマリ・シャード410、412または414から指定されたドキュメントを削除すること、続いて、インデックス・エンジン420、422および424によってプライマリ・シャード410、412および414のインデックスを更新すること、続いて、SDS416の論理削除インデックス428、430および432を更新すること、続いて、指定されたドキュメントを識別するSDDを削除することを含む。
図5を参照すると、この図は、例示的な一実施形態によるシャード化データベース500のブロック図を示している。一実施形態では、シャード化データベース500が、図4のシャード化データベース400、図3のデータベース302または図1のデータベース109の例である。
図示の実施形態では、データベース500が、プライマリ・シャード502~516およびSDS518を含む。プライマリ・シャード502~516はそれぞれ、アドレス指定可能な等しい数のデータ・ストアを含む。図示の実施形態では、プライマリ・シャード502~516の各々が0x1F個のアドレスを含んでいるが、この量は変動してもよい。プライマリ・データ・シャード502~516を横切るデータ分散に関してバランスを維持することが望ましい。これが望ましい1つの理由は、シャードのバランスがくずれた(例えば、容量に近いプライマリ・シャード502および空に近いプライマリ・シャード504)場合には、1つのプライマリ・シャードに関してはRAMおよびディスク空間が十分に利用されず、別のプライマリ・シャードに関してはRAMおよびディスク空間が過度に利用されるためである。いくつかの実施形態は、実行速度を上げるために、プライマリ・インデックスを、最近使用されたデータとともにRAMの中に維持しようとする。バランスがとれていない状況では、過負荷のシャードのRAMが、データ・セット項目またはインデックスをRAMから追い出し始めるであろう。したがって、プライマリ・シャード502~516間でバランスのとれたデータ・レベルを維持することが望ましい。
一方で、SDS518は、一意環境下でデータを格納する(論理削除されたデータだけを格納する)。したがって、いくつかの実施形態では、データベース500が、プライマリ・シャード502~516を横切ってデータを均一に分散させるシャード・バランシングを含むが、SDS518をこのバランシングから除外する。同様に、いくつかの実施形態では、シャード502~516が、プライマリ・データ・シャードとセカンダリ・データ・シャードの両方を含む(例えばセカンダリ・シャードがデータ複製のために使用される場合)。このようないくつかの実施形態では、プライマリおよびセカンダリ・シャード502~516を横切ってデータを均一に分散させるためにシャード・バランシングが実行されるが、このシャード・バランシングは、SDS518をこのシャード・バランシングから除外する。
図6を参照すると、この図は、例示的な一実施形態による例示的なシャード化データベース600のブロック図を示している。より詳細には、図6は、シャード化データベース600内のドキュメント(DOCB)に対する削除コマンドの効果を示している。特定の実施形態では、シャード化データベース600が、図5のシャード化データベース500、図4のシャード化データベース400、図3のデータベース302または図1のデータベース109の例である。
図示の実施形態では、シャード化データベース600が、3つのプライマリ・シャード、すなわちデータベース・シャードA(DBSA)602、データベース・シャードB(DBSB)604およびデータベース・シャードC(DBSC)606を含む。シャード化データベース600は、DBSB604内のDOCBを削除するよう命じる削除コマンドを受け取る。このことが、取消し線を有するドキュメントDOCBを示すことによって図6に示されており、この取消し線は、削除コマンドの結果としてDOCBが論理削除されたことを示している。しかしながら、削除またはリストア・コマンドによってDBSB604内の実際のドキュメントDOCBは変更されないため、DBSB604内のDOCBの取消し線は象徴的であり、説明が目的である。さらに、この削除コマンドの結果として、DOCBに対するSDDがSDS608に追加される。次に、DOCBに対するSDDがSDS608に追加されたことを反映するように、SDSインデックスが更新される。DOCBが論理削除された状態にある間に、クエリ・マネージャ610が、DOCBによって満たされるクエリを受け取った場合、DOCBは、他のクエリ結果とともにクエリ結果として返される。しかしながら、DOCBに対するSDDがSDS608内にあるため、まだ前結果(pre-result)の中にある間にDOCBは除去される。したがって、最終結果612は、論理削除されたドキュメントDOCBを除外する。
図7を参照すると、この図は、例示的な一実施形態による例示的なシャード化データベース700のブロック図を示している。より詳細には、図7は、以前に論理削除されたドキュメント(DOCB)に対するリストア・コマンドの効果を示している。特定の実施形態では、シャード化データベース700が、図5のシャード化データベース500、図4のシャード化データベース400、図3のデータベース302または図1のデータベース109の例である。
図示の実施形態では、シャード化データベース700が、3つのプライマリ・シャード、すなわちデータベース・シャードA(DBSA)702、データベース・シャードB(DBSB)704およびデータベース・シャードC(DBSC)706を含む。DBSB704には、破線の取消し線を有するドキュメントDOCBが示されており、この破線の取消し線は、以前に論理削除された後にDOCBがリストアされたことを示している。しかしながら、削除またはリストア・コマンドによってDBSB704内の実際のドキュメントDOCBは変更されないため、DBSB704内のDOCBの取消し線は、説明目的の象徴的なものに過ぎない。その代わりに、リストア・コマンドによって引き起こされる実際の変化はSDS708に対するものである。リストア・コマンドの結果として、DOCB SDDおよびDOCB SDDに対するSDSインデックスが除去される。したがって、DOCBを返すクエリ・マネージャ710に対する将来のクエリは、前結果および最終結果にDOCBを含むであろう。
図8を参照すると、この図は、例示的な一実施形態による例示的なシャード化データベース800のブロック図を示している。より詳細には、図8は、シャード化データベース800内の論理削除されたドキュメント(DOCB)に対するクエリ・コマンドの効果を示している。特定の実施形態では、シャード化データベース800が、図5のシャード化データベース500、図4のシャード化データベース400、図3のデータベース302または図1のデータベース109の例である。
図示の実施形態では、シャード化データベース800が、3つのプライマリ・シャード、すなわちデータベース・シャードA(DBSA)802、データベース・シャードB(DBSB)804およびデータベース・シャードC(DBSC)806を含む。DBSB804には、取消し線を有するドキュメントDOCBが示されており、この取消し線は、DOCBが論理削除されたことを示している。しかしながら、削除またはリストア・コマンドによってDBSB804内の実際のドキュメントDOCBは変更されないため、DBSB804内のDOCBの取消し線は、説明目的の象徴的なものに過ぎない。したがって、DOCBが論理削除された状態にある間、SDS808は、DOCBに対するSDDを含む。クエリ・マネージャ810が、DOCBによって満たされるクエリを受け取ると、DOCBは、他のクエリ結果とともにクエリ結果として返される。しかしながら、DOCBに対するSDDがSDS808内にあるため、まだ前結果の中にある間にDOCBは除去される。したがって、最終結果812は、論理削除されたドキュメントDOCBを除外する。
図9を参照すると、この図は、例示的な一実施形態による例示的なシャード化データベース900のブロック図を示している。より詳細には、図9は、以前に論理削除されたドキュメント(DOCB)に対する物理削除またはパージング動作の効果を示している。特定の実施形態では、シャード化データベース900が、図5のシャード化データベース500、図4のシャード化データベース400、図3のデータベース302または図1のデータベース109の例である。
図示の実施形態では、シャード化データベース900が、3つのプライマリ・シャード、すなわちデータベース・シャードA(DBSA)902、データベース・シャードB(DBSB)904およびデータベース・シャードC(DBSC)906を含む。DBSB904には、取消し線を有するドキュメントDOCBが示されており、この取消し線は、DOCBが論理削除されてから規定された保存期間が経過した後にパージ・マネージャ910がDOCBを永久に削除したことを示している。次に、パージ・マネージャ910は、DOCB.フィールド5への参照を除去するように、プライマリ・シャードのインデックスを更新する。次に、パージ・マネージャ910は、SDS908の論理削除インデックスを更新する。最後に、パージ・マネージャ910はSDS908からSDDを削除し、このことはパージされたドキュメントDOCBを識別する。
図10を参照すると、この図は、例示的な一実施形態によるSDSインデックス構築プロセスのタイムライン進行のブロック図を示している。特定の実施形態では、図10に示されたプロセスが、インデックス・シンクロナイザ1010によって実行される。インデックス・シンクロナイザ1010は図4のインデックス・シンクロナイザ426の例である。
例示的な一実施形態では、SDSのクエリの効率的な実行を支援するために、インデックス・シンクロナイザ1010が、T1からT4までの期間にわたって複数のSDSインデックス1012、1014および1016を構築する。SDSインデックス1012、1014および1016が完成していない場合(すなわちT4よりも前)、データベースは、クエリ・ステートメントと整合するSDDを選択するのにフル・テーブル・スキャンを実行しなければならない。すなわちSDS内の全てのドキュメントをスキャンしなければならない。SDSインデックス1012、1014および1016が完成している場合(すなわちT4の後)、データベースは、インデックス1012、1014および1016を使用して、クエリ・ステートメントと整合するSDDを選択するために調べるSDDの数を限定する。
いくつかの実施形態では、インデックス・シンクロナイザ1010が、SDSに対する多数のインデックスを構築する。それぞれのインデックスは異なるインデックス・タイプである。図示の実施形態では、インデックス・シンクロナイザ1010が、インデックス1012、1014、1016を非同期で構築する。時刻T1に始まり、インデックス状態1002から、インデックス・シンクロナイザ1010はSDSインデックス1012を構築し、SDSインデックス1012は時刻T2に完成して、インデックス状態1004を完成させる。時刻T2に、インデックス状態1004から、インデックス・シンクロナイザ1010は、SDSインデックス1014を構築し、SDSインデックス1014は時刻T3に完成して、インデックス状態1006を完成させる。時刻T3に、インデックス状態1006から、インデックス・シンクロナイザ1010は、SDSインデックス1016を構築し、SDSインデックス1016は時刻T4に完成して、インデックス状態1008を完成させる。いくつかの実施形態では、インデックス・シンクロナイザ1010が、プライマリ・シャードに対して存在するインデックスの数およびタイプと整合するように、SDSインデックス1012、1014および1016を構築する。これによって、SDSに対するクエリがプライマリ・シャードに対するクエリと一貫することが可能になる。
図11を参照すると、この図は、例示的な一実施形態による、シャード化データベース内のデータの論理削除のための例示的なプロセス1100のフローチャートを示している。いくつかの実施形態では、データベース302、シャード化データベース400、シャード化データベース500、シャード化データベース600、シャード化データベース700、シャード化データベース800またはシャード化データベース900がプロセス1100を実行する。
一実施形態では、ブロック1102で、このプロセスが、指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取る。次に、ブロック1104で、このプロセスは、指定されたドキュメントを識別する論理削除ドキュメントを論理削除シャードに挿入する。指定されたドキュメントはプライマリ・シャードに残っている。次に、ブロック1106で、このプロセスは、クライアント・アプリケーションから第1のクエリを受け取る。指定されたドキュメントは第1のクエリを満たす。次に、ブロック1108で、このプロセスは、指定されたドキュメントに関連づけられた論理削除ドキュメントが論理削除シャードに残っている間、第1のクエリに応答して指定されたドキュメントが返されることを阻止する。
図12Aおよび12Bを参照すると、これらの図は、例示的な一実施形態による、シャード化データベース内のデータの論理削除のための例示的なプロセス1200のフローチャートを示している。いくつかの実施形態では、データベース302、シャード化データベース400、シャード化データベース500、シャード化データベース600、シャード化データベース700、シャード化データベース800またはシャード化データベース900がプロセス1200を実行する。
一実施形態では、ブロック1202で、このプロセスが、入来データベース・コマンドがないかチェックする。次に、ブロック1204で、このプロセスが削除コマンドを受け取った場合、プロセスはブロック1206に進み、このプロセスがリストア・コマンドを受け取った場合、プロセスはブロック1210に進み、このプロセスがクエリ・コマンドを受け取った場合、プロセスはブロック1212に進み、このプロセスがコマンドを受け取っていない場合、プロセスはブロック1226に進む。
このプロセスが削除コマンドを受け取った場合、ブロック1206で、このプロセスは、論理削除シャード内で、削除コマンドによって指定されたドキュメントを識別する新たな論理削除ドキュメントを作成する。次に、ブロック1209で、このプロセスは、新たに追加された論理削除ドキュメントを反映するように論理削除シャード・シーケンスを更新する。
このプロセスがリストア・コマンドを受け取った場合、ブロック1210で、このプロセスは、論理削除シャードから、リストア・リクエストの中で指定されたドキュメントを識別する論理削除ドキュメントを削除する。次に、ブロック1208で、このプロセスは、新たに除去された論理削除ドキュメントを反映するように論理削除シャード・シーケンスを更新する。
このプロセスがクエリ・コマンドを受け取った場合、ブロック1212で、このプロセスは、プライマリ・シャード内でクエリを実行し、クエリ結果を集約する。次に、ブロック1214で、このプロセスは、論理削除シャードに対して使用可能な完成したインデックスがあるかどうかを判定し、そのようなインデックスがある場合、プロセスはブロック1216に進み、そのようなインデックスがない場合、プロセスはブロック1218に進む。ブロック1216で、完成したインデックスがSDSに対して使用可能であるとこのプロセスが判定した場合、このプロセスは、そのSDSインデックスを使用してSDS内でクエリを実行する。一方、ブロック1218で、完成したインデックスがSDSに対して使用可能でないとこのプロセスが判定した場合、このプロセスは、フル・テーブル・スキャンを使用してSDS内でクエリを実行する。ブロック1220で、このプロセスは、ブロック1216またはブロック1218におけるクエリが結果を返したかどうかを判定する。結果を返した場合、プロセスはブロック1222に進み、結果を返さなかった場合、プロセスはブロック1224に進む。ブロック1222で、プライマリ・シャードおよびSDSに対しては同じクエリが実行されるため、およびSDS内のドキュメントは本質的に、論理削除されたプライマリ・シャードからのドキュメントのコピーであるため、クエリがSDSからのドキュメントと整合する場合、そのクエリは、論理削除されたプライマリ・シャードからのドキュメントとも整合するであろう。したがって、ブロック1222で、このプロセスは、集約されたプライマリ・シャード・クエリ結果の中から、クエリ結果として返されたSDSドキュメントによって識別されたクエリ結果を除去する。削除されたドキュメントがクエリ結果に含まれることは期待されていないと推定されるため、この動作は、検索結果から、論理削除されたドキュメントを除去する。次に、ブロック1224で、このプロセスは、(SDS整合によって除去された結果を含まない)集約されたプライマリ・シャード・クエリ結果を返すことでクエリに応答する。
このプロセスがコマンドを受け取っていない場合、ブロック1226で、このプロセスは、いずれかのSDSドキュメントの保存期間が期限切れになったかどうかをチェックする。期限切れになった場合、このプロセスは続いて、保存期間が期限切れになったそれぞれのSDSドキュメントに対してブロック1228、1230、1232および1234を実行する。一実施形態では、ブロック1228、1230、1232および1234を実行することが、シャード化データベースからドキュメントを物理削除することに等しい。ブロック1228で、このプロセスは、プライマリ・シャードから、期限切れのSDSドキュメントによって識別されたドキュメントを削除する。次に、ブロック1230で、このプロセスは、プライマリ・シャードからのドキュメントの削除を反映するように、プライマリ・シャードに対するインデックスを更新する。次に、ブロック1232で、このプロセスは、期限切れのSDSドキュメントの削除を反映するようにSDSインデックスを更新する。最後に、ブロック1234で、このプロセスは、期限切れのSDSドキュメントを削除する。
特許請求の範囲および本明細書の解釈のために、以下の定義および略語が使用される。本明細書で使用されるとき、用語「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」、「含有する(contains)」もしくは「含有している(containing)」、またはこれらの用語の他の変異語は、非排他的包含(non-exclusive inclusion)をカバーすることが意図されている。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品または装置は、必ずしもそれらの要素だけに限定されるわけではなく、明示的にはリストに入れられていない他の要素、あるいはこのような組成物、混合物、プロセス、方法、物品または装置に固有の他の要素を含みうる。
さらに、本明細書では、用語「例示的な」が、「例、事例または実例として役立つ」ことを意味するものとして使用されている。本明細書に「例示的」として記載された実施形態または設計は必ずしも、他の実施形態または設計よりも好ましいまたは有利であるとは解釈されない。用語「少なくとも1つの」および「1つまたは複数の」は、1以上の任意の整数、すなわち1、2、3、4などを含むと理解される。用語「複数」は、2以上の任意の整数、すなわち2、3、4、5などを含むと理解される。用語「接続」は、間接「接続」および直接「接続」を含みうる。
本明細書において「一実施形態」、「実施形態」、「例示的な実施形態」などに言及されているとき、それは、記載されたその実施形態は特定の特徴、構造もしくは特性を含みうるが、全ての実施形態がその特定の特徴、構造もしくは特性を含むことがあり、またはそうではないこともあることを示す。さらに、このような句が、同じ実施形態を指しているとは限らない。さらに、1つの実施形態に関して特定の特徴、構造または特性が記載されているとき、明示的に記載されているか否かを問わず、他の実施形態に関してそのような特徴、構造または特性に影響を及ぼすことは、当業者の知識の範囲内にあると考えられる。
用語「約」、「実質的に」、「およそ」およびこれらの用語の変異語は、特定の数量の大きさに関連した、本出願の提出時に利用可能な機器に基づく誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±8%、5%または2%の範囲を含みうる。
本発明のさまざまな実施形態の以上の説明は、例示のために示したものであり、以上の説明が網羅的であること、または、以上の説明が、開示された実施形態に限定されることは意図されていない。当業者には、記載された実施形態の範囲を逸脱しない多くの変更および変形が明らかとなろう。本明細書で使用した用語は、実施形態の原理、実用的用途、もしくは市販されている技術にはない技術的改良点を最もよく説明するように、または本明細書に開示された実施形態を当業者が理解できるように選択された。
したがって、これらの例示的な実施形態では、オンライン・コミュニティへの参加および他の関連特徴、機能または操作を管理するために、コンピュータ実施方法、システムまたは装置、およびコンピュータ・プログラム製品が提供される。実施形態またはその部分が1つのタイプのデバイスに関して説明されている場合、このコンピュータ実施方法、システムもしくは装置、コンピュータ・プログラム製品、またはこれらの一部分は、そのタイプのデバイスの適当な匹敵する表現物とともに使用されるように適合または構成される。
アプリケーションで実施されるように実施形態が説明されている場合には、例示的な実施形態の範囲内で、ソフトウェア・アズ・ア・サービス(SaaS)モデルにアプリケーションを送達することが企図される。SaaSモデルでは、クラウド・インフラストラクチャ内でアプリケーションを実行することによって、実施形態を実施するアプリケーションの機能がユーザに提供される。ユーザは、ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスを使用して、または他の軽量クライアント・アプリケーションを使用して、アプリケーションにアクセスすることができる。ユーザは、クラウド・インフラストラクチャのネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしない。いくつかのケースでは、ユーザが、SaaSアプリケーションの機能を管理もまたは制御もしなくてもよい。他のいくつかのケースでは、アプリケーションのSaaS実施態様が、制限されたユーザ特定のアプリケーション構成セッティングの可能な例外を可能にすることができる。
本発明は、統合化の可能な技術的詳細レベルにある、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることがある。このコンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことがある。
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および格納することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用のコンフィギュレーション・データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部がリモート・コンピュータ上で実行されてもよく、または全体がリモート・コンピュータもしくはリモート・サーバ上で実行されてもよい。上記の最後のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実行するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャートもしくはブロック図またはその両方の図を参照して説明される。それらのフローチャートもしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらのフローチャートもしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、汎用コンピュータのプロセッサ、専用コンピュータのプロセッサ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はさらに、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方の図のブロックに指定された機能/操作の態様を実施する命令を含む製品を含むような態様で、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに特定の方式で機能するように指示することができるものであってもよい。
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の図のブロックに指定された機能/操作を実施するような態様で、コンピュータによって実施されるプロセスを生み出すために、コンピュータ、他のプログラム可能データ処理装置または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
添付図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらのフローチャートまたはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、例えば、連続して示された2つのブロックが実際は実質的に同時に実行されること、または含まれる機能によってはそれらのブロックが時に逆の順序で実行されることもある。それらのブロック図もしくはフローチャートまたはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくはフローチャートまたはその両方の図のブロックの組合せを、指定された機能もしくは操作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実行するハードウェア・ベースの専用システムによって実施することができることにも留意すべきである。
本発明の実施形態を、顧客企業、非営利組織、政府実体、内部組織構造体などとのサービス契約の一部として送達することもできる。これらの実施形態の態様は、本明細書に記載された方法の一部もしくは全部を実施するソフトウェア、ハードウェアおよびウェブ・サービスを実行および展開するようにコンピュータ・システムを構成することを含むことができる。これらの実施形態の態様はさらに、クライアントの操作を解析すること、解析に応答して推奨を生成すること、推奨の部分を実施するシステムを構築すること、既存のプロセスおよびインフラストラクチャにシステムを統合すること、システムの使用を計量すること、システムのユーザに費用を割り当てること、ならびにシステムの使用に対して課金することを含むことができる。本発明の上記の実施形態はそれぞれ、それらの個々の利点を述べることによって説明したが、本発明は、それらの特定の組合せに限定されない。反対に、そのような実施形態を、それらの有益な効果を失うことなしに、本発明の意図された展開に従って、任意のやり方および数で組み合わせることもできる。
Claims (20)
- コンピュータ実施方法であって、
指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取ること、
前記指定されたドキュメントを識別する論理削除ドキュメントを論理削除シャードに挿入することであり、前記指定されたドキュメントが前記プライマリ・シャードに残っている、前記挿入すること、
クライアント・アプリケーションからクエリを受け取ることであり、前記指定されたドキュメントが前記クエリを満たす、前記受け取ること、および
前記指定されたドキュメントに関連づけられた前記論理削除ドキュメントが前記論理削除シャードに残っている間は、前記クエリに応答して前記指定されたドキュメントが返されることを阻止すること
を含むコンピュータ実施方法。 - 前記シャード化データベースがNoSQLデータベースである、請求項1に記載のコンピュータ実施方法。
- 前記指定されたドキュメントを前記シャード化データベースにリストアするよう求めるリストア・リクエストを受け取ること、および
前記リストア・リクエストに応答して、前記指定されたドキュメントを前記シャード化データベースにリストアすることであり、前記リストアすることが、前記論理削除シャードから前記論理削除ドキュメントを除去することを含む、前記リストアすること
をさらに含む、請求項1に記載のコンピュータ実施方法。 - 前記論理削除ドキュメントが、前記指定されたドキュメントの一意識別子(UID)と前記指定されたドキュメントを指すポインタとを含む、請求項1に記載のコンピュータ実施方法。
- 前記クエリをプライマリ・データ・シャードに対して実行すること
をさらに含む、請求項4に記載のコンピュータ実施方法。 - 前記クエリを前記論理削除シャードに対して実行すること、および
前記論理削除シャードに対する前記クエリから返された前記論理削除ドキュメントが前記プライマリ・データ・シャードに対する前記クエリから返された前記指定されたドキュメントと整合していることを検出することによって、論理削除された検索結果を識別すること
をさらに含む、請求項5に記載のコンピュータ実施方法。 - 前記論理削除された検索結果を識別することが、
前記論理削除シャードに対する前記クエリから返された前記論理削除ドキュメントの前記UIDが前記プライマリ・データ・シャードに対する前記クエリから返された前記指定されたドキュメントの前記UIDと整合していることを検出することを含む、
請求項6に記載のコンピュータ実施方法。 - 前記論理削除された検索結果を識別したことに応答して、前記プライマリ・データ・シャードに対する前記クエリから返されることから前記指定されたドキュメントを除去すること
をさらに含む、請求項6に記載のコンピュータ実施方法。 - 前記論理削除シャードへの前記論理削除ドキュメントの前記挿入に応答して、前記論理削除ドキュメントに対する前記論理削除シャードの論理削除インデックスを構築すること
をさらに含む、請求項5に記載のコンピュータ実施方法。 - 前記クエリを受け取ったことに応答して、前記論理削除インデックスが未完成であると判定すること、および
前記論理削除インデックスが未完成であると判定したことに応答して、前記論理削除シャードに対する前記クエリをフル・テーブル・スキャンを使用して実行すること
をさらに含む、請求項9に記載のコンピュータ実施方法。 - 前記クエリを受け取ったことに応答して、前記論理削除インデックスが完成していると判定すること、および
前記論理削除インデックスが完成していると判定したことに応答して、前記論理削除シャードに対する前記クエリを前記論理削除インデックスを使用して実行すること
をさらに含む、請求項10に記載のコンピュータ実施方法。 - 前記指定されたドキュメントを削除するよう求める前記リクエストを受け取ってからの時間が規定された保存期間に達したことを検出すること、および
前記指定されたドキュメントを前記シャード化データベースからパージする物理削除プロセスを実行すること
をさらに含む、請求項1に記載のコンピュータ実施方法。 - 前記物理削除プロセスが、
前記指定されたドキュメントを前記シャード化データベースの前記プライマリ・シャードから削除すること、
前記プライマリ・シャードからの前記指定されたドキュメントの削除を反映するように前記プライマリ・シャードのインデックスを更新すること、
前記論理削除シャードからの前記論理削除ドキュメントの削除を反映するように前記論理削除シャードの論理削除インデックスを更新すること、および
前記論理削除ドキュメントを前記論理削除シャードから削除すること
を含む、請求項12に記載のコンピュータ実施方法。 - コンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令とを含み、前記プログラム命令が、プロセッサによって、
指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取ること、
前記指定されたドキュメントを識別する論理削除ドキュメントを論理削除シャードに挿入することであり、前記指定されたドキュメントが前記プライマリ・シャードに残っている、前記挿入すること、
クライアント・アプリケーションからクエリを受け取ることであり、前記指定されたドキュメントが前記クエリを満たす、前記を受け取ること、および
前記指定されたドキュメントに関連づけられた前記論理削除ドキュメントが前記論理削除シャードに残っている間は、前記クエリに応答して前記指定されたドキュメントが返されることを阻止すること
を含む操作を前記プロセッサに実行させるように実行可能である、コンピュータ・プログラム製品。 - 前記格納されたプログラム命令が、データ処理システム内のコンピュータ可読ストレージ・デバイスに格納されており、前記格納されたプログラム命令が、ネットワークを横切って遠隔データ処理システムから転送される、請求項14に記載のコンピュータ・プログラム製品。
- 前記格納されたプログラム命令が、サーバ・データ処理システム内のコンピュータ可読ストレージ・デバイスに格納されており、前記格納されたプログラム命令が、リクエストに応答して、ネットワークを横切って遠隔データ処理システムに、前記遠隔データ処理システムに関連づけられたコンピュータ可読ストレージ・デバイスで使用するためにダウンロードされ、前記コンピュータ・プログラム製品がさらに、
前記リクエストに関連した前記プログラム命令の使用を計量するよう命じるプログラム命令と、
計量された前記使用に基づいてインボイスを生成するよう命じるプログラム命令と
を含む、請求項14に記載のコンピュータ・プログラム製品。 - 前記指定されたドキュメントを前記シャード化データベースにリストアするよう求めるリストア・リクエストを受け取ること、および
前記リストア・リクエストに応答して、前記指定されたドキュメントを前記シャード化データベースにリストアすることであり、前記リストアすることが、前記論理削除シャードから前記論理削除ドキュメントを除去することを含む、前記リストアすること
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。 - 前記クエリをプライマリ・データ・シャードに対して実行すること、
前記クエリを前記論理削除シャードに対して実行すること、および
前記論理削除シャードに対する前記クエリから返された前記論理削除ドキュメントが前記プライマリ・データ・シャードに対する前記クエリから返された前記指定されたドキュメントと整合していることを検出することによって、論理削除された検索結果を識別すること
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。 - コンピュータ・システムであって、前記コンピュータ・システムが、プロセッサおよび1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令とを含み、前記プログラム命令が、前記プロセッサによって、
指定されたドキュメントをシャード化データベースのプライマリ・シャードから削除するよう求めるリクエストを受け取ること、
前記指定されたドキュメントを識別する論理削除ドキュメントを論理削除シャードに挿入することであり、前記指定されたドキュメントが前記プライマリ・シャードに残っている、前記挿入すること、
クライアント・アプリケーションからクエリを受け取ることであり、前記指定されたドキュメントが前記クエリを満たす、前記受け取ること、および
前記指定されたドキュメントに関連づけられた前記論理削除ドキュメントが前記論理削除シャードに残っている間は、前記クエリに応答して前記指定されたドキュメントが返されることを阻止すること
を含む操作を前記プロセッサに実行させるように実行可能である、コンピュータ・システム。 - 前記指定されたドキュメントを前記シャード化データベースにリストアするよう求めるリストア・リクエストを受け取ること、および
前記リストア・リクエストに応答して、前記指定されたドキュメントを前記シャード化データベースにリストアすることであり、前記リストアすることが、前記論理削除シャードから前記論理削除ドキュメントを除去することを含む、前記リストアすること
をさらに含む、請求項19に記載のコンピュータ・システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/198,802 | 2021-03-11 | ||
US17/198,802 US11829394B2 (en) | 2021-03-11 | 2021-03-11 | Soft deletion of data in sharded databases |
PCT/CN2022/074562 WO2022188573A1 (en) | 2021-03-11 | 2022-01-28 | Soft deletion of data in sharded databases |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024509198A true JP2024509198A (ja) | 2024-02-29 |
Family
ID=83194785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023553603A Pending JP2024509198A (ja) | 2021-03-11 | 2022-01-28 | シャード化データベース内のデータの論理削除 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11829394B2 (ja) |
JP (1) | JP2024509198A (ja) |
CN (1) | CN116982034A (ja) |
WO (1) | WO2022188573A1 (ja) |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610276A (zh) | 2008-06-16 | 2009-12-23 | 华为技术有限公司 | 数据软删除、恢复和同步方法及终端和系统 |
US8762340B2 (en) | 2010-05-14 | 2014-06-24 | Salesforce.Com, Inc. | Methods and systems for backing up a search index in a multi-tenant database environment |
US9069788B2 (en) * | 2011-07-01 | 2015-06-30 | Salesforce.Com, Inc. | Truncating data associated with objects in a multi-tenant database |
US9135269B2 (en) * | 2011-12-07 | 2015-09-15 | Egnyte, Inc. | System and method of implementing an object storage infrastructure for cloud-based services |
US10860604B1 (en) * | 2014-12-10 | 2020-12-08 | Amazon Technologies, Inc. | Scalable tracking for database udpates according to a secondary index |
US20170364558A1 (en) * | 2016-06-21 | 2017-12-21 | Columbus Technology LLC | System and methods for processing large scale data |
US20180285369A1 (en) | 2017-03-29 | 2018-10-04 | Amazon Technologies, Inc. | Manifest generation for data transfers |
US10585915B2 (en) * | 2017-10-25 | 2020-03-10 | International Business Machines Corporation | Database sharding |
US10983950B2 (en) * | 2017-11-10 | 2021-04-20 | Palantir Technologies Inc. | Approaches for managing data retention lifecycle |
US11461270B2 (en) | 2018-10-31 | 2022-10-04 | Elasticsearch B.V. | Shard splitting |
US11294938B2 (en) | 2019-01-03 | 2022-04-05 | International Business Machines Corporation | Generalized distributed framework for parallel search and retrieval of unstructured and structured patient data across zones with hierarchical ranking |
US10924587B1 (en) * | 2019-05-01 | 2021-02-16 | Amazon Technologies, Inc. | Live migration for highly available data stores |
US11042447B2 (en) * | 2019-09-27 | 2021-06-22 | International Business Machines Corporation | Retention rule compliance of record deletion based on deletion log |
US11595488B2 (en) * | 2019-10-07 | 2023-02-28 | Oracle International Corporation | Systems and methods for securely using cloud services on on-premises data |
US20210149865A1 (en) * | 2019-11-18 | 2021-05-20 | International Business Machines Corporation | SEAMLESSLY MIGRATING DATA AND INDEX IN DISTRIBUTED NoSQL DATABASE SYSTEMS |
US11321007B2 (en) * | 2020-07-29 | 2022-05-03 | International Business Machines Corporation | Deletion of volumes in data storage systems |
US11829630B2 (en) * | 2020-10-23 | 2023-11-28 | EMC IP Holding Company LLC | Synthetically providing multiple types of granular delete operations for a cloud-based object storage |
US11308058B1 (en) * | 2021-01-04 | 2022-04-19 | International Business Machines Corporation | Building and using combined multi-type sub-indices to search NoSQL databases |
-
2021
- 2021-03-11 US US17/198,802 patent/US11829394B2/en active Active
-
2022
- 2022-01-28 CN CN202280020334.8A patent/CN116982034A/zh active Pending
- 2022-01-28 JP JP2023553603A patent/JP2024509198A/ja active Pending
- 2022-01-28 WO PCT/CN2022/074562 patent/WO2022188573A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20220292120A1 (en) | 2022-09-15 |
US11829394B2 (en) | 2023-11-28 |
CN116982034A (zh) | 2023-10-31 |
WO2022188573A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669510B2 (en) | Parallel processing of disjoint change streams into a single stream | |
US11119678B2 (en) | Transactional operations in multi-master distributed data management systems | |
CN110799960B (zh) | 数据库租户迁移的系统和方法 | |
US10725976B2 (en) | Fast recovery using self-describing replica files in a distributed storage system | |
US10657154B1 (en) | Providing access to data within a migrating data partition | |
US20220284102A1 (en) | Data lineage management | |
US20190392047A1 (en) | Multi-table partitions in a key-value database | |
CN103597440A (zh) | 用于创建克隆文件的方法以及采用该方法的文件系统 | |
US11030169B1 (en) | Data re-sharding | |
WO2014011434A2 (en) | System and method for economical migration of legacy applications from mainframe and distributed platforms | |
US20210216502A1 (en) | System and method for synchronizing delete operations between primary and secondary databases | |
US11250022B1 (en) | Offline index builds for database tables | |
US20210232554A1 (en) | Resolving versions in an append-only large-scale data store in distributed data management systems | |
Chen et al. | Big data storage | |
US11256713B2 (en) | Virtual transaction queues for database replication | |
Benlachmi et al. | A comparative analysis of hadoop and spark frameworks using word count algorithm | |
US11714573B1 (en) | Storage optimization in a distributed object store | |
JP2024509198A (ja) | シャード化データベース内のデータの論理削除 | |
Deochake et al. | Bigbird: Big data storage and analytics at scale in hybrid cloud | |
US20140074785A1 (en) | Open file rebalance | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set | |
US11249952B1 (en) | Distributed storage of data identifiers | |
US11657046B1 (en) | Performant dropping of snapshots by converter branch pruning | |
US11853317B1 (en) | Creating replicas using queries to a time series database | |
US20230195747A1 (en) | Performant dropping of snapshots by linking converter streams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231221 |