(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2017-505936(P2017-505936A)
(43)【公表日】2017年2月23日
(54)【発明の名称】インメモリデータベースをホストするシステム及び方法
(51)【国際特許分類】
G06F 17/30 20060101AFI20170203BHJP
G06F 12/00 20060101ALI20170203BHJP
【FI】
G06F17/30 110C
G06F17/30 160F
G06F12/00 514M
G06F12/00 520A
G06F12/00 513J
G06F12/00 511A
【審査請求】未請求
【予備審査請求】未請求
【全頁数】89
(21)【出願番号】特願2016-536819(P2016-536819)
(86)(22)【出願日】2014年12月2日
(85)【翻訳文提出日】2016年8月2日
(86)【国際出願番号】US2014068002
(87)【国際公開番号】WO2015099961
(87)【国際公開日】20150702
(31)【優先権主張番号】61/910,850
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(31)【優先権主張番号】61/910,856
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(31)【優先権主張番号】61/910,834
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(31)【優先権主張番号】61/910,867
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(31)【優先権主張番号】61/910,860
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(31)【優先権主張番号】61/910,873
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(31)【優先権主張番号】61/910,864
(32)【優先日】2013年12月2日
(33)【優先権主張国】US
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.JAVASCRIPT
3.レーザーディスク
(71)【出願人】
【識別番号】516164586
【氏名又は名称】キューベース リミテッド ライアビリティ カンパニー
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100088694
【弁理士】
【氏名又は名称】弟子丸 健
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100122563
【弁理士】
【氏名又は名称】越柴 絵里
(72)【発明者】
【氏名】ライトナー スコット
(72)【発明者】
【氏名】ウェックザー フランツ
(72)【発明者】
【氏名】ジマーマン ブライアン
(57)【要約】
分散型インメモリデータベースを管理するためのインメモリデータベースシステム及び方法であって、サーチコンダクタに関連したパーティショナーにより区画化された集合体のデータベースパーティションを記憶し及び配布するように構成されたモジュールを有する1つ以上のノードを備えている。データベース集合体は、スキーマに従って区画化される。パーティション、集合体及びレコードは、システムインターフェイスにより要求されたとき、スキーマに従って、更新され及び除去される。スーパーバイザーは、各ノードから受け取られるハートビート信号に基づいてノード状態を決定する。ユーザは、システムインターフェイスを通してサーチマネージャーへ質問を送る。サーチマネージャーは、フィールド処理技術を適用し、サーチ質問をサーチコンダクタへ転送し、及び結果レコードのセットを分析エージェントへ返送する。分析エージェントは、サーチマネージャーからの候補結果レコードに対して分析処理を遂行する。集合体に関連したパーティショナーを含むサーチコンダクタは、パーティション内のレコードをサーチし及びスコア付けし、次いで、候補結果レコードを返送する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータにより、1つ以上のデータ形式のデータより成り且つ情報を含むコーパスから1つ以上のファセットを抽出し;
コンピュータにより、コーパスから抽出された1つ以上のファセットの各々を曖昧性除去し;
コンピュータにより、1つ以上のファセットに各々関連した1つ以上のインデックスを生成し;
コンピュータにより、データベースの1つ以上のレコードより成るパーティションのレコードから関連インデックスに基づきファセットの各々を検索し、データベースの集合体は、1つ以上のパーティションを含み、そして各ファセットは、データの1つ以上のレコードに対してデータベースに記憶されたデータのハイアラーキー関係を指示し;及び
コンピュータにより、各ファセットに基づき示唆されたサーチ質問を生成する;
ことを含む、コンピュータで実施される方法。
【請求項2】
インメモリデータベースをホストするコンピューティングシステムにおいて、
データベースの1つ以上のレコードの集合体を受け取るのに応答して、その集合体に関連したマシン読み取り可能なスキーマに基づきその集合体を圧縮すべきかどうか決定し、スキーマファイルに従ってその集合体を1つ以上のパーティションへ論理的にパーティショニングし、そしてスキーマファイルに従って1つ以上のパーティションを1つ以上のストレージノードに配布するように構成されたプロセッサを含むパーティショナーノード;
ストレージノードであって、それに関連したパーティショナーから受け取ったパーティションを記憶する非一時的マシン読み取り可能なメインメモリを含むストレージノード;
システムのクライアント装置からサーチ質問を受け取り、そしてクライアント装置からサーチ質問を受け取るのに応答してそのサーチ質問を1つ以上のサーチコンダクタへサーチコンダクタ質問として送出するプロセッサを含むサーチマネージャーノードであって、そのサーチ質問は、そのサーチ質問を満足する1つ以上のレコードに関連したパラメータを含むマシン読み取り可能なコンピュータファイルであるサーチマネージャーノード;
1つ以上のパーティションに関連したサーチコンダクタノードであって、サーチマネージャーノードからサーチコンダクタ質問を受け取るのに応答して、そのサーチコンダクタ質問により指示される1つ以上のパーティションのセットに質問し、その質問されたパーティションのセットに記憶された1つ以上の候補レコードを識別し、スコアリングアルゴリズムを使用して各々の候補レコードに対する第1スコアを計算し、そしてスレッシュホールド値を満足する1つ以上の候補レコードを含む1つ以上の質問結果のセットをサーチマネージャーへ送出するよう構成されたプロセッサを含むサーチコンダクタノード;及び
サーチマネージャーノードから受け取られる質問結果のセットにおいて識別を行うのに応答して質問結果のセットから導出された1つ以上の結果のセットを含むマシン読み取り可能なコンピュータファイルを自動的に生成するように構成されたプロセッサを含む分析エージェントノード;
を備えたコンピュータシステム。
【請求項3】
前記分析エージェントノードのプロセッサは、1つ以上のデータリンケージのセットをサーチマネージャーへ送出するように更に構成された、請求項2に記載のシステム。
【請求項4】
前記サーチマネージャーノードのプロセッサは、サーチ質問に従って1つ以上のフィールド処理アルゴリズムを実行するように更に構成された、請求項2に記載のシステム。
【請求項5】
前記システムの1つ以上のノードから1つ以上のハートビート信号を受信しそして各ノードから受信されたハートビート信号に基づき1つ以上のノードごとに状態を決定するプロセッサを含むスーパーバイザーノードを更に備え、各ハートビート信号は、各ノードの状態を指示する、請求項2に記載のシステム。
【請求項6】
各ノードは、そのノードの状態を監視するように構成されたプロセッサを備えた、請求項5に記載のシステム。
【請求項7】
前記スーパーバイザーノードに関連した依存性マネージャーノードであって、非一時的なマシン読み取り可能なストレージ媒体に記憶されたマシン読み取り可能な依存性ツリーファイルを使用して前記スーパーバイザーにより監視されるノードのノード構成状態を監視するプロセッサを含む依存性マネージャーノードを更に備えた、請求項5に記載のシステム。
【請求項8】
前記ハートビート信号の状態は、ノードの構成状態を指示し、そして前記スーパーバイザーノードは、ノード構成状態を決定する前記依存性マネージャーが、ノードが誤って構成されたと指示するのに応答して、マシン読み取り可能な構成パッケージファイルを送信する、請求項7に記載のシステム。
【請求項9】
前記サーチコンダクタは、1つ以上の更新された結果レコードのセットの各候補レコードに対するフィールドスコアを計算し、前記更新された結果レコードのセットにおける各候補の第1スコアは、サーチ質問により指示されたスレッシュホールド値を満足し、そしてその更新された結果レコードを前記サーチマネージャーノードへ送信する、請求項2に記載のシステム。
【請求項10】
前記サーチコンダクタは、候補結果レコードのデータがデータ圧縮アルゴリズムに従って圧縮されたと決定するのに応答して、データ圧縮アルゴリズムを使用して前記更新された結果レコードのセットにおける候補レコードに記憶されたデータを解凍する、請求項9に記載のシステム。
【請求項11】
1つ以上の集合体に関連した新たな集合体スキーマファイルを受け取る質問インターフェイスモジュールを実行するプロセッサを含むノードを更に備え、少なくともサーチコンダクタノードは、新たなスキーマファイルに従ってサーチコンダクタに関連した1つ以上の集合体を自動的に再構成するように構成される、請求項2に記載のシステム。
【請求項12】
前記パーティショナーは、スキーマファイルに従って集合体に記憶された各レコードへ独特のレコード識別子を指定し、そして集合体の各レコードに指定された独特のレコード識別子を使用して集合体の各パーティションに関連したマシン読み取り可能なインデックスファイルを生成する、請求項2に記載のシステム。
【請求項13】
前記サーチマネージャーノードは、前記サーチコンダクタノードに1つ以上の新たなレコードのセットを配布し、そして前記サーチコンダクタは、その1つ以上の新たなレコードのセットを受け取るのに応答して、サーチファイルに従って集合体のパーティションに新たなレコードの各々を自動的に追加する、請求項12に記載のシステム。
【請求項14】
前記1つ以上のサーチマネージャーは、独特のレコード識別子のセットに対応する1つ以上のレコードを削除する要求を受け取って、その要求を少なくとも1つのサーチコンダクタへ配布するように更に構成され、そしてサーチコンダクタは、独特のレコード識別子に関連した各レコードを削除についてマークするように更に構成される、請求項12に記載のシステム。
【請求項15】
レコードを削除についてマークすることは、将来のサーチ結果レコードからそのレコードを除外する、請求項14に記載のシステム。
【請求項16】
各レコードに関連した独特のレコード識別子は、独特の識別子番号、集合体バージョン番号、集合体の名前及びパーティションバージョン番号の1つ以上を含む、請求項12に記載のシステム。
【請求項17】
前記サーチマネージャーノードは、1つ以上の新たなレコードを含む1つ以上の新たな集合体のセットを受け取り、そしてスキーマファイルに従って1つ以上のサーチコンダクタノードへ新たな集合体のセットを送出し、そして各サーチコンダクタノードは、1つ以上の新たな集合体を受け取るのに応答して、各サーチコンダクタノードに関連した1つ以上の集合体をスキーマファイルに従って新たな1つ以上のレコードのセットで自動的にポピュレートする、請求項12に記載のシステム。
【請求項18】
サーチマネージャーは、集合体を除去する要求を受け取り、サーチマネージャーのプロセッサは、集合体削除要求をサーチコンダクタへ転送するように構成され、そしてサーチコンダクタは、データベースから集合体を除去するように更に構成される、請求項2に記載のシステム。
【請求項19】
前記サーチマネージャーは、前記サーチコンダクタの各々から前記サーチ結果レコードの各々を非同期で受け取る、請求項2に記載のシステム。
【請求項20】
前記スキーマは、フィールドの名前、フィールドがインデックスされたかどうか、使用する圧縮、及びフィールドに対するデフォールトスコアリングアルゴリズムの1つ以上に従って集合体を記述する、請求項2に記載のシステム。
【請求項21】
前記分析エージェントは、多数のレコードをより完全なレコードへと連結し、そしてサーチ結果レコードに対する隣接レコードに関する情報を決定するように更に構成される、請求項2に記載のシステム。
【請求項22】
前記サーチコンダクタは、前記サーチマネージャーから受け取ったサーチ質問に基づいてサーチ結果レコードのサイズを限定する、請求項2に記載のシステム。
【請求項23】
前記スーパーバイザーは、集合体における1つ以上のレコードを圧縮するようにパーティショナーに命令する、請求項2に記載のシステム。
【請求項24】
前記スーパーバイザーは、ロードされるべき1つ以上の新たなパーティションを決定し、依存性マネージャーからノードに対するノード構成を要求するよう更に構成され、前記スーパーバイザーは、前記依存性マネージャーからノード構成を検索するようにノードのノードマネージャーに命令し、
前記ノードマネージャーは、ノードのメモリリソースを割り当てそして新たなパーティションをロードするように構成され、そして
新たなパーティションに関連したサーチコンダクタは、スキーマに従って、パーティションがロードされたことをスーパーバイザーに通知する、
請求項2に記載のシステム。
【請求項25】
前記分析エージェントノードは、前記サーチマネージャーノードから受け取った質問結果のセットにおいて2つ以上のレコードを相関させるデータリンケージを識別し、そしてそのデータリンケージは、第2レコードに含まれたデータに関連して第1レコードに含まれたデータを相関させる、請求項2に記載のシステム。
【請求項26】
インメモリデータベースをホストするシステムのサーチマネージャーコンピュータにより、データベースに質問するパラメータを含むサーチ質問を表わすバイナリデータを受け取り、そのシステムは、データベースの1つ以上の集合体を記憶するメインメモリを含む1つ以上のストレージノードを備え、各集合体は、1つ以上のレコードを含み;
コンピュータにより、サーチ質問を、そのサーチ質問に従って1つ以上のサーチコンダクタノードへ送出し、そのサーチ質問は、質問されるべき1つ以上の集合体のセットを指示し;
コンピュータにより、1つ以上の分析エージェントノードへ、1つ以上のサーチコンダクタからの受け取りに応答してサーチ質問に基づいてサーチ結果のセットを送出し、そのサーチ結果のセットは、サーチ質問を満足する1つ以上のレコードを含み、サーチ結果のセットの各レコードは、サーチ質問におけるスコアリングアルゴリズムに基づきあるスコアに関連付けされ;及び
1つ以上の分析エージェントノードから1つ以上のデータリンケージのセットを含むコンピュータファイルをコンピュータが受け取るのに応答して、コンピュータにより、分析エージェントノードから受け取った1つ以上のデータリンケージのセットに従ってサーチ結果のセットの1つ以上のレコードを更新する;
ことを含む、コンピュータで実施される方法。
【請求項27】
前記コンピュータは、各々のサーチコンダクタからサーチ結果のサブセットを非同期で受け取る、請求項26に記載の方法。
【請求項28】
各々のサーチコンダクタノードから受け取ったサーチレコードの各サブセットは、各レコードに対して計算されたスコアに従ってランク付けされる、請求項27に記載の方法。
【請求項29】
質問されるべき集合体のセットに関連した各々のサーチコンダクタは、サーチ質問のパラメータに従ってサーチ結果の1つ以上のレコードを含む1つ以上のサーチ結果のセットを決定する、請求項26に記載の方法。
【請求項30】
コンピュータにより、マシン読み取り可能なスキーマファイルに従ってサーチコンダクタから1つ以上の集合体を受け取り、その集合体の各々は、1つ以上のフィールドを有する1つ以上のレコードのセットを含むものであり;
コンピュータにより、前記スキーマに従って各集合体をパーティショニングし;
コンピュータにより、前記スキーマに従ってパーティションのレコードを圧縮し;及び
コンピュータにより、サーチコンダクタに関連したパーティショナーに対応する各集合体に各パーティションを含ませるように1つ以上の関連サーチコンダクタに各パーティションを配布する;
ことを含む、コンピュータで実施される方法。
【請求項31】
コンピュータにより、前記スキーマに従って各レコードセットにおけるレコードを断片化することを更に含む、請求項30に記載の方法。
【請求項32】
コンピュータにより、フィールドレベル、レコードレベル、パーティションレベル、集合体レベル及びデータベースレベルより成るグループから選択されたレベルにおいてレコードを解凍することを更に含む、請求項30に記載の方法。
【請求項33】
インメモリデータベースをホストする1つ以上のノードを備えたシステムにおいて、
集合体の1つ以上のパーティションを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む複数のストレージノードを備え、各ストレージノードにより記憶される集合体は、データベースの1つ以上のレコードを含み、そして各ストレージノードのストレージ媒体は、メインメモリを含み;
ユーザノードから受け取ったサーチ質問を使用して1つ以上のサーチコンダクタ質問を生成し、そのサーチ質問に従って1つ以上のサーチコンダクタノードへ1つ以上のサーチコンダクタ質問を送出し、そしてサーチ結果の1つ以上のセットを受け取るのに応答してサーチ質問に従って1つ以上の分析エージェントノードへサーチ結果の1つ以上のセットを転送するプロセッサを含むサーチマネージャーノードを更に備え;
サーチマネージャーノードからサーチ結果のセットを受け取るのに応答して1つ以上の分析アルゴリズムを実行するプロセッサを含む分析エージェントノードを更に備え;
サーチマネージャーからサーチコンダクタ質問を受け取るのに応答してサーチコンダクタ質問に従ってストレージノードのデータベースレコードの集合体に質問し、そしてサーチ結果セットの1つ以上のサーチ結果を識別するのに応答してサーチマネージャーノードへ1つ以上のサーチ結果のセットを送出するプロセッサを含むサーチコンダクタノードを更に備え、各々のサーチ結果は、サーチコンダクタ質問を満足するデータを含むデータベースレコードに対応し;及び
各ネットワークセグメントを経て通信する1つ以上のノード間の1つ以上の接続を含む複数のネットワークセグメントを更に備え、第1のネットワークセグメントは、サーチマネージャー、サーチコンダクタ及び分析エージェントを含む;
ようにされたシステム。
【請求項34】
各々のネットワークセグメントは、通信形式に関連したリソース需要に基づき1つ以上の接続を含み、及び
前記通信形式は、サーチ質問データ、データベースレコードの1つ以上の集合体、状態データ、及び構成パッケージファイルよりなるグループから選択される、
請求項33に記載のシステム。
【請求項35】
各々の通信形式の前記リソース需要は、レイテンシー需要及び帯域巾需要に従って決定され、そのレイテンシー需要は、通信のための許容時間量に基づくものであり、そしてその帯域巾需要は、通信のためのデータ量に基づくものである、請求項34に記載のシステム。
【請求項36】
前記第1のネットワークセグメントは、サーチ質問データを通信する1つ以上の接続を含む、請求項34に記載のシステム。
【請求項37】
前記第1のネットワークセグメントは、InfiniBandを使用する物理的接続を含む、請求項36に記載のシステム。
【請求項38】
データベースレコードの1つ以上の集合体をパーティショニングしそしてその1つ以上の集合体を受け取るのに応答してスキーマファイルに従って1つ以上のストレージノードへその1つ以上の集合体を配布することを更に含み、
第2のネットワークセグメントは、各パーティショナーから1つ以上のストレージノードへ1つ以上の集合体を通信する1つ以上の接続を含む、
請求項36に記載のシステム。
【請求項39】
前記第2のネットワークセグメントは、InfiniBandを使用する第2の物理的接続を含む、請求項38に記載のシステム。
【請求項40】
前記第2のネットワークセグメントは、イーサネットを使用する第2の物理的接続を含む、請求項39に記載のシステム。
【請求項41】
システムの1つ以上のノードに関連した1つ以上の状態を連続的に監視し、そしてフェイルしたノードのフェイルしたリソースを指示する状態を受け取るのに応答して構成パッケージファイルを1つ以上のノードのフェイルしたノードへ送出するように構成されたプロセッサを含む1つ以上のスーパーバイザーノードを更に備え、
第3のネットワークセグメントは、各ノードの各状態を1つ以上のスーパーバイザーノードへ通信する1つ以上の接続を含み、そして構成パッケージは、スーパーバイザーノードからフェイルしたノードへ送出される、
請求項38に記載のシステム。
【請求項42】
前記第3のネットワークセグメントは、イーサネットを使用する第3の物理的接続を含む、請求項41に記載のシステム。
【請求項43】
1つ以上の構成パッケージファイル及び依存性ツリーを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む依存性マネージャー;及びフェイルしたノードに対する構成パッケージファイルを決定しそしてその構成パッケージファイルを、スーパーバイザーノードからの構成パッケージファイルの要求に応答して依存性ツリーに基づきスーパーバイザーノードへ送出するように構成されたプロセッサ;を更に備え、
前記第3のネットワークセグメントは、構成パッケージファイルの要求を通信する1つ以上の接続を更に含む、
請求項41に記載のシステム。
【請求項44】
スーパーバイザーモジュールを実行するプロセッサを含むコンピュータにより、ノードに記憶された1つ以上のソフトウェアモジュールを監視するノードマネージャーによって生成されるハートビート信号を監視し、そのハートビート信号は、ノードマネージャーにより監視される各ソフトウェアモジュールの状態を指示するバイナリデータを含み;
コンピュータにより、ノードのノードマネージャーから受け取られたハートビート信号に基づきノードの1つ以上のソフトウェアモジュールにおけるフェイルしたソフトウェアモジュールを検出し;
コンピュータにより、そのフェイルしたソフトウェアモジュールの検出に応答して、そのフェイルしたソフトウェアモジュールを回復するようにノードに命令するコマンドをノードのノードマネージャーへ自動的に送出し;及び
コンピュータにより、ノードマネージャーから受け取ったハートビート信号に基づいてノードマネージャーがそのモジュールを首尾良く回復したかどうか決定する;
ことを含む、コンピュータで実施される方法。
【請求項45】
前記方法は、更に、
コンピュータにより、ノードマネージャーがスレッシュホールド試み回数内でモジュールを回復しないときにモジュールを実行するためのフェイルオーバーノードを決定し;
コンピュータにより、依存性マネージャーノードから前記モジュールに関連した構成パッケージを検索し;
コンピュータにより、フェイルオーバーノードに関連したフェイルオーバーノードマネージャーへ構成パッケージを送出し、フェイルオーバーノードマネージャーは、フェイルオーバーノードにモジュールをインストールするよう試み、そしてフェイルオーバーノードマネージャーは、モジュールを回復するよう試み、
コンピュータにより、フェイルオーバーノードマネージャーがフェイルオーバーノードにモジュールを首尾良くインストールしたかどうか決定し;及び
コンピュータにより、フェイルオーバーノードマネージャーがモジュールを首尾良く回復したかどうか決定する;
ことを含む、請求項44に記載の方法。
【請求項46】
コンピュータにより、フェイルオーバーノードマネージャーがフェイルオーバーノードにモジュールをインストールし損なったとき、又はフェイルオーバーノードマネージャーがスレッシュホールド試み回数内にモジュールを回復し損なったとき、モジュールを実行するための次のフェイルオーバーノードを決定し;
コンピュータにより、前記次のフェイルオーバーノードに関連した次のフェイルオーバーノードマネージャーへ構成パッケージを送出し;
コンピュータにより、前記次のフェイルオーバーノードマネージャーが前記次のフェイルオーバーノードにモジュールを首尾良くインストールしたかどうか決定し、及び
コンピュータにより、前記次のフェイルオーバーノードマネージャーがモジュールを首尾良く回復したかどうか決定する;
ことを更に含む、請求項45に記載の方法。
【請求項47】
コンピュータにより、1つ以上の次のフェイルオーバーノードマネージャーがモジュールを回復するための全体的スレッシュホールド試み回数を越えた後にモジュール欠陥警報を生成し、コンピュータは、モジュールを回復するための全体的試みスレッシュホールドに到達するまで次のフェイルオーバーノードを順次決定する、請求項46に記載の方法。
【請求項48】
コンピュータにより、モジュールを監視するノードマネージャーの欠陥を検出し;
コンピュータにより、モジュールを実行するフェイルオーバーノードを決定し、該フェイルオーバーノードは、フェイルオーバーノードマネージャーに関連したものであり;
コンピュータにより、依存性マネージャーノードからモジュールに関連した構成パッケージを検索し;
コンピュータにより、フェイルオーバーノードマネージャーへ構成パッケージを送出し、フェイルオーバーノードマネージャーは、フェイルオーバーノードにモジュールをインストールするように試み、そしてフェイルオーバーノードマネージャーは、モジュールを回復するように試み;
コンピュータにより、フェイルオーバーノードマネージャーがフェイルオーバーノードにモジュールを首尾良くインストールしたかどうか決定し;及び
コンピュータにより、フェイルオーバーノードマネージャーがモジュールを首尾良く回復したかどうか決定する;
ことを更に含む、請求項44に記載の方法。
【請求項49】
コンピュータにより、ノードが状態quoに従って機能しないときノードがフェイルしたノードであることを決定し;
コンピュータにより、フェイルしたノードにより実行される1つ以上のモジュールを、フェイルしたノードから移行させそして1つ以上の新たなノードにおいて回復させることを決定し;
コンピュータにより、依存性マネージャーノードから1つ以上のモジュールの各々に対して構成パッケージを検索し;及び
コンピュータにより、各構成パッケージを1つ以上の新たなノードへ送出する;
ことを更に含む、請求項48に記載の方法。
【請求項50】
コンピュータにより、フェイルしたノードから移行された1つ以上のモジュールにおいてモジュールをインストールし且つ実行することのできる利用可能なリソースのセットを有する次の新たなノードを決定し;
コンピュータにより、モジュールを記憶する新たなノードの新たなノードマネージャーに、モジュールをアンロードするように命令し;及び
コンピュータにより、構成パッケージを次の新たなノードへ送出する;
ことを更に含む、請求項49に記載の方法。
【請求項51】
コンピュータにより、ハートビート信号をスーパーバイザーノードへ連続的に送信し;
回復コマンドを受け取ったとき、コンピュータにより、フェイルしたモジュールを回復し;及び
モジュールが回復したことをコンピュータが検出したとき、コンピュータにより、回復状態信号をスーパーバイザーノードへ送信する;
ことを含む、コンピュータで実施される方法。
【請求項52】
スレッシュホールド回復試み回数に到達したとき、コンピュータにより、回復欠陥状態信号をスーパーバイザーノードへ送信することを更に含む、請求項51に記載の方法。
【請求項53】
ハートビート信号をスーパーバイザーノードへ送信しそしてノードにインストールされた1つ以上のソフトウェアモジュールの実行を監視するプロセッサを含む1つ以上のノード;及び
1つ以上のノードから受信した1つ以上のハートビート信号を監視しそして各ハートビート信号に基づいて各ノードの状態を決定するプロセッサを含む1つ以上のスーパーバイザーノード;
を備えた欠陥許容の分散型コンピューティングシステム。
【請求項54】
前記ノードのプロセッサは、スーパーバイザーノードからソフトウェアモジュールを回復するコマンドを受け取るのに応答して、ノードにより実行されるソフトウェアモジュールを状態quo構成に回復させる試みをするよう構成された、請求項53に記載のシステム。
【請求項55】
ハートビート信号をスーパーバイザーノードへ送信し、1つ以上のノードのうちのノードにインストールされたソフトウェアモジュールを実行するよう構成されたプロセッサを含むフェイルオーバーノードを更に備えた、請求項54に記載のシステム。
【請求項56】
1つ以上のマシン読み取り可能な構成パッケージファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む依存性マネージャーノードを更に備えた、請求項55に記載のシステム。
【請求項57】
前記スーパーバイザーノードのプロセッサは、ノードによりソフトウェアモジュールを回復するための試み回数を決定し、そして前記スーパーバイザーノードのプロセッサは、その試み回数がソフトウェアモジュールを回復するスレッシュホールド試み回数を越えるとの決定に応答して、ソフトウェアモジュールに関連した構成パッケージファイルを依存性マネージャーから自動的に検索する、請求項56に記載のシステム。
【請求項58】
前記スーパーバイザーノードのプロセッサは、依存性マネージャーから構成パッケージファイルを受け取るのに応答してその構成パッケージファイルをフェイルオーバーノードへ送出し、そしてソフトウェイモジュールの回復を試みるようにフェイルオーバーノードのプロセッサに命令する、請求項57に記載のシステム。
【請求項59】
前記依存性マネージャーノードのプロセッサは、構成パッケージファイルを識別する要求をスーパーバイザーノードから受け取るのに応答して、構成パッケージファイルをスーパーバイザーノードへ送出する、請求項56に記載のシステム。
【請求項60】
前記構成パッケージファイルは、ソフトウェアモジュールを実行するノードのハートビート信号のノード状態に従って欠陥として検出されたソフトウェアモジュールに関連付けされる、請求項59に記載のシステム。
【請求項61】
前記スーパーバイザーノードは、フェイルオーバーノードがソフトウェアモジュールを回復するにはリソースが不充分であることを指示するフェイルオーバーノードのノード状態を決定するのに応答して、フェイルオーバーノードへリソースシフトコマンドを送信する、請求項60に記載のシステム。
【請求項62】
前記フェイルオーバーノードのプロセッサは、前記リソースシフトコマンドに応答してフェイルオーバーノードからインストールされたソフトウェアモジュールを自動的にアンインストールし、そして前記フェイルオーバーノードは、スーパーバイザーノードから受け取ったソフトウェアモジュールのインストール及び回復を試みる、請求項61に記載のシステム。
【請求項63】
1つ以上のソフトウェアモジュールのうちのソフトウェアモジュールの冗長なコピーを記憶する非一時的マシン読み取り可能なストレージ媒体を含む冗長なノード;及びソフトウェアモジュールの冗長なコピーの実行を試みるように冗長なノードに命令するスーパーバイザーノードからのモジュールを回復するコマンドを受け取るのに応答して、ソフトウェアモジュールの冗長なコピーの実行を自動的に試みるように構成されたプロセッサ;を更に備えた、請求項53に記載のシステム。
【請求項64】
分散型コンピューティングシステムのコンピュータにより、ターゲットノードに関連したマシン読み取り可能で展開可能なパッケージファイルに対する要求を依存性マネージャーノードへ送出し、依存性マネージャーノードは、依存性ツリーに従ってシステムの1つ以上のノードに関連した1つ以上の展開可能なパッケージファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体を含み;
コンピュータにより、依存性ノードから展開可能なパッケージファイルを受け取るのに応答してターゲットノードへ展開可能なパッケージファイルを送信し、ターゲットノードに関連した展開可能なパッケージファイルは、依存性ツリーに基づく1つ以上の依存性ファイルのセットを含み;及び
コンピュータにより、展開可能なパッケージにおける依存性のセットをターゲットノードにインストールするようにターゲットノードに命令する;
ことを含む、コンピュータで実施される方法。
【請求項65】
パーティション、モジュール、ファイル及びデータより成るグループから依存性が選択される、請求項64に記載の方法。
【請求項66】
前記依存性マネージャーノードは、1つ以上のデータフレームから依存性をフェッチし、そして展開可能なパッケージをコンパイルする、請求項64に記載の方法。
【請求項67】
前記展開可能なパッケージファイルにおける各依存性ファイルは、ターゲットノードに関連した少なくとも1つの依存性ツリーを使用して依存性マネージャーノードにより決定される、請求項64に記載の方法。
【請求項68】
前記展開可能なパッケージファイルにおける各依存性ファイルは、依存性ファイルと、システムの1つ以上のノードのサブセットにインストールされた対応する依存性ファイルとの比較関係に基づく、請求項67に記載の方法。
【請求項69】
コンピュータにより、分散型コンピューティングシステムの1つ以上のノードの各々から、各ノードの状態を指示するハートビート信号を所定の間隔で受け取り;及び
コンピュータにより、各ハートビート信号に基づいて各ノードの状態を決定する;
ことを更に含む、請求項64に記載の方法。
【請求項70】
コンピュータにより、ターゲットノードから受信したハートビート信号に従ってターゲットノードにインストールされた1つ以上の依存性の欠陥を検出することを更に含み、コンピュータは、欠陥の検出に応答して展開パッケージを自動的に要求する、請求項69に記載の方法。
【請求項71】
コンピュータにより、システムのノードにインストールされた依存性ファイルに関連した売主サーバーから、その売主サーバーに関連した依存性ファイルを有するノードを更新するためのプロンプトを受け取ることを更に含み、展開パッケージファイルの1つ以上の依存性ファイルは、売主サーバーに関連した依存性ファイルを含む、請求項69に記載の方法。
【請求項72】
コンピュータにより、スーパーバイザーノードからターゲットノードを構成するための要求を受け取るのに応答してターゲットノードに関連した依存性ツリーを使用してターゲットノードにインストールされるべき1つ以上の依存性ファイルのセットを決定し;
コンピュータにより、1つ以上の依存性ファイルのセットの各依存性ファイルを、1つ以上の依存性ファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む少なくとも1つのデータフレームからフェッチし;
コンピュータにより、1つ以上の依存性ファイルのセットを含む展開可能なパッケージファイルを生成し;及び
コンピュータにより、展開可能なパッケージファイルをスーパーバイザーノードへ送出する;
ことを含む、コンピュータで実施される方法。
【請求項73】
コンピュータにより、第三者依存性ソースから依存性を更新する要求を受け取る際にターゲットノードに関連した依存性ツリーを更新することを更に含む、請求項72に記載の方法。
【請求項74】
コンピュータにより、更新された依存性ツリーに関連した依存性の更新を検出し;及び
コンピュータにより、更新された依存性を含む更新展開パッケージを、更新された依存性を有する各ノードへ自動的に送出し、各ノードの更新展開パッケージは、更新された依存性ツリーに基づく、
請求項73に記載の方法。
【請求項75】
1つ以上の依存性ファイルを記憶する非一時的なマシン読み取り可能なストレージメモリと、1つ以上の依存性ファイルの状態を監視するプロセッサとを含む1つ以上のノードを備え、各依存性ファイルは、第2のノードにインストールされる対応コンポーネントと比較関係を有するノードのコンポーネントであり;
1つ以上の各ノードの状態を監視しそして各ノードの状態に基づいて各ノードへ依存性ファイルのセットを含む展開可能なパッケージを送出するように構成されたプロセッサを含む1つ以上のスーパーバイザーノードを備え;及び
1つ以上のノードに関連した1つ以上の依存性ツリーファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体と、ノードに関連した依存性ツリーに従い展開可能なパッケージファイルをコンパイルするように構成されたプロセッサとを含む1つ以上の依存性マネージャーノードを備え、その展開可能なパッケージファイルは、少なくとも1つのデータフレームに記憶される1つ以上の依存性ファイルのセットを含み、そして依存性マネージャーノードは、展開可能なパッケージを受け取るターゲットであるノードに関連した依存性ツリーに基づいて展開可能なパッケージに含ませる依存性を決定する;
ようにされたデータベース管理システム。
【請求項76】
第三者により生成される依存性に対する1つ以上の依存性ファイルインストール更新に対応する1つ以上のマシン読み取り可能な更新ファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む外部データフレーム;及び
第三者依存性ソースの依存性を有する1つ以上のノードのセットを更新するためにスーパーバイザーノードへ要求を送出するように構成されたプロセッサ;
を更に備え、依存性マネージャーノードは、第三者依存性ソースのデータフレームから受け取られる1つ以上の依存性更新を含む更新展開パッケージをコンパイルする、請求項75に記載のシステム。
【請求項77】
新たなノード状態をスーパーバイザーノードへ送出しそして新たなノードに関連した依存性ツリーに従って1つ以上の展開パッケージを受け取るノードマネージャーモジュールを実行するプロセッサを含む新たなノードを更に備えた、請求項75に記載のシステム。
【請求項78】
前記依存性マネージャーノードは、依存性ツリーを更新する要求がスーパーバイザーノードから受け取られたときにノードに関連した依存性ツリーを更新する、請求項75に記載のシステム。
【請求項79】
パーティション、モジュール、ファイル及びデータより成るグループから依存性が選択される、請求項75に記載のシステム。
【請求項80】
データベースの1つ以上のレコードを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む1つ以上のストレージノードを備え、各ストレージノードのストレージ媒体は、各ストレージノードのメインメモリであり;
分析モジュールを指示する分析の要求を受け取るのに応答して質問結果のセットを入力パラメータとして使用して分析モジュールを実行するプロセッサを含む分析エージェントノードを更に備え、質問結果のセットは、1つ以上のレコードを記憶する1つ以上のストレージノードから検索された1つ以上のレコードを表わすバイナリデータを含み;及び
1つ以上の分析モジュールを記憶する非一時的マシン読み取り可能なストレージ媒体と、新たな分析モジュールを1つ以上の分析エージェントノードへ送出するように構成されたプロセッサとを含む分析モジュールデータストアを更に備えた、インメモリデータベースシステム。
【請求項81】
サーチ質問が分析の要求を含むことを決定するのに応答して質問結果のセットを分析エージェントノードへ送出するプロセッサを含むサーチマネージャーノードを更に備えた、請求項80に記載のシステム。
【請求項82】
前記サーチマネージャーノードは、サーチ質問をサーチコンダクタノードに送出する前に分析エージェントノードを識別する、請求項81に記載のシステム。
【請求項83】
前記サーチマネージャーノードは、サーチコンダクタノードにサーチ質問を送出する前に適用されるべき1つ以上の分析パラメータを決定する、請求項82に記載のシステム。
【請求項84】
サーチ質問が分析の要求を含むことサーチマネージャーが決定するのに応答して、その分析の要求で指示された分析モジュールを実行する1つ以上の分析エージェントノードを識別する、請求項81に記載のシステム。
【請求項85】
前記サーチマネージャーノードからサーチコンダクタ質問を受け取るのに応答して、サーチコンダクタ質問を実行しそしてサーチコンダクタ質問を満足するストレージノードの1つ以上のレコードを含む質問結果のサブセットを送出するプロセッサを含むサーチコンダクタノードを更に備え、
前記サーチマネージャーノードは、サーチ質問に従って1つ以上のサーチコンダクタ質問を生成し、そしてサーチマネージャーは、各々のサーチコンダクタ質問を各々のサーチコンダクタノードへ送出する、
請求項84に記載のシステム。
【請求項86】
前記サーチマネージャーノードは、各サーチコンダクタから受け取った質問結果の各サブセットの各々を総計し、それにより、質問結果のセットを生成する、請求項85に記載のシステム。
【請求項87】
前記サーチマネージャーノードは、バイナリデータ圧縮アルゴリズムに従って圧縮された質問結果のセットにおける少なくとも1つのレコードを分析エージェントへ送出する、請求項80に記載のシステム。
【請求項88】
前記分析モジュールは、曖昧性除去モジュール、リンクモジュール、スコア付けモジュール、及びリンクオンザフライモジュールより成るグループから選択される、請求項80に記載のシステム。
【請求項89】
クライアントコンピュータから新たな分析モジュールを受け取るのに応答して分析モジュールストアへ新たな分析モジュールを送出するプロセッサを含むシステムインターフェイスノードを更に備えた、請求項80に記載のシステム。
【請求項90】
1つ以上のアプリケーションプログラミングインターフェイスに従ってサーチ質問のデータを確認するプロセッサを含むシステムインターフェイスノードを更に備えた、請求項80に記載のシステム。
【請求項91】
1つ以上の分析エージェントに新たな分析モジュールを記憶し、そしてアプリケーションプログラミングインターフェイスに基づき1つ以上の新たな分析モジュールを生成するように構成されたシステムインターフェイスノードを更に備えた、請求項80に記載のシステム。
【請求項92】
前記サーチマネージャーに1つ以上のサーチ質問を送出するプロセッサを含むクライアントコンピュータを更に備えた、請求項80に記載のシステム。
【請求項93】
前記分析エージェントノードは、クライアントコンピュータから新たな分析モジュールを受け取るのに応答して分析エージェントノードが新たな分析モジュールを受け取ったことを指示するハートビート信号をスーパーバイザーノードに自動的に送信する、請求項80に記載のシステム。
【請求項94】
依存性マネージャーノードに記憶された新たな分析エージェントに関連した依存性ツリーに従って分析モジュールストアから新たな分析エージェントへ新たな分析モジュール送出するプロセッサを含む1つ以上のスーパーバイザーノードを更に備えた、請求項93に記載のシステム。
【請求項95】
データベースレコードの1つ以上の集合体を記憶する非一時的なマシン読み取り可能なストレージ媒体を含む1つ以上のストレージノードを備え、各集合体は、スキーマに従って1つ以上のレコードを記憶し、そしてそのスキーマは、各レコードにある形式のデータを記憶する1つ以上のフィールドを定義し;
更に、1つ以上のデータ形式のデータに関連したサーチパラメータを含むサーチ質問を受け取り、サーチ質問にフィールド処理が要求されるかどうか決定し、サーチ質問に基づいて1つ以上のサーチコンダクタ質問を生成し、そしてその1つ以上のサーチコンダクタ質問を1つ以上のサーチコンダクタノードへ送出するプロセッサを含むサーチマネージャー;及び
サーチコンダクタに関連した集合体に質問し、そしてサーチマネージャーノードからサーチコンダクタ質問を受け取るのに応答してサーチコンダクタ質問の1つ以上のパラメータを満足するデータを含む1つ以上の結果レコードのセットをサーチマネージャーへ送出するプロセッサを含むサーチコンダクタノード;
を備えたシステム。
【請求項96】
前記サーチマネージャーは、サーチ質問の少なくとも1つのパラメータに一致するデータを含むサーチ結果レコードの第1セットを受け取り、そのレコードのフィールドは、第1のスキーマに基づくものであり、及び
前記サーチマネージャーは、サーチ質問の少なくとも1つのパラメータに一致するデータを含むサーチ結果レコードの第2セットを受け取り、そのレコードのフィールドは、第2のスキーマに基づくものである、
請求項95に記載のシステム。
【請求項97】
前記サーチコンダクタは、1つ以上のレコードの各フィールドにおけるデータの形式とサーチ質問のデータの形式との一致に基づいて、サーチパラメータを満足する1つ以上のレコードの各フィールドをマッチングさせる、請求項95に記載のシステム。
【請求項98】
前記サーチコンダクタは、各レコードのフィールドにおけるデータと1つ以上のサーチパラメータとの間の一致の数に基づき各レコードに対するスコアを指定する、請求項97に記載のシステム。
【請求項99】
前記サーチコンダクタは、一致の数に基づいて集合体のレコードの各フィールドをスコア付けし、そして各レコードに指定されるスコアは、サーチコンダクタ質問により特定されるサーチアルゴリズムに基づくものである、請求項98に記載のシステム。
【請求項100】
前記サーチコンダクタ質問は、スレッシュホールドスコア値を示し、そして結果レコードのセットの各レコードに指定されるスコアは、スレッシュホールドスコアを満足する、請求項98に記載のシステム。
【請求項101】
前記サーチコンダクタは、前記サーチコンダクタに関連した集合体の各レコードに指定されたスコアに基づき結果レコードのセットを分類する、請求項98に記載のシステム。
【請求項102】
前記サーチマネージャーのプロセッサは、サーチ質問においてフィールド処理が要求されたとの決定に応答して、サーチ質問に従って1つ以上のフィールドに対してフィールド処理を実行する、請求項95に記載のシステム。
【請求項103】
コンピュータにより、データエレメントのセットで受信された1つ以上のデータエレメントに適用すべき圧縮技術を決定し、コンピュータは、データエレメントのデータ形式に基づき各データエレメントに適用すべき圧縮技術を決定するためのスキーマを使用し;
コンピュータにより、そのスキーマで定義される圧縮技術を使用してデータエレメントを圧縮し、その圧縮技術は、データエレメントがサーチ質問に応答して返送されるときに個々に解凍されるようにデータエレメントを圧縮し;
コンピュータにより、データエレメントのデータ形式のデータを記憶するレコードのフィールドに各圧縮されたデータエレメントを記憶し;
コンピュータにより、フィールドごとに基準テーブルにおけるフィールドノーテーションをスキーマに従って関連付け、その代表的ノーテーションは、フィールドのデータ形式を識別し;
コンピュータにより、サーチコンダクタから受け取ったサーチ質問を満足する1つ以上のデータエレメントのセットに対してデータベースに質問し;及び
コンピュータにより、サーチ質問を満足する1つ以上のデータエレメントのセットを識別するのに応答して適用すべき圧縮技術を使用してサーチ質問を満足する1つ以上のデータエレメントのうちの1つ以上の各データエレメントを解凍し、サーチ質問を満足しない各データエレメントは圧縮されたままである;
ようにされる、コンピュータで実施される方法。
【請求項104】
前記コンピュータは、トークンテーブル、Nグラム圧縮、シリアルデイナンバー圧縮、及びバイナリナンバー圧縮より成るグループから選択された圧縮技術を使用してデータを圧縮する、請求項103に記載の方法。
【請求項105】
コンピュータにより、レコードの1つ以上のフィールドにおけるデータエレメントを、断片データへと断片化し、その断片データは、親データエレメントより粒度の大きなレコードのフィールドにおけるデータエレメントであり、そして各断片データは、粒度の大きなデータベースフィールドに関連付けられ;及び
コンピュータにより、前記断片データを同じパーティションに連続的に記憶する、
請求項103に記載の方法。
【請求項106】
コンピュータにより、断片レコード識別子を各断片データに関連付け、その断片レコード識別子は、断片データに対する親データエレメントを識別する、請求項105に記載の方法。
【請求項107】
コンピュータにより、第1レコードの1つ以上のフィールドにおけるデータエレメントを含む第1のデータエレメントオブジェクトを、その第1のデータエレメントオブジェクトに等しい第2のデータエレメントオブジェクトを参照するデータエレメントノーテーションオブジェクトに置き換え、その第2のデータエレメントオブジェクトは、第2レコードの1つ以上のフィールドにデータエレメントを含む、請求項103に記載の方法。
【請求項108】
コンピュータにより、ソフトウェアモジュールから受け取った質問に応答して第1オブジェクトについてデータベースに質問し;及び
コンピュータにより、第1オブジェクトに置き換わった参照オブジェクトにより参照される第2オブジェクトをソフトウェアモジュールへ出力する;
ことを更に含む、請求項107に記載の方法。
【請求項109】
前記コンピュータは、トークンテーブル技術を使用して1つ以上のフィールドを圧縮し、更に、
コンピュータにより、新たなデータを記憶する1つ以上の新たなフィールドをレコードに追加し、各フィールドは、トークンテーブルに関連付けられ;
コンピュータにより、新たなデータが関連トークンテーブルの既存データに一致しないときに新たなフィールドを圧縮し;及び
コンピュータにより、新たなフィールドの新たなデータを使用してトークンテーブルを更新する;
ことを含む、請求項103に記載の方法。
【請求項110】
コンピュータにより、旧式技術に従って圧縮されたデータを解凍し;及び
コンピュータにより、改良型圧縮技術に従ってデータを圧縮する;
ことを更に含む、請求項109に記載の方法。
【請求項111】
コンピュータにより、トークンテーブルの低い番号のインデックスに頻度×長さを含む高い重み付けのデータを記憶する、請求項109に記載の方法。
【請求項112】
前記コンピュータは、Nグラムテーブル技術を使用して1つ以上のフィールドを圧縮し、更に、
コンピュータにより、新たなデータを記憶する1つ以上の新たなフィールドをレコードに追加し、各フィールドは、Nグラムテーブルに関連付けられ;
コンピュータにより、新たなデータが関連Nグラムテーブルの既存データに一致しないときに新たなフィールドを圧縮し;及び
コンピュータにより、新たなフィールドの新たなデータを使用してNグラムテーブルを更新する;
ことを含む、請求項104に記載の方法。
【請求項113】
コンピュータにより、旧式技術に従って圧縮されたデータを解凍し;及び
コンピュータにより、改良型圧縮技術に従ってデータを圧縮する;
ことを更に含む、請求項112に記載の方法。
【請求項114】
コンピュータにより、Nグラムテーブルの低い番号のインデックスに頻度×長さを含む高い重み付けのデータを記憶する、請求項112に記載の方法。
【請求項115】
コンピュータにより、レコード記述子バイトのオフセットを使用してフィールドのセットをサーチし;
コンピュータにより、アクセスしたデータをフィールドレベルで解凍し;及び
コンピュータにより、アクセスしたデータを返送する;
ことを更に含む、請求項104に記載の方法。
【請求項116】
コンピュータにより、質問を満足するフィールドのセットが見つかったとき解凍を停止することを更に含む、請求項115に記載の方法。
【請求項117】
1つ以上の集合体を記憶する1つ以上のノードを備え、各集合体は、1つ以上のレコードのセットを含み、各レコードは、データを記憶するフィールドのセットを含み、及び
集合体に関連したスキーマに従って1つ以上のフィールドを圧縮する圧縮プロセッサを更に備えた、コンピューティングシステム。
【請求項118】
前記圧縮プロセッサは、フィールドに記憶されたデータのデータ形式に基づき1つ以上のフィールドを圧縮する、請求項117に記載のシステム。
【請求項119】
前記圧縮プロセッサは、トークンテーブル、Nグラム圧縮、シリアルデイナンバー圧縮及びバイナリナンバー圧縮より成るグループから選択された圧縮技術を使用してフィールドを圧縮する、請求項117に記載のシステム。
【請求項120】
関連集合体をスキーマに従って1つ以上のパーティションへと区画化する1つ以上のパーティショナーを更に備えた、請求項119に記載のシステム。
【請求項121】
前記圧縮プロセッサは、レコードの1つ以上のフィールドに断片データを記憶し、及び
前記圧縮プロセッサは、集合体のパーティションに断片データを連続的に記憶する、
請求項120に記載のシステム。
【請求項122】
前記断片データの各々は、その断片データの起点レコードを識別する1つ以上の断片レコード識別子に関連付けられる、請求項121に記載のシステム。
【請求項123】
複数のフィールドは、意味的に同様のデータを記憶する、請求項122に記載のシステム。
【請求項124】
1つ以上のフィールドは、ゼロ以上の値のセットを含むデータ値のアレイを記憶する、請求項117に記載のシステム。
【請求項125】
レコードは、スキーマに従って一緒にグループ化される複数のフィールドを含むオブジェクトである、請求項124に記載のシステム。
【請求項126】
パーティションは、オブジェクトに関連した参照値を有する値参照テーブルを記憶し、
オブジェクトは、第1のレコードに記憶され、そして複数のグループ化されたフィールドを含み、及び
第2のレコードは、参照テーブルに従ってオブジェクトに関連した参照値を記憶する、
請求項125に記載のシステム。
【請求項127】
オブジェクトの1つ以上のオブジェクト値を1つ以上のモジュールプロセッサへ出力する1つ以上の出力プロセッサを更に備えた、請求項117に記載のシステム。
【請求項128】
圧縮プロセスは、第1のレコードに記憶された更新オブジェクトに従って第2のレコードに記憶された参照値を更新するように構成される、請求項117に記載のシステム。
【請求項129】
圧縮の前にレコードのフィールドに記憶されたデータを正規化する正規化プロセッサを更に備えた、請求項117に記載のシステム。
【請求項130】
フィールドに各々関連した1つ以上のトークンテーブルを記憶するトークンテーブルストアを更に備え、圧縮プロセッサは、各々の新たなフィールドに関連した各々のトークンテーブルに従って新たなデータを有する1つ以上の新たなフィールドをレコードに追加する、請求項117に記載のシステム。
【請求項131】
圧縮プロセッサは、新たなデータがトークンテーブルの既存データに一致しないときに第2の圧縮技術を適用する、請求項117に記載のシステム。
【請求項132】
圧縮プロセッサは、新たなデータがトークンテーブルの既存データに一致しないときに新たなデータに従ってトークンテーブルを更新する、請求項117に記載のシステム。
【請求項133】
圧縮プロセッサはトークンテーブルを周期的に更新する、請求項117に記載のシステム。
【請求項134】
オフセットデータを含む1つ以上の記述子バイトは、検索のためにフィールドのデータをアドレスする、請求項117に記載のシステム。
【請求項135】
1つ以上のフィールドのデータは、サーチコンダクタプロセッサにより集合体のスキーマに従ってインデックス及び/又は圧縮される、請求項117に記載のシステム。
【請求項136】
1つ以上のフィールドのデータは、パーティショナーにより集合体のスキーマに従ってインデックス及び/又は圧縮される、請求項117に記載のシステム。
【請求項137】
サーチコンダクタプロセッサは、フィールドレベルでサーチ質問を満足するデータをフェッチ及び解凍する、請求項117に記載のシステム。
【請求項138】
サーチコンダクタプロセッサは、サーチ質問を満足するデータのセットが返送されるときにレコードの解凍を停止するように構成される、請求項137に記載のシステム。
【請求項139】
フィールドに各々関連した1つ以上のNグラムテーブルを記憶するNグラムテーブルストアを更に備え、圧縮プロセッサは、各々の新たなフィールドに関連した各々のNグラムテーブルに従って新たなデータを有する1つ以上の新たなフィールドをレコードに追加する、請求項117に記載のシステム。
【請求項140】
圧縮プロセッサは、新たなデータがNグラムテーブルの既存データに一致しないときに新たなデータに従ってNグラムテーブルを更新する、請求項117に記載のシステム。
【請求項141】
圧縮プロセッサはNグラムテーブルを周期的に更新する、請求項117に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的に、インメモリ(in-memory)データベースに関するもので、より詳細には、インメモリデータベース内でのファセットサーチ及びサーチ示唆に関する。本発明は、一般的に、データベースに関するもので、より詳細には、インメモリデータベースに関する。本発明は、一般的に、インメモリデータベースに関するもので、より詳細には、インメモリデータベースに使用するハードウェア構成に関する。本発明は、一般的に、データベースアーキテクチャーに関するもので、より詳細には、欠陥許容(fault tolerant)システムアーキテクチャーに関する。又、本発明は、一般的に、データベースに関するもので、より詳細には、インメモリデータベースに使用される依存性マネージャーに関する。本発明は、一般的に、インメモリデータベースに関するもので、より詳細には、プラグ型インメモリ分析モジュールに関する。本発明は、一般的に、インメモリデータベースに関するもので、より詳細には、インメモリデータベース内での非排他的サーチに関する。本発明は、一般的に、データ圧縮及びデータベースに関するもので、より詳細には、インメモリデータベース及びドキュメントデータベースに使用するための圧縮方法に関する。
【背景技術】
【0002】
ファセットサーチは、キーワードサーチで始めて編成された簡単な仕方でサーチ結果を通して進む増分的サーチ及びブラウズ経験をユーザに与えるものである。ファセットサーチは、多くの場合に、サーチ結果のマップにサービスしてサーチ結果の編成及びコンテンツへ有用なインサイトを与えるのに使用される。又、ファセットナビゲーションは、ユーザが非常に簡単な仕方でサーチ結果を系統的に絞り込みするのを許す。ファセットサーチ及びナビゲーションは、多数の効果があるために、種々様々なコンテキスト及びプラットホームにわたって迅速に展開される。不都合なことに、ファセットエンジンが機能する仕方は、非常に低速で且つ非常にメモリ集中的であり、これら形式のサーチエンジンが良好に且つ拡張的に機能するのを妨げる。
【0003】
それ故、高精度で、高速で且つ拡張可能なファセットサーチエンジンが依然要望されている。
【0004】
コンピュータは、膨大な量の情報を記憶しそしてそれら情報にアクセスするのに使用されるパワフルなツールであり、一方、データベースは、ユーザに容易なアクセスを与えながらコンピュータシステムに情報を記憶する共通のメカニズムである。典型的に、データベースは、情報の「フィールド」を有する「レコード」として記憶される情報の編成された集合体である(例えば、レストランのデータベースは、その地域の各レストランのレコードを有し、各レコードは、レストランの特徴、例えば、名前、住所、料理の種類、等を記述するフィールドを含む)。
【0005】
動作中に、データベース管理システムは、ディスクのようなストレージ装置からデータを検索するか又はそこにデータを存続させることをしばしば要求する。不都合なことに、そのようなストレージ装置へのアクセスは、若干低速である。データへのアクセスを加速するため、データベースは、典型的に、最近使用されたデータオブジェクトを記憶するのに割り当てられた比較的高速なメモリ(例えば、ランダムアクセスメモリ(RAM))の一部分である「キャッシュ」又は「バッファキャッシュ」を使用する。メモリは、典型的に、半導体又は他の電気的ストレージ媒体に設けられ、そしてメモリに維持されたデータをディスクに記憶されたデータより迅速にアクセスできるようにする高速データバスを経てCPU(中央処理ユニット)に結合される。
【0006】
この問題の解消を試みるときに取られる1つの解決策は、メモリのデータベースに全ての情報を記憶することであるが、コンピュータシステムに設けられるメモリは、サイズが限定されているために、大規模なデータベースの取り扱いを試みるときに直面する多数の障害がある。
【0007】
従って、大規模において高い速度でデータを記憶及び検索する改善された方法が要望され続けている。
【0008】
コンピュータは、膨大な量の情報を記憶しそしてそれら情報にアクセスするのに使用されるパワフルなツールであり、一方、データベースは、ユーザに容易なアクセスを与えながらコンピュータシステムに情報を記憶する共通のメカニズムである。典型的に、データベースは、情報の「フィールド」を有する「レコード」として記憶される情報の編成された集合体である(例えば、レストランのデータベースは、その地域の各レストランのレコードを有し、各レコードは、レストランの特徴、例えば、名前、住所、料理の種類、等を記述するフィールドを含む)。
【0009】
動作中に、データベース管理システムは、ディスクのようなストレージ装置からデータを検索するか又はそこにデータを存続させることをしばしば要求する。不都合なことに、そのようなストレージ装置へのアクセスは、若干低速である。データへのアクセスを加速するため、データベースは、典型的に、最近使用されたデータオブジェクトを記憶するのに割り当てられた比較的高速なメモリ(例えば、ランダムアクセスメモリ(RAM))の一部分である「キャッシュ」又は「バッファキャッシュ」を使用する。メモリは、典型的に、半導体又は他の電気的ストレージ媒体に設けられ、そしてメモリに維持されたデータをディスクに記憶されたデータより迅速にアクセスできるようにする高速データバスを経てCPU(中央処理ユニット)に結合される。
【0010】
この問題の解消を試みるときに取られる1つの解決策は、メモリのデータベースに全ての情報を記憶することであるが、コンピュータシステムに設けられるメモリは、サイズが限定されているために、大規模なデータベースの取り扱いを試みるときに直面する多数の障害がある。それらの障害の幾つかは、必要なネットワーク、異なるノードに要求されるハードウェア、等を含めて、データベースを動作するのに要求される技術を決定することを含む。
【0011】
従って、大規模において高い速度でデータを記憶及び検索する改善された方法が要望され続けている。
【0012】
コンピュータは、膨大な量の情報を記憶しそしてそれら情報にアクセスするのに使用されるパワフルなツールである。データベースは、ユーザに容易なアクセスを与えながらコンピュータシステムに情報を記憶する共通のメカニズムである。典型的に、データベースは、情報の「フィールド」を有する「レコード」として記憶される情報の編成された集合体である(例えば、レストランのデータベースは、その地域の各レストランのレコードを有し、各レコードは、レストランの特徴、例えば、名前、住所、料理の種類、等を記述するフィールドを含む)。
【0013】
しばしば、データベースは、大量のデータを記憶しそしてそれにアクセスできるようにするためにコンピュータのクラスターを使用する。これは、コンピュータクラスターの状態を管理することを要求する。この問題の解消を試みるときに取られる1つの解決策は、システムを維持するのに必要なツールに現場で又は離れたところからアクセスできる専門家のチームを利用することである。しかしながら、大規模なデータベースと共にそのような方法を利用するよう試みるときに直面する多数の障害がある。
【0014】
従って、大規模における欠陥許容及び高い利用性の改善された方法が要望され続けている。
【0015】
パッケージ管理システムは、ソフトウェア、オペレーティングシステムコンポーネント、アプリケーションプログラム、サポートライブラリー、アプリケーションデータ、一般的ドキュメント及び他のデータのような適当なコンポーネントに対する手動インストール及び更新の必要性をシステム又はプロセスから排除するリモート統治及びソフトウェア配布技術を通して編成時間及び金銭を節約するよう設計されている。パッケージ管理システムに関連した分野における1つの従来の解決策は、レッドハット(Red Hat)パッケージマネージャー(RPM)である。パッケージマネージャーは、ソフトウェアプログラム及び関連コンポーネントをインストール及び/又は更新するための均一な仕方を提示する。
【0016】
ソフトウェア又はデータパッケージのセットをインストールするため、パッケージマネージャーは、パッケージ及びその依存パッケージをグラフにおいてトポロジー順に順序付けする。その後、パッケージマネージャーは、グラフの底部にパッケージを収集し、そしてそれらパッケージを最初にインストールする。最後に、パッケージマネージャーは、グラフを上に移動し、そしてパッケージの次のセットをインストールする。
【0017】
しかしながら、データベース管理システムに関連した分野の従来の解決策は、あるパッケージマネージャーはシステムのソフトウェア構成しか保持せず、メタデータ又は一次データ収集依存性をサポートしないことに言及している。データベース、特に、インメモリデータベース又は他の分散型ストレージアーキテクチャーでは、展開がソフトウェアと同程度にデータに焦点を当て、それ故、データ展開に要求される依存性ツリーを維持することが本質的となる。
【0018】
従来の技術は、従来の分散型コンピューティングアーキテクチャーにおいて1つ以上のコンピュータのクラスターにわたりソフトウェアコンポーネント及び関連依存性の展開、インストール及び構成を自動化する。必要とされるのは、インメモリデータベース及び他の分散型データプラットホームのような分散型コンピューティングアーキテクチャーにおいて分散型データベースの一次データストアのデータ、メタデータ及びソフトウェアの展開、インストール及び構成を自動化する解決策である。更に、従来の解決策は、サービス及びデータのスタティックなセットを展開することに焦点を当てているので、従来のシステムは、サービス又はデータ欠陥を検出し、次いで、データ、メタデータ及びソフトウェアのパッケージを分散型システム内の他の利用可能なノードへ移動することによりそれらの欠陥から自動的に回復する能力に欠ける。
【0019】
上述した理由で、データ管理システムに対してシステム構成及び依存性の首尾良い実行を保証し/維持するために改善されたパッケージ管理アプリケーションが要望される。
【0020】
慣習的なデータベースは、ユーザがエンティティに関連した情報の断片を見つけることを許し、そして数百万又は数十億のレコードがそのエンティティについて記述するが、それらのレコードは、一般的に、公式な外部キー関係なしに一緒にリンクされない。大きなレコード集合体は、非公式で、信頼性のない又は不存在の外部キー関係で存在している。これは、1つのエンティティに関連した全てのレコードを一緒に寄せ集めることを非常に困難にする。
【0021】
慣習的な解決策は、そのような集合体内の全てのデータを事前にリンクし、一度レコードを見つけると、直接的にレコードの集合体に導くようにすることである。この慣習的な解決策は、2つの異なる問題を有する。
【0022】
第1に、大きなレコード集合体を事前にリンクすることは、著しい時間を要する集中プロセスである。これは、新たなレコードをリンクされた集合体へと一体化するのに要する時間に顕著な遅れを課し、その集合体におけるデータのタイムラインに悪影響を及ぼす。
【0023】
第2に、データを事前にリンクすることは、定義によれば、その事前リンクを遂行するのに使用されるモデルに限定され、どれほど強く又は弱くレコードをリンクするかのパラメータを変更するためのシステムのユーザの能力を甚だしく低下させる。又、事前リンクは、事前リンクステップの時間に利用できるデータに限定される。
【0024】
別の解決策は、データの事前リンクを回避するが、むしろ、ユーザの質問に応答して、リアルタイムでリンクし又は「オンザフライでリンクする」ことである。この解決策は、タイムラインの問題を回避しつつ新たなレコードを集合体に即座に関与させるのを許す。又、リンクプロセスに色々なアルゴリズム及びパラメータを使用してリンクを行うために種々様々なモデルを適用することを許す。この解決策の慣習的な欠点は、データ集中質問を実行しそして受け容れられる双方向応答時間を達成する能力にある。これは、埋め込み型分析を伴うインメモリデータベースに集合体を入れることで克服される。
【0025】
それ故、この分野では、データをどのように管理し、準備しそしてシステム内に記憶するかについて変更を行う必要なくデータをリアルタイムで処理するように設計された複数のカスタマイズされた分析モデルをサポートできる柔軟なデータベースアーキテクチャーが要望される。
【0026】
データのアクセスは、構造化及び半構造化データの方が非構造化データより、簡単で、より正確で且つ著しく速い。キーデータフィールドを指示することにより構造化及び半構造化データを使用してサーチを遂行するときは、非常に短い時間フレームにおいて非常に正確な結果を得ることができるが、質問に関連した多数のレコードが結果リストから除外されることも考えられる。これが起きるのは、レコードが異なる構成で集合体に記憶されるか、又はレコードが質問で特定される幾つかのフィールドに対応する幾つかの欠落又はナルフィールドを有するからである。
【0027】
それ故、異なる構成のレコードを混合及びマッチングするのを許す改善された想起能力を伴うサーチ方法が要望される。
【0028】
コンピュータは、膨大な量の情報を記憶しそしてそれら情報にアクセスするのに使用されるパワフルなツールであり、一方、データベースは、ユーザに容易なアクセスを与えながらコンピュータシステムに情報を記憶する共通のメカニズムである。典型的に、データベースは、情報の「フィールド」を有する「レコード」として記憶される情報の編成された集合体である(例えば、レストランのデータベースは、その地域の各レストランのレコードを有し、各レコードは、レストランの特徴、例えば、名前、住所、料理の種類、等を記述するフィールドを含む)。
【0029】
しばしば、データベースは、大量のデータを記憶しそしてそれにアクセスできるようにするためにコンピュータのクラスターを使用する。これは、大量の情報ストレージスペースを要求する。情報をホストするのに必要なストレージスペースの量を減少するために、しばしば、圧縮が使用されるが、多くの通常の圧縮方法では、レコード全体又は多数のレコードを、それがアクセスされるたびに解凍する必要があるので、計算負荷が著しく増加する。
【0030】
従って、大規模において高い速度でデータを記憶及び検索する改善された方法が要望され続けている。
【発明の概要】
【0031】
ここに開示されるのは、インメモリデータベースをホストするシステムアーキテクチャーであって、システムの分散型コンピューティングアーキテクチャー内でホストされるインメモリデータベースのデータレコードを記憶、操作及び検索するためのコンピューティング装置及びソフトウェアモジュールの適当な組み合わせを含むものである。システムのコンピューティングハードウェアにより実行されるソフトウェアモジュールは、システムインターフェイス、サーチマネージャー、分析エージェント、サーチコンダクタ、パーティショナー、データ集合体、スーパーバイザー、依存性マネージャーを含み、それらソフトウェアモジュールの適当な組み合わせは、インメモリデータベースをホストするシステムアーキテクチャーに見られるものである。
【0032】
ソフトウェアモジュールを実行するノードは、レコードに記憶されたデータを圧縮し、インメモリ記憶、質問及び検索を大量データセットに対して実現可能にする。圧縮及び解凍は、データベースのほぼどのレベルでも(例えば、データベースレベル、集合レベル、レコードレベル、フィールドレベルでも)行うことができる。ソフトウェアモジュールを実行するノードは、分散型インメモリデータベースにJavaScriptオブジェクトノーテーション(JSON)のような複素数データ構造体を記憶するためのサポートを与える。インメモリデータベースシステムの実施形態は、システムの分散型アーキテクチャーであると共に、欠陥サービスを監視しそして回復できるシステムの種々のハードウェア及びソフトウェアモジュールであるために、欠陥許容である。欠陥許容は、とりわけ、システムコンポーネント冗長性、及びシステムコンポーネントの自動回復手順を含む。インメモリデータベースは、スコアリング方法を使用してデータにスコア付けすることによりデータに効果的に且つ効率的に質問する。サーチ結果は、データにスコア付けするのに使用されるスコアリング方法に従ってランク付けされ、それにより、質問を実行するユーザ及び/又はノードは、ある質問から次の質問へ更に調整され且つ状況的に関連した仕方でデータを利用できるようにする。分析エージェントを実行するノードは、データのインメモリデータベース画像に記憶されたレコードに対して種々の進歩型分析を遂行する。あるケースでは、サーチコンダクタによるサーチ質問結果のセットで検索されたレコードに対して分析が行われる。
【0033】
ある実施形態において、インメモリデータベースをホストするコンピューティングシステムは、データベースの1つ以上のレコードの集合体を受け取るのに応答して、その集合体に関連したマシン読み取り可能なスキーマに基づいてその集合体を圧縮すべきかどうか決定し、スキーマファイルに基づいてその集合体を1つ以上のパーティションへ論理的にパーティショニングし、そしてスキーマファイルに基づき1つ以上のパーティションを1つ以上のストレージノードに配布するように構成されたプロセッサを含むパーティショナーノード;ストレージノードであって、それに関連したパーティショナーから受け取ったパーティションを記憶する非一時的なマシン読み取り可能なメインメモリを含むストレージノード;システムのクライアント装置からサーチ質問を受け取り、そしてクライアント装置からサーチ質問を受け取るのに応答してそのサーチ質問を1つ以上のサーチコンダクタへサーチコンダクタ質問として送出するプロセッサを含むサーチマネージャーノードであって、そのサーチ質問は、そのサーチ質問を満足する1つ以上のレコードに関連したパラメータを含むマシン読み取り可能なコンピュータファイルであるサーチマネージャーノード;1つ以上のパーティションに関連したサーチコンダクタノードであって、サーチマネージャーノードからサーチコンダクタ質問を受け取るのに応答して、そのサーチコンダクタ質問により指示される1つ以上のパーティションのセットに質問し、その質問されたパーティションのセットに記憶された1つ以上の候補レコードを識別し、スコアリングアルゴリズムを使用して各々の候補レコードに対する第1スコアを計算し、そしてスレッシュホールド値を満足する1つ以上の候補レコードを含む1つ以上の質問結果のセットをサーチマネージャーへ送出するように構成されたプロセッサを含むサーチコンダクタノード;及びサーチマネージャーノードから受け取られる質問結果のセットにおいて2つ以上のレコードを相関するデータリンケージを識別するのに応答して質問結果のセットに対して1つ以上のデータリンケージのセットを含むマシン読み取り可能なコンピュータファイルを自動的に生成するように構成されたプロセッサを含む分析エージェントノードであって、そのデータリンケージは、第2レコードに含まれたデータに関連して第1レコードに含まれたデータを相関させるものである分析エージェントノード;を備えている。
【0034】
別の実施形態において、コンピュータ実施方法は、インメモリデータベースをホストするシステムのサーチマネージャーコンピュータにより、データベースに質問するパラメータを含むサーチ質問を表わすバイナリデータを受け取ることを含み、そのシステムは、データベースの1つ以上の集合体を記憶するメインメモリを含む1つ以上のストレージノードを備え、各集合体は、1つ以上のレコードを含むものであり;コンピュータにより、サーチ質問を、そのサーチ質問に従って1つ以上のサーチコンダクタノードへ送出することを更に含み、そのサーチ質問は、質問されるべき1つ以上の集合体のセットを指示するものであり;コンピュータにより、1つ以上の分析エージェントノードへ、1つ以上のサーチコンダクタからの受け取りに応答してサーチ質問に基づいてサーチ結果のセットを送出することを更に含み、そのサーチ結果のセットは、サーチ質問を満足する1つ以上のレコードを含むものであり、サーチ結果のセットの各レコードは、サーチ質問におけるスコアリングアルゴリズムに基づきあるスコアに関連付けされ;及び1つ以上の分析エージェントノードからの1つ以上のデータリンケージのセットを含むコンピュータファイルをコンピュータが受け取るのに応答して、コンピュータにより、分析エージェントノードから受け取った1つ以上のデータリンケージのセットに従ってサーチ結果のセットの1つ以上のレコードを更新することを更に含む。
【0035】
別の実施形態において、コンピュータ実施方法は、コンピュータにより、スキーマファイルに従ってサーチコンダクタから1つ以上の集合体を受け取ることを含み、その集合体各々は、1つ以上のフィールドを有する1つ以上のレコードのセットを含むものであり;コンピュータにより、スキーマに従って各集合体をパーティショニングし;コンピュータにより、スキーマに従ってパーティション内のレコードを圧縮し;及びコンピュータにより、サーチコンダクタに関連したパーティショナーに対応する各集合体に各パーティションを含ませるように1つ以上の関連サーチコンダクタに各パーティションを配布する;ことを更に含む。
【0036】
又、クラスター化されたインメモリデータベース内でファセットサーチする方法が開示される。ある実施形態では、ここに開示するファセットサーチ方法及びサーチエンジンは、サーチ示唆を生成するのに使用される。ファセットサーチエンジンは、部分プレフィックス曖昧マッチングのためにリテラル又は非リテラルキー構造アルゴリズムを使用することができる。ここに開示するサーチエンジンは、大量の非構造化データをリアルタイムで処理してサーチ示唆を生成することができる。ここに開示するファセットサーチエンジンをサポートするインメモリデータベースのシステムアーキテクチャーは、モジュール及びクラスターの適当な組み合わせを含み、これらは、システムインターフェイス、サーチマネージャー、分析エージェント、サーチコンダクタ、パーティショナー、集合体、スーパーバイザー、依存性マネージャー、又は適当な組み合わせ、の1つ以上を含む。ある実施形態において、ユーザが適当なサーチウインドウにおいてタイプを開始するときに、システムは、サーチボックスにユーザであるとタイプされるワードの曖昧一致から導出される1つ以上の示唆を自動的に生成する。システムは、1つ以上のレコードに対する質問をスコア付けし、システムは、レコードの1つ以上のフィールドの一致をスコア付けし、次いで、質問に対するレコードの完全な一致に対してスコアを決定する。システムは、スコアが既定の受け容れスレッシュホールドより高いかどうか決定し、スレッシュホールドは、サーチ質問において定義されるか又はデフォールト値である。
【0037】
処理中に、異なる特異性レベルのファセットがドキュメントから抽出され、曖昧性除去され、正規化され、トピックによりグループ化され、インデックス付けされ、そして知識ベースに一時的に追加される。ある実施形態では、抽出されたファセットは、サーチ結果をマップするのに使用される。更に別の実施形態では、曖昧マッチングアルゴリズムは、集合体に一時的に記憶されているファセットを、システムより生成された1つ以上の質問と比較し、そして最も関連性の高いレベル1ファセットを含むドロップダウンウインドウは、ユーザへのサーチ示唆に応対し、ユーザは、異なるレベルのファセットを選択してサーチ質問を絞り込むことが許される。
【0038】
ある実施形態において、コンピュータ実施方法は、コンピュータにより、テキストベースの情報を表わすデータより成るコーパスから1つ以上のファセットを抽出し;コンピュータにより、コーパスから抽出された1つ以上のファセットの各々を曖昧性除去し;コンピュータにより、1つ以上のファセットに各々関連した1つ以上のインデックスを生成し;コンピュータにより、データベースの1つ以上のレコードより成るパーティションのレコードから関連インデックスに基づきファセットの各々を検索し、データベースの集合体は、1つ以上のパーティションを含み、そして各ファセットは、データの1つ以上のレコードに対してデータベースに記憶されたデータのハイアラーキー関係を指示し;及びコンピュータにより、各ファセットに基づき示唆されたサーチ質問を生成する;ことを含む。
【0039】
ここに開示されるのは、インメモリデータベースをホストするシステムのノードに対する接続構成であり、それらノードは、複数の接続帯域巾及びレイテンシー層を有し、第1の帯域巾層は、第2の帯域巾層より高い帯域巾に関連し、第2の帯域巾層は、第3の帯域巾層より高い帯域巾に関連し、第3の帯域巾層は、第4の帯域巾層より高い帯域巾に関連し、そして第1のレイテンシー層は、第2のレイテンシー層より低いレイテンシーに関連している。
【0040】
ここに開示されるのは、分散型インメモリデータプラットホームに適用される帯域巾及びレイテンシーを各々伴う複数のネットワークセグメントを有する分散型コンピューティングシステムである。このシステムは、適当な数のネットワークセグメントを有する接続構成を含み、ネットワークセグメントは、システムの内部及び外部の多数のサーバーに、並びにシステムにおけるサーバーのクラスターに接続される。システムのサーバーは、とりわけ、サーチマネージャー、分析エージェント、サーチコンダクタ、依存性マネージャー、スーパーバイザー、及びパーティショナーのようなソフトウェアモジュールを含む。サーバー及びモジュールは、望ましい帯域巾及びレイテンシーのニーズを満足するために望ましいネットワークセグメントに接続される。サーバー及びモジュールは、異なるクラスのネットワークトラフィックを分離してあるクラスのトラフィックが別のクラスと干渉するのを防止するために望ましいネットワークセグメントに接続される。
【0041】
ある実施形態において、インメモリデータベースをホストする1つ以上のノードを備えたシステムは、集合体の1つ以上のパーティションを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む複数のストレージノードを備え、各ストレージノードにより記憶される集合体は、データベースの1つ以上のレコードを含み、そして各ストレージノードのストレージ媒体は、メインメモリを含み;ユーザノードから受け取ったサーチ質問を使用して1つ以上のサーチコンダクタ質問を生成し、そのサーチ質問に従って1つ以上のサーチコンダクタノードへ1つ以上のサーチコンダクタ質問を送出し、そしてサーチ結果の1つ以上のセットを受け取るのに応答してサーチ質問に従って1つ以上の分析エージェントノードへサーチ結果の1つ以上のセットを転送するプロセッサを含むサーチマネージャーノードを更に備え;サーチマネージャーノードからサーチ結果のセットを受け取るのに応答して1つ以上の分析アルゴリズムを実行するプロセッサを含む分析エージェントノードを更に備え;サーチマネージャーからサーチコンダクタ質問を受け取るのに応答してサーチコンダクタ質問に従ってストレージノードのデータベースレコードの集合体に質問し、そしてサーチ結果セットの1つ以上のサーチ結果を識別するのに応答してサーチマネージャーノードへ1つ以上のサーチ結果のセットを送出するプロセッサを含むサーチコンダクタノードを更に備え、各々のサーチ結果は、サーチコンダクタ質問を満足するデータを含むデータベースレコードに対応し;及び各ネットワークセグメントを経て通信する1つ以上のノード間の1つ以上の接続を含む複数のネットワークセグメントを更に備え、第1のネットワークセグメントは、サーチマネージャー、サーチコンダクタ及び分析エージェントを含む。
【0042】
ここに開示されるのは、分散型コンピューティングシステムに使用するのに適した欠陥許容アーキテクチャーである。欠陥許容アーキテクチャーは、システムのサブコンポーネントが欠陥を経験する間に望ましいシステム機能、冗長性及びシステム信頼性を維持するために、適当な数のノードにわたって分散された適当な数のスーパーバイザー、依存性マネージャー、ノードマネージャー及びその他のモジュールを含む。ここでの開示は、分散型コンピューティングシステムに使用するのに適した欠陥許容アーキテクチャーについて述べる。分散型コンピューティングシステムの一例は、インメモリデータベースであるが、他の分散型コンピューティングシステムは、ここに述べる特徴を具現化する。ここに述べるシステム及び方法は、欠陥を自動的に検出し、そして処理モジュール及び各々のモジュール関連依存性(ソフトウェア、データ、メタデータ、等)を、それらモジュール及び/又は依存性をホストできる分散型コンピューティングシステムの他のコンピュータノードへ移動することでその検出欠陥から回復することにより、分散型コンピューティングシステムの欠陥許容特徴を提供する。
【0043】
ある実施形態において、コンピュータ実施方法は、スーパーバイザーモジュールを実行するプロセッサを含むコンピュータにより、ノードに記憶された1つ以上のソフトウェアモジュールを監視するノードマネージャーによって生成されるハートビート(heartbeat)信号を監視することを含み、ハートビート信号は、ノードマネージャーにより監視される各ソフトウェアモジュールの状態を指示するバイナリデータを含み;コンピュータにより、ノードのノードマネージャーから受け取られたハートビート信号に基づきノードの1つ以上のソフトウェアモジュールにおける欠陥ソフトウェアモジュールを検出することを更に含み;コンピュータにより、その欠陥ソフトウェアモジュールの検出に応答して、その欠陥ソフトウェアモジュールを回復するようにノードに命令するコマンドをノードのノードマネージャーへ自動的に送出することを更に含み;及びコンピュータにより、ノードマネージャーから受け取ったハートビート信号に基づいてノードマネージャーがそのモジュールを首尾良く回復したかどうか決定することを更に含む。
【0044】
別の実施形態において、コンピュータ実施方法は、コンピュータにより、ハートビート信号をスーパーバイザーノードへ連続的に送信し;回復コマンドを受け取ったとき、コンピュータにより、欠陥モジュールを回復し;及びモジュールが回復したことをコンピュータが検出したとき、コンピュータにより、回復状態信号をスーパーバイザーノードへ送信する;ことを含む。
【0045】
別の実施形態において、欠陥許容の分散型コンピューティングシステムは、ハートビート信号をスーパーバイザーノードへ送信しそしてノードにインストールされた1つ以上のソフトウェアモジュールの実行を監視するプロセッサを含む1つ以上のノード;及び1つ以上のノードから受信した1つ以上のハートビート信号を監視しそして各ハートビート信号に基づいて各ノードの状態を決定するプロセッサを含む1つ以上のスーパーバイザーノード;を備えている。
【0046】
ここに開示されるのは、適当なデータベース又はサーチエンジンのための異なるソフトウェア、データ又はメタデータパッケージをインストールし、アップグレードし及び構成するプロセスの間に依存性を取り扱うためのシステム及び方法である。このシステム及び方法は、インメモリデータベース又は他の形式の分散型データプラットホームをホストする分散型システムのような分散型コンピューティングシステムの一次データストアに記憶された種々のデータ、メタデータ及びソフトウェアを展開し、インストールし及び構成するためのプロセスを自動化することができる。規範的実施形態は、依存性マネージャー(構成管理)がスーパーバイザー(システム管理)に直接的にリンクされ、スーパーバイザーがシステムを完全機能状態に維持しそしてシステムの変更を行う構成要求を受け容れるシステム及び方法について記述する。
【0047】
ある実施形態において、コンピュータ実施方法は、分散型コンピューティングシステムのコンピュータにより、システムのターゲットノードに関連したマシン読み取り可能で展開可能なパッケージファイルのための要求を、依存性ツリーに従ってシステムの1つ以上のノードに各々関連した1つ以上の展開可能なパッケージファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む依存性マネージャーノードへ送出し;コンピュータにより、依存性ノードから展開可能なパッケージファイルを受け取るのに応答してターゲットノードへ展開可能なパッケージファイルを送信し;及びコンピュータにより、展開可能なパッケージにおける依存性のセットをターゲットノードにインストールするようにターゲットノードに命令する;ことを含む。
【0048】
別の実施形態において、コンピュータ実施方法は、コンピュータにより、スーパーバイザーノードからターゲットノードを構成するための要求を受け取るのに応答してターゲットノードに関連した依存性ツリーを使用してターゲットノードにインストールされるべき1つ以上の依存性ファイルのセットを決定し;コンピュータにより、1つ以上の依存性ファイルのセットの各依存性ファイルを、1つ以上の依存性ファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む少なくとも1つのデータフレームからフェッチし;コンピュータにより、1つ以上の依存性ファイルのセットを含む展開可能なパッケージファイルを生成し;及びコンピュータにより、展開可能なパッケージファイルをスーパーバイザーノードへ送出する;ことを含む。
【0049】
別の実施形態において、データベース管理システムは、1つ以上の依存性ファイルを記憶する非一時的なマシン読み取り可能なストレージメモリと、1つ以上の依存性ファイルの状態を監視するプロセッサとを含む1つ以上のノードを備え、各依存性ファイルは、第2のノードにインストールされる対応コンポーネントと比較関係を有するノードのコンポーネントであり;更に、1つ以上の各ノードの状態を監視しそして各ノードの状態に基づき各ノードへ依存性ファイルのセットを含む展開可能なパッケージを送出するように構成されたプロセッサを含む1つ以上のスーパーバイザーノードを備え;及び1つ以上のノードに関連した1つ以上の依存性ツリーファイルを記憶する非一時的なマシン読み取り可能なストレージ媒体と、ノードに関連した依存性ツリーに従い展開可能なパッケージファイルをコンパイルするように構成されたプロセッサとを含む1つ以上の依存性マネージャーノードを備え;その展開可能なパッケージファイルは、少なくとも1つのデータフレームに記憶される1つ以上の依存性ファイルのセットを含み、そして依存性マネージャーノードは、展開可能なパッケージを受け取るターゲットであるノードに関連した依存性ツリーに基づいて展開可能なパッケージに含ませる依存性を決定する。
【0050】
ここに開示されるのは、システムインターフェイス、サーチマネージャー、分析エージェント、サーチコンダクタ、パーティショナー、集合体、スーパーバイザー、依存性マネージャー、又は適当な組み合わせの1つ以上を含めて、モジュール及びクラスターの適当な組み合わせを含むインメモリデータベースをホストする分散型コンピューティングシステムである。このシステムの実施形態は、ノード及びソフトウェアモジュールのプラグ型アーキテクチャーを有し、これは、付加的なコンポーネント(例えば、ノード、モジュール、データベースインスタンス)をオンザフライでインストールし、埋め込み、又は他の仕方で含ませることを促進する(即ち、システムの状態quoオペレーションを中断したり、その他、妨げたりすることなく)。このシステムの実施形態は、インメモリデータベースに含ませるための後で展開される又は外部の第三者カスタム分析モジュールを受け容れる。データベース質問は、データベースからデータを最初に検索する必要なく、どの分析モジュール及びパラメータを中間質問結果にオンザフライで適用するか特定する。ここに述べるシステム及び方法は、カスタム調整分析モジュールをインメモリデータベースとは独立して開発することができ、且つデータベースをホストするシステム内で展開して、インメモリデータベースを使用して分析を実行する性能利益を受けることもできる。露出されるアクセス可能なAPIは、独立して生成される分析モジュールとデータを通信するのに使用され、これは、APIであるために、インメモリデータベースにシームレスにプラグインされるか、さもなければ、それに一体化される。データの有効性を利用して、新たなモジュールがAPIの予想と合致するかどうか決定される。
【0051】
ある実施形態において、インメモリデータベースシステムは、データベースの1つ以上のレコードを記憶する非一時的なマシン読み取り可能なストレージ媒体を含む1つ以上のストレージノードを備え、各ストレージノードのストレージ媒体は、各ストレージノードのメインメモリであり;更に、分析モジュールを指示する分析の要求を受け取るのに応答して質問結果のセットを入力パラメータとして使用して分析モジュールを実行するプロセッサを含む分析エージェントノードを備え、質問結果のセットは、1つ以上のレコードを記憶する1つ以上のストレージノードから検索された1つ以上のレコードを表わすバイナリデータを含み;及び1つ以上の分析モジュールを記憶する非一時的マシン読み取り可能なストレージ媒体と、新たな分析モジュールを1つ以上の分析エージェントノードへ送出するように構成されたプロセッサとを含む分析モジュールデータストアを備えている。
【0052】
ここに開示されるのは、サーチ質問の各個別の観点に従って異なるアルゴリズムが決定されるように、質問アルゴリズム並びに詳細なスコアリング及びランキングアルゴリズムを特定する能力をユーザに与えるため、インメモリデータベースシステムのようなデータストレージシステムに対して具現化されるサーチパラダインを提供するシステム及び方法である。サーチ質問を実行するノードは、次いで、(幾つかのフィールドが空であるか又は特定のスキーマで定義されていなくても)特定の各質問アルゴリズムを使用して、考えられる各候補レコードを見出し、次いで、特定のスコアリング及びランキングアルゴリズムを使用して候補アルゴリズムをスコア付け及びランク付けする。従来のシステムは、1つのサーチ質問内に個別の質問及びスコアリングアルゴリズムを与える能力を提供せず、各スコアリングアルゴリズムは、完全に個別のフィールドセットに対して動作するものである。ここに述べるシステム及び方法は、データを準備する負担を軽減しそしてデータがロードされたとき最初に意図されていなかった目的のためにデータを再使用できるようにする解決策を提供する。
【0053】
ここに述べるシステム及び方法は、クラスター化されたインメモリデータベース内で非排他的サーチを実行する。非排他的サーチ方法は、質問で特定されたフィールドがポピュレート又は定義されていないレコードを結果が含む場合にサーチの実行を許す。ここに開示する方法は、曖昧なインデックス動作、曖昧なマッチング及びスコアリングアルゴリズムの適用を含み、これは、システムが異なるスキーマを伴うレコードをサーチ、スコア付け及び比較できるようにする。これは、当該レコードの想起を著しく改善する。
【0054】
ここに開示する非排他的サーチ方法をサポートするインメモリデータベースのシステムアーキテクチャーは、システムインターフェイス、サーチマネージャー、分析エージェント、サーチコンダクタ、パーティショナー、集合体、スーパーバイザー、依存性マネージャー、又はその適当な組み合わせの1つ以上を含めて、モジュール及びクラスターの適当な組み合わせを含む。
【0055】
このシステムは、1つ以上の質問に対してレコードをスコア付けし、ここで、システムは、レコードの1つ以上の使用可能なフィールドの一致をスコア付けし、次いで、レコードの完全一致に対してスコアを決定する。幾つかのフィールドが欠落した場合には、それらを除外することなくレコードにペナルティ又は低いスコアが指定される。このシステムは、スコアが既定の受け容れスレッシュホールドより高いかどうか決定し、そのスレッシュホールドは、サーチ質問で定義されるか、又はデフォールト値である。更に別の実施形態では、曖昧マッチングアルゴリズムが、集合体に一時的に記憶されたレコードを、システムにより生成される1つ以上の質問と比較する。
【0056】
ここに開示されるのは、構造化又は半構造化データを圧縮する方法であるが、種々の適当な圧縮アルゴリズムを使用できる(即ち、特定の圧縮アルゴリズムが要求されない)ことが明らかである。ここに述べるシステム及び方法の実施形態は、データベースの各フィールドに対する適当なデータ圧縮プロセスの組み合わせを具現化し、圧縮されたデータベースレコードが商業的に受け入れられる比と同等の圧縮比を達成する一方、当該レコード及びフィールドのみについて解凍が生じるのを許す(即ち、データベースサーチ質問を満足するデータレコード又はフィールドの解凍のみ)ようにする。レコード又はフィールドの選択的解凍を容易にする圧縮技術を具現化することで、圧縮されたデータの水平方向のレコードベースのストレージを許すだけでなく、解凍時にデータのフィールドに対する列方向又は垂直方向のアクセスも許す。これは、圧縮ストレージの利益を低減するが、特定のフィールドのみを解凍すべきとき解凍に関連した計算パワー及びレイテンシーを大幅に回避する。
【0057】
又、ここに述べるシステム及び方法は、Nグラム(N-gram)圧縮技術も具現化する。従来、Nグラムは、文字(ストリングの次々のキャラクタ)のチェーンの1つだけを圧縮すること、又はワード(テキストにおける次々にストリング)のチェーンに限定される。従来のNグラム圧縮は、そのような圧縮技術の単一の具現化の中で文字のチェーン、個々のワード及び/又はワードのチェーンを圧縮することができない。ここに述べるのは、レコードの記憶中に列方向圧縮に対してNグラム関連圧縮を使用して、良好な全体的圧縮を許す一方、サーチ質問に応答して単一レコード又はレコード内の単一フィールドへの低レイテンシーアクセスを依然提供できることである。
【0058】
ここに述べるシステム及び方法は、圧縮技術の実施形態をインメモリデータベース及びドキュメントデータベースへ適用するものとして記述する。しかしながら、システム及び方法のそのような技術及び他の観点は、より一般的なデータ圧縮にも適用できることが明らかであろう。
【0059】
ある実施形態において、コンピュータ実施方法は、コンピュータにより、データエレメントのセットで受信された1つ以上のデータエレメントに適用すべき圧縮技術を決定することを含み、コンピュータは、データエレメントのデータ形式に基づき各データエレメントに適用すべき圧縮技術を決定するためのスキーマを使用し;コンピュータにより、そのスキーマで定義される圧縮技術を使用してデータエレメントを圧縮することを更に含み、その圧縮技術は、データエレメントがサーチ質問に応答して返送されるときに個々に解凍されるようにデータエレメントを圧縮し;コンピュータにより、データエレメントのデータ形式のデータを記憶するレコードのフィールドに各圧縮されたデータエレメントを記憶することを更に含み;コンピュータにより、フィールドごとに基準テーブルにおけるフィールドノーテーションをスキーマに従って関連付けることを更に含み、その代表的ノーテーションは、フィールドのデータ形式を識別し;コンピュータにより、サーチコンダクタから受け取ったサーチ質問を満足する1つ以上のデータエレメントのセットに対してデータベースに質問することを更に含み;及びコンピュータにより、サーチ質問を満足する1つ以上のデータエレメントのセットを識別するのに応答して適用すべき圧縮技術を使用してサーチ質問を満足する1つ以上のデータエレメントの1つ以上の各データエレメントを解凍することを更に含み、サーチ質問を満足しない各データエレメントは圧縮されたままである。
【0060】
別の実施形態において、コンピューティングシステムは、1つ以上の集合体を記憶する1つ以上のノードを備え、各集合体は、1つ以上のレコードのセットを含み、各レコードは、データを記憶するフィールドのセットを含み;及び集合体に関連したスキーマに従って1つ以上のフィールドを圧縮する圧縮プロセッサを更に備えている。
【0061】
本開示の多数の他の観点、特徴は、以下の詳細な説明から明らかとなろう。実施形態の付加的な特徴及び効果は、以下の説明で述べられ、そしてその説明から一部分は明らかであろう。本発明の目的及び他の効果は、以下の説明の規範的実施形態及び特許請求の範囲並びに添付図面に特に指摘された構造により実現され且つ達成される。
【0062】
本開示は、添付図面を参照することにより良く理解することができる。図面中のコンポーネントは、必ずしも、正しい縮尺ではなく、むしろ、本開示の原理の例示を強調している。図中、参照番号は、異なる図面全体を通して対応部分を示している。
【図面の簡単な説明】
【0063】
【
図1】一実施形態によるインメモリデータベースアーキテクチャーを示す。
【
図2】一実施形態によるファセットサーチ方法を説明するフローチャートである。
【
図3】一実施形態によりファセットサーチを使用してサーチ示唆を生成する方法のフローチャートである。
【
図4】規範的実施形態によるインメモリデータベースアーキテクチャーを示す。
【
図6】規範的実施形態によるノードを設定するためのフローチャートである。
【
図7】規範的実施形態によるノードにおけるモジュール設定を示すフローチャートである。
【
図8】規範的実施形態によるサーチマネージャーの機能を説明するフローチャートである。
【
図9】規範的実施形態によるサーチコンダクタの機能を説明するフローチャートである。
【
図10】規範的実施形態によるパーティショナーの機能を説明するフローチャートである。
【
図11】規範的実施形態によるサーチコンダクタにおいてパーティションを設定するプロセスを説明するフローチャートである。
【
図12A】規範的実施形態による集合体、その更新された形態、及びそれに関連するパーティションを示す。
【
図12B】規範的実施形態によりサーチマネージャーに接続された第1の集合体を含む第1及び第2のサーチノードを示す。
【
図12C】規範的実施形態により、サーチマネージャーから切断された第1の集合体を含む第1のサーチノード、及びサーチマネージャーに接続された第1の集合体を含む第2のサーチノードを示す。
【
図12D】規範的実施形態により、更新された集合体をロードする第1のサーチノード、及びサーチマネージャーに接続された第2のサーチノードを示す。
【
図12E】規範的実施形態により、サーチマネージャーに接続された更新された集合体を含む第1のサーチノード、及びサーチマネージャーから切断された第1の集合体を含む第2のサーチノードを示す。
【
図12F】規範的実施形態により、更新された集合体をロードする第2のサーチノード、及びサーチマネージャーに接続された第1のサーチノードを示す。
【
図12G】規範的実施形態により、サーチマネージャーに接続された更新された集合体を含む第1及び第2のサーチノードを示す。
【
図13】規範的実施形態により2つの集合体に対するパーティションを含むサーチノードのクラスターを示す。
【
図14】ノードが論理的にクラスター化されたインメモリデータベースシステムをホストするコンピューティングシステムのための接続図である。
【
図15】規範的システム実施形態による分散型システム管理アーキテクチャーのコンポーネントを示す。
【
図16】規範的システム実施形態におけるノードのための規範的ノード構成を示す。
【
図17】規範的方法実施形態による分散型コンピューティングシステムでの欠陥取り扱いを示すフローチャートである。
【
図18】一実施形態によるスーパーバイザー及び依存性マネージャーのブロック図接続を示す。
【
図19】一実施形態による構成プロセスのフローチャートである。
【
図20】一実施形態によりシステムの構成に使用される依存性のブロック図である。
【
図21】一実施形態によるインメモリデータベースアーキテクチャーを示す。
【
図22】一実施形態によりインメモリデータベースに新たなモジュールを追加する方法のフローチャートである。
【
図23】一実施形態によるインメモリデータベースアーキテクチャーを示す。
【
図24】一実施形態による非排他的サーチ方法を説明するフローチャートである。
【
図25】規範的実施形態によるデータ圧縮装置を示す。
【
図26】規範的実施形態による構造化データテーブルを示す。
【
図27】規範的実施形態によるトークンテーブルを示す。
【
図28】規範的実施形態によるNグラムテーブルを示す。
【
図29】規範的実施形態による圧縮されたレコードを示すテーブルである。
【発明を実施するための形態】
【0064】
定義
ここで使用する次の用語は、次のような定義を有する。
【0065】
「エンティティ抽出」は、名前、場所及び組織のような情報を抽出するための情報処理方法を指す。
【0066】
「コーパス」は、1つ以上のドキュメントの集合体をさす。
【0067】
「特徴(Features)」は、ドキュメントから少なくとも一部分導出される情報である。
【0068】
「イベントコンセプトストア」は、イベントテンプレートモデルのデータベースを指す。
【0069】
「イベント」は、少なくともリアルタイムでの特徴生成により特徴付けられる1つ以上の特徴を指す。
【0070】
「イベントモデル」は、特定形式のイベントに対して比較しそしてそれを識別するのに使用されるデータの集合体を指す。
【0071】
「モジュール」は、少なくとも1つ以上のタスクを実行するのに適したコンピュータ又はソフトウェアコンポーネントを指す。
【0072】
「データベース」は、1つ以上の集合体を記憶するのに適し且つ1つ以上の質問を処理するのに適したクラスター及びモジュールの組み合わせを含むシステムを指す。
【0073】
「質問」は、1つ以上の適当なデータベースから情報を検索するための要求を指す。
【0074】
「メモリ」は、充分に高い速度で情報を記憶し且つその情報を検索するのに適したハードウェアコンポーネントを指す。
【0075】
「ノード」は、1つ以上のモジュールを実行するのに適したコンピュータハードウェア構成を指す。
【0076】
「クラスター」は、1つ以上のノードのセットを指す。
【0077】
「集合体」は、レコードの個別セットを指す。
【0078】
「レコード」は、1単位として取り扱われる1つ以上の情報断片を指す。
【0079】
「パーティション」は、集合体のレコードの任意に限定された部分を指す。
【0080】
「サーチマネージャー」又は「S.M.」は、少なくとも、1つ以上の質問を受け取りそして1つ以上のサーチ結果を返送するように構成されたモジュールを指す。
【0081】
「分析エージェント」、「分析モジュール」、「A.A.」又は「A.M.」は、少なくとも、1つ以上のレコードを受け取り、その1つ以上のレコードを処理し、そしてそれにより得られる1つ以上の処理されたレコードを返送するように構成されたモジュールを指す。
【0082】
「サーチコンダクタ」又は「S.C.」は、少なくとも、パーティションにおいて1つ以上のサーチ質問を実行し、そしてサーチ結果を1つ以上のサーチマネージャーへ返送するように構成されたモジュールを指す。
【0083】
「ノードマネージャー」又は「N.M.」は、少なくとも、ノードにおいて1つ以上のコマンドを遂行しそして1つ以上のスーパーバイザーと通信するように構成されたモジュールを指す。
【0084】
「スーパーバイザー」は、少なくとも、システムの1つ以上のコンポーネントと通信しそして1つ以上の状態を決定するように構成されたモジュールを指す。
【0085】
「ハートビート」又は「HB」は、少なくとも、1つ以上の状態を1つ以上のスーパーバイザーへ通信する信号を指す。
【0086】
「パーティショナー」は、少なくとも、1つ以上の集合体を1つ以上のパーティションへと分割するように構成されるモジュールを指す。
【0087】
「依存性マネージャー」又は「D.M.」は、少なくとも、1つ以上のモジュール、パーティション又は適当な組み合わせに関連した1つ以上の依存性ツリーをシステムに含ませ;少なくとも、その1つ以上の依存性ツリーの1つ以上の適当な部分に関連した情報の要求を受け取り;及び少なくとも、それらの部分から導出される1つ以上の構成を返送するように構成されたモジュールを指す。
【0088】
「ドキュメント」は、出発点及び終了点を有する情報の個別の電子的表現を指す。
【0089】
「生のコーパス」は、新たなドキュメントがネットワークにアップロードされるときに恒常的に供給されるコーパスを指す。
【0090】
「特徴(Features)」は、ドキュメントから少なくとも一部分導出される情報である。
【0091】
「特徴属性」は、特徴に関連したメタデータ、例えば、とりわけ、ドキュメントにおける特徴の位置、信頼スコアを指す。
【0092】
「ファクト」は、特徴と特徴との間の客観的な関係を指す。
【0093】
「知識ベース」は、曖昧性除去された特徴又はファセットを含むベースを指す。
【0094】
「リンクオンザフライモジュール」は、データがシステムに追加されるときではなくデータがシステムから要求されるときにデータリンケージを遂行するリンクモジュールを指す。
【0095】
「センチメント(Sentiment)」は、ドキュメント、ドキュメントの一部分、又は特徴に関連した客観的評価を指す。
【0096】
「トピック」は、コーパスから少なくとも一部分導出されるセマティック情報のセットを指す。
【0097】
「プレフィックス」は、ノードの全サブツリーにより共有されるキーキャラクタの最長ストリングと、データレコードへの参照を記憶するデータレコードフィールドとで構成される長さpのストリングを指す。
【0098】
「ファセット」は、クラス、特定主題、トピック又は特徴の、明確に定義され、相互に排他的で且つ総体的に余すところのない観点、プロパティ又は特性を指す。
【0099】
「フィールド」は、レコード内の1つのデータエレメントを指す。
【0100】
「スキーマ」は、1つ以上のレコードの1つ以上の特性を示すデータを指す。
【0101】
「フラグメント」は、望ましい粒度レベルが達成されるまでレコードをより小さなレコードに分離することを指す。
【0102】
「リソース」は、データを記憶又は処理するように構成されたノードのハードウェアを指す。1つ以上の実施形態において、これは、とりわけ、RAM、ハードディスクストレージ、及び計算容量を含む。
【0103】
「依存性ツリー」は、とりわけ、パーティション、モジュール、ファイル又はデータの関係を示すデータ構造体の形式を指す。
【0104】
「展開可能なパッケージ」は、とりわけ、モジュール、パーティション、ファイル又はデータの構成に使用される情報のセットを指す。
【0105】
「分析方法」は、サーチ結果の総計に適用されるオペレーションを指す。
【0106】
「分析パラメータ」は、分析モジュールが特定の結果を得るために遂行しなければならないオペレーションを示すパラメータを指す。
【0107】
「アプリケーションプログラミングインターフェイス」又は「API」は、異なるユーザ開発ソフトウェアモジュールを、分散型コンピューティングシステムのコンポーネント(例えば、ソフトウェアモジュール、ノード)に適合できるようにする。
【0108】
「ディクショナリー」は、意味、他のデータとの関係、起点、使用及びフォーマットのようなMEMDBのフィールドに関する細部を含む情報の集中レポジトリーを指す。
【0109】
「否定義(Not defined)」は、特定のスキーマの一部分ではないフィールドを指す。
【0110】
「否ポピュレート(Not populated)」は、スキーマの一部分であるが、指定された値をもたないフィールドを指す。
【0111】
「オブジェクト」は、データレコード内のフィールドの論理的集合体を指す。
【0112】
「アレイ」は、レコード内のデータ値の順序付けされたリストを指す。
【0113】
「圧縮」は、値を表わすのに必要な電子データの量を減少することを指す。
【0114】
「トークンテーブル」は、1つ以上の他のより複雑な値に対して1つ以上のより簡単な値を定義するテーブルを指す。
【0115】
「Nグラム」は、Nを1以上とすれば、キャラクタ、ワード又はワードグループであるデータのN個の連続する一体的単位を指す。即ち、文章“The quick brown fox jumped over the lazy dog”において、”the”、”e”、”he”及び”brown fox”は、全て、有効なNグラムである。
【0116】
「Nグラムテーブル」は、1つ以上の他のより複雑な値に対して1つ以上のより簡単な値を定義するテーブルを指す。
【0117】
「JSON」は、JavaScriptオブジェクトノーテーション、データ交換フォーマットを指す。
【0118】
「BSON」は、バイナリJSON、データ交換フォーマットを指す。
【0119】
「YAML」は、コード言語「YAML Ain’tマークアップ言語」、データ交換フォーマットを指す。
【0120】
「ドキュメントデータベース」は、ドキュメント指向の情報を記憶し、記憶し、検索し及び管理するように設計されたドキュメント指向のデータベースを指す。
【0121】
詳細な説明
添付図面に各々示された好ましい実施形態を以下に詳細に説明する。上述した実施形態は、例示に過ぎない。当業者であれば、ここに述べる特定の実施例について、本発明の範囲内で、多数の別のコンポーネント及び実施形態に置き換えできることが認識されよう。本開示の精神又は範囲から逸脱せずに、他の実施形態が使用されてもよく及び/又は他の変更がなされてもよい。詳細な説明に述べる例示的実施形態は、ここに提示される要旨の限界を意味するものではない。
【0122】
それでも、本発明の範囲の制限が意図されないことを理解されたい。ここに示す本発明の特徴の代替的及び更に別の実施形態、並びにここに示す本発明の原理の付加的な適用であって、当業者に対して生じ且つ本開示を所有するものは、本発明の範囲内であると考えるべきである。
【0123】
本開示は、複数のソースからイベントを検出し、抽出し及び有効化するためのシステム及び方法について述べる。ソースは、ニュースソース、ソーシャルメディアウェブサイト、及び/又はイベントに関するデータを含むソースを包含する。
【0124】
ここに開示するシステム及び方法の種々の実施形態は、独立したイベントを識別するために異なるソースからデータを収集する。
【0125】
図1は、一実施形態によるインメモリデータベース100システムアーキテクチャーを示す。MEMDB100システムアーキテクチャーは、システムインターフェイス102、第1のサーチマネージャー104、第nのサーチマネージャー106、第1の分析エージェント108、第nの分析エージェント110、第1のサーチコンダクタ112、第nのサーチコンダクタ114、パーティショナー116、第1の集合体118、第nの集合体120、スーパーバイザー122、及び依存性マネージャー124を含む。
【0126】
1つ以上の実施形態において、システムインターフェイス102は、MEMDB100のシステムアーキテクチャーの外部で生成された1つ以上の質問を、少なくとも第1のサーチマネージャー104及び第nのサーチマネージャー106までを含む第1クラスターにおける1つ以上のサーチマネージャーへ供給するように構成される。前記第1クラスターにおける前記1つ以上のサーチマネージャーは、少なくとも第1の分析エージェント108及び第nの分析エージェント110までを含む第2クラスターにおける1つ以上の分析エージェントにリンクされる。
【0127】
前記第1クラスターにおけるサーチマネージャーは、少なくとも第1のサーチコンダクタ112及び第nのサーチコンダクタ114までを含む第3クラスターにおける1つ以上のサーチコンダクタにリンクされる。前記第3クラスターにおけるサーチコンダクタは、1つ以上のパーティショナー126にリンクされ、少なくとも第1の集合体118及び第nの集合体120までに対応するパーティショナーは、1つ以上の時点で記憶される。
【0128】
MEMDB100に含まれたクラスターに含まれた1つ以上のノード、モジュール又はその適当な組み合わせは、1つ以上のスーパーバイザー122にリンクされ、前記クラスターにおける前記1つ以上のノード、モジュール又は、適当な組み合わせは、少なくとも1つのハードビートを1つ以上のスーパーバイザー122へ送出するように構成される。スーパーバイザー122は、1つ以上の依存性マネージャー124にリンクされ、該1つ以上の依存性マネージャー124は、1つ以上のモジュール、パーティション又はその適当な組み合わせに対して1つ以上の依存性ツリーを含む。スーパーバイザー122は、更に、1つ以上の他のスーパーバイザー122にリンクされ、ここで、付加的なスーパーバイザー122は、MEMDB100のシステムアーキテクチャーに含まれた前記クラスターにリンクされる。
【0129】
図2は、一実施形態によるファセットサーチ方法200を説明するフローチャートである。ファセットを使用してドキュメントを分離又はグループ化することは、サーチ結果を効果的に絞り込む。ファセットサーチを実行するとき、各ファセットは、多次元スペースにおけるドキュメントの次元と考えられ、特定のドキュメントファセットを選択することにより、関連サーチ結果を見出す可能性が著しく改善される一方、サーチを遂行するに要する時間が実質的に短縮される。
【0130】
プロセスは、サーチマネージャー202により受け取られる質問でスタートし、外部ソースにより生成される1つ以上の質問は、1つ以上のサーチマネージャーにより受け取られる。ある実施形態では、それらの質問は、ユーザとの相互作用に応答してシステムインターフェイス102により自動的に生成される。1つ以上の実施形態において、質問は、XML及びHTMLを含むマークアップ言語で表わされる。1つ以上の他の実施形態において、質問は、質問がJSONで表わされる実施形態を含めて構造体で表わされる。ある実施形態では、質問は、コンパクトなフォーマット又はバイナリフォーマットで表わされる。
【0131】
その後、受け取った質問は、サーチマネージャー204によりパースされる。このプロセスは、フィールド処理が望まれるかどうかシステムが決定できるようにする(206)。1つ以上の実施形態では、システムは、質問に含まれた情報を使用してプロセスが要求されるかどうか決定することができる。1つ以上の他の実施形態では、1つ以上のサーチマネージャーは、1つ以上のどのフィールドが望ましい処理を受けるか自動的に決定する。
【0132】
1つ以上のフィールドに対するフィールド処理が望まれるとシステムが決定した場合には、1つ以上のサーチマネージャーは、サーチマネージャーがフィールドを処理する間に1つ以上の適当な処理技術を1つ以上の望ましいフィールドに適用する(208)。1つ以上の実施形態において、適当な処理技術は、とりわけ、アドレス標準化、接近境界及びニックネーム解釈を含む。ある実施形態では、適当な処理技術は、ストリングからのプレフィックスの抽出、及び曖昧マッチング技術を遂行するために後で使用される非リテラルキーの生成を含む。
【0133】
次いで、S.M.がサーチ質問210を構成するとき、1つ以上のサーチマネージャーは、1つ以上の質問に関連した1つ以上のサーチ質問を構成する。1つ以上の実施形態において、サーチ質問は、スタックベースサーチとして処理されるように構成される。
【0134】
その後に、S.M.は、S.C.212にサーチ質問を送信する。ある実施形態では、1つ以上のサーチマネージャーは、1つ以上のサーチ質問を1つ以上のサーチコンダクタに送信し、そこで、前記1つ以上のサーチコンダクタは、1つ以上のサーチ質問で特定される集合体に関連付けされる。
【0135】
1つ以上のサーチコンダクタは、1つ以上の質問に対してレコードをスコア付けし、ここで、サーチコンダクタは、レコードの1つ以上のフィールドの一致をスコア付けし、次いで、レコードの全一致に対するスコアを決定する。システムは、スコアが既定の受け容れスレッシュホールドより上であるかどうか決定し、ここで、スレッシュホールドは、サーチ質問で定義されるか又はデフォールト値である。1つ以上の実施形態において、デフォールトスコアスレッシュホールドは、スコア付けされる1つ以上のフィールドに従って変化する。スコアが望ましいスレッシュホールドより上であるとサーチコンダクタが決定した場合には、レコードが結果リストに追加される。サーチコンダクタは、レコードがパーティションの最後であると決定するまで、レコードをスコア付けし続ける。パーティションの最後のレコードが処理されたとサーチコンダクタが決定した場合に、サーチコンダクタは、次いで、それにより得られる結果リストを分類する。サーチコンダクタは、次いで、その結果リストをサーチマネージャーへ返送する。
【0136】
S.M.がS.C.から結果を受け取りそしてまとめるときに(214)、1つ以上のサーチコンダクタは、1つ以上のサーチ結果を1つ以上のサーチマネージャーへ返送し、1つ以上の実施形態において、前記1つ以上のサーチ結果は、非同期で返送される。次いで、1つ以上のサーチマネージャーは、1つ以上のサーチコンダクタからの結果を1つ以上の結果リストへとコンパイルする。
【0137】
システムは、1つ以上のサーチマネージャーによりコンパイルされたサーチ結果の分析処理が望ましいものであるかどうか決定する(216)。1つ以上の実施形態において、システムは、質問に含まれた情報を使用して処理が望ましいものであるかどうか決定する。1つ以上の他の実施形態では、1つ以上のサーチマネージャーは、1つ以上のどのフィールドが望ましい処理を受けるか自動的に決定する。
【0138】
総計分析処理が望ましいものであるとシステムが決定した場合に、1つ以上の分析エージェントは、1つ以上の適当な処理技術を1つ以上の結果リストに適用することにより、結果を処理する(218)。1つ以上の実施形態において、適当な技術は、とりわけ、多数のレコードをより完全なレコードへとロールアップし、結果に対して1つ以上の分析を遂行し、そして隣接レコードに関する情報を決定することを含む。ある実施形態では、分析エージェントは、曖昧性除去モジュール、リンクモジュール、リンクオンザフライモジュール、又は他の適当なモジュール及びアルゴリズムを含む。処理中に、異なる特異性レベルをもつファセットがドキュメントから抽出され、曖昧性除去され、正規化され、トピックでグループ化され、そしてインデックスされる。ファセットは、ハイアラーキーに従ってインデックスされ、ハイアラーキーは、予め定められるか、又はシステムによりオンザフライで定められる。1つ以上の実施形態において、レベル1のファセットは、最も広いファセットであり、そしてその後のレベルは、低下する関連性又はより高度な特異性で導出される。
【0139】
結果リストからのファセットが集合体に記憶される。ある実施形態では、各ファセット形式が異なる集合体又は集合体グループに記憶される。
【0140】
処理の後に、ある実施形態によれば、1つ以上の分析エージェントは、1つ以上の処理結果リストを1つ以上のサーチマネージャーへ返送する。
【0141】
サーチマネージャーは、サーチ結果を返送する(220)。ある実施形態では、1つ以上のサーチマネージャーは、1つ以上の結果リストを解凍し、そしてそれを、質問を開始したシステムへ返送する。
【0142】
任意であるが、ある実施形態によれば、サーチ結果は、知識ベースに一時的に記憶され(222)、そしてユーザインターフェイスへ返送される(224)。知識ベースは、当該曖昧性除去ファセット及びその関連特徴のクラスターを一時的に記憶するのに使用される。新たなドキュメントがMEMDBにロードされると、ファセットの新たな曖昧性除去セットが既存の知識ベースと比較されてファセット間の関係を決定し、そして新たなファセットと以前に抽出されたファセットとの間に一致があるかどうか決定する。比較されたファセットが一致する場合には、知識ベースが更新され、そして一致するファセットのIDが返送される。比較されたファセットが、既に抽出されているいずれのファセットとも一致しない場合には、曖昧性除去されたエンティティ又はファセットに独特のIDが指定され、そしてそのIDは、特徴を定めるクラスターに関連付けられてMEMDBの知識ベース内に記憶される。
【0143】
図3は、一実施形態により、ファセットサーチを使用してサーチ示唆を生成する方法300のフローチャートである。サーチ示唆を生成する方法300は、質問生成302で始まる。ある実施形態では、ユーザが適当なサーチウインドウにおいてタイプし始めると、システムは、ユーザによりサーチボックスにタイプされているワードのプレフィックスから導出される質問を自動的に生成する。これらの質問は、ユーザがサーチウインドウにストリングをタイプし終える前に及び最小数(3又は4)のキャラクタがサーチウインドウにタイプされた状態でも生成される。
【0144】
適当な質問が生成されると、ファセットサーチ方法200が適用される。この方法の適用は、部分プレフィックスのマッチングを許すリテラル又は非リテラルキーアルゴリズムの使用を含む。
【0145】
サーチ示唆を生成するために(304)、曖昧マッチングアルゴリズムは、集合体に一時的に記憶されたファセットを、システムにより生成される1つ以上の質問と比較する。このように、現在の1つ以上の質問に対するヒットのカウントが、集合体の異なるパーティションにある異なるハイアラーキーレベルのファセットに指定される。次いで、レベル1のファセットは、ヒットの累積カウントが指定されて、ヒットの合計数に従って分類される。
【0146】
その後に、サーチ示唆がユーザに提示される(306)。ある実施形態では、これは、ドロップダウンウインドウの形態で行われ、これは、最も関連性のあるレベル1ファセットを含み、その各々は、それに関連したヒット数を伴い、そしてユーザは、サーチ質問を絞り込むか又は新たな質問を開始するために異なるレベルのファセットを選択することが許される。ある実施形態によれば、このプロセスが何回も行われてサーチウインドウのキャラクタがワードを形成し始めるときに、このプロセスは、ユーザがサーチウインドウにおいてストリングをタイプし終える前にファセットサーチ示唆を生成しそして応対することができるようにする。
【0147】
図4は、システムインターフェイス402、第1のサーチマネージャー410、第nのサーチマネージャー412、第1の分析エージェント420、第nの分析エージェント422、第1のサーチコンダクタ430、第nのサーチコンダクタ432、パーティションデータ440、パーティショナー450、第1の集合体460、第nの集合体462、スーパーバイザー470、及び依存性マネージャー480を有するシステムアーキテクチャー400を示す。
【0148】
1つ以上の実施形態において、システムインターフェイス402は、システムアーキテクチャー400の外部で生成された1つ以上の質問を、第1のサーチマネージャー410を含む少なくとも1つのノード及び第nのサーチマネージャー412を含む第nのノードまでを含む第1クラスターにおける1つ以上のサーチマネージャー410、412へ供給する。前記第1クラスターにおける1つ以上のサーチマネージャー410、412は、少なくとも第1の分析エージェント420及び第nの分析エージェント422までを含む第2クラスターにおける1つ以上の分析エージェント420、422にリンクされる。
【0149】
第1クラスターにおけるサーチマネージャー410、412は、第3クラスターにおける1つ以上のサーチコンダクタ430、432にリンクされる。第3クラスターは、少なくとも、第1のサーチコンダクタ430及び第nのサーチコンダクタ432までを含む。各サーチノード(即ち、サーチマネージャー410、412を実行するノード)は、適当な数のサーチコンダクタ430、432を含む。
【0150】
第3クラスターにおけるサーチコンダクタ430、432は、パーティションデータ440を記憶する1つ以上のデータベースノードにリンクされる。パーティションデータ440は、少なくとも、1つ以上の集合体を1つ以上のパーティションへと分割するように構成されたモジュールである1つ以上のパーティショナー450を実行するノードにより生成される1つ以上のパーティション(即ち、レコードの個別セットからパーティションされたレコードの任意に限定された部分)を含む。各パーティションは、少なくとも第1の集合体460及び第nの集合体までに対応する。集合体460、462は、それら集合体460、462のデータを定義する1つ以上のスキーマファイルにより更に説明する。1つ以上のスキーマは、とりわけ、パーティションのレコードにおけるフィールドの名前、前記フィールドがインデックスされたかどうか、どんな圧縮方法が使用されたか、及びどんなスコア付けアルゴリズムがフィールドにとってデフォールトであるかに関する情報を含む。スキーマは、第1の集合体460及び第nの集合体462までをパーティションするときにパーティショナー450により使用され、そして集合体において1つ以上の質問を実行するときに第1のサーチマネージャー410及び第nのサーチマネージャー412までによって更に使用される。
【0151】
1つ以上のノードは、システム400の他のノードから送信されたハートビート信号を受信するスーパーバイザー470ソフトウェアモジュールを実行する。スーパーバイザー470は、1つ以上の依存性マネージャー480ソフトウェアモジュールを実行するシステム400のノードからデータを受信するように構成される。依存性マネージャー480ノードは、1つ以上のモジュール、パーティション、又はその適当な組み合わせに関連した依存性ツリーを記憶し、更新し、及び参照し、これは、相対的関係に基づき、ノード、モジュール及びパーティションに対する構成依存性を指示する。スーパーバイザー470は、1つ以上の他のスーパーバイザー470を実行するシステム400の他のノードへ更にリンクされる。あるケースでは、付加的なスーパーバイザー470へのリンクは、システムアーキテクチャー400のクラスター間を交差する。
【0152】
分析エージェント420、422を実行するノードは、システムのコンポーネント(例えば、ソフトウェアモジュール、ノード)間の相互運用性及びデータ転送を容易にする特定のアプリケーションプログラミングインターフェイス(API)に合致する1つ以上の適当な分析モジュールを実行する。分析エージェント420、422は、サーチコンダクタ430、432から返送された総計質問結果を処理するように構成される。例えば、サーチマネージャー410は、サーチ質問を受け取り、次いで、そのサーチマネージャー410が1つ以上のサーチコンダクタ430、432に与えるサーチコンダクタ質問を生成する。サーチコンダクタ430、432がそれらの各々指定されたサーチコンダクタ質問を実行した後に、サーチマネージャー410は、1つ以上のサーチコンダクタ430、432から総計質問結果のセットを受け取る。サーチマネージャー410は、サーチ質問のパラメータにより更なる処理が要求される場合は、それらのサーチ質問結果を更なる処理のために分析エージェント420へ転送する。
【0153】
ある具現化において、サーチコンダクタ430、432から受け取った総計結果の1つ以上のセットを処理するために分析エージェント420に対してサーチ質問が要求されたとサーチマネージャー410が決定した後に、サーチマネージャー410は、データベーススキーマファイル及び/又は1つ以上の分析パラメータを分析エージェント420、422へ送信する。あるケースでは、サーチ質問は、どの分析エージェント420が総計サーチ結果を受け取るべきか識別するためサーチマネージャー410が使用する特定の分析アルゴリズムの遂行を要求する。あるケースでは、総計結果のセットの1つ以上が、圧縮アルゴリズムに従って圧縮されたデータを含む圧縮レコードの形態で分析エージェント420、422へ送信される。あるケースでは、レコードのデータは、レコードのフィールドにおいて圧縮され、そしてあるケースでは、全レコードが圧縮される。
【0154】
分析エージェント420、422を実行するノードは、種々の分析モジュールを有する。非限定例として、他の適当なモジュール及びアルゴリズムの中で、曖昧性除去モジュール、リンクモジュール、及びリンクオンザフライモジュールが含まれる。後で述べるように、リンクモジュール及びリンクオンザフライモジュールは、データベースのレコードに以前に記憶されたデータをリンクするメタデータを識別し、生成し及び/又は記憶する。適当なモジュールは、任意の種類のデータを処理するための分析方法のソフトウェア実施を含む。ある実施形態では、特定の分析モジュール又は分析エージェント420、422は、インメモリデータベースの所定のインスタンス、クラスター、パーティション及び/又はインスタンス生成オブジェクトにしかアクセスできない。
【0155】
図5は、規範的な実施形態によるノード500の構成を示す図である。
図5のノード500は、ノードマネージャー502ソフトウェアモジュール、並びに第1のソフトウェアモジュール510及び第nのモジュール512までを含む多数の付加的なソフトウェアモジュール510、512を実行するプロセッサを備えている。
【0156】
図5の規範的構成によれば、ノード500は、スーパーバイザーモジュール又はスーパーバイザーノードを実行する第2ノードにデータネットワークを経て通信結合される。又、ノード500によりインストールされ且つ実行されるノードマネージャー502は、スーパーバイザーノードと通信するように構成され、そして第1モジュール510及び第nモジュール512までを含めて、ノードにインストールされるソフトウェアモジュール510、512を監視するようにも構成される。ノードマネージャー502は、スーパーバイザーから受け取られる適当なコマンドを実行し、そして更に、ノード500、ノードマネージャー502、及び第1モジュール510から第nモジュール512まで、の1つ以上の状態に関してレポートする。第1モジュール500は、1つ以上のスーパーバイザーにリンクされ、そしてノードの1つ以上の他のモジュールにリンクされ、ここで、ノードの他のモジュールは、第1モジュール510とは異なる形式であるか、又は第1モジュール510とで形式を共有する。更に、第1モジュール510は、システム内で1つ以上の他のモジュール、ノード又はクラスターとリンクされる。
【0157】
図6は、ステップ602、604及び606を有するノード設定600を示すフローチャートである。
【0158】
ステップ602において、ノードに使用するのに適したオペレーティングシステム(OS)がノードにロードされる。1つ以上の実施形態において、OSは、ノードの製造者により自動的にロードされる。1つ以上の他の実施形態では、OSは、1つ以上のオペレータによりノードにロードされる。
【0159】
ステップ604において、ノードにロードされるOSと共に使用するのに適したノードマネージャーは、1つ以上のオペレータにより手動でインストールされ、ここで、インストールは、ノードマネージャーに加えて1つ以上ののどの望ましいモジュールがノードにインストールされるか決定する。
【0160】
ステップ606において、ノードマネージャーは、ハートビートをスーパーバイザーに送り、前記ハートビートは、1つ以上のモジュールをインストールするインストラクションをノードが受け取る準備ができたとスーパーバイザーが決定するに充分な情報を含む。
【0161】
図7は、ステップ702、704、706、708、710、712及び714を有するモジュール設定700を示すフローチャートである。
【0162】
ステップ702において、スーパーバイザーは、システムに対して定義されたデータ集合体のニーズに基づいて1つ以上のモジュールを1つ以上のノードにインストールすべきことを決定する。スーパーバイザーは、次いで、前記1つ以上のノードにおける1つ以上のノードマネージャーにインストール準備インストラクションを送出する。ある実施形態において、スーパーバイザーは、データ集合体(データ断片又はデータの部分を含む)、及び各集合体に関連した構成設定を追跡する。又、スーパーバイザーは、利用可能な全てのノード及びそれらのソース(ノードマネージャーによりレポートされた)について知っている。スーパーバイザーは、システムのニーズを利用可能なノードリソースへマップし(即ち、相関させ)、各ノードにおいてどのデータ断片又は部分及びどのシステムサービス又はリソースを実行すべきか決定する。次いで、スーパーバイザーは、クライアント側でインストールを実行するようにノードマネージャーに命令するために、定義された依存性を含む展開/インストール要求を適当なノードマネージャーへ送出する。
【0163】
ステップ704において、ノードマネージャーは、1つ以上の望ましいモジュールを実行するために、コンピュータメモリ、ディスクストレージ及び/又はCPU容量の一部分のようなノードのリソースを割り当てる。1つ以上の実施形態において、リソースの割り当ては、スーパーバイザーがプロセスを中断すると、ある期間の後に終了となる。リソースの非限定例は、コンピュータメモリ、ディスクストレージ、及び/又はCPU容量の一部分を含む。必要なリソースは、スーパーバイザーが所与のノードに指定するデータ及び/又はサービスを使用して決定される。必要なリソースの詳細は、依存性マネージャーに記憶されるソフトウェア及びデータ依存性を定義するパッケージにおいて特定される。
【0164】
ステップ706において、スーパーバイザーは、ノードにインストールされるべき1つ以上のモジュールに関連した1つ以上の構成パッケージに対して依存性マネージャーへ要求を送出する。
【0165】
ステップ708において、スーパーバイザーは、次いで、展開、インストール及びスタートされるべきノードマネージャーへ構成パッケージを送出する。全てのデータ、ソフトウェア及びメタデータ依存性を含む構成パッケージは、システムアドミニストレータにより定義され、そして依存性マネージャーに記憶される。
【0166】
ステップ710において、ノードマネージャーは、適当なサーバーから1つ以上のモジュールを実行するために要求されるソフトウェア及びデータを読み取る。適当なソフトウェア及びデータは、1つ以上のレコードをインデックスし、圧縮し、解凍し、スコア付けし、スライスし、接合し、又はその他、処理するのに適したソフトウェア、データ及びメタデータ、並びにシステムの1つ以上の他のコンポーネントと通信し、整合し、監視し、又はその他、相互作用するのに適したソフトウェア及びデータを含む。
【0167】
ステップ712において、ノードマネージャーは、ステップ710でフェッチされた要求されたソフトウェアをインストールする。
【0168】
ステップ714において、ノードマネージャーは、ステップ712でインストールされたソフトウェアを実行する。
【0169】
図8は、ステップ802、804、808、810、812、814、818及び820を有し且つチェック806及び816を有する質問処理800を示すフローチャートである。
【0170】
ステップ802において、システムによりホストされるブラウザベースのグラフィックユーザインターフェイス(GUI)又はクライアントコンピュータのネーティブGUIのような外部ソースにより生成されるデータベース質問が1つ以上のサーチマネージャーにより受け取られる。その質問は、ユーザが提出した又はプログラムで自動的に生成されたサーチパラメータを含む適当なソフトウェアソースコードを表わすバイナリデータを含む。サーチ質問に使用されるソースコード言語は、オブジェクト又はクラスのような複雑なデータ構造体を取り扱うことのできるデータシリアル化言語である。このデータシリアル化言語は、複雑なデータオブジェクト又は構造体をデジタルビットのシーケンスへと変換するのに使用され、そしてほとんどの装置管理できるフォーマットで複雑なオブジェクトのデータを与える。ある実施形態では、質問は、スキーマファイル(例えば、XSD)に従って有効とされるか、又はその他、理解されるXML及びHTMLのようなマークアップ言語で表わされる。ある実施形態において、質問は、スキーマファイルに従って有効とされるか、又はその他、理解されるJSONのような複雑なデータ構造体として表わされるか、又はその他、それを通信する。質問は、質問のパラメータを満足する望ましいレコードに対してデータベースをサーチするのに適したインストラクションを含み、そしてある実施形態では、適当なインストラクションは、サーチすべき1つ以上の集合体のリストを含む。
【0171】
ステップ804において、外部ソースから受け取られた質問は、1つ以上のサーチマネージャーにより関連質問言語(例えば、SQL)に従ってパースされ、これにより、適当なノード(例えば、サーチコンダクタ、分析エージェント)で実行されるべきマシン読み取り可能な質問を生成する。あるケースでは、質問のソフトウェア言語に関連したスキーマファイルには、質問を生成するコードや受け容れられた規格により又はサーチマネージャーに対してネーティブに生成された質問が与えられる。スキーマファイルは、サーチ質問を適切にパースすることについてサーチマネージャーに命令する。例えば、サーチ質問が1つ以上のマークアップ言語(例えば、XML)を使用して準備されるか、又はデータ構造体(例えば、JSON)を含む場合には、XMLコード又はJSONコードの各マークアップタグ内のデータを識別し及び/又は有効とするために、XSDベースのスキーマファイルのようなスキーマファイルがサーチ質問コード又はデータ構造体に関連付けられる。
【0172】
チェック806において、サーチマネージャーは、ユーザが与えた質問又はアプリケーションで生成された質問に基づき、データベース及び/又は質問の1つ以上のフィールドの処理を遂行すべきかどうか決定する。フィールド処理の非限定例は、とりわけ、アドレス標準化、接近境界の決定、及び同意語の解釈を含む。ある実施形態において、システムの自動処理又は手動処理は、サーチプロセス800に関連した他のプロセスが質問のフィールドに含まれた情報の使用を要求するかどうか決定しそして識別する。ある実施形態において、1つ以上のサーチマネージャーは、質問の1つ以上のフィールドのどれが望ましい処理を受けるか自動的に決定しそして識別する。
【0173】
ステップ808において、1つ以上のフィールドのフィールド処理がチェック806で望ましいとシステムが決定した後に、サーチマネージャーは、1つ以上の適当なフィールド処理技術をその望ましいフィールドに適宜に適用する。
【0174】
ステップ810において、サーチマネージャーは、サーチ質問に関連したサーチコンダクタ質問を構成する。ある実施形態では、サーチコンダクタ質問は、スタックベースサーチのような適当なサーチ質問実行プランに従って、システムの種々のノード(例えば、サーチマネージャー、サーチコンダクタ、ストレージノード)により処理されるように構成される。サーチ質問は、適当なバイナリフォーマット又は他のマシン読み取り可能なコンパクトなフォーマットを使用してエンコードされることが明らかである。
【0175】
ステップ812において、1つ以上のサーチマネージャーは、1つ以上のサーチコンダクタ質問を1つ以上のサーチコンダクタへ送出する。ある実施形態において、サーチマネージャーは、どのサーチコンダクタがサーチコンダクタ質問を受け取るべきか自動的に決定し、次いで、そのサーチコンダクタ質問を、サーチコンダクタの識別されたサブセットへ送出する。そのような実施形態では、サーチコンダクタは、データのある集合体に予め関連付けられ、そしてシステムインターフェイスから受け取られるサーチ質問は、質問されるべき集合体を特定する。従って、サーチマネージャーは、1つ以上のサーチ質問において特定された集合体に関連したサーチコンダクタへサーチコンダクタ質問を送出する。
【0176】
ステップ814において、サーチコンダクタは、サーチ結果を、それに対応するサーチマネージャーへ返送する。ある実施形態では、サーチ結果は、同期して返送され、そしてある実施形態では、サーチ結果は、非同期で返送される。同期とは、サーチマネージャーが結果を阻止するか又はオペレーションを停止する一方、特定のサーチコンダクタからサーチコンダクタ結果を待機する実施形態を指す。非同期とは、他の結果を阻止したり又は他のオペレーションを停止したりせずに、サーチマネージャーが多数のサーチコンダクタから同時に即ち並列に結果を受け取ることができる実施形態を指す。サーチコンダクタからサーチ結果を受け取った後、サーチマネージャーは、各サーチコンダクタから受け取った結果を、サーチコンダクタから返送されるレコードスコアに基づいて、1つ以上の結果リストへまとめる。
【0177】
チェック816において、サーチマネージャーは、サーチマネージャーによりコンパイルされたサーチ結果の付加的な分析処理を、サーチ質問における指示に基づいて遂行すべきかどうか決定する。あるケースでは、その指示は、ユーザによりサーチ質問に含まれる。ある実施形態では、システムは、サーチ質問に含まれた情報を使用して分析処理が望ましいかどうか決定する。ある実施形態では、1つ以上のサーチマネージャーは、フィールドが望ましい分析処理を受けるべきであることを自動的に決定する。サーチ質問は、サーチ質問に関連した他のデータ(例えば、ストリング、オブジェクト)と共にインストラクションを搬送できるソフトウェアプログラミング言語で構成される。マークアップ言語のようなあるプログラミング言語は、コードに埋め込まれたメタデータタグを使用して、分析を行うべきかどうかのブール値を指示するフィールド、又は実行されるべき特定の分析モジュール及び/又はその特定の分析モジュールをホストする分析エージェントノードを指示するより複雑なユーザ定義フィールド、のような種々の形式のデータを識別する。JavaScript又はPHPのようなあるプログラミング言語は、分析を行うべきかどうか識別するコードを含む記憶されたコンピュータファイルを参照し、これは、実行されるべき特定の分析モジュール及び/又はその特定の分析モジュールをホストする分析エージェントノードを指示するより複雑なユーザ定義フィールドである。
【0178】
処理が望まれることをシステムがチェック816で決定した場合には、ステップ818において、1つ以上の分析エージェントが1つ以上の適当な処理技術を1つ以上の結果リストに適用する。1つ以上の実施形態において、適当な技術は、とりわけ、多数のレコードをより完全なレコードへとロールアップし、結果に対して1つ以上の分析を遂行し、及び/又はレコード間の関係に関する情報を決定することを含む。次いで、分析エージェントは、1つ以上の処理済結果リストを1つ以上のサーチマネージャーへ返送する。
【0179】
ステップ820において、1つ以上のサーチマネージャーは、1つ以上の結果リストを解凍し、そして質問を開始したシステムへそれを返送する。
【0180】
図9は、ステップ902、904、908、910及び912を有し且つチェック906を有するサーチコンダクタ機能900を示すフローチャートである。
【0181】
ステップ902において、サーチマネージャーは、1つ以上のサーチコンダクタに質問を送出する。
【0182】
ステップ904において、サーチコンダクタは、そのロードされたパーティションに対して質問を実行し、候補結果セットを生成する。1つ以上の実施形態において、ステップ904は、1つ以上のインデックスサーチを含む。1つ以上の実施形態において、サーチコンダクタは、1つ以上のスキーマの情報を使用して、質問を実行する。
【0183】
チェック906において、サーチコンダクタは、特定の質問に基づき、サーチコンダクタ質問においてスコア付けが要求されたかどうか決定する。スコア付けは、サーチマネージャーにより受け取られたサーチ質問に指示される。
【0184】
スコア付けが要求された場合に、サーチコンダクタは、ステップ908において、候補結果セットをスコア付けする。デフォールトスコアスレッシュホールドは、スキーマにおいて定義されるか、又はステップ902でサーチマネージャーにより送られたサーチコンダクタ質問に含まれる。1つ以上の実施形態において、初期のスコア付けは、フィールド特有のスコア付けアルゴリズムでフィールドレベルにおいてサーチコンダクタによって行われ、そこには、1つ以上の他のスコア付けアルゴリズムで無効化されるデフォールトがある。スコア付けアルゴリズムは、サーチ質問及び/又はサーチコンダクタ質問において定義されるか、又はその他、識別され、そしてサーチコンダクタにより適宜に遂行される。サーチコンダクタは、それらの個々のフィールドスコアに基づいて複合スコアをレコードに与える。ある実施形態では、1つ以上のフィールドスコア又は他の総計スコアを総計することによりスコアを計算できる1つ以上の総計スコア付け方法がサーチコンダクタにより適用される。
【0185】
ステップ910において、サーチコンダクタは、次いで、スコアを使用して、候補結果セットにおける残りのレコードを分類する。
【0186】
チェック912において、サーチコンダクタは、候補結果セットをサーチマネージャーへ返送し、ここで、返送される結果の数は、ステップ902でサーチマネージャーにより送られた質問において要求されたサイズに限定される。
【0187】
図10は、ステップ1002、1004、1006、1010及び1012を有し且つチェック1008を遂行する集合体パーティショニング1000を示すフローチャートである。
【0188】
ステップ1002において、1つ以上の集合体が1つ以上のパーティショナーへ供給される。それら集合体は、1つ以上のスキーマに関連して供給され、1つ以上のパーティショナーが、1つ以上の集合体のレコードをどのように操作するか理解できるようにする。
【0189】
ステップ1004において、1つ以上の集合体のレコードが断片化される。
【0190】
チェック1008において、システムは、所与のデータ集合体についてスキーマをチェックし、そしてパーティション内のフィールドをパーティショナーによりインデックスすべきかどうか決定する。インデックスは、日付インデックス又は曖昧インデックス(例えば、表音)のように、既知のデータベースに使用されるフィールドインデックスの適当な例である。
【0191】
パーティショナーがパーティション内のフィールドをインデックスすべきであるとシステムがチェック1008において決定した場合には、ステップ1010において、パーティショナーは、スキーマにおけるインデックス定義に基づいてパーティションをインデックスする。
【0192】
チェック1012において、システムは、所与のデータ集合体に対してスキーマをチェックし、そしてパーティショナーによりパーティションを圧縮すべきかどうか決定する。
【0193】
パーティショナーがパーティションを圧縮すべきであるとシステムがチェック1012において決定した場合には、ステップ1014において、パーティショナーは、スキーマで特定された圧縮方法を使用してフィールド及びレコードを圧縮し、これは、パーティションを充分に圧縮しながら、更に、フィールドレベルでの解凍を許すのに適した技術である。
【0194】
ステップ1016において、システムは、パーティションを配布するのに適したパーティションを1つ以上のサーチコンダクタに記憶する。
【0195】
集合体パーティショニング1000は、大きなデータ集合体の最初のロード、再ロード又は置き換えを生成する。パーティショナーは、集合体内の各レコードに独特のレコードIDを指定し、パーティションされた集合体にバージョン番号を指定し、及び更に、要求された集合体スキーマを、1つ以上のSM及び1つ以上のSCにより使用するためのパーティションセットバージョンに関連付ける。
【0196】
第2の実施形態では、適当な質問インターフェイスを含む1つ以上の適当なインターフェイスを通して新たなレコードが集合体に追加される。質問インターフェイスは、質問を経ての結果セットの返送をサポートするが、集合体バージョンに関連した集合体スキーマの返送もサポートする。更に、サーチインターフェイスは、1人以上のユーザがその集合体スキーマを使用して、新たなレコードを、サーチインターフェイスを通してサーチマネージャーへ提出することにより集合体に追加できるようにする。次いで、サーチマネージャーは、集合体に加えて適当なサーチコンダクタへ新たなレコードを配布する。ある実施形態では、サーチマネージャーは、所与のパーティションの複数のコピーにわたって最終的な一貫性を保証し、そして不揮発性ストレージに対するデータ耐久性を保証して、システム欠陥の後にデータが利用できることを確保する。
【0197】
1つ以上の実施形態において、レコードは、同様の仕方で削除される。質問からの結果セットは、レコードごとに不透明な独特のIDを含む。この独特のIDは、必要な情報をエンコードして、集合体の所与のバージョンにおける特定のレコードを独特に識別し、そしてとりわけ、集合体の名前、パーティションセットのバージョン、及び独特のレコードID、の1つ以上を含む。適当な許可で、質問インターフェイスは、独特のレコードIDに対応するレコードを削除する要求を受け容れる。このレコードは、即座に物理的に削除できず、削除についてマークされ、そして将来の返答セットにはもはや含まれない。
【0198】
1つ以上の他の実施形態において、新たな集合体スキーマ又は削除要求が質問インターフェイスへ提出されて、各々、新たな集合体を生成するか又は既存の集合体を除去する。このように生成される新たな集合体は、空で出発し、上述したメカニズムを含む適当なメカニズムを使用してレコードを追加することができる。
【0199】
図11は、ステップ1102、1104、1106、1108、1112、1114、1116、1118及び1120を有し、及びチェック1110を遂行するパーティションローディング1100を示すフローチャートである。
【0200】
ステップ1102において、スーパーバイザーは、1つ以上のパーティションを1つ以上のサーチコンダクタへロードすべきであることを決定する。
【0201】
ステップ1104において、スーパーバイザーは、依存性マネージャーへ構成要求を送出し、そして依存性マネージャーは、1つ以上のサーチコンダクタにロードされるべき1つ以上のパーティションに関連した1つ以上の構成パッケージを返送する。
【0202】
ステップ1106において、スーパーバイザーは、どのサーチコンダクタにパーティションをロードすべきか決定する。1つ以上の実施形態において、スーパーバイザーは、望ましいフェイルオーバー能力を与えるために1つ以上のどのサーチコンダクタを使用するか決定する。1つ以上の他の実施形態では、スーパーバイザーは、1つ以上のクラスターが知覚するワークロードを良好に均すために1つ以上のどのサーチコンダクタを使用するか決定する。
【0203】
ステップ1108において、スーパーバイザーは、1つ以上のサーチコンダクタを含むノードに関連した1つ以上のノードマネージャーへコマンドを送信する。1つ以上の実施形態では、コマンドは、1つ以上のサーチコンダクタにパーティションをロードするためにスーパーバイザーから更に別のインストラクションを待機するように1つ以上のノードマネージャーに通知する。別の実施形態では、コマンドは、1つ以上のサーチコンダクタへロードされるべき1つ以上のパーティションに関連した1つ以上の構成パッケージを含む。1つ以上の他の実施形態では、コマンドは、新たなパーティションをメモリにロードするために前記1つ以上のサーチコンダクタを準備するインストラクションを含む。
【0204】
ステップ1110において、1つ以上のノードマネージャーは、パーティションをロードするのに要求されるノードリソースを割り当てる。
【0205】
チェック1112において、1つ以上のノードマネージャーは、1つ以上のパーティションをロードするために1つ以上のソフトウェア又はデータ更新が要求されるかどうか決定する。
【0206】
1つ以上のソフトウェア又はデータ更新が要求されることを1つ以上のノードマネージャーが決定した場合に、ステップ1114において、1つ以上のノードマネージャーは、次いで、前記1つ以上のソフトウェア更新を記憶し及び配布するのに適した1つ以上のノードから前記1つ以上のソフトウェア又はデータ更新を検索する。1つ以上のノードマネージャーは、次いで、1つ以上の検索されたソフトウェア又はデータ更新をインストールするように進む。
【0207】
ステップ1116において、1つ以上のノードマネージャーは、1つ以上のパーティションを記憶し及び配布するのに適した1つ以上のノードから前記1つ以上のパーティションを検索する。1つ以上の実施形態において、検索されたパーティションは、以前にインデックス及び記憶されており、そして検索されると、1つ以上のサーチコンダクタに関連したメモリにロードされる。別の実施形態では、検索されたパーティションは、検索される前にインデックス又は圧縮されておらず、そして1つ以上のサーチコンダクタに関連したメモリへロードされる前に1つ以上のサーチコンダクタによりインデックス又は圧縮される。
【0208】
ステップ1118において、1つ以上のサーチコンダクタは、ハートビートをスーパーバイザーへ送出し、そしてスーパーバイザーは、1つ以上のサーチコンダクタがシステムに使用する準備ができたことを決定する。
【0209】
ステップ1120において、スーパーバイザーは、1つ以上のサーチコンダクタがサーチ質問を受け取る準備ができたことを1つ以上のサーチマネージャーに通知する。
【0210】
図12Aは、集合体1202と、集合体1210で示された集合体1202の更新とを示す。集合体1202は、少なくとも、第1のパーティション1204、及び第nのパーティション1206まで、に分割され、そして集合体1210は、少なくとも、第1のパーティション1212、及び第nのパーティション1214まで、に分割される。
【0211】
図12Bは、第1のパーティション1204及び第nのパーティション1206までの第1セットを有する第1のサーチノード1220と、第1のパーティション1204及び第nのパーティション1206までの第2セットを有する第2のサーチノード1230を示し、第1のサーチノード1220及び第2のサーチノード1230は、両方とも、少なくとも1つのサーチマネージャー1240に接続される。更に、第1のサーチノード1220、第2のサーチノード1230及びサーチマネージャー1240は、1つ以上のスーパーバイザー1250に接続される。
【0212】
図12Cは、スーパーバイザー1250からのコマンドの結果としてサーチマネージャー1240から切断された第1のサーチノード1220を示し、一方、第2のサーチノード1230は、依然、接続を維持している。1つ以上の実施形態において、これは、第1のサーチノード1220がアップグレードされたときサーチマネージャー1240が集合体1202内のレコードのサーチを実行できるようにする。
【0213】
図12Dは、第1のサーチノード1220が集合体1210を含むようにアップグレードされたところを示す。
【0214】
図12Eは、スーパーバイザー1250からのコマンドの結果として第1のパーティション1212及び第nのパーティション1214までがサーチマネージャー1240に接続された第1のサーチノード1220を示す。スーパーバイザー1250は、次いで、サーチマネージャー1240から第2のサーチノード1230を切断するコマンドを送出する。1つ以上の実施形態において、これは、サーチマネージャー1240が集合体1210のレコードに対してサーチを実行するのを許す。
【0215】
図12Fは、集合体1210を含むように更新される第2のサーチノード1230を示す。
【0216】
図12Gは、第1のパーティション1212及び第nのパーティション1214までの第1セットを有する第1のサーチノード1220と、サーチマネージャー1240に接続された第1のパーティション1212及び第nのパーティション1214までの第2セットを有する第2のサーチノード1230を示し、第2のサーチノード1230とサーチマネージャー1240との間の接続は、スーパーバイザー1250からのコマンドの結果として確立されている。これは、サーチマネージャー1240が第1のサーチノード1220又は第2のサーチノード1230のいずれかにおける集合体1210のレコードのサーチを実行できるようにする。
【0217】
図13は、第1のサーチノード1302、第2のサーチノード1304、第3のサーチノード1306、第4のサーチノード1308、第1の集合体に対する第1のパーティション1310、第2のパーティション1312、第3のパーティション1314、及び第4のパーティション1316、並びに第2の集合体に対する第1のパーティション1320、第2のパーティション1322、第3のパーティション1324、及び第4のパーティション1326を有するサーチノードクラスターを示す。
【0218】
サーチノードクラスター1300は、望ましいパーティション冗長性レベルを与えるように構成され、1つ以上のサーチノードを適宜にシステムに追加したり又はシステムから除去したりすることができる。更に、1つ以上のサーチノードに含まれるパーティションは、時間と共に変化し、そしてパーティションローディング1100と同様のプロセスに従ってサーチノードのノードマネージャーによりロード又はアンロードされる。サーチノードクラスター1300におけるパーティションを更新、又はその他、変更するとき、
図12A、12B、12D、12E、12F及び12Gに示すものと同様の方法が使用される。
【0219】
図14は、ラインタイプA1402、ラインタイプB1404、ラインタイプC1406、ラインタイプD1408、第1のネットワークセグメント1410、第2のネットワークセグメント1412、第3のネットワークセグメント1414、第1のサーチマネージャー1420、第nのサーチマネージャー1422、第1の分析エージェント1430、第nの分析エージェント1432、第1のサーチコンダクタ1440、第nのサーチコンダクタ1442、パーティショナー1450、第1の依存性マネージャー1460、第nの依存性マネージャー1462、第1のスーパーバイザー1470、及び第nのスーパーバイザー1472を有する接続
図1400を示す。
【0220】
1つ以上の実施形態において、ラインタイプA1402は、第1の帯域巾層及び第1のレイテンシー層を有する接続を表わし、ラインタイプB1404は、第2の帯域巾層及び第1のレイテンシー層を有する接続を表わし、ラインタイプC1406は、第3の帯域巾層及び第2のレイテンシー層を有する接続を表わし、そしてラインタイプD1408は、第4の帯域巾層及び第2のレイテンシー層を有する接続を表わす。1つ以上の実施形態において、第1の帯域巾層は、第2の帯域巾層より高い帯域巾に関連付けられ、第2の帯域巾層は、第4の帯域巾層より高い帯域巾に関連付けられ、そして第1のレイテンシー層は、第2のレイテンシー層より低いレイテンシーに関連付けられる。
【0221】
1つ以上の実施形態において、第1のネットワークセグメント1410は、ラインタイプA1402、ラインタイプB1404及びラインタイプC1406を含む適当な接続を使用して外部サーバーに接続される。又、第1のネットワークセグメント1410は、ラインタイプA1402接続を使用して第1のサーチマネージャー1420及び第nのサーチマネージャー1422までを含む第1クラスターにも接続される。
【0222】
1つ以上の実施形態において、第2のネットワークセグメント1412は、ラインタイプA1402接続を使用して第1のサーチマネージャー1420及び第nのサーチマネージャー1422までを含む第1クラスターに接続される。第2のネットワークセグメント1412は、ラインタイプA1402接続を使用して第1の分析エージェント1430及び第nの分析エージェント1432までを含む第2クラスター、ラインタイプB1404接続を使用して第1のサーチコンダクタ1440から第nのサーチコンダクタ1442までを含む第3クラスター、ラインタイプD1408接続を使用して第1の依存性マネージャー1460から第nの依存性マネージャー1462までを含む第4クラスター、及びラインタイプD1408接続を使用して第1のスーパーバイザー1470から第nのスーパーバイザー1472までを含む第5クラスターにも接続される。
【0223】
1つ以上の実施形態において、ラインタイプA1402の帯域巾層は、第1のサーチマネージャー1420から第nのサーチマネージャー1422までを含む第1クラスターが、少なくとも、第1のサーチコンダクタ1440から第nのサーチコンダクタ1442までを含む第3クラスターにおける適当な数のサーチコンダクタから適当な量の情報を受け取れるように保証するのに充分なものである。ラインタイプA1402のレイテンシー層は、少なくとも、システムが望ましい数の質問を実行するに充分な応答を行えるように充分に低い。
【0224】
1つ以上の実施形態において、ラインタイプB1404の帯域巾層は、第1のサーチコンダクタ1440から第nのサーチコンダクタ1442までを含む第3クラスターにおけるサーチコンダクタが、少なくとも、望ましいサイズの結果を返送できることを保証するに充分なものである。ラインタイプB1404のレイテンシー層は、少なくとも、システムが望ましい数の質問を実行するに充分な応答を行えるように充分に低い。
【0225】
1つ以上の実施形態において、ラインタイプD1408の帯域巾層は、第1の依存性マネージャー1460から第nの依存性マネージャー1462までを含む第4クラスターにおける依存性マネージャーが、少なくとも、望ましい数のパッケージ要求を受け取りそして望ましい数のパッケージを返送できることを保証するに充分なものである。更に、ラインタイプD1408の帯域巾層は、第1のスーパーバイザー1470から第nのスーパーバイザー1472までを含む第5クラスターにおけるスーパーバイザーが、少なくとも、望ましい数のノード及びモジュールを監視及び管理できることを保証するに充分なものである。ラインタイプD1408のレイテンシー層は、少なくともシステムを望ましい期間中管理しそして望ましい監視頻度を与えることができるように充分低いものである。
【0226】
1つ以上の実施形態において、第3のネットワークセグメント1414は、ラインタイプC1406接続を使用して第1のサーチコンダクタ1440から第nのサーチコンダクタ1442までを含む第3クラスターに、ラインタイプD1408接続を使用して第1の依存性マネージャー1460から第nの依存性マネージャー1462までを含む第4クラスターに、ラインタイプD1408接続を使用して第1のスーパーバイザー1470から第nのスーパーバイザー1472を含む第5クラスターに、及びラインタイプC1406接続を使用して1つ以上のパーティショナー1450を含む第6クラスターに、接続される。
【0227】
1つ以上の実施形態において、ラインタイプB1404の帯域巾層は、1つ以上のパーティショナー1450が少なくとも望ましい集合体にアクセスしそして望ましい期間内に望ましい数のパーティションを出力できることを保証するのに充分なものである。更に、ラインタイプB1404の帯域巾層は、第1のサーチマネージャー1420及び第nのサーチマネージャー1422までを含む第1クラスターが、少なくとも、望ましい期間内に望ましい数のパーティションをロードできることを保証するのに充分なものである。ラインタイプB1404のレイテンシー層は、少なくとも、接続を使用するノードが望ましい期間内にシステムのコマンドに反応し、そしてシステムが望ましい監視頻度を与えることができるようにするに充分なほど低い。
【0228】
1つ以上の実施形態において、ラインタイプD1408の帯域巾層は、第1の依存性マネージャー1460から第nの依存性マネージャー1462までを含む第4クラスターにおける依存性マネージャーが、少なくとも、望ましい数のパッケージ要求を受け取りそして望ましい数のパッケージを返送できることを保証するに充分なものである。更に、ラインタイプD1408の帯域巾層は、第1のスーパーバイザー1470から第nのスーパーバイザー1472までを含む第5クラスターにおけるスーパーバイザーが、少なくとも、望ましい数のノード及びモジュールを監視及び管理できることを保証するに充分なものである。ラインタイプD1408のレイテンシー層は、システムを望ましい期間中管理しそして望ましい監視頻度を与えることができるように充分低いものである。
【0229】
1つ以上の実施形態において、第1のスーパーバイザー1470から第nのスーパーバイザー1472までを含む第5クラスターは、適当な数のノードにおける1つ以上のノードマネージャーへのラインタイプD1408接続を有する。
【0230】
1つ以上の他の実施形態において、1つ以上の他の形式のモジュールを含む付加的なクラスターは、第1のネットワークセグメント1410、第2のネットワークセグメント1412、及び/又は第3のネットワークセグメント1414に接続され、ここで、接続は、ラインタイプA1402、ラインタイプB1404、ラインタイプC1406、及び/又はラインタイプD1408接続を含む。
【0231】
図15は、スーパーバイザー1520、第nのスーパーバイザー1504、第1の依存性ノード1410、依存性ノードマネージャー1512、依存性マネージャー1514、第nの依存性マネージャー1520、第nの依存性ノードマネージャー1522、第nの依存性マネージャー1524、第1ノード1530、ノードマネージャー1532、モジュール1534、第nノード1540、第nのノードマネージャー1542、及び第nのモジュール1544を含む欠陥許容アーキテクチャー1500を示す。
図15の規範的システム1500のようなある実施形態は、ノードを複数のクラスターへと論理的に編成する。しかしながら、ある実施形態は、もしあれば、1つの論理的クラスターを有してもよい。
【0232】
1つ以上の実施形態において、第1のクラスターは、スーパーバイザー1502、及び第nのスーパーバイザー1504までを含む。各スーパーバイザー1502は、スーパーバイザー1502と第2クラスターの1つ以上のノードとの間の通信を容易にするのに適したネットワークインターフェイスカード(NIC)のようなネットワークインターフェイスコンポーネントを備えている。第2のクラスターは、第1の依存性ノード1510、及び第nの依存性ノード1520までを含み、第1の依存性ノード1510は、ノードマネージャー1512及び依存性マネージャー1514を含み、そして第nの依存性ノード1520は、第nのノードマネージャー1522及び第nの依存性マネージャー1524を含む。前記第1クラスターのスーパーバイザーは、更に、第1のノード1530及び第nのノード1540までを含む第3クラスターにおける1つ以上のノードと通信するのに適した適当な数の接続を含み、ここで、第1のノード1530は、ノードマネージャー1532及び適当な数のモジュール1534を含み、そして第nのノード1540は、第nのノードマネージャー1542及び適当な数の第nのモジュール1544を含む。
【0233】
1つ以上のスーパーバイザー1502は、1つ以上のノードマネージャー1512、1つ以上の依存性マネージャー1514、及び適当な数のノードマネージャー1532及びモジュール1534からハートビートを受け取る。1つ以上の実施形態において、これは、1つ以上のスーパーバイザー1502が分散型コンピューティングシステムにおける1つ以上のノード及び/又はモジュールの状態を監視できるようにする。更に、スーパーバイザー1520は、1つ以上の適当なコマンドを適当な数のノードマネージャー1512及び適当な数のノードマネージャー1532へ送信する。
【0234】
1つ以上の実施形態において、スーパーバイザー1502は、1つ以上のモジュール1534を1つ以上のノード1530にインストールするとき1つ以上の依存性ノード1510から構成パッケージを要求する。
【0235】
図16は、規範的実施形態によるノード1600の構成を示す図である。
図16のノード1600は、ノードマネージャー1602ソフトウェアモジュール、並びに第1のソフトウェアモジュール1610及び第nのモジュール1612までを含む任意の数の付加的なソフトウェアモジュール1610、1612を実行するプロセッサを備えている。それらソフトウェアモジュールは、サーチマネージャー、サーチコンダクタ、分析エージェント、スーパーバイザー、及び依存性マネージャーを含むシステムモジュールのいずれかを含む。
【0236】
図16の規範的な構成によれば、ノード1600は、データネットワークを経て、スーパーバイザーモジュール又はスーパーバイザーノードを実行する第2ノードに通信結合される。又、ノード1600によりインストールされそして実行されるノードマネージャー1602は、スーパーバイザーノードと通信するようにも構成され、そして第1モジュール1610から第nモジュール1612までを含めて、ノードにインストールされるソフトウェアモジュール1610、1612を監視するようにも構成される。ノードマネージャー1602は、スーパーバイザーから受け取った適当なコマンドを実行し、そして更に、ノード1600、ノードマネージャー1602、及び第1モジュール1610ないし第nモジュール1612の1つ以上の状態についてレポートする。第1モジュール1610は、1つ以上のスーパーバイザーにリンクされ、そしてノード内の1つ以上の他のモジュールにリンクされ、ここで、ノード内の他のモジュールは、第1モジュール1610とは異なるタイプであるか、又は第1モジュール1610とタイプを共有するものである。更に、第1モジュール1610は、システム内の1つ以上の他のモジュール、ノード又はクラスターにリンクされる。
【0237】
図17は、欠陥取り扱い1700のフローチャートである。
【0238】
スーパーバイザーは、システムの全データ集合体の定義及び構成を維持し、これは、各パーティションの冗長コピーがどれほど多く望まれるか、欠陥コンポーネントを別のノードへ移動する前に欠陥コンポーネントの再スタートを何回試みるか、等を指示する集合体ごとの設定を含む。又、スーパーバイザーは、ノードマネージャーにより与えられる利用可能なノード及びそれらのリソースのリストも維持する。その情報から、スーパーバイザーは、構成設定に合致しながら必要なシステムモジュールを利用可能なノードへマッピングすることにより望ましいシステム状態を計算する。欠陥取り扱い1700は、スーパーバイザーがモジュール欠陥を検出することで始まり(1702)、ここで、1つ以上のスーパーバイザーは、実際のシステム状態を望ましいシステム状態と比較することにより、1つ以上のモジュールの欠陥を検出する。1つ以上の実施形態において、スーパーバイザーは、ノードマネージャー又はシステムモジュールからの1つ以上のハートビートがもはや検出されないときに欠陥を検出する。1つ以上の他の実施形態では、1つ以上のモジュールからのハートビートは、1つ以上のスーパーバイザーにより解釈される1つ以上の他のモジュールに関する状態情報を含む。
【0239】
スーパーバイザーは、データ集合体及びデータ集合体に関連した構成設定の定義を記憶する。又、スーパーバイザーは、ノードマネージャーによってレポートされる利用可能なシステムリソースに関する情報も記憶する。構成情報は、とりわけ、各パーティションの冗長コピーがどれほど多く望まれるか、欠陥コンポーネントを別のノードへ移動する前に欠陥コンポーネントの再スタートを何回試みるかを指示する集合体ごとの設定を含む。全てのこの情報から、スーパーバイザーは、構成設定に依然合致しながら必要なシステムモジュールを利用可能なノードへマップする「望ましい」システム状態を導出する。全てのこの情報は、ディスクに又はIMDB内に予め定められたデータ集合体にJSONファイルとして記憶されるJSONオブジェクトとして表わされる。
【0240】
スーパーバイザーは、次いで、関連ノードマネージャーが機能するかどうか検出する(1704)。
【0241】
1つ以上の欠陥モジュールに関連したノードマネージャーが、望ましく機能するか又は状態quo構成に従って機能する場合には、ステップ1706において、スーパーバイザーが1つ以上のコマンドをノードマネージャーへ送って、1つ以上の欠陥モジュールを再スタートする試みをするようノードマネージャーに命令する。
【0242】
スーパーバイザーは、次いで、モジュールが回復したかどうかチェックし(1708)、もしそうであれば、プロセスは、終了となる(1710)。ある具現化において、モジュールの第1のアクションは、ハートビートを経て状態を1つ以上の利用可能なスーパーバイザーにレポートすることである。モジュール機能が回復していないと決定されると、スーパーバイザーは、再スタートスレッシュホールドに到達したかどうか決定する(1712)。試みのスレッシュホールド回数は、集合体ごとの構成設定であり、これは、システムアドミニストレータによりセットされそしてスーパーバイザーに記憶される。スーパーバイザーは、モジュールが欠陥となり、別のノードへ再スタート又は移動すべきであると決定する。スーパーバイザーは、コマンドを送信し、試みの回数に到達しない場合に、ノードマネージャーは、モジュールの再スタートを試みる(1706)。
【0243】
スレッシュホールドに到達した場合には、スーパーバイザーは、モジュールを配置するために次の適当なノードを決定し(1714)、そしてスーパーバイザーは、全てのモジュール依存性をステージして現在モジュールをスタートするように新たなノードのノードマネージャーに要求する(1716)。
【0244】
スーパーバイザーは、モジュールが回復したかどうかチェックし(1718)、もしそうであれば、プロセスは終了へと進む(1710)。モジュールが回復しない場合には、システムは、新たなノードの再スタートスレッシュホールドに到達したかどうかチェックする(1720)。スレッシュホールドに到達しない場合に、スーパーバイザーは、現在モジュールをステージ及びスタートするように新たなノードのノードマネージャーに要求する(1716)。
【0245】
さもなければ、スーパーバイザーは、全体的ノード再トライスレッシュホールドに到達したかどうかチェックする(1722)。この値は、システムアドミニストレータによっても定義され、そしてスーパーバイザーでスクリプトに或いはJSON又は同様のデータ構造体オブジェクトとして記憶される。スレッシュホールドに到達しない場合には、スーパーバイザーは、モジュールを配置するための次の適当なノードを決定し(1714)、そして新たなノードにおいてノードを再スタートするように試みる。全体的スレッシュホールドに到達した場合には、システムは、次いで、モジュール欠陥を指示するアラームを発する(1724)。
【0246】
ハートビートの欠落、又は欠陥状態を指示するノードマネージャーからのハートビートにより示されるように、対応するハートビートに基づき、関連ノードマネージャーが機能しないことをスーパーバイザーが検出した場合には、スーパーバイザーは、欠陥ノードマネージャーを伴うノードに関連したモジュールを選択する(1726)。次いで、スーパーバイザーは、モジュールを配置するための次の適当なノードを決定する(1728)。その後、スーパーバイザーは、現在モジュールをステージ及びスタートするように新たなノードのノードマネージャーに要求する(1730)。
【0247】
スーパーバイザーは、次いで、モジュールが回復したかどうかチェックする(1732)。モジュールが回復しない場合には、スーパーバイザーは、新たなノードの再スタートスレッシュホールドに到達したかどうかチェックする(1734)。スレッシュホールドに到達していない場合には、スーパーバイザーは、現在モジュールをステージ及びスタートするように新たなノードのノードマネージャーに要求する(1730)。
【0248】
スレッシュホールドに到達した場合には、スーパーバイザーは、次いで、全体的ノード再トライスレッシュホールドに到達したかどうかチェックする(1736)。スレッシュホールドに到達していない場合には、スーパーバイザーは、モジュールを配置するための次の適当なノードを決定し(1728)、そして新たなノードにおいてノードを再スタートするよう試みる。全体的なスレッシュホールドに到達した場合には、システムは、次いで、モジュール欠陥を指示するアラームを発する(1738)。
【0249】
さもなければ、モジュールが回復した場合には、スーパーバイザーは、次いで、欠陥ノードから移行すべきモジュールが更にあるかどうかチェックする(1740)。ノードに欠陥がある場合には、スーパーバイザーは、望ましい状態で定義されたように、欠陥ノードで実行されていた全てのサービスを移行するように構成される(1740)。スーパーバイザーは、欠陥ノードを伴わない新たな望ましい状態を計算し(1740)、そしてそれに応じてサービスを移行させる必要がある。ある具現化において、スーパーバイザーは、欠陥ノードマネージャーを有するノードに関連したモジュールを選択し(1726)、そしてノードマネージャーは、モジュールをステージ及びスタートする試みをする。
【0250】
移行すべきモジュールがそれ以上ないとスーパーバイザーが決定した場合には、プロセスが終了となる(1710)。
【0251】
図18は、スーパーバイザー1802及び依存性マネージャー1804のブロック図接続1800を示す。一般的に、スーパーバイザー1802は、システムを監視し、及び/又はシステムの動作状態を維持するプロセス及びタスクを実行する。スーパーバイザー1802は、システムの変更を行うための適当な構成要求を受け容れる。ソフトウェア又はデータ構成は、依存性マネージャー1804ソフトウェアモジュール又はスーパーバイザー1802ソフトウェアモジュールを実行するノードによって取り扱われるが、個別のデータフレームから展開可能なパッケージが与えられてもよい。個別のデータフレームは、構成に従って展開可能なパッケージを準備するのに使用される1つ以上のリリース可能なファイルを記憶する非一時的マシン読み取り可能なストレージ媒体である。
【0252】
ある実施形態によれば、依存性マネージャー1804は、システム内の適当なソフトウェア又はデータコンポーネントの維持又は構成を含む非一時的マシン読み取り可能なストレージ媒体として使用される。それら構成は、リリースプロセスにおいて新たなデータ、メタデータ又はソフトウェア更新により駆動される。
【0253】
依存性マネージャー1804は、システムの幾つかのプロセスにより要求される構成において役割を演じることができる。即ち、依存性マネージャー1804は、適当な集合体を更新するのに使用されるパーティションに対して「パッケージ」、「構成」、「コンポーネント」及び/又は「ファイル」とも称される適当な依存性を与えるためにスーパーバイザー1802に直接接続される。更に、スーパーバイザー1802は、1つ以上の依存性マネージャー1804にリンクされ、そして1つ以上の他のスーパーバイザー1802にリンクされ、ここで、付加的なスーパーバイザー1802は、システムの他のコンポーネントにリンクされる。
【0254】
図19は、システムの構成プロセスのフローチャート
図1900である。
【0255】
別の実施形態によれば、構成プロセス又は保守プロセスは、どんな依存性をモジュールが有しそしてモジュールと共に展開する必要があるかに関する情報を含む。要求されるファイルは、個別の非一時的マシン読み取り可能なストレージ又は「データフレーム」からフェッチされる。ある実施形態では、このデータフレームは、システムアーキテクチャーの外部であり、例えば、ソフトウェア更新を提供する第三者売主のケースがそうである。適当な展開可能なパッケージにおける依存性は、構成されているモジュール又はパターンに直接リンクされるか又はその周りにラップされる異なるタイプのファイル、データ又はソフトウェアを含む。構成プロセスは、異なるステップ1902、1904、1906、1908、1910及び1912を含む。構成プロセス1900は、データ又はソフトウェアコンポーネントをインストール又は更新するようにシステムに求める要求に応答して開始する。
【0256】
第1ステップ1902において、システムのプロセッサは、構成プロセス1900のシーケンス/ステップをトリガーする状態を自動的に検出する。
【0257】
ある実施形態では、ステップ1902において、スーパーバイザーモジュールを実行するシステムのノードは、ヘルス更新又は「状態」をスーパーバイザーへレポートする役割を果たすノードマネージャーソフトウェアモジュールのようなシステムのコンポーネントをポーリングする。そのような実施形態では、スーパーバイザーは、システム構成で定義されたように、スーパーバイザーがシステムモジュールから受け取ることを期待するハートビート(HB)信号の欠落に基づいてシステム全体にわたり欠陥を自動的に検出する。次いで、スーパーバイザーは、HB信号の欠落の検出に応答して、他の矯正プロセスの中でも、構成プロセス1900をトリガーする。
【0258】
ある実施形態では、ステップ1902において、スーパーバイザーモジュールを実行するシステムのノードは、コンポーネントに対する更新又は新たなノードハードウェアへの移行のようなシステム構成における1つ以上の変更についての外部要求をスーパーバイザーが受け取るときに構成プロセス1900をトリガーする。
【0259】
ステップ1904において、スーパーバイザーは、ノードにインストールされるべき1つ以上のモジュールに関連した1つ以上の展開パッケージを検索する要求を依存性マネージャーへ送出する。展開パッケージは、依存性マネージャーに従ってノード構成を満足するために要求されるファイル及び/又は他の材料の各々を定義する。展開可能なパッケージは、適切な展開に必要なソース及び行先情報を含む全ての必要な依存性を含み、そしてモジュールを構成又はスタートするのに必要なモジュールプロパティを含む。特定の依存性は、依存性マネージャーにも定義されたそれ自身の依存性を有し、それ故、依存性ツリーとも称される。
【0260】
ステップ1906において、スーパーバイザーは、展開パッケージを記憶するデータフレームから要求された展開パッケージをフェッチするためのインストラクションを依存性マネージャーへ送信する。データフレームは、依存性マネージャーを実行するノードに通信結合された適当なコンピューティング装置に配置される非一時的なマシン読み取り可能なストレージ媒体である。あるケースでは、展開パッケージが生成されるときに、展開パッケージは、送出されるモジュールに対する全ての依存性、並びに展開パッケージを適切に展開するに必要なソース及び行先情報を含む。又、展開パッケージは、展開パッケージを構成又はスタートするに必要な1つ以上のモジュールも含む。展開パッケージは、自動プロセス又は手動プロセスを通して生成される。手動の例では、システムアドミニストレータは、必要なファイル及びデータを伴う展開パッケージを識別し及び/又は生成する。自動の例では、スーパーバイザー又は依存性マネージャーは、自動的に識別されるファイルを使用して展開パッケージを自動的に識別し及び/又は生成し、これは、通常、依存性マネージャーにより生成されるテストスクリプトを通して達成されて、人間が実行できる以上のインストール速度及び配布率を生み出す。
【0261】
ステップ1908において、依存性マネージャーがデータフレームから展開パッケージを受け取った後に、依存性マネージャーは、展開パッケージを要求したスーパーバイザーを実行するノードに展開可能なパッケージを送出する。
【0262】
ステップ1910において、スーパーバイザーは、構成を要求するノードのノードマネージャーに展開可能なパッケージを送出する。
【0263】
ステップ1912において、ノードマネージャーは、ファイルをコピーし、インストールを行い、及び/又はスーパーバイザーから受け取った展開可能なパッケージを実行し、それにより、システムに必要な保守、更新又は構成を具現化する。
【0264】
図20は、システムの構成に使用される依存性2000のブロック図である。更に別の実施形態によれば、システムの保守又は構成のためのプロセスは、とりわけ、依存性マネージャー2002、スーパーバイザー2004、サーチノード2006、ノードマネージャー2008及び依存性ツリー2010のような異なるコンポーネントを含む。
【0265】
依存性ツリー2010は、モジュール又はパーティションに直接リンクされるか又はその周りにラップされるファイルの異なるタイプを含み、依存性とは、パーティションの各メンバーがパーティションの他のメンバーの各々に依存する程度である。例えば、依存性ツリー2010は、フォネティック1.0及び圧縮1.0に依存するパーティション1を含み、その後、フォネティック1.0は、ソフトウェアライブラリー(例えば、処理DLL1.0及び入力DLL1.0)に依存し、そして圧縮1.0は、データテーブル1.0に依存し、等々である。
【0266】
依存性マネージャー2002は、システムのリリース可能なファイルに関連した依存性ツリー2010を記憶する。更に別の実施形態では、適当なソフトウェア又はデータコンポーネントが依存性ツリー2010内に指示されるコンポーネントへリリースされる場合には、依存性マネージャー2002は、データフレームに記憶された1つ以上のファイルから展開可能なパッケージを生成する。
【0267】
スーパーバイザー2004は、1つ以上のモジュール、パーティション又はその適当な組み合わせに対して1つ以上の依存性ツリー2010を含む1つ以上の依存性マネージャー2002にリンクされる。スーパーバイザー2004は、更に、1つ以上のスーパーバイザー2004にリンクされ、ここで、付加的なスーパーバイザー2004は、システムの他のコンポーネントにリンクされる。
【0268】
図21は、システムインターフェイス2102、第1のサーチマネージャー2110、第nのサーチマネージャー2112、第1の分析エージェント2120、第nの分析エージェント2122、第1のサーチコンダクタ2130、第nのサーチコンダクタ2132、パーティションデータ2140、パーティショナー2150、第1の集合体2160、第nの集合体2162、スーパーバイザー2170、及び依存性マネージャー2180を有するシステムアーキテクチャー2100を示す。
【0269】
1つ以上の実施形態において、システムインターフェイス2102は、システムアーキテクチャー2100の外部で生成された1つ以上の質問を、第1のサーチマネージャー2110を含む少なくとも1つのノード及び第nのサーチマネージャー2112を含むn個までのノードを備えた第1クラスターにおける1つ以上のサーチマネージャー2110、2112へ供給する。前記第1クラスターにおける1つ以上のサーチマネージャー2110、2112は、少なくとも第1の分析エージェント2120及び第nの分析エージェント2122までを含む第2クラスターにおける1つ以上の分析エージェント2120、2122にリンクされる。
【0270】
第1クラスターにおけるサーチマネージャー2110、2112は、第3クラスターにおける1つ以上のサーチコンダクタ2130、2132にリンクされる。第3クラスターは、少なくとも第1のサーチコンダクタ2130、及び第nのサーチコンダクタ2132までを含む。各サーチノード(即ち、サーチマネージャー2110、2112を実行するノード)は、適当な数のサーチコンダクタ2130、2132を含む。
【0271】
第3クラスターにおけるサーチコンダクタ2130、2132は、パーティションデータ2140を記憶する1つ以上のデータベースノードにリンクされる。パーティションデータ2140は、1つ以上の集合体を1つ以上のパーティションへと少なくとも分割するように構成されたモジュールである1つ以上のパーティショナー2150を実行するノードにより生成される1つ以上のパーティション(即ち、レコードの個別セットから区画化されたレコードの任意に限定された部分)を含む。パーティションの各々は、少なくとも第1の集合体2160及び第nの集合体2160までに対応する。集合体2160、2162は、更に、集合体2160、2162におけるデータを定義する1つ以上のスキーマにより記述される。1つ以上のスキーマは、とりわけ、パーティションのレコードにおけるフィールドの名前、前記フィールドがインデックスされるかどうか、どんな圧縮方法が使用されたか、及びフィールドに対してどんなスコア付けアルゴリズムがデフォールトであるかの情報を含む。スキーマは、第1の集合体2160及び第nの集合体2162までをパーティショニングするときにパーティショナー2150により使用され、そして集合体において1つ以上の質問を実行するときに第1のサーチマネージャー2110及び第nのサーチマネージャー2112までによって更に使用される。
【0272】
1つ以上のノードは、システム2100の他のノードから送信されたハートビート信号を受信するスーパーバイザー2170ソフトウェアモジュールを実行する。スーパーバイザー2170は、1つ以上の依存性マネージャー2180ソフトウェアモジュールを実行するシステム2100のノードからデータを受け取るように構成される。依存性マネージャー2180ノードは、1つ以上のモジュール、パーティション、又はその適当な組み合わせに関連した依存性ツリーを記憶、更新及び参照し、これは、ノード、モジュール及びパーティションに対する構成依存性を相対的な関係に基づいて指示する。スーパーバイザー2170は、更に、1つ以上の他のスーパーバイザー2170を実行するシステム2100の他のノードにリンクされる。あるケースでは、付加的なスーパーバイザー2170へのリンクは、システムアーキテクチャー2100のクラスター間を交差する。
【0273】
分析エージェント2120、2122を実行するノードは、システムのコンポーネント(例えば、ソフトウェアモジュール、ノード)間の相互運用性及びデータ転送を容易にする特定アプリケーションプログラミングインターフェイス(API)に合致する1つ以上の適当な分析モジュールを実行する。分析エージェント2120、2122は、サーチコンダクタ2130、2132から返送される総計質問結果を処理するように構成される。例えば、サーチマネージャー2110は、サーチ質問を受け取り、次いで、サーチマネージャー2110が1つ以上のサーチコンダクタ2130、2132へ発行するサーチコンダクタ質問を生成する。サーチコンダクタ2130、2132がそれらの各々指定されたサーチコンダクタ質問を実行した後に、サーチマネージャー2110は、1つ以上のサーチコンダクタ2130、2132から総計質問結果のセットを受け取る。サーチマネージャー2110は、これらのサーチ質問結果を、サーチ質問のパラメータにより更なる処理が要求される場合は、更なる処理のために分析エージェント2120へ転送する。
【0274】
ある具現化において、サーチコンダクタ2130、2132から受け取った総計結果の1つ以上のセットを処理するために分析エージェント2120に対してサーチ質問が要求されたことをサーチマネージャー2110が決定した後に、サーチマネージャー2110は、データベーススキーマファイル及び/又は1つ以上の分析パラメータを分析エージェント2120、2122へ送出する。あるケースでは、サーチ質問は、どの分析エージェント2120が総計サーチ結果を受け取るべきか識別するためにサーチマネージャー2110が使用する特定の分析アルゴリズムの遂行を要求する。あるケースでは、総計結果の1つ以上のセットが、圧縮されたレコードの形態で分析エージェント2120、2122へ送出され、これは、圧縮アルゴリズムに従って圧縮されたデータを含む。あるケースでは、レコードのデータは、レコードのフィールドにおいて圧縮され、そしてあるケースでは、全レコードが圧縮される。
【0275】
分析エージェント2120、2122を実行するノードは、種々の分析モジュールを有する。その非限定例は、他の適当なモジュール及びアルゴリズムの中でも、曖昧性除去モジュール、リンクモジュール、及びリンクオンザフライモジュールを含む。適当なモジュールは、任意の種類のデータを処理する分析方法のソフトウェア実施を含む。ある実施形態では、特定の分析モジュール又は分析エージェント2120、2122は、インメモリデータベースの所定インスタンス、クラスター、パーティション及び/又はインスタンス生成オブジェクトにしかアクセスできない。
【0276】
図22は、一実施形態により、ステップ2202、2204、2206、2208、2210、2212、2214、2216及び2218を有し、インメモリデータベースをホストするシステムに分析モジュールを追加する方法2200のフローチャートである。
【0277】
ステップ2202において、インメモリデータベースでのプラグ型分析に適したAPIに合致する1つ以上の適当な分析モジュールが生成される。APIには、システムの相互運用性を与えるために分析モジュールが実施しなければならない要求された方法がある。分析モジュールは、ユーザ特有のニーズを満足するために生成される。
【0278】
1つ以上の分析モジュールが適当なモジュールストアに記憶される。モジュールストアは、スーパーバイザーにより管理される非一時的なマシン読み取り可能なストレージ媒体である。実施形態にもよるが、分析モジュールを構築し及び/又は管理する役割を果たすエンティティ、デベロッパー、ユーザ、コンポーネント、モジュール、外部ソース、及び/又は他のソースは、1つ以上の適当なプログラミング言語を使用して分析モジュールを開発する。
【0279】
ある実施形態によれば、APIは、例えば、ルーチン、データ構造、オブジェクトクラス及び変数に対するパラメータ又は引数をコンピュータがコンパイルし及び/又は具現化するためのソースコードプログラミングインストラクション及び規格のセットを含むソフトウェア対ソフトウェアインターフェイスとして働く。APIは、システムが後で開発されるソフトウェアモジュールからのデータ入力を受け容れそしてそこに結果を出力するのを許す一方、データ入力がデータフォーマット(即ち、予想される引数)に合致する限り、後で開発されるモジュールの所有権、能力又は他の特性に対して不可知論を維持する。データ入力及び出力に対して役立つシステムAPIは、そのような新たに開発され又は後で開発され且つしばしば外部のソフトウェアモジュールに「露出」される。露出されたAPIは、その露出されたAPIがソフトウェアモジュールからデータを受け取り、フェッチし、又はその他、「消費」するときに、データ受容性を有効とする。システムAPIの予想される引数を満足するオーサリングソフトウェアソースは、デベロッパー及び他のユーザが、分析エージェントのようなシステムのノード及びモジュールとデータを通信(即ち、送信、受信)するために、分析モジュールのような種々のソフトウェアモジュールを開発できるようにする。
【0280】
分析エージェントは、インメモリデータベースをホストするシステム内に1つ以上のノードを備え、各分析エージェントのノードは、1つ以上の分析モジュールを記憶及び実行することができる。APIは、異なるユーザ開発分析モジュールをシステムの種々のノード及びモジュール並びにインメモリデータベースに適合できるようにする。
【0281】
ある実施形態では、1つ以上のモジュールは、利用可能なAPIに適合する適当なプログラミング言語を使用して第三者により開発された外部モジュールである。そのような実施形態では、それらの新たに開発されるモジュールは、分析モジュールストアに記憶される。
【0282】
ステップ2204において、生成されたモジュールは、それに対応する定義及び依存性を依存性マネージャーに追加することによってインメモリデータベースにロードされ、これは、適当なファイル及びインストラクションを開発し、アップロードし、又はその他、依存性マネージャーに記憶することのできる適当な自動又は手動プロセスを使用して達成される。
【0283】
ステップ2206において、スーパーバイザーは、依存性マネージャーのモジュール設定に基づいて、1つ以上のモジュールを1つ以上のノードにインストールすべきかどうか決定する。ある環境において、依存性マネージャーに記憶されたモジュール設定は、ロードされた分析モジュールが「イネーブル」されるか「ディスエイブル」されるかを含む。例えば、分析モジュールがイネーブルされることを設定が指示する場合に、分析モジュールは、その分析モジュールを遂行する分析エージェントを実行する各ノードに対して開発される。スーパーバイザーは、次いで、インストール準備インストラクションを前記1つ以上のノードにおける1つ以上のノードマネージャーへ送出する。
【0284】
ステップ2208において、ノードマネージャーは、ノードのリソースを、1つ以上の望ましいモジュールを実行するために、依存性マネージャーにおけるモジュール設定に基づいて割り当てる。1つ以上の実施形態において、リソースの割り当ては、スーパーバイザーがプロセスを中断すると、ある期間の後に終了となる。依存性マネージャーのモジュール設定は、どれほど多くのメモリ、CPU及び/又はディスクがモジュールにより要求されるか指示する。
【0285】
ステップ2210において、スーパーバイザーは、ノードにインストールされるべき1つ以上のモジュールに関連した1つ以上の構成パッケージについて依存性マネージャーへ要求を送出する。一例として、自動又は手動プロセス(例えば、システムアドミニストレータ)は、他のソフトウェア又はメタデータのような構成パッケージに対応する依存性も定義する依存性マネージャーに新たなモジュールを追加する。
【0286】
ステップ2212において、スーパーバイザーは、構成パッケージをノードマネージャーへ送出する。
【0287】
ステップ2214において、ノードマネージャーは、依存性マネージャーに定義されたように、1つ以上のモジュールを実行するために要求されるソフトウェア及びデータを読み取る。
【0288】
ステップ2216において、ノードマネージャーは、ステップ2214でフェッチされた要求されたソフトウェア及びデータをインストールする。分析エージェントは、モジュールがインストールされると、それらを動的にロード及びアンロードし、従って、装置又はソフトウェアを再スタートする必要がなく、インストールされた1つ以上のモジュールは、使用の準備ができる。
【0289】
ステップ2218において、ノードマネージャーは、ステップ2216でインストールされたソフトウェアを実行する。分析エージェントが分析モジュールをスタートした後、新たなモジュールを実行する各分析エージェントは、ハートビート信号をスーパーバイザーに送信する。ハートビート信号は、新たなモジュールが適切にスタートされそして使用の準備ができたことを指示する。
【0290】
図23は、一実施形態によるインメモリデータベース2300システムアーキテクチャーを示す。MEMDB2300システムアーキテクチャーは、システムインターフェイス2302、第1のサーチマネージャー2304、第nのサーチマネージャー2306、第1の分析エージェント2308、第nの分析エージェント2310、第1のサーチコンダクタ2312、第nのサーチコンダクタ2314、パーティショナー2316、第1の集合体2318、第nの集合体2320、スーパーバイザー2322、及び依存性マネージャー2324を備えている。
【0291】
1つ以上の実施形態において、システムインターフェイス2302は、MEMDB2300のシステムアーキテクチャーの外部で生成された1つ以上の質問を、少なくとも第1のサーチマネージャー2304及び第nのサーチマネージャー2306までを含む第1クラスターにおける1つ以上のサーチマネージャーへ供給するように構成される。前記第1クラスターにおける前記1つ以上のサーチマネージャーは、少なくとも第1の分析エージェント2308及び第nの分析エージェント2310までを含む第2クラスターにおける1つ以上の分析エージェントにリンクされる。
【0292】
前記第1クラスターにおけるサーチマネージャーは、少なくとも第1のサーチコンダクタ2312及び第nのサーチコンダクタ2314までを含む第3クラスターにおける1つ以上のサーチコンダクタにリンクされる。前記第3クラスターのサーチコンダクタは、1つ以上のパーティショナー2316にリンクされ、少なくとも第1の集合体2318及び第nの集合体2320までに対応するパーティションは、1つ以上の瞬間に記憶される。
【0293】
MEMDB2300に含まれたクラスターに含まれる1つ以上のノード、モジュール又はその適当な組み合わせは、1つ以上のスーパーバイザー2322にリンクされ、前記クラスターにおける前記1つ以上のノード、モジュール又は適当な組み合わせは、少なくとも1つのハートビートを1つ以上のスーパーバイザー2322へ送出するように構成される。スーパーバイザー2322は、1つ以上の依存性マネージャー2324にリンクされ、ここで、前記1つ以上の依存性マネージャー2324は、1つ以上のモジュール、パーティション又はその適当な組み合わせに対して1つ以上の依存性ツリーを含む。スーパーバイザー2322は、更に、1つ以上の他のスーパーバイザー2322にリンクされ、ここで、付加的なスーパーバイザー2322は、MEMDB2300のシステムアーキテクチャーに含まれる前記クラスターにリンクされる。
【0294】
図24は、一実施形態による非排他的サーチ方法2400のフローチャートである。この非排他的サーチ方法2400は、システムがサーチを実行し、そして質問に特定されたフィールドが、サーチされているレコードにポピュレートも定義もされていないレコードから結果を持ち帰ることができるようにする。
【0295】
プロセスは、質問がサーチマネージャーにより受け取られることでスタートし(2402)、ここで、外部ソースにより生成される1つ以上の質問は、1つ以上のサーチマネージャーにより受け取られる。ある実施形態では、これらの質問は、ユーザとの相互作用に応答してシステムインターフェイス2302により自動的に生成される。1つ以上の実施形態において、質問は、サーチ質問のパラメータを表わすXML、JavaScript、HTML、又は他の適当な言語を含めて、マークアップ言語又は他の適当な言語で表わされる。1つ以上の他の実施形態において、質問は、質問がYAML又はJSONで表わされる実施形態を含めて、ある構造で表わされる。ある実施形態では、質問は、コンパクト又はバイナリフォーマットで表わされる。
【0296】
その後、受け取った質問は、サーチマネージャーによりパースされる(2404)。このプロセスは、フィールド処理が望まれるかどうかシステムが決定できるようにする(2406)。1つ以上の実施形態において、システムは、質問に含まれた情報を使用してプロセスが要求されるかどうか決定することができる。1つ以上の他の実施形態では、1つ以上のサーチメモリは、1つ以上のフィールドが望ましい処理を受けるかどうか自動的に決定する。
【0297】
1つ以上のフィールドに対するフィールド処理が望まれるとシステムが決定した場合には、サーチマネージャーがフィールドを処理する間に(2408)、1つ以上のサーチマネージャーが1つ以上の望ましいフィールドに1つ以上の適当な処理技術を適用する。1つ以上の実施形態において、適当な処理技術は、とりわけ、アドレス標準化、地理的接近又は境界、及びニックネーム解釈を含む。ある実施形態では、適当な処理技術は、ストリングからのプレフィックスの抽出、及び曖昧マッチング技術を適用するために後で使用される非リテラルキーの生成を含む。
【0298】
次いで、S.M.がサーチ質問を構成するとき(2410)、1つ以上のサーチマネージャーは、1つ以上の質問に関連した1つ以上のサーチコンダクタ質問を構成する。1つ以上の実施形態において、サーチコンダクタ質問は、スタックベースサーチとして処理されるように構成される。
【0299】
その後、S.M.は、サーチコンダクタ質問をS.C.に送出する(2412)。ある実施形態では、1つ以上のサーチマネージャーは、1つ以上のサーチ質問を1つ以上のサーチコンダクタへ送出し、ここで、前記1つ以上のサーチコンダクタは、1つ以上のサーチ質問に特定された集合体に関連したものである。
【0300】
次いで、1つ以上のサーチコンダクタは、特定のフィールドが存在しないことに基づきレコードを除外せずに適当なブールサーチ演算2414(例えば、AND、OR、XOR)及びインデックスルップアップを適用する。サーチコンダクタは、ユーザが与えた又はアプリケーションが与えたブール演算及びインデックスルックアップを実行する。従って、実施形態では、ユーザ質問を実行して、曖昧インデックスを実施し且つ“AND”演算ではなく“OR”演算を実施し、潜在的に良好な結果を「除外」しないレコードの候補セットを得る。スコア付け特徴は、最良の結果(即ち、最も関連性の高い)が最も高いスコアとなり、且つあまり関連性のないレコードがスコアを低くする。あるケースでは、サーチ質問を実行する2つのステージがある。サーチステージでは、ブール演算、曖昧インデックス及びフィルタが、サーチ質問を満足する潜在的な結果の候補セットを返送する。次のスコア付けステージは、ユーザが特定するか又はアプリケーションが特定する1つ以上のスコア付け方法を適用して、最良の結果のスコアが高くなるように候補セットのレコードをスコア付けし、所与のスレッシュホールドより下の、悪い又は低い関連性の結果を除外して、合理的な結果サイズだけを返送することができる。これは、スコア付けを必要とするレコードの非常に大きな候補セットを有することになるが、インメモリデータベースシステムは、従来のシステムに対してあるケースでは非常に大きなサイズを有するサーチ結果のセットを取り扱うに充分なほど高速である。その結果、あるフィールドが空であるか又はある程度ノイズ性又はエラー性のデータがあるだけで良好な結果が失われることはない。
【0301】
上述したように、サーチコンダクタは、適当なサーチフィルタを適用する(2416)一方、欠落フィールドに基づいてレコードを除外することはない。1つ以上のサーチコンダクタは、それにより得られる返答セットレコードを1つ以上の質問に対してスコア付けし(2418)、ここで、サーチコンダクタは、レコードの1つ以上のフィールドの一致をスコア付けし、次いで、レコードの全一致に対するスコアを決定する。サーチコンダクタは、レコードを1つ以上の質問に対してスコア付けすることができ、ここで、質問は、レコードにおいて省略された又はレコードに含まれないフィールドを含む。ある実施形態では、サーチマネージャーは、質問において定義されたものより少ない又はそれとは異なるフィールドを含むスキーマを伴う集合体において遂行されるべき質問をサーチコンダクタへ送出する。このケースでは、質問は、サーチされている集合体のスキーマに合致するフィールドを変更してスコア付けためにのみそれらが存在することを指示するように改正される。あるケースでは、サーチマネージャーは、サーチ質問を生成及び/又は変更することができる。即ち、サーチマネージャーは、欠落フィールド、又は1つ以上の集合体において定義されたインデックスを持たないフィールドを考慮するよう仕立てられ又は調整される質問プランを構築する。
【0302】
ある実施形態によれば、質問とは異なるスキーマを伴う集合体は除外されず、利用可能なフィールドは質問に対してスコア付けされ、そして欠落フィールドを伴うレコードにはペナルティ又は低いスコアが指定される。MEMDB2300にわたる集合体のフィールドが正規化され、そして各サーチコンダクタは、スコア指定プロセスを容易にするために正規化されたフィールドのディクショナリーにアクセスする。正規化は、適当な手動又は自動プロセスを通して遂行される。サーチ質問を与えるユーザ又はアプリケーションが、複数の集合体にわたって正規化されたフィールドを定義する場合には、システムは、各々の集合体が厳密に同じスキーマ又はストレージルールに合致しなくても、複数の集合体にわたって適用できる質問を構築する。
【0303】
ある実施形態では、考えられる関連結果のリストを更に広げるために、曖昧マッチング技術が適用される。
【0304】
システムは、指定のスコアが特定の受け容れスレッシュホールドより上であるかどうか決定し、ここで、スレッシュホールドは、サーチ質問において定義されるか、又はデフォールト値である。1つ以上の実施形態において、デフォールトスコアスレッシュホールドは、スコア付けされる1つ以上のフィールドに従って変化する。スコアが望ましいスレッシュホールドより上であるとサーチコンダクタが決定した場合には、レコードが結果リストに追加される。サーチコンダクタは、レコードが現在結果セットの最後であると決定するまでレコードをスコア付けし続ける。パーティションの最後のレコードが処理されたとサーチコンダクタが決定した場合に、サーチコンダクタは、次いで、それにより得られた結果リストを分類する。サーチコンダクタは、次いで、結果リストをサーチマネージャーへ返送する。
【0305】
S.M.がS.C.から結果を受け取ってまとめるとき(2420)、1つ以上のサーチコンダクタは、1つ以上のサーチ結果を1つ以上のサーチマネージャーへ返送し、ここで、1つ以上の実施形態において、前記1つ以上のサーチ結果が非同期で返送される。次いで、1つ以上のサーチマネージャーは、1つ以上のサーチコンダクタからの結果を1つ以上の結果リストにコンパイルする。
【0306】
システムは、1つ以上のサーチマネージャーによりコンパイルされたサーチ結果の分析処理2422が望まれるかどうか決定する。1つ以上の実施形態において、システムは、質問に含まれた情報を使用して処理が望まれるかどうか決定する。1つ以上の他の実施形態において、1つ以上のサーチマネージャーは、1つ以上のどのフィールドが望ましい処理を受けるか自動的に決定する。
【0307】
分析処理2422が望まれるとシステムが決定した場合には、1つ以上の分析エージェントは、1つ以上の適当な処理技術を1つ以上の結果リストに適用することを通して結果を処理する(2424)。1つ以上の実施形態において、適当な技術は、とりわけ、多数のレコードをより完全なレコードへロールアップし、結果に対して1つ以上の分析を遂行し、そして隣接レコードに関する情報を決定することを含む。ある実施形態では、分析エージェントは、曖昧性除去モジュール、リンクモジュール、リンクオンザフライモジュール、又は他の適当なモジュール及びアルゴリズムを含む。
【0308】
処理後に、ある実施形態によれば、1つ以上の分析エージェントは、1つ以上の処理済結果リストを1つ以上のサーチマネージャーへ返送する。
【0309】
サーチマネージャーは、サーチ結果を返送する(2426)。ある実施形態において、1つ以上のサーチ結果は、1つ以上の結果リストを解凍し、そしてそれを、質問を開始したシステムへ返送する。返送された結果は、XML、JSON、RFD又は他のフォーマットを含む多数のフォーマットの1つでフォーマットされる。
【0310】
図25は、ストレージユニット2502、RAM2504、及びCPU2506を含む圧縮装置2500を示す。
【0311】
1つ以上の実施形態において、データレコードの1つ以上の集合体、1つ以上のスキーマ、1つ以上のディクショナリー、1つ以上のNグラムテーブル及び1つ以上のトークンテーブルが圧縮装置2500のハードウェアストレージユニット2502に記憶される。圧縮装置2500のRAM2504は、ストレージユニット2502、並びにとりわけ、断片化モジュール、圧縮モジュール及びインデックスモジュールを含む適当なモジュールに記憶されたデータをそれにロードする。1つ以上の実施形態において、圧縮装置2500は、1つ以上の適当なCPU2506を含む。
【0312】
図26は、集合体データテーブル2600を示す。
【0313】
1つ以上の実施形態において、1つ以上の集合体は、集合体データテーブル2600に示すように構造化又は半構造化データを含む。1つ以上の実施形態において、構造化データは、任意の数のフィールドを含み、そしてJSON、BSON、YAML又は他の適当なフォーマットを使用して表わされるデータのような半構造化データは、適当な数のフィールド、アレイ、又はオブジェクトを含む。集合体は、適当なスキーマを使用して記述され、適当なスキーマは、スキーマにおける1つ以上のフィールドに使用されるデータ構造及び圧縮方法を定義する。
【0314】
1つ以上の実施形態において、1つ以上のフィールドは、セマンティック類似性を有するデータ値を含む。1つ以上の実施形態において、セマンティック類似データは、とりわけ、氏名、生年月日、及び市民権を含む。1つ以上の実施形態において、圧縮装置は、フィールドに記憶された形式のデータを圧縮するのに適した1つ以上の方法を使用して1つ以上のフィールドを圧縮し、ここで、圧縮装置は、カスタムトークンテーブルを使用する。1つ以上の実施形態において、圧縮装置は、望ましい圧縮方法に関連していないデータと共に任意の数のフィールドに対するデフォールト圧縮方法としてNグラム圧縮を使用する。
【0315】
1つ以上の実施形態において、集合体の1つ以上のフィールドにおける1つ以上のデータは、断片化の後に良好に圧縮されるデータを含む。この形式のデータは、典型的に、フィールドがレコード当たり複数の値を有するというものであり、そして圧縮装置は、それらのレコードを複数のレコード断片へ正規化解除することでマッチング及びスコア付けを良好に達成する。断片化に適したデータは、例えば、とりわけ、氏名、住所、電話番号及びe−メールを含む。1つ以上の実施形態において、圧縮装置は、圧縮の前に1つ以上のデータを断片化する。圧縮装置は、断片化されたデータを同じパーティションに連続的に記憶する。1つ以上の実施形態において、圧縮装置は、断片化されたレコード識別子を使用して、どのレコードからそれらが断片化されたか識別し、レコードが集合体の同じオリジナルレコードから生じたことをシステムが分かったままにするよう保証する。
【0316】
1つ以上の実施形態において、レコードは、データ値のアレイを含む。このアレイは、ゼロ以上の値を含み、そしてアレイの値は、値の適切な順序を保存しつつ、欠落値を表わすナル値を有する。
【0317】
1つ以上の実施形態において、圧縮装置は、1つ以上のデータフィールドをオブジェクトとしてグループ化する。オブジェクトは、他のオブジェクトを含み、アレイのエレメントである。圧縮装置は、更に、同じ値をもつパーティションの別のオブジェクトをシステムに参照させる値を含ませることによりレコード内のオブジェクトを圧縮する。モジュールがシステムの他のモジュールへデータを出力するとき、モジュールは、参照オブジェクトを実際のオブジェクト値に置き換える。
【0318】
1つ以上の実施形態において、圧縮装置は、既知のバイナリ圧縮方法を使用して数字を表わすフィールドにおける1つ以上のデータを圧縮する。
【0319】
1つ以上の実施形態において、圧縮装置は、既知のシリアルデイナンバー(Serial Day Number)圧縮アルゴリズムを使用してデータを表わすフィールドにおいて1つ以上のデータを圧縮する。
【0320】
1つ以上の実施形態において、圧縮装置は、圧縮の前に1つ以上のデータを正規化する。圧縮の前に正規化するのに適したデータは、とりわけ、街路のサフィックス及びプレフィックス、名前のサフィックス及びプレフィックス、及び後/前方向情報(即ち、東、北、西、等)を含む。
【0321】
図27は、トークンテーブル2700を示す。
【0322】
1つ以上の実施形態において、圧縮装置は、適当なトークンテーブルを使用して適当なセマンティック類似性を伴うデータを含むフィールドを圧縮し、ここで、適当なトークンテーブルは、トークンテーブル2700と同様である。
【0323】
1つ以上の実施形態において、1つ以上のレコードが関連トークンテーブルと共にフィールドに追加されるときに、システムは、データがトークンテーブル内の以前に遭遇したデータに一致するかどうか決定する。1つ以上の実施形態において、データが一致しない場合には、システムは、トークンテーブルに代って、別の圧縮方法を使用する。1つ以上の他の実施形態では、データが一致しない場合に、システムは、データを含むようにそのトークンテーブルを更新する。
【0324】
1つ以上の実施形態において、トークンテーブルは、周期的に更新され、そして記憶されたデータを再評価して、圧縮性が改善されたかどうか決定する。1つ以上のデータの圧縮性が改善された場合には、システムは、適当なデータを解凍し、そして再圧縮する。
【0325】
1つ以上の実施形態において、最も頻繁に生成する値が小さい番号のインデックスに記憶され、これは、最も頻繁に使用される値をより少ないバイトで表わせるようにする。
【0326】
1つ以上の実施形態において、トークンテーブルに含ませるために短い値より長い値が好ましく、これは、小さな値と同じインデックスサイズの長い値を排除することにより大きな圧縮を許す。
【0327】
1つ以上の実施形態において、データ値に対しトークンデータが存在しないことを指示するために特殊なインデックス値が予約される。
【0328】
図28は、Nグラムテーブル2800を示す。
【0329】
1つ以上の実施形態において、圧縮装置は、適当なNグラムテーブルを使用して適当なセマンティック類似性を伴うデータを含むフィールドを圧縮し、ここで、適当なNグラムテーブルは、Nグラムテーブル2800と同様である。
【0330】
1つ以上の実施形態において、1つ以上のレコードが関連Nグラムテーブルと共にフィールドに追加されるときに、システムは、データがNグラムテーブル内の以前に遭遇したデータに一致するかどうか決定する。1つ以上の実施形態において、データが一致しない場合には、システムは、Nグラムテーブルに代って、別の圧縮方法を使用する。1つ以上の他の実施形態では、データが一致しない場合に、システムは、データを含むようにそのNグラムテーブルを更新する。
【0331】
1つ以上の実施形態において、Nグラムテーブルは、周期的に更新され、そして記憶されたデータを再評価して、圧縮性が改善されたかどうか決定する。1つ以上のデータの圧縮性が改善された場合には、システムは、適当なデータを解凍し、そして再圧縮する。
【0332】
1つ以上の実施形態において、最も頻繁に生成する値が小さい番号のインデックスに記憶され、これは、最も頻繁に使用される値をより少ないバイトで表わせるようにする。
【0333】
1つ以上の実施形態において、データ値に対しNグラムデータが存在しないことを指示するために特殊なインデックス値が予約される。
【0334】
図29は、1つ以上の実施形態において圧縮されたデータを表わすレコード表現2900を示す。
【0335】
レコード表現2900において、レコードインデックス列の各行値は、とりわけ、メモリにおける長さ、オフセット又はレコード位置を含めて、レコードに関する情報と共に、ゼロ以上のレコード記述子バイトを含む。1つ以上の実施形態において、レコードに存在する各データノード(アレイ、フィールド又はオブジェクト)は、ゼロ以上の記述子バイトを含み、ここで、もし適用できれば、ノード識別子、記憶データの長さ、及びアレイのエレメントの数を含めて、ノードに関する適当な情報が含まれる。ゼロ以上のノード記述子バイトに続いて、適当な数のバイトがレコードに関連したデータを表わす。1つ以上の実施形態において、データは、アレイ分離マーカービットを含むデータのコンテンツを記述する1つ以上のビットを含む。
【0336】
1つ以上の実施形態において、トークンテーブルに関連したフィールドのデータは、レコードに記憶された情報が適当なトークンテーブルに表わされるかどうか、又はNグラム圧縮のような別の適当な圧縮方法が使用されたかどうか明示するために1つ以上のビットを使用する。
【0337】
1つ以上の実施形態において、システムは、1つ以上のレコード記述子バイト及び/又は1つ以上のノード(アレイ、オブジェクト又はフィールド)に含まれた長さ又はオフセットデータを使用して、レコード又はノード(アレイ、オブジェクト又はフィールド)を解凍せずに圧縮データを通してナビゲートする。
【0338】
1つ以上の実施形態において、システムの適当なモジュールは、MEMDBシステムの1つ以上のサーチコンダクタ又は1つ以上のパーティショナーを含めて、データをインデックス又は圧縮する。
【0339】
1つ以上の実施形態において、ここに開示する1つ以上の圧縮方法を使用する圧縮装置は、他の有名な圧縮方法と同様のレートでデータを圧縮できるようにする一方、ノード(アレイ、オブジェクト又はフィールド)レベルでデータを解凍及び/又はそれにアクセスできるようにする。
【0340】
1つ以上の実施形態において、ここに開示する1つ以上の圧縮方法を使用する圧縮装置は、レコードの情報にアクセスするときにシステムが個々のレコード及びノード(アレイ、オブジェクト又はフィールド)をスキップできるようにする。
【0341】
1つ以上の実施形態において、ここに開示する1つ以上の圧縮方法を使用する圧縮装置は、ターゲットフィールドが見つかったときシステムがレコードの解凍から早目に退出できるようにする。
【0342】
例#1において、ここに開示するファセットサーチ方法が適用される。MEMDBは、大きなコーパスからドキュメントを分析し、ファセットを抽出し、抽出されたファセットを曖昧性除去及びインデックスし、そしてファセットタイプ及びハイアラーキーに従って3つ以上の集合体の異なるパーティションでそれらを記憶する。例#1では、ユーザがサーチボックスにワード“united”をタイプし、そしてシステムは、ファセットによるサーチ結果を返送する。レベル1のファセットは、とりわけ、「クラス(Class)」、「位置(Location)」、「製品(Product)」、「技術(Technology)」及び「会社(Company)」を含む。各レベル2のファセットに対するヒットの数が示され、ユーザは、サーチを少なくとも3つ多いレベルで絞り込むことができる。
【0343】
例#2において、ここに開示するファセットサーチ方法が適用される。MEMDBは、大きなコーパスからドキュメントを分析し、ファセットを抽出し、抽出されたファセットを曖昧性除去及びインデックスし、そしてファセットタイプ及びハイアラーキーに従って3つ以上の集合体の異なるパーティションでそれらを記憶する。例#2では、ユーザがサーチボックスにキャラクタ“ply”をタイプし、そしてシステムは、ファセットによるサーチ示唆を自動的に生成する。レベル1のファセットは、とりわけ、「クラス」、「位置」、「製品」、「技術」及び「会社」を含む。各レベル2のファセットに対するヒットの数が示され、ユーザは、サーチを少なくとも3つ多いレベルで絞り込むことができる。
【0344】
例#1は、サーチマネージャー、分析エージェント、各ノードのノードマネージャー、2つのサーチコンダクタを各々有する8つのサーチノード、スーパーバイザー、バックアップスーパーバイザー、依存性マネージャー、バックアップ依存性マネージャー、並びにパーティションを記憶及び配布することのできるノードのパーティショナーを含むインメモリデータベースである(ここで、ノードは、各々4つのパーティションに分割される2つの集合体、即ち集合体1及び集合体2のための情報を含む)。集合体1のレコードに対するサーチ質問がデータベースにより受け取られると、サーチマネージャーは、集合体1に関連したパーティショナーを有する全てのサーチコンダクタに質問を送出する。サーチコンダクタは、非同期で働いて、各圧縮されたレコードをサーチ及びスコア付けし、質問で定義されたスレッシュホールドより上のスコアを有する圧縮された結果のリストを作成し、結果のリストを分類し、そして圧縮されたレコードのリストをサーチマネージャーへ返送する。この例では、サーチコンダクタは、スコア付けされるべきフィールドのみを解凍する。サーチマネージャーは、各サーチコンダクタから結果のリストを受け取って総計し、質問結果をコンパイルし、そしてそれを更なる処理のために分析エージェントへ送出する。分析エージェントは、充分に関連していると決定したレコードを結合し、そしてその処理された結果リストをサーチマネージャーへ返送する。次いで、サーチマネージャーは、システムインターフェイスを通して最終結果を返送する。
【0345】
例#2は、セマンティック質問を遂行し、そしてデータベースにおいて明確にリンクされていないデータに対するリンクされたデータ結果を返送することのできるインメモリデータベースである。データ又はレコードのリンク動作は、分析エージェントで実施される総計分析機能の一例に過ぎない。この例は、非リンクデータにおいてデータリンケージを発見しそしてセマンティック質問を遂行してセマンティック結果を返送することのできる分析エージェントを伴うインメモリデータベースである。非リンクデータとは、他のデータソースからのデータに対して明確なキー又は他の明確なリンクをもたない異種データソースからのデータである。この例では、プラグ型分析モジュールが開発されて分析エージェントにおいて展開され、データコンテンツそれ自体に基づいて異種データソースにわたりデータリンケージを発見し/見出すことができる。セマンティックサーチ質問が実行されるとき、非排他的サーチを使用してサーチコンダクタを経て全ての当該レコードが検索され、そして分析エージェントへ送られ、そこで、分析エージェントモジュールの特定の実施に基づいてレコードリンケージが発見され、そして信頼性スコアが指定される。それらの動的にリンクされたレコードは、RDF/XML又は他のセマンティックデータ表現のようなセマンティックマークアップを使用して表わされ、そしてユーザに返送される。セマンティックサーチに対するこの解決策は、同じ非リンクデータを使用して異なる質問に対して異なる仕方で非リンクデータをリンクできるようにする。
【0346】
例#3は、グラフ質問を遂行し、そしてデータベースにおいて明確にリンクされず又はグラフ形態で表されないデータに対してリンクされたデータ結果を返送することのできるインメモリデータベースである。この例は、非リンクデータにおいてデータリンケージを発見しそしてグラフ質問を遂行してグラフ質問結果を返送することのできる分析エージェントを伴うインメモリデータベースである。グラフサーチ質問が実行されるときに、全ての当該レコードは、非排他的サーチを使用してサーチコンダクタを経て検索され、そして分析エージェントへ送られ、そこで、レコードリンケージが発見され、そして信頼性スコアが指定される。それらの動的にリンクされたレコードは、RDFグラフ、プロパティグラフ、又は他のグラフデータ表現のようなグラフ形態で表わされ、そしてユーザに返送される。グラフサーチに対するこの解決策は、同じ非リンクデータを使用して異なる質問に対して異なる仕方で非リンクデータをリンクできるようにする。
【0347】
例#4は、
図14に示したものと同様に仕方で接続設定したインメモリデータベースをホストするシステムである。サーチマネージャー、サーチコンダクタ及び分析エージェントは、全て、双方向ユーザ質問の流れに直接関与するものである。ユーザ質問のレイテンシーを最小にするために、これらのモジュールは、これらのモジュールは、最低レイテンシー接続で接続される。サーチマネージャー及び分析エージェントは、大きな総計返答セットで働き、そして最大帯域巾から利益を得、ここで、サーチコンダクタは、あまり帯域巾を要求しない数百のパーティションベースの返答セットコンポーネントを取り扱う。パーティションは、大きなデータボリュームを非双方向速度で取り扱い、従って、それらは、両方とも、中程度のレイテンシー及び中程度の帯域巾接続を有する。スーパーバイザー及び依存性マネージャーは、非双方向で且つ低いデータボリュームであり、従って、最低帯域巾及び最高レイテンシーの接続を要求するだけである。この構成は、実際のニーズに基づいてコストを最小にするよう試みるものである。
【0348】
それ故、この例では、ラインタイプAは、帯域巾が40Gbで且つレイテンシーが1マイクロ秒以下のInfiniBand接続であり;ラインタイプBは、帯域巾が20Gbで且つレイテンシーが1マイクロ秒以下のInfiniBand接続であり;ラインタイプCは、10Gbのイーサネット接続であり;そしてラインタイプDは、100Mbのイーサネット接続である。この例において、サーチマネージャーを含むノードは、2テラフロップで動作できるCPUを備え;サーチコンダクタを含むノードは、4テラフロップで動作できるCPUを備え;分析エージェントを含むノードは、4テラフロップで動作できるCPUを備え;そしてパーティショナーを含むノードは、6テラフロップで動作できるCPUを備えている。この例では、サーチコンダクタを含むノードは、32から64GBのRAMを備え、分析エージェントを含むノードは、32から64GBのRAMを備え、そしてパーティショナーを含む6つのノードは、各々、64GBのRAM及び10000RPMのハードディスを備えている。
【0349】
例#5は、
図14に示したものと同様に仕方で接続設定したインメモリデータベースをホストするシステムである。サーチマネージャー、サーチコンダクタ及び分析エージェントは、全て、双方向ユーザ質問及びデータインサートの流れに直接関与するものである。大ボリュームの後端データインサートネットワークトラフィックを双方向低レイテンシーのユーザ質問から分離するために、モジュールは、異なるネットワーク層を使用して接続される。この構成は、InfiniBandのような低レイテンシーのネットワーク層を使用することにより応答性双方向ユーザ質問を許す一方、個別の高帯域巾ネットワーク層を使用して大ボリュームのデータインサートも許す。両形式の動作は、互いに干渉せずに最適に実行される。
【0350】
例#6は、あるリソースがノードにもはや利用できないために単一のモジュールがフェイルしたが、ノードそれ自体に悪影響がない場合に何が起きるかを示している。
【0351】
このケースでは、モジュールがフェイルしたとき、スーパーバイザーへのハートビート接続がドロップし、モジュール欠陥に対してスーパーバイザーに警告する。スーパーバイザーは、欠陥が単に接続問題かモジュール欠陥かチェックするためモジュールへの再接続を試みる。ある実施形態では、再接続の欠陥は、モジュール欠陥であると仮定する。
【0352】
スーパーバイザーは、先ず、モジュールをその場所で再スタートするように関連ノードマネージャーに要求する。モジュールをその場所でスタートすることは、モジュール及びそれに対応するソフトウェア又はデータを再計画するコストを被ることがなく、従って、別のノードにおいて計画及びスタートするより迅速に達成することができる。しかしながら、この例では、特定のノードにおいてあるリソースが利用できないことが問題であり、従って、再スタートもフェイルとなる。
【0353】
モジュールをその場所で再スタートする所定回数の試みをした後に、スーパーバイザーは、モジュールをスタートするため別の適当なノードを探す。スーパーバイザーは、欠陥モジュールを展開するのに必要な正しいパッケージを取得するために依存性マネージャーに連絡する。次いで、スーパーバイザーは、そのパッケージを、新たに選択されたノードのためのノードマネージャーへ送り、モジュールを計画及び実行する。モジュールは、新たなノードにおいて要求されたリソースを見出し、そしてスーパーバイザーへのハートビート接続を生成して、それが適切に動作することを指示する。スーパーバイザーは、機能を回復としてマークし、そしてイベントが終了となる。
【0354】
例#7は、電源の停電のような全ノードフェイルを示す。このケースでは、サーバー上のノードマネージャー及び全てのモジュールは、スーパーバイザーへのハートビート接続をドロップする。スーパーバイザーは、これを、完全なノード欠陥として確認し、そしてそのノードをフェイル及び利用不可としてマークする。次いで、スーパーバイザーは、そのノードに割り当てられたモジュールのリストを通して歩進する。そのリストのモジュールごとに、スーパーバイザーは、別の適当なノードを探して、モジュールをスターとさせる。スーパーバイザーは、依存性マネージャーに連絡して、現在モジュールを展開するのに必要な正しいパッケージを取得する。次いで、スーパーバイザーは、そのパッケージを新たに選択されたノードのノードマネージャーへ送り、モジュールを計画及び実行する。モジュールは、スーパーバイザーへのハートビート接続を実行及び生成し、それが適切に機能することを指示する。スーパーバイザーは、機能を、そのモジュールに対して回復したとしてマークする。これは、全てのモジュールが新たなノードに再割り当てされそしてイベントが終了するまで続く。
【0355】
例#8において、システムは、
図21に示されたものと同様のインメモリデータベースをホストする。この例では、インメモリデータベース及びシステムは、複数の分析モジュールを備えている。ある分析モジュールは、重み付けされたモデルを使用してレコードのリンクを実施する一方、別の分析モジュールは、判断ツリーを使用する。あるモジュールは、利用可能なデータに対して動作するように最適化される一方、他のモジュールは、フィールド又はデータ集合体の限定セットから望ましい結果を生じるように同調される。あるモジュールは、異なるユーザグループにより開発され、アップロードされる。各ユーザ質問は、適用されるべき異なる分析モジュールを特定し、そして前記モジュールに対して異なるパラメータを使用することができる。異なるユーザが、インメモリデータベースを使用して、同時に情報を抽出し、そして同時に多数の異なる仕方で同じデータを処理することが考えられる。又、あるユーザが、インメモリデータベースの性能又は他のユーザの経験に影響することなく、新たな分析モジュールをいつでもプラグインすることも考えられる。
【0356】
例#9において、ここに開示する非排他的サーチ方法が適用される。ユーザは、次のフィールド、即ちFN(氏):ジョン、LN(名):スミス、DOB(生年月日):05/15/1965、及びPH(電話番号):555−1234−7890を伴う質問を定義する。システムは、サーチを遂行し、そして当該結果の中で、異なるスキーマを伴う2つの異なる集合体から、欠落フィールドを伴う2つのレコードが存在する。第1のものは、集合体1001からのもので、この集合体では、次のフィールド、FN:ジョン、LN:スミス、PH:- - - 及びDOB:05/15/1965が定義される。第2のものは、集合体「8021」からのもので、この集合体では、次のフィールド、FN:ジョン、LN:スミス、PH:555−1234−7890、及びDOB:- - - が定義される。ほとんどのフィールドに良好な一致があるため、レコードは、両方とも除外されず、それらは、同様の最終スコアを得て、質問に対する上位10の結果に位置される。
【0357】
例#10において、ここに開示する非排他的サーチ方法が適用される。ユーザは、次のフィールド、即ちFN(氏):ジョン、LN(名):スミス、DOB(生年月日):05/15/1965、及びPH(電話番号):555−1234−7890を伴う質問を定義する。システムは、サーチを遂行し、そして当該結果の中で、異なるスキーマを伴う2つの異なる集合体から、同様であるが厳密に一致しないフィールドを伴う2つのレコードが存在する。第1のものは、集合体1001からのもので、この集合体では、次のフィールド、FN:ジョナサン、LN:スミス、PH:1234−7890が定義される。第2のものは、集合体「8021」からのもので、この集合体では、次のフィールド、FN:ジョン、LN:スミス、PH:555−1234−7890、及びDOB:1965が定義される。ほとんどのフィールドに良好な一致があるため、レコードは、両方とも、スコアスレッシュホールドを越える最終スコアを得て、質問に対する上位10の結果に位置される。
【0358】
例#11は、圧縮装置を使用して名前を圧縮する方法を示す。この例では、データセットは、表現される350個の独特な氏及び300個の独特な名を伴う100万個の氏名レコードを含む集合体を備えている。レコードは、氏フィールド及び名フィールドに断片化される。
【0359】
次いで、最高から最低への頻度及び長さの積を経て個々のトークンが重み付けされる。重みがあるスレッシュホールドより低いトークンは、トークンテーブルのサイズを縮小するために破棄される。
【0360】
次いで、インデックスを指定する際に総計スペース節約を最大にすることでフィールドごとにトークンテーブルが生成され、それにより、個々のトークンのスペース節約は、頻度と、その長さの和から記憶されたインデックス長さを差し引いたものとの積となる。
【0361】
単一バイトインデックスに関連したエントリの数は、最大化手順の間に含むべき1から255まで変化する。
【0362】
アルゴリズムは、作成されるトークンテーブルが最適であることを保証し、そして最大の節約は、単一バイト記憶インデックスエントリへ至る一方、その後の値は、2つ以上のバイトへ圧縮される。短い又は頻繁でないエントリは、節約なしを実現し、トークンテーブルに含まれない。これらの値は、Nグラム圧縮のような別の圧縮方法へ戻る。
【0363】
例#12は、圧縮装置を使用してテキストを圧縮する方法を示す。
【0364】
この例では、テキストの大きさ本体がNグラムの頻度について分析され、Nグラムは、キャラクタ、ワード又はワードグループの連続シーケンスを表わす。テキストは、通常、フィールドごとの水平圧縮において列圧縮結果を達成するためにフィールドデータの大きな列を分析することで取得される。
【0365】
個々のNグラムは、次いで、最大から最低までの頻度と長さの積により重み付けされる。重みがあるスレッシュホールドより低いNグラムは、Nグラムテーブルのサイズを縮小するために破棄される。
【0366】
次いで、インデックスを指定する際に総計スペース節約を最大にすることでフィールドに対するNグラムテーブルが生成され、それにより、個々のNグラムのスペース節約は、頻度と、その長さの和から記憶されたインデックス長さを差し引いたものとの積となる。
【0367】
単一バイトインデックスに関連したエントリの数は、最大化手順の間に含むべき1から255まで変化する。
【0368】
アルゴリズムは、作成されるNグラムテーブルが最適であることを保証し、そして最大の節約は、単一バイト記憶インデックスエントリへ至る一方、その後の値は、2つ以上のバイトへ圧縮される。頻繁でないエントリは、節約なしを実現し、Nグラムテーブルに含まれない。これらの値は、他の基本的ストレージ方法へ戻る。
【0369】
この方法によりテーブルに生成される幾つかのNグラムの例は、次の通りである。
【0370】
圧縮中、フィールドデータは、全データが消費されるまで、できるだけ最大量のデータをインデックス値に置き換えるため貪欲アルゴリズムを使用して始めから終わりまで圧縮される。
【0371】
例#13は、圧縮装置を使用してJSONドキュメントにおける半構造化データを圧縮するための方法である。
【0372】
この例では、JSON入力ドキュメントは、Title、FirstName、LastName、NameSuffix及びPhoneTypeフィールドのためのトークンテーブル圧縮、DateOfBirthフィールドのためのシリアルデイナンバー圧縮、及びPhoneNumberフィールドのためのナンバーNグラム圧縮で、次のスキーマを使用して圧縮される。
【0373】
{ "collection": "Example2",
"record": [
{"id": "1", "type": "FIELD", "name": "Title", "compressionMethod":
"TitleNameTokenTable"},
{"id": "2", "type": "FIELD", "name": "FirstName", "compressionMethod":
"FirstNameTokenTable"},
{"id": "3", "type": "FIELD", "name": "LastName", "compressionMethod":
"LastNameTokenTable"},
{"id": "4", "type": "FIELD", "name": "NameSuffix", "compressionMethod":
"NameSuffixNameTokenTable"},
{"id": "5", "type": "FIELD", "name": "DateOfBirth", "compressionMethod":
"SerialDayNumber"},
{"id": "6", "type": "ARRAY", "name": "Phones", "array": [
{"id": "7", "type": "STRUCT", "struct": [
{"id": "8", "type": "FIELD", "name": "PhoneType", "compressionMethod":
"PhoneTypeTokenTable"},
{"id": "9", "type": "FIELD", "name": "PhoneNumber", "compressionMethod":
"NumberNgramTable"},
]}
]}
]}
【0374】
以下の入力レコードは、266バイトをJSONで表わすことを要求する(不要なホワイトスペースを除去した後に)。前記スキーマで述べた圧縮方法を使用して圧縮した後に得られる圧縮済レコードは、44バイトしか要求しない。
【0375】
{ "Title": "Dr.",
"FirstName": "Johnathan",
"LastName": "Patterson",
"NameSuffix": "M.D.",
"DateOfBirth": "19600101",
"Phones": [
{"PhoneType": "Office", "PhoneNumber": "1234567890"},
{"PhoneType": "Mobile", "PhoneNumber": "2345678901"},
{"PhoneType": "Home", "PhoneNumber": "3456789012"}
]}
【0376】
以下の入力レコードは、108バイトをJSONで表わすことを要求する(不要なホワイトスペースを除去した後に)。前記スキーマで述べた圧縮方法を使用して圧縮した後に得られる圧縮済レコードは、13バイトしか要求しない。
【0377】
{ "Title": "Dr.",
"FirstName": "Johnathan",
"LastName": "Patterson",
"NameSuffix": "M.D.",
"DateOfBirth": "19600101"
}
【0378】
例#14は、レコードを断片化する例である。この例では、集合体の53番目のレコードは、第1及び第2の住所を有するボブ及びキャロル・ウイルソン夫妻のデータを含む。この例では、レコードは、以下のテーブルに示すように断片化される。
【0379】
レコードインデックスは、レコードが集合体の同じオリジナルレコードから生じることをシステムが知っていることを保証するために維持される。この例では、断片化されたレコードは、更に、パーティション内の以前のレコードをシステムに参照させる値を含ませることによるデータを含み、即ちシステムがレコード53.2の名前にアクセスするときに、その値は、レコード53.1の名前に対する値に戻ってシステムに参照させる。例#14のシステムがシステムの他のモジュールにデータを出力するとき、圧縮フォーマットであっても、モジュールは、参照値を実際の値に置き換える。
【0380】
例#15は、半構造化データをアーカイブするための圧縮の一例である。この例では、MongoDB、Cassandra、又はCouchDBのようなドキュメント指向のデータベースからのJSONドキュメントが、各JSONドキュメントの独特な識別子を含めて、全ての望ましいフィールドを定義するスキーマを使用して圧縮される。次いで、独特の識別子を圧縮されたレコードへとマップするインデックスが生成される。それにより生じる圧縮されたレコード及びインデックスは、オリジナルのドキュメント指向のデータベースに要求されるストレージの15%未満しか消費せず、そして望ましからぬデータを解凍せずにドキュメントの各JSONドキュメント又はセレクトフィールドに直ちにアクセスすることができる。
【0381】
ここに開示する実施形態に関連して記述した種々の例示的論理ブロック、モジュール、回路及びアルゴリズムステップは、電子的ハードウェア、コンピュータソフトウェア又はその両方の組み合わせとして具現化される。ハードウェア及びソフトウェアのこの互換性を明確に示すために、種々の例示的コンポーネント、ブロック、モジュール、回路、及びステップは、それらの機能に関して一般的に説明された。そのような機能がハードウェアとして具現化されるかソフトウェアとして具現化されるかは、システム全体に課せられる特定アプリケーション及び設計上の制約に依存する。当業者であれば、ここに述べた機能を特定アプリケーションごとに色々な仕方で具現化できるが、そのような具現化の判断は、本発明の範囲から逸脱すると解釈されてはならない。
【0382】
コンピュータソフトウェアで具現化される実施形態は、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、GPU、ハードウェア記述言語、又はその組み合わせで具現化される。コードセグメント又はマシン実行可能なインストラクションは、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、或いはインストラクション、データ構造体又はプログラムステートメントの組合せを表わす。コードセグメントは、情報、データ、アーギュメント、パラメータ又はメモリコンテンツを通し及び/又は受け取ることにより別のコードセグメント又はハードウェア回路に結合される。情報、アーギュメント、パラメータ、データ、等は、メモリ共有、メッセージ通過、トークン通過、ネットワーク送信、等を含む適当な手段を経て通され、転送され又は送信される。
【0383】
これらシステム及び方法を実施するのに使用される実際のソフトウェアコード又は特殊な制御ハードウェアは、本発明を限定するものではない。従って、システム及び方法のオペレーション及び振舞いは、ここでの記載に基づいてシステム及び方法を実施するようにソフトウェア及び制御ハードウェアを設計できることを理解して、特定のソフトウェアコードを参照せずに説明した。
【0384】
ソフトウェアで実施されるときに、機能は、非一時的コンピュータ読み取り可能な又はプロセッサ読み取り可能なストレージ媒体に1つ以上のインストラクション又はコードとして記憶される。ここに開示する方法又はアルゴリズムのステップは、コンピュータ読み取り可能な又はプロセッサ読み取り可能なストレージ媒体に存在するプロセッサ実行可能なソフトウェアモジュールにおいて実施される。非一時的なコンピュータ読み取り可能な又はプロセッサ読み取り可能な媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にするコンピュータストレージ媒体及び有形のストレージ媒体の両方を含む。非一時的なプロセッサ読み取り可能なストレージ媒体は、コンピュータによりアクセスされる利用可能な媒体である。これに限定されないが、一例として、そのような非一時的なプロセッサ読み取り可能な媒体は、RAM、ROM、EEPROM、CD−ROM又は他の光学ディスクストレージ、磁気ディスクストレージ又は他の磁気ストレージ装置、或いはインストラクション又はデータ構造体の形態で望ましいプログラムコードを記憶するのに使用され且つコンピュータ又はプロセッサによりアクセスされる他の有形のストレージ媒体を含む。ここで使用するディスク(disk & disc)とは、コンパクトディスク(CD)、レーザーディスク、光学ディスク、デジタル多様性ディスク(DVD)、フロッピーディスク、及びブルーレイディスクを含み、ここで、ディスク(disk)は、通常、データを磁気的に再生するものであり、一方、ディスク(disc)は、データをレーザで光学的に再生するものである。前記の組み合わせも、コンピュータ読み取り可能な媒体の範囲内に包含される。加えて、方法又はアルゴリズムのオペレーションは、コンピュータプログラム製品に合体される非一時的プロセッサ読み取り可能な媒体及び/又はコンピュータ読み取り可能な媒体にコード及び/又はインストラクションの1つ又は組み合わせ或いはセットとして存在する。
【0385】
ここに開示する実施形態の前記説明は、当業者が本発明を実施又は利用できるようにするためになされたものである。これら実施形態に対する種々の変更は、当業者に容易に明らかであり、そしてここに定義する一般的な原理は、本発明の精神又は範囲から逸脱せずに他の実施形態に適用される。従って、本発明は、ここに示す実施形態に限定されるものではなく、特許請求の範囲並びにここに開示した原理及び新規な特徴に一致する最も広い範囲と調和されるべきである。
【0386】
種々の態様及び実施形態が開示されたが、他の態様及び実施形態も意図される。ここに開示した種々の態様及び実施形態は、例示のためのもので、それに限定されるものではなく、真の範囲及び精神は、特許請求の範囲により示される。
【0387】
以上の方法の説明及びプロセスフロー図は、単なる例示として示されたもので、種々の実施形態のステップを、提示した順序で遂行しなければならないことを要求し又は意味することは意図されない。当業者に明らかなように、前記実施形態におけるステップは、任意の順序で遂行されてもよい。「次いで(then)」、「次に(next)」、等のワードは、ステップの順序を限定するものではなく、これらのワードは、単に、方法の説明を通して読者を誘導するのに使用されるだけである。プロセスフロー図は、オペレーションを一連のプロセスとして示すが、多数のオペレーションを並列に又は同時に遂行することもできる。加えて、オペレーションの順序は、再構成してもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラム、等に対応する。プロセスが機能に対応するとき、その終了は、コーリング機能又はメイン機能への機能の復帰に対応する。
【0388】
ここに開示する実施形態に関連して述べた種々の例示的論理ブロック、モジュール、回路及びアルゴリズムステップは、電子的ハードウェア、コンピュータソフトウェア又はその両方の組み合わせとして具現化されてもよい。ハードウェア及びソフトウェアのこの互換性を明確に示すために、種々の例示的コンポーネント、ブロック、モジュール、回路、及びステップは、それらの機能に関して一般的に説明された。そのような機能がハードウェアとして具現化されるかソフトウェアとして具現化されるかは、システム全体に課せられる特定アプリケーション及び設計上の制約に依存する。当業者であれば、ここに述べた機能を特定アプリケーションごとに色々な仕方で具現化できるが、そのような具現化の判断は、本発明の範囲から逸脱すると解釈されてはならない。
【0389】
コンピュータソフトウェアで具現化される実施形態は、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、又はその組み合わせで具現化される。コードセグメント又はマシン実行可能なインストラクションは、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、或いはインストラクション、データ構造体又はプログラムステートメントの組合せを表わす。コードセグメントは、情報、データ、アーギュメント、パラメータ又はメモリコンテンツを通し及び/又は受け取ることにより別のコードセグメント又はハードウェア回路に結合される。情報、アーギュメント、パラメータ、データ、等は、メモリ共有、メッセージ通過、トークン通過、ネットワーク送信、等を含む適当な手段を経て通され、転送され又は送信される。
【0390】
これらのシステム及び方法を実施するのに使用される実際のソフトウェアコード又は特殊な制御ハードウェアは、本発明を限定するものではない。従って、システム及び方法のオペレーション及び振舞いは、ここでの記載に基づいてシステム及び方法を実施するようにソフトウェア及び制御ハードウェアを設計できることを理解して、特定のソフトウェアコードを参照せずに説明した。
【0391】
ソフトウェアで実施されるときに、機能は、非一時的コンピュータ読み取り可能な又はプロセッサ読み取り可能なストレージ媒体に1つ以上のインストラクション又はコードとして記憶される。ここに開示する方法又はアルゴリズムのステップは、コンピュータ読み取り可能な又はプロセッサ読み取り可能なストレージ媒体に存在するプロセッサ実行可能なソフトウェアモジュールにおいて実施される。非一時的なコンピュータ読み取り可能な又はプロセッサ読み取り可能な媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にするコンピュータストレージ媒体及び有形のストレージ媒体の両方を含む。非一時的なプロセッサ読み取り可能なストレージ媒体は、コンピュータによりアクセスされる利用可能な媒体である。これに限定されないが、一例として、そのような非一時的なプロセッサ読み取り可能な媒体は、RAM、ROM、EEPROM、CD−ROM又は他の光学ディスクストレージ、磁気ディスクストレージ又は他の磁気ストレージ装置、或いはインストラクション又はデータ構造体の形態で望ましいプログラムコードを記憶するのに使用され且つコンピュータ又はプロセッサによりアクセスされる他の有形のストレージ媒体を含む。ここで使用するディスク(disk & disc)とは、コンパクトディスク(CD)、レーザーディスク、光学ディスク、デジタル多様性ディスク(DVD)、フロッピーディスク、及びブルーレイディスクを含み、ここで、ディスク(disk)は、通常、データを磁気的に再生するものであり、一方、ディスク(disc)は、データをレーザで光学的に再生するものである。前記の組み合わせも、コンピュータ読み取り可能な媒体の範囲内に包含される。加えて、方法又はアルゴリズムのオペレーションは、コンピュータプログラム製品に合体される非一時的プロセッサ読み取り可能な媒体及び/又はコンピュータ読み取り可能な媒体にコード及び/又はインストラクションの1つ又は組み合わせ或いはセットとして存在する。
【0392】
技術の種々のコンポーネントは、分散型ネットワーク及び/又はインターネットの遠隔部分に、或いは専用のセキュア、アンセキュア及び/又は暗号化システム内に配置できることが明らかである。従って、システムのコンポーネントは、1つ以上の装置に結合するか、又はテレコミュニケーションネットワークのような分散型ネットワークの特定ノードに共通配置できることが明らかである。以上の説明から明らかなように、計算効率の理由で、システムのコンポーネントは、システムのオペレーションに影響することなく、分散型ネットワーク内の任意の位置に配置することができる。更に、それらのコンポーネントは、専用マシンに埋め込むこともできる。
【0393】
更に、エレメントを接続する種々のリンクは、ワイヤード又はワイヤレスリンク又はその組み合わせ、或いは接続されたエレメントへ及びそこからデータを供給及び/又は通信することのできる他の既知の又は今後開発されるエレメントであることが明らかである。ここで使用するモジュールという語は、エレメントに関連した機能を遂行できる既知の又は今後開発されるハードウェア、ソフトウェア、ファームウェア、又はその組み合わせを指す。又、ここで使用する決定、計算及びコンピューティング、並びにその変形の語は、交換可能に使用され、そして任意のタイプの方法、プロセス、数学演算又は技術を包含する。
【0394】
ここに開示する実施形態の前記説明は、当業者が本発明を実施又は利用できるようにするためになされたものである。これら実施形態に対する種々の変更は、当業者に容易に明らかであり、そしてここに定義する一般的な原理は、本発明の精神又は範囲から逸脱せずに他の実施形態に適用される。従って、本発明は、ここに示す実施形態に限定されるものではなく、特許請求の範囲並びにここに開示した原理及び新規な特徴に一致する最も広い範囲と調和されるべきである。
【0395】
以上に述べた実施形態は、例示に過ぎない。当業者であれば、ここに述べた特定例に対して置き換えられ且つ依然として本発明の範囲内に入る多数の代替的コンポーネント及び実施形態が認識されよう。
【符号の説明】
【0396】
100:インメモリデータベース(MEMDB)
102:システムインターフェイス
104:第1のサーチマネージャー
106:第nのサーチマネージャー
108:第1の分析エージェント
110:第nの分析エージェント
112:第1のサーチコンダクタ
114:第nのサーチコンダクタ
116:パーティショナー
118:第1の集合体
120:第nの集合体
122:スーパーバイザー
124:依存性マネージャー
200:ファセットサーチ方法
300:サーチ示唆生成方法
400:システムアーキテクチャー
402:システムインターフェイス
410:第1のサーチマネージャー
412:第nのサーチマネージャー
420:第1の分析エージェント
422:第nの分析エージェント
430:第1のサーチコンダクタ
432:第nのサーチコンダクタ
440:パーティションデータ
450:パーティショナー
460:第1の集合体
462:第nの集合体
470:スーパーバイザー
480:依存性マネージャー
500:ノード
502:ノードマネージャー
510:モジュール
512:第nモジュール
600:ノード設定
700:モジュール設定
800:質問処理
900:サーチコンダクタ機能
1000:集合体パーティショニング
1100:集合体ローディング
1300:サーチノードクラスター
1400:接続図
1500:欠陥許容アーキテクチャー
1600:ノード
1700:欠陥取り扱い
1800:ブロック図接続
1900:構成プロセス
2000:依存性
2100:システムアーキテクチャー
2200:分析モジュール追加方法
2300:インメモリデータベース
2400:非排他的サーチ方法
2500:圧縮装置
2600:集合体データテーブル
【国際調査報告】