JP2021506030A - コンピュータ処理方法、コンピュータ・プログラム製品およびシステム - Google Patents

コンピュータ処理方法、コンピュータ・プログラム製品およびシステム Download PDF

Info

Publication number
JP2021506030A
JP2021506030A JP2020531721A JP2020531721A JP2021506030A JP 2021506030 A JP2021506030 A JP 2021506030A JP 2020531721 A JP2020531721 A JP 2020531721A JP 2020531721 A JP2020531721 A JP 2020531721A JP 2021506030 A JP2021506030 A JP 2021506030A
Authority
JP
Japan
Prior art keywords
data record
key
unstructured data
value
processing circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020531721A
Other languages
English (en)
Other versions
JP7146919B2 (ja
Inventor
ボーリング、ニール、エヴェレット
リー、ブライアン
メネンデス、テリー
シュウ、トニー
ピズル、ゲイリー
ライ、エレーヌ
ロウ、ローレンス、ルーン−タク
ベンジャミン−デッカート、デブラ
ペレス、ロイティ プリエト
ペレス、ロイティ プリエト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021506030A publication Critical patent/JP2021506030A/ja
Application granted granted Critical
Publication of JP7146919B2 publication Critical patent/JP7146919B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】非構造化データを構造化フレームワークに記憶する技術を提供する。【解決手段】1つの実施形態において、方法は、非構造化データ・レコードを受信することと、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析することとを含む。特性は、フィールドの数、フィールドの長さおよび非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。方法は、また、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得することと、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュすることとを含む。さらに、方法は、インデックス付与キーとしてハッシュ値を含むように非構造化データ・レコードを更新し、それによって修正済みデータ・レコードを生成することを含む。また、方法は、修正済みデータ・レコードを構造化データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新することであって、エントリがハッシュ値を含む、更新することを含む。【選択図】図6

Description

本発明は、非構造化データを記憶することに関し、より詳細には、構造化フレームワークを利用するアーキテクチャに非構造化ドキュメント指向非リレーショナル・データを記憶することに関する。
ネットワーク、大規模システム、グループ、および既存の通信チャネルにハードワイヤードおよびワイヤレス接続技術を介してますます追加されている何千ものデバイスおよびシステムによって、大量のデータが生み出されている。「スマート」デバイスおよびモノのインターネット(IoT)デバイスの需要の増加が、分析、記憶、および管理に利用可能なデータ量の増加を引き起こしている。スマートウォッチ、スマート冷蔵庫および他の電気製品、自動車、携帯電話、タブレットおよびノートブック、バイオトラッカ(フィットネス・バンド、心拍数モニタ、ランニング・ウォッチなど)、医療デバイス、医療診断デバイスなど、豊富な情報を生み出す多くの異なる種類のデバイスが、現在存在する。典型的には、これらのデバイスによって生み出されているこのデータの大部分は、非構造化データである。
一般的なMongoDB(R)およびCouchDB(R)などのドキュメント指向非リレーショナル・データベースは、非構造化クエリ言語(NoSQL)データベースなどの非構造化データを保持し、処理する。これらのデータベースは、文書が、JSON(Java(R)(商標)Script Object Notation)またはバイナリJSON(BSON)などの複数の標準フォーマットのうちの1つにデータをカプセル化および符号化すると仮定する。ドキュメント指向データベースでは、「レコード」は、一般に「ドキュメント」を指し、両者は以下の説明において交換可能に使用される。これらのデータベースは、データ記憶のための最新パラダイムを使用し、そのようなデータベースの急速な展開を見込んでいる。これらの属性は、データベース方式が必要とされないため可能とされ、非リレーショナル・データベースの中の任意のオブジェクトが、任意のパラメータのセットで定義され得る。しかしながら、現在非構造化データのセットを記憶するためには、典型的には、データは連続的なバイト・ストリーム内に保存される。ドキュメントの任意の特定の態様について特定のドキュメントの全てのデータを検索するために、大量のデータがデータベースから順次読み出されなければならず、それは、時間とリソースがかかる。さらに、このやり方で非リレーショナル・データベースにデータを記憶することは、データを記憶し取り出すための高度なアクセス方法、および構造化データベースで利用可能な、利用されるべきデータ管理技術の最大限の利点を可能にしない。Java(R)およびJava(R)に基づく商標およびロゴは、Oracle(R)またはその関連会社あるいはその両方の商標または登録商標である。
さらに、非構造化データを連続的なデータ・ストリームまたはファイルとして記憶することに依存する構造化データベースに、非構造化データを記憶しようとする試みは、構造化データベースに一旦記憶されたデータにインデックスを付与することを可能としない。構造化データベースのプライマリ・インデックスの上の、またはプライマリ・インデックスとは別の、追加インデックスの生成に依存する構造化データベースに、非構造化データを記憶しようとする試みは、データを記憶する際に追加のオーバヘッドを必要とし、データベース内の特定ドキュメントを検索しようとする際に、不必要な遅延を必要とする。
したがって、当技術分野において、前述の問題に対処する必要がある。
1つの実施形態において、方法は、非構造化データ・レコードを受信することと、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析することと、を含む。特性は、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。方法は、また、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得することと、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュすることと、を含む。さらに、方法は、インデックス付与キーとしてハッシュ値を含むように非構造化データ・レコードを更新し、それによって修正済みデータ・レコードを生成することを含む。また、方法は、修正済みデータ・レコードを構造化データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新することであって、エントリがハッシュ値を含む、更新することを含む。
別の実施形態において、コンピュータ・プログラム製品は、具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含む。コンピュータ可読記憶媒体は、本来一過性信号ではなく、具現化されたプログラム命令は、処理回路に、処理回路によって、非構造化データ・レコードを受信させ、処理回路によって、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析させるように、処理回路によって実行可能である。特性は、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。具現化されたプログラム命令は、また、処理回路に、処理回路によって、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得させる。さらに、具現化されたプログラム命令は、処理回路に、処理回路によって、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュさせ、処理回路によって、インデックス付与キーとしてハッシュ値を含むように非構造化データ・レコードを更新させ、それによって修正済みデータ・レコードを生成する。さらに、具現化されたプログラム命令は、処理回路に、処理回路によって、修正済みデータ・レコードを構造化データベースに記憶させる。さらに、具現化されたプログラム命令は、処理回路に、処理回路によって、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新させ、エントリがハッシュ値を含む。
さらに別の実施形態において、システムは、処理回路と、メモリと、メモリに記憶されるロジックであって、処理回路によって実行されるときに、処理回路に非構造化データ・レコードを受信させるロジックと、を含む。ロジックは、また、処理回路に、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析させる。特性は、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。さらに、ロジックは、処理回路に、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得させ、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュさせる。さらに、ロジックは、処理回路に、ハッシュ値を含むように非構造化データ・レコードを更新させ、それによって修正済みデータ・レコードを生成する。追加的に、ロジックは、処理回路に、修正済みデータ・レコードを構造化データベースに記憶させる。さらに、ロジックは、処理回路に、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新させ、エントリがハッシュ値を含む。
別の実施形態によれば、方法は、JSON(Java(R)Script Object Notation)またはBSON(binary Java(R)Script Object Notation)に準拠する非構造化データ・レコードを受信することを含む。方法は、また、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、およびデータ・レコードに記憶されているフィールドの順序を判定するために、データ・レコードを構文解析することを含む。方法は、また、プライマリ・キー名を受信または生成することと、プライマリ・キー名をデータ・レコードを含むデータ・レコードのセットに関連付けることと、を含む。また、方法は、整数値を1ずつインクリメントし、その結果もたらされる値を選択することによって、データ・レコードに関連付けられるプライマリ・キーバリューを生成することと、ハッシュ値を取得するためにプライマリ・キーバリューをハッシュすることと、を含む。さらに、方法は、プライマリ・キー名とプライマリ・キーバリューとのペアおよびハッシュ値をインデックス付与キーとして追加することによって、修正済みデータ・レコードを生成するようにデータ・レコードを更新することを含む。方法は、また、修正済みデータ・レコードを仮想記憶アクセス法(VSAM)データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードのためのエントリを含むようにキー順データ・セット(KSDS)VSAMデータベース・インデックスを更新することであって、エントリがハッシュ値を含む、更新することを含む。
さらに別の実施形態によれば、方法は、複数の非構造化データ・レコードをその中に含む非構造化データベースを受信することを含む。方法は、また、少なくとも1つのデータ・レコード内のフィールドの数、少なくとも1つのレコードの合計長、少なくとも1つのデータ・レコードのフィールドの長さ、および少なくとも1つのデータ・レコードに記憶されているフィールドの順序を判定するために、複数の非構造化データ・レコードの少なくとも1つのデータ・レコードを構文解析することを含む。方法は、追加的に、プライマリ・キー名を受信または生成することと、プライマリ・キー名を複数の非構造化データ・レコードに関連付けることと、を含む。また、方法は、複数のキーバリューを生成することであって、各キーバリューが、複数の非構造化データ・レコードの各データ・レコードについて一意の整数値をキーバリューとして個別に選択することによって、複数の非構造化データ・レコードのうちの1つのデータ・レコードに関連付けられる、生成することを含む。さらに、方法は、複数のハッシュ値を取得するために、複数の非構造化データ・レコードの各データ・レコードについてのプライマリ・キーバリューをハッシュすることを含む。追加的に、方法は、複数の修正済みデータ・レコードを生成するために、各修正済みデータ・レコードに固有のプライマリ・キー名とプライマリ・キーバリューとのペアおよびハッシュ値を個別に追加することによって、複数の非構造化データ・レコードの各データ・レコードを更新することを含む。方法は、また、複数の修正済みデータ・レコードを構造化データベースまたは半構造化データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードの全てについてのエントリを含むように、構造化データベースまたは半構造化データベースのプライマリ・インデックスを更新することであって、各エントリが、複数のハッシュ値のうちの1つを含む、更新することを含む。
これらの実施形態のいくつかの恩恵は、構造化フレームワークに記憶された後の非構造化データに対するアクセス速度の高速化、ならびにプライマリ・インデックス(および非構造化データに基づいて生成される任意の代替インデックス)による拡張された検索可能性を含む。さらに、その中のデータ・レコードのうちのいずれかを更新するためにデータ・セット全体が書き換えられることに依存する、バイトストリームとしてデータ・セットに記憶された非構造化データとは対照的に、データ・セット全体(複数のデータ・レコードをその中に含み得る)が、その中の1つまたは複数のデータ・レコードを更新するときに書き換えされない。本実施形態に従って構造化フレームワークに記憶される非構造化データは、ドキュメントまたはレコード・レベルで更新されてもよく、それによって、更新プロセスにおいて利用されるI/Oの全体量が減少し、その中に記憶された非構造化データ・レコードを処理することに関連する構造化データベースの性能が向上する。
本発明の他の態様および実施形態は、図面と併せて用いられる際に例として本発明の原理を示す、以下の詳細な説明から明らかとなるであろう。
本発明の好適な実施形態は、単なる例として、以下の図面を参照してここで説明される。
発明の実施形態による、コンピューティング・ノードを示す。 1つの実施形態による、ネットワーク・アーキテクチャを示す。 1つの実施形態による、階層型データ記憶システムを示す。 1つの実施形態による、非構造化データを構造化フレームワークに記憶するためのシステムを示す。 構造化データベースのために生成されるべきセカンダリ・インデックスに能力を提供するシステムを示す。 1つの実施形態による、方法のフローチャートを示す。 別の実施形態による、方法のフローチャートを示す。 さらなる別の実施形態による、方法のフローチャートを示す。
以下の説明は、本発明の一般原則を示すために行われ、ここで特許請求される発明概念を限定するように意味されない。さらに、本明細書で説明される特定の特徴は、様々な可能性のある組み合わせおよび交換のそれぞれにおいて他の説明される特徴と組み合わせて使用され得る。
本明細書において特段の定義がされない限り、全ての用語は、明細書から暗示される意味、および当業者によって理解される意味または辞書、論文などにおいて定義される意味あるいはその両方を含む、最も広範囲の可能な解釈を与えられるものとする。
明細書および添付の特許請求の範囲において使用される単数形「a」、「an」、および「the」は、特段の指定がない限り、複数の指示物を含むことにも留意されなければならない。「comprises(備える)」または「comprising(備えている)」という用語、あるいはその両方は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはそれらの組み合わせの存在を示しているが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはそれらの集合、あるいはそれらの組み合わせの存在または追加を排除するものではないと、さらに理解されたい。本明細書において使用される「約」という用語は、当業者により理解されるように、「約」という用語が前にある値に適度に近い任意の値とともに、「約」という用語が前にある値を示す。特段の指示がないとき、「約」という用語は、「約」という用語が前にある値±値の10%を示す。例えば、「約10」は、9.0を含む、9.0〜11.0の全ての値を示す。
以下の説明は、構造化フレームワークを利用するアーキテクチャに非構造化データを記憶するためのシステム、方法、およびコンピュータ・プログラム製品の複数の好適な実施形態を開示する。
1つの概略的実施形態において、方法は、非構造化データ・レコードを受信することと、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析することと、を含む。特性は、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。方法は、また、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得することと、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュすることと、を含む。さらに、方法は、インデックス付与キーとしてハッシュ値を含むように非構造化データ・レコードを更新し、それによって修正済みデータ・レコードを生成することを含む。また、方法は、修正済みデータ・レコードを構造化データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新することであって、エントリがハッシュ値を含む、更新することを含む。
別の概略的実施形態において、コンピュータ・プログラム製品は、具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含む。コンピュータ可読記憶媒体は、本来一過性信号ではなく、具現化されたプログラム命令は、処理回路に、処理回路によって、非構造化データ・レコードを受信させ、処理回路によって、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析させるように、処理回路によって実行可能である。特性は、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。具現化されたプログラム命令は、また、処理回路に、処理回路によって、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得させる。さらに、具現化されたプログラム命令は、処理回路に、処理回路によって、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュさせ、処理回路によって、インデックス付与キーとしてハッシュ値を含むように非構造化データ・レコードを更新させ、それによって修正済みデータ・レコードを生成する。追加的に、具現化されたプログラム命令は、処理回路に、処理回路によって、修正済みデータ・レコードを構造化データベースに記憶させる。さらに、具現化されたプログラム命令は、処理回路に、処理回路によって、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新させ、エントリがハッシュ値を含む。
さらに別の概略的実施形態において、システムは、処理回路と、メモリと、メモリに記憶されるロジックであって、処理回路によって実行されるときに、処理回路に非構造化データ・レコードを受信させるロジックと、を含む。ロジックは、また、処理回路に、非構造化データ・レコードの特性を判定するために非構造化データ・レコードを構文解析させる。特性は、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序の判定を含む。また、ロジックは、処理回路に、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得させ、ハッシュ値を取得するために少なくとも第1のキーバリューをハッシュさせる。さらに、ロジックは、処理回路に、ハッシュ値を含むように非構造化データ・レコードを更新させ、それによって修正済みデータ・レコードを生成する。追加的に、ロジックは、処理回路に、修正済みデータ・レコードを構造化データベースに記憶させる。さらに、ロジックは、処理回路に、修正済みデータ・レコードのためのエントリを含むように構造化データベースのインデックスを更新させ、エントリがハッシュ値を含む。
別の概略的実施形態によれば、方法は、JSON(Java(R)Script Object Notation)またはBSON(binary Java(R)Script Object Notation)に準拠する非構造化データ・レコードを受信することを含む。方法は、また、非構造化データ・レコードの合計長、フィールドの数、フィールドの長さ、およびデータ・レコードに記憶されているフィールドの順序を判定するために、データ・レコードを構文解析することを含む。方法は、また、プライマリ・キー名を受信または生成することと、プライマリ・キー名をデータ・レコードを含むデータ・レコードのセットに関連付けることと、を含む。また、方法は、整数値を1ずつインクリメントし、その結果もたらされる値を選択することによって、データ・レコードに関連付けられるプライマリ・キーバリューを生成することと、ハッシュ値を取得するためにプライマリ・キーバリューをハッシュすることと、を含む。さらに、方法は、プライマリ・キー名とプライマリ・キーバリューとのペアおよびハッシュ値をインデックス付与キーとして追加することによって、修正済みデータ・レコードを生成するようにデータ・レコードを更新することを含む。方法は、また、修正済みデータ・レコードを仮想記憶アクセス法(VSAM)データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードのためのエントリを含むようにキー順データ・セット(KSDS)VSAMデータベース・インデックスを更新することであって、エントリがハッシュ値を含む、更新することを含む。
さらに別の概略的実施形態によれば、方法は、複数の非構造化データ・レコードをその中に含む非構造化データベースを受信することを含む。方法は、また、少なくとも1つのデータ・レコード内のフィールドの数、少なくとも1つのデータ・レコードの合計長、少なくとも1つのデータ・レコードのフィールドの長さ、および少なくとも1つのデータ・レコードに記憶されているフィールドの順序を判定するために、複数の非構造化データ・レコードの少なくとも1つのデータ・レコードを構文解析することを含む。方法は、追加的に、プライマリ・キー名を生成することと、プライマリ・キー名を複数の非構造化データ・レコードに関連付けることと、を含む。さらに、方法は、複数のキーバリューを受信または生成することであって、各キーバリューが、複数の非構造化データ・レコードの各データ・レコードについて一意の整数値をキーバリューとして個別に選択することによって、複数の非構造化データ・レコードのうちの1つのデータ・レコードに関連付けられる、受信または生成することを含む。さらに、方法は、複数のハッシュ値を取得するために、複数の非構造化データ・レコードの各データ・レコードについてのプライマリ・キーバリューをハッシュすることを含む。追加的に、方法は、複数の修正済みデータ・レコードを生成するために、各修正済みデータ・レコードに固有のプライマリ・キー名:キーバリュー・ペアおよびハッシュ値を個別に追加することによって、複数の非構造化データ・レコードの各データ・レコードを更新することを含む。方法は、また、複数の修正済みデータ・レコードを構造化データベースまたは半構造化データベースに記憶することを含む。さらに、方法は、修正済みデータ・レコードの全てについてのエントリを含むように、構造化データベースまたは半構造化データベースのプライマリ・インデックスを更新することであって、各エントリが、複数のハッシュ値のうちの1つを含む、更新することを含む。
図1を参照すると、1つの実施形態による、コンピューティング・ノード10の例の概略が示される。コンピューティング・ノード10は、適当なコンピューティング・ノードの単なる一例であり、本明細書で説明される発明の実施形態の使用または機能性の範囲に関するいかなる限定も示唆するように意図されない。それにかかわらず、コンピューティング・ノード10は、実施されること、または本明細書で述べる機能性のいずれかを実行すること、あるいはその両方が可能である。さらに、コンピューティング・ノード10は、本明細書で説明される、または当業者に既知の、あるいはその両方の任意のシステム、ネットワーク、クラウド、クラスタ、またはデータ記憶環境、あるいはそれらの組み合わせに含まれ得る。
コンピューティング・ノード10には、コンピュータ・システム/サーバ12が存在し、コンピュータ・システム/サーバ12は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム/サーバ12を伴った使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式デバイス、ラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワーク・パーソナル・コンピュータ(PC)、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的状況において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピューティング・システム/サーバ12は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
図1に示されるように、コンピューティング・ノード10内のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサ、処理回路、または処理ユニット、あるいはそれらの組み合わせ(まとめて、プロセッサ16)、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に連結するバス18を含み得るが、これらに限定されない。
バス18は、メモリ・バス、メモリ・コントローラ、周辺バス、高速グラフィック・ポート、プロセッサ、および多様なバス・アーキテクチャのいずれかを使用するローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
コンピュータ・システム/サーバ12は、典型的には多様なコンピュータ可読記憶媒体を含む。このような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方などを含む。
システム・メモリ28は、コンピュータ可読記憶媒体を、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性メモリの形態で含み得る。コンピュータ・システム/サーバ12は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ可読記憶媒体をさらに含み得る。単なる例として、記憶システム34は、非リムーバブル不揮発性磁気記憶媒体(図示せず、かつ典型的には「ハード・ドライブ」または「ソリッド・ステート・ドライブ」と呼ばれる)から読み出し、かつ書き込むために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)からの読み出しおよび書き込みのための磁気ディスク・ドライブ、ならびにCD−ROM、DVD−ROM、または他の光学媒体、あるいはそれらの組み合わせなどのリムーバブル不揮発性光ディスクからの読み出しまたは書き込みあるいはその両方のための光学ディスク・ドライブが、提供され得る。このような場合、それぞれが、1つまたは複数のデータ媒体インターフェースによってバス18に接続され得る。以下でさらに示され説明されるように、メモリ28は、発明の実施形態において説明される機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータ・プログラム製品を含み得る。
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ28に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組み合わせのそれぞれが、ネットワーキング環境の実施を含み得る。プログラム・モジュール42は、概して、本明細書に説明される発明の実施形態の機能または方法論あるいはその両方を実行する。
コンピュータ・システム/サーバ12は、また、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。このような通信は、入力/出力(I/O)インターフェース22を介して発生し得る。さらに、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはそれらの組み合わせなどの1つまたは複数のネットワークと通信し得る。図示されるように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム/サーバ12と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、独立ディスクの冗長アレイ(RAID)・システム、テープ・ドライブ、データ・アーカイブ記憶システムなどを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、Microsoft(R)Windows(R)オペレーティング・システム(OS)、Apple(R)OS、UNIX(R)OS、IBM(R)z/OS(R)などのオペレーティング・システムがその上に常駐し得る。好適な実施形態は、記載されるもの以外のプラットフォームおよびオペレーティング・システム上でも実施され得ると理解されるものとする。好適な実施形態は、オブジェクト指向プログラミング方法論とともに、PL/I、XML、C、もしくはC++言語、またはそれらの組み合わせ、あるいは他のプログラミング言語を用いて書かれてもよい。複雑なアプリケーションを開発するためにますます使用されるようになっているオブジェクト指向プログラミング(OOP)が、使用されてもよい。Microsoft(R)、Windows(R)、Windows(R) NT(R)、およびWindows(R)ロゴは、米国、その他の国々、またはその両方におけるMicrosoft Corporationの商標である。UNIX(R)は、米国およびその他の国々におけるOpen Groupの登録商標である。IBMおよびz/OSは、米国またはその他の国々、あるいはその両方におけるInternational Business Machines Corporationの登録商標である。
図2は、1つの実施形態による、アーキテクチャ100を示す。図1に示されるコンピューティング・ノード10は、図2に示されるようなアーキテクチャ100において利用され得る。さらに、アーキテクチャ100は、第1のリモート・ネットワーク104および第2のリモート・ネットワーク106を含む複数のリモート・ネットワーク102を含み得る。ゲートウェイ101は、リモート・ネットワーク102と近接ネットワーク108との間に連結され得る。本アーキテクチャ100の状況において、ネットワーク104、106は、それぞれLAN、インターネットなどのWAN、公衆交換電話網(PSTN)、内線電話網などを含むがこれらに限定されない任意の形態を取り得る。
使用中、ゲートウェイ101は、リモート・ネットワーク102から近接ネットワーク108への入口ポイントとしての役割をする。このように、ゲートウェイ101は、ゲートウェイ101に到達する所与のデータ・パケットを方向付けすることが可能なルータ、および所与のパケットのためにゲートウェイ101内外に実際のパスを供給するスイッチとして機能し得る。
近接ネットワーク108に連結される少なくとも1つのデータ・サーバ114がさらに含まれ、近接ネットワーク108は、ゲートウェイ101を介してリモート・ネットワーク102からアクセス可能である。データ・サーバ114は、任意の種類のコンピューティング・デバイス/グループウェアを含み得ることに留意すべきである。各データ・サーバ114に連結されるのは、複数のユーザ・デバイス116である。ユーザ・デバイス116は、また、ネットワーク104、106、108のうちの1つを通して直接接続され得る。そのようなユーザ・デバイス116は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、手持ち式コンピュータ、プリンタ、または任意の他の種類のロジック、あるいはそれらの組み合わせを含み得る。ユーザ・デバイス111は、また、1つの実施形態においてネットワークのうちのいずれかに直接連結され得ることに留意すべきである。
例えば、ファクシミリ機械、プリンタ、ネットワーク化記憶ユニットもしくはシステムまたはローカル記憶ユニットもしくはシステムあるいはその両方などの、周辺装置120または一連の周辺装置120が、ネットワーク104、106、108のうちの1つまたは複数に連結され得る。データベースまたは追加コンポーネント、あるいはその両方が、ネットワーク104、106、108に連結される任意の種類のネットワーク素子とともに利用されてもよく、または任意の種類のネットワーク素子に統合されてもよいことに留意すべきである。本説明の文脈において、ネットワーク素子は、ネットワークの任意のコンポーネントを指し得る。
いくつかの手法によれば、本明細書に説明される方法およびシステムは、IBM(R) z/OS(R)環境をエミュレートするUNIX(R)システム、MICROSOFT WINDOWS(R)環境を仮想的にホストするUNIX(R)システム、IBM(R) z/OS(R)環境をエミュレートするMICROSOFT WINDOWS(R)システムなどの、仮想システムまたは1つもしくは複数の他のシステムをエミュレートするシステムあるいはその両方を用いて、またはその上で、あるいはその両方で、実施され得る。この仮想化またはエミュレーション、あるいはその両方は、いくつかの実施形態において、VMWAREソフトウェアまたは何らかの他の既知の仮想レイヤの使用を通して強化され得る。
さらなる手法において、1つまたは複数のネットワーク104、106、108は、一般に「クラウド」と呼ばれるシステムのクラスタを表し得る。クラウド・コンピューティングにおいて、処理電力、周辺装置、ソフトウェア、データ、サーバなどの共有リソースが、オンデマンド関係でクラウド内の任意のシステムに提供され、それによって、多くのコンピューティング・システムにわたるアクセスおよびサービスの分散を可能にする。クラウド・コンピューティングは、典型的には、クラウド内で動作するシステム間のインターネット接続を含むが、システムを接続する他の技術も使用され得る。
ここで図3を参照すると、1つの実施形態による階層型記憶システム300が示されている。図3に示される要素のうちのいくつかは、様々な実施形態に従って、ハードウェアまたはソフトウェアあるいはその両方として実施され得ることに留意されたい。記憶システム300は、少なくとも1つの上位記憶層302および少なくとも1つの下位記憶層306の上に複数の媒体と通信するための記憶システム・マネージャ312を含み得る。記憶システム・マネージャは、様々な実施形態に従ってさらに詳細に本明細書に説明されるように、ジョブ・リクエストを管理するためのジョブ制御マネージャも含み得る。上位記憶層302は、好適には、不揮発性メモリ(NVM)、ソリッド・ステート・ドライブ(SSD)内のソリッド・ステート・メモリ、フラッシュ・メモリ、SSDアレイ、フラッシュ・メモリ・アレイ、ハード・ディスク・ドライブ(HDD)内のハード・ディスクなど、または本明細書に記載されたその他のもの、もしくは当技術分野において既知のその他のもの、あるいはそれらの組み合わせなどの、1つまたは複数のランダム・アクセスまたは直接アクセスあるいはその両方の媒体304を含み得る。下位記憶層306は、好適には、低速アクセスHDD、テープ・ドライブまたは光学媒体あるいはその両方における磁気テープなどのシーケンシャル・アクセス媒体など、または本明細書に記載されたその他のもの、もしくは当技術分野において既知のその他のもの、あるいはそれらの組み合わせを含む、1つまたは複数の低性能記憶媒体308を含み得る。1つまたは複数の追加記憶層316は、システム300の設計者による所望の通り記憶メモリ媒体の任意の組み合わせを含み得る。また、上位記憶層302または下位記憶層306あるいはその両方のうちのいずれかが、記憶デバイスまたは記憶媒体あるいはその両方の何らかの組み合わせを含み得る。
記憶システム・マネージャ312は、図2に示されるようなストレージ・エリア・ネットワーク(SAN)、または何らかの他の適当なネットワーク種類などのネットワーク310を通して、上位記憶層302および下位記憶層306上の記憶媒体304、308と通信し得る。記憶システム・マネージャ312は、また、ホスト・インターフェース314を通して1つまたは複数のホスト・システム(図示せず)と通信してもよく、ホスト・インターフェース314は、記憶システム・マネージャ312の一部であってもなくてもよい。記憶システム・マネージャ312または記憶システム300の任意の他のコンポーネントあるいはその両方が、ハードウェアまたはソフトウェアあるいはその両方において実施されてもよく、コマンドを実行するために、中央処理装置(CPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)などの当技術分野において既知の種類のプロセッサ(図示せず)を使用してもよい。当然ながら、本説明を読むと当業者には明らかであるように、記憶システムの任意の配列が使用されてもよい。
さらなる実施形態において、記憶システム300は、任意の数のデータ記憶層を含んでもよく、各記憶層内の同一または異なる記憶メモリ媒体を含んでもよい。例えば、各データ記憶層は、HDD、SSD、シーケンシャル・アクセス媒体(テープ・ドライブ内のテープ、光ディスク・ドライブ内の光ディスクなど)、直接アクセス媒体(CD−ROM、DVD−ROMなど)、または媒体記憶種類の任意の組み合わせなどの、同一種類の記憶メモリ媒体を含み得る。1つのそのような構成において、上位記憶層302は、高性能記憶環境にデータを記憶するためにSSD記憶媒体の大部分(SSD記憶媒体全てに至るまで)を含み得る。下位記憶層306および追加記憶層316を含む残りの記憶層は、低性能記憶環境にデータを記憶するためにSDD、HDD、テープ・ドライブなどの任意の組み合わせを含み得る。このように、より頻繁にアクセスされるデータ、より高い優先度を有するデータ、より高速にアクセスされる必要があるデータなどが、上位記憶層302に記憶されてもよく、これらの属性のうちの1つを有しないデータが、下位記憶層306を含む追加記憶層316に記憶され得る。当然ながら、本説明を読むと当業者は、本明細書に提示される実施形態に従って、異なる記憶方式へ実施するための記憶媒体種類の多くの他の組み合わせを考案し得る。
1つの特定の実施形態において、記憶システム300は、SSDおよびHDDの組み合わせを含んでもよく、上位記憶層302はSSD(およびおそらく何らかのバッファ・メモリ)を含み、下位記憶層306はHDD(およびおそらく何らかのバッファ・メモリ)を含む。別の実施形態によれば、記憶システム300は、SSDおよび磁気テープ・ドライブを有する磁気テープの組み合わせを含んでもよく、上位記憶層302はSSD(およびおそらく何らかのバッファ・メモリ)を含み、下位記憶層306は磁気テープ(およびおそらく何らかのバッファ・メモリ)ならびに磁気テープからデータにアクセスするための磁気テープ・ドライブを含む。さらに別の実施形態において、記憶システム300は、HDDおよび磁気テープの組み合わせを含んでもよく、上位記憶層302は、HDD(およびおそらく何らかのバッファ・メモリ)を含み、下位記憶層306は、磁気テープ(およびおそらく何らかのバッファ・メモリ)を含む。
図4を参照すると、1つの実施形態による、システム400が示される。システム400は、処理回路412と、様々な実施形態において本明細書に説明される、あるデータ管理機能性を処理回路に実行させるロジックと、1つまたは複数のコンピュータ可読記憶媒体404と、を含む。このシステム400では、非構造化データ402は、1つまたは複数のコンピュータ可読記憶媒体404上の構造化フレームワーク406に記憶され得る。非構造化データ402とは、各データ・レコードが、事前定義されたデータ・モデルを有しない情報、事前定義された方式で編成されない情報、事前定義されたデータ・フォーマットに従って記憶されない情報などを含むことを意味する。非構造化データ402は、構造化フレームワーク406の1つまたは複数のコンピュータ可読記憶媒体404上に記憶される前に、任意の既知の非構造化フォーマットまたは半構造化フォーマットに従って記憶されてもよい。いくつかの例示的な非構造化または半構造化フォーマットは、JSON(Java(R)Script Object Notation)データ・フォーマット、バイナリJSON(BSON)データ・フォーマット、MessagePack(商標)、YAML、拡張マークアップ言語(XML)、または何らかの他の適当な非構造化または半構造化データ・フォーマットを含むが、これらに限定されない。さらに、いくつかの手法において、この非構造化データ402は、構造化フレームワーク406への記憶の前に、MongoDB(R)、ArangoDB(商標)などの非リレーショナルNoSQLデータベースに記憶されてもよい。データ内に何のフィールドが存在するか、フィールドの長さ、フィールドの順序などが分からないため、この種のデータは扱うことが困難である。この情報は、非構造化データ402の非構造化データ・レコードのそれぞれに含まれるものを確認するのに有用である。
本明細書で使用される構造化データは、高度な編成を有する情報を指し、それは、リレーショナル(または構造化)データベースへの素早くシームレスな追加を可能にし、単純で簡単な検索エンジン・アルゴリズムまたは他の検索動作によって容易に検索可能である。本明細書で使用される構造化フレームワーク406は、リレーショナル方式でデータを記憶し、または1つもしくは複数のコンピュータ可読記憶媒体404上で構築するように構成されるフレームワークまたはアーキテクチャを示す。構造化フレームワーク406は、各データ・レコードがIBM(R)DB2(R)、Microsoft(R)SQLサーバ、Oracle(R)データベースなどの事前定義されたフォーマットを有することを示す完全構造化であってもよく、またはその中のデータ・レコードがIBM(R)仮想記憶アクセス法(VSAM)などの指定されたガイドラインの下でプリセット・フォーマットからカスタマイズされ、もしくは変更され得ることを示す半構造化であってもよい。IBM(R)仮想記憶アクセス法(VSAM)は、レコード・レベル共有(RLS)を介したデータ・レコードへのアクセスを可能にしてもしなくてもよい。
構造化フレームワーク406において、1つまたは複数のコンピュータ可読記憶媒体404上の記憶されたデータ408(構造化データ、および本明細書に説明される実施形態に従って記憶されるときは、非構造化データ402の修正版)は、VSAMベース・データベースのキー順データ・セット(KSDS)、または本技術分野において既知の構造化もしくは半構造化アーキテクチャの他のインデックス付与メカニズムなど、プライマリ・インデックス410を介して迅速にアクセスされ得る。このように、アクセス速度の高速化および拡張された検索可能性を含む構造化データおよび構造化フレームワーク406の恩恵が、そこに記憶される非構造化データ402に提供され得る。
本実施形態に従って非構造化データ402を記憶することの別の恩恵は、記憶されたデータ408への更新がリクエストされ処理されることに応答して、構造化フレームワーク406に記憶されるデータ・セット全体が、従来のバイトストリーム・データ・セットのように書き換えされないということである。構造化データとして記憶されたデータ・セットの場合、記憶されたデータ408は、ドキュメント・レベルで更新されてもよく、それによって、I/Oの全体量が減少し、構造化フレームワーク406内のデータの使用に関連する性能が向上する。
これは、連続するデータ・ストリームもしくはファイルを利用して非構造化データを記憶する構造化フレームワークに非構造化データを記憶する他の方法、または構造化データベースおよびそのインデックスの上に、もしくはそれとは別に追加インデックスを生成する方法に対する改善である。これらの方法が、データベース内の特定ドキュメントを検索しようとするときに追加のオーバヘッドまたは遅延あるいはその両方を作り出すためである。
1つの実施形態において、非構造化データ402は、非構造化データ402またはドキュメントを取ること、データの特性を判定するためにパーサ414を用いて非構造化データ402またはドキュメントを構文解析すること、データにインデックス付与するためのプライマリ・キーを生成すること、可能な限りいくつかの実施においてメタデータをプライマリ・キーに追加すること、プライマリ・キー(およびいくつかの実施ではメタデータ)を含むように非構造化データ402またはドキュメントを修正すること、修正済みデータまたはドキュメントを構造化フレームワーク406に記憶すること、ならびにプライマリ・インデックス410の「キー名:キーバリュー」ペアの関係検索に基づいて、GET、PUT、およびERASEなどのある基本データベース管理コマンドへのアクセスを可能にする1つまたは複数のアプリケーション・プログラミング・インターフェース(API)416を提供することによって、構造化データベースまたは半構造化データベースなどの構造化フレームワーク406に記憶される。本実施形態において、一貫したプライマリ・キー名が、非構造化データ402またはドキュメントに使用され、それは、非構造化データ(例えば、ドキュメント、データ・レコードなど)の各セットについて受信され、発見され、または生成される。
本実施形態によれば、プライマリ・キー名とプライマリ・キーバリューとのペア(「キー名:キーバリュー」)におけるプライマリ・キーバリューは、当業者に広く利用可能な複数の周知のハッシュ・アルゴリズムのうちの1つを用いてハッシュされる。結果となるハッシュ値は、VSAM内で使用されるKSDS、または何らかの他の適当なインデックスおよび管理プロトコルなどの、使用されている特定のデータベース管理プロトコルに適当なプライマリ・インデックス410において、インデックス付与するためのキーとして使用される。このプライマリ・キーは、キー・ペアを介した任意のドキュメントへの迅速なアクセスを提供する。キー・ペアは、キーバリューに関連付けられたプライマリ・キー名、例えば、プライマリ「キー名:キーバリュー」ペアを含む。
さらに、1つの実施形態では、セカンダリ・インデックスまたは代替インデックスが、プライマリ・インデックス410に追加して生成されてもよく、それらは、構造化フレームワーク406内の非構造化データ402またはドキュメントを参照する代替方法を可能にする。
構造化フレームワーク内に非構造化データを記憶するこれらの技術を用いることのいくつかの恩恵は、プライマリ・キー名:キーバリューのペアを用いて特定のドキュメントを参照する際の探索速度の高速化を含むが、これに限定されない。所与のキー名:キーバリュー・ペアに合致するレコードを見つけるために非構造化データベース内のあらゆるレコードを再読み出しする、非構造化データベースの基本実施と比較して、より高速の探索速度が可能である。VSAMなどの構造化または半構造化インデックス付与方式を用いると、所望のレコードが、著しくさらに速くデータベース内で見つけられ得る。
さらに、恩恵は、レコードまたはドキュメント・レベルにおいてロックする能力を含む、高度なシリアライズを含み、それは、データ・セット全体をロックすることと比較して、より高いスループットをもたらす。また、恩恵は、最近参照されたドキュメントまたはレコードのみに対してバッファすること、および大部分のデータ・セットの書き換えまたは取り出しを必要とすることなく個々のドキュメントまたはレコードを更新することを含む。これは、データベースのアクティビティにおいて利用されるバッファ量を低下させ、ドキュメントまたはレコードを更新する際により高いスループットをもたらす。
ここで図5を参照すると、システム500は、セカンダリ・インデックス514の生成を自動的に引き起こす、(ユーザ、管理者、または何らかの他の適当な人もしくはプロセスなどによって)指定されるべき1つまたは複数のデータ・レコード内のあるキー516について能力を提供する。これらのセカンダリ・インデックスまたは代替インデックス(AIX)514は、キー名:キーバリューについての可能な値およびそれに関連付けられたハッシュされたキー518のレコードを含む。ハッシュされたキー518は、非構造化データ502またはドキュメントとして作り出された構造化フレームワーク506内の記憶されたデータ508またはドキュメントを位置特定するためにも使用され得る。システム500は、処理回路512と、様々な実施形態において本明細書に説明される、あるデータ管理機能性を処理回路512に実行させるロジックと、1つまたは複数のコンピュータ可読記憶媒体504と、を含む。
1つの実施形態によれば、AIX514内部のエントリに使用され得るフォーマットは、<メタデータ><ベース・ポインタの#><AIXバージョン><AIXフラグ><AIXキー長さ><AIXキーバリュー><ベース・キー1><ベース・キー2><ベース・キー3>...を含む。
本実施形態において、「AIXキー」は、任意の特定のAIXエントリ518を他のAIXエントリ518から区別することが可能な代替インデックス内部の値である。「メタデータ」は、バージョン数、ドキュメント長、生成または修正された日付などの非構造化データ502またはドキュメントについての情報を含む。「キー長さ」は、代替キーバリューのセット長を示し、「AIXキーバリュー」は、キー名:キーバリュー・ペアからの値である。AIXレコード内の各「ベース・キー」は、1つの特定の非構造化データ502またはドキュメントに固有のハッシュされたキーバリューであり、記憶されたベース・データ508またはドキュメントを、プライマリ・インデックス510を通して参照するために使用され得る。そのベース・キーバリューを有する各ベース・ドキュメントは、代替インデックス514のベース・キー・リスト内にエントリを有する。
AIX514が生成されている特定のキー名に関連付けられた、あるキーバリューを探索するために、リクエストが受信されることに応答して、AIX514は、そのあるキーバリューを記述するエントリを見つけるために検索される。エントリ内にリストされているベース・キーは、次いでプライマリ・インデックス510を介して探索を実行するために利用され、それによって、所望のドキュメントへのアクセスを提供する。
例えば、3つのドキュメントが、JSONベースのデータベース内に位置していると仮定する。
{“id”:“0003”,“名”:“Patty”,“姓”:“Johnson”}
{“id”:“0002”,“名”:“Jane”,“姓”:“Smith”}
{“id”:“0001”,“名”:“John”,“姓”:“Smith”}
この例におけるプライマリ・インデックスは、「id」のプライマリ・キー名から構築されてもよく、ハッシュ値から構築されるVSAMキーを有するVSAM KSDS内に各ドキュメントが記憶されるように構築され得る。この例では、プライマリ・インデックスの簡略化表現が、単に説明のために以下のように表され得る。
8820{“id”:“0003”,“名”:“Patty”,“姓”:“Johnson”}
9G56{“id”:“0002”,“名”:“Jane”,“姓”:“Smith”}
A001{“id”:“0001”,“名”:“John”,“姓”:“Smith”}
このプライマリ・インデックスの例では、9G56、A001、および8820は、「id」の値0001、0002、0003から導出されるハッシュされたプライマリ値である。これらのハッシュされた値は、データベース内のVSAMキーによって順番に整列され、それによって、3つの元のドキュメントの順番から再配置する。この構造を考慮すると、キー名「姓」に対して構築される代替インデックスは、以下のように表される(ここでも簡略化される)。
メタデータ 0001 01 00 07 Johnson 8820
メタデータ 0002 01 00 05 Smith 9G56 A001
このAIXの例では、0001および0002は、各リスト内のベース・キーの数字であり、01は、バージョン標識、00は、1つまたは複数のフラグの標識(カスタマイズ可能であり、全ての実施形態において存在するわけではない)、07および05は、キーバリュー「Johnson」および「Smith」それぞれの長さである。
このAIXの例では、Johnsonは、プライマリ・インデックスからPatty Johnsonであるベース・キー8820とペアにされる。また、Smithは、2つのエントリ、9G56およびA001を有し、そのそれぞれが、キー名「姓」が「Smith」の値を有するが、異なるドキュメントであるドキュメントを指している。
1つの特定の実施において、キーバリューは、例えば一例では252バイト、または他の実施形態では128バイト、514バイトなど、より多くもしくは少ない、切り詰め閾値で切り詰められてもよい。キーバリューの長さが、例えば、この例では252バイトの長さよりも長いプリセット切り詰め閾値を超える場合、プリセット切り詰め閾値までの最初のバイト量だけが、例えばこの例ではキーバリューの最初の252バイトが、検索のために記憶され、使用される。追加的に、ハッシュされたプライマリVSAMキーもまた、一例では128バイトの長さ、または他の実施形態では、64バイト、256バイトなどさらに長くもしくは短く、長さが制限されてもよい。
代替インデックスは、ユーザが開始するプロセスを介して「オン・ザ・フライ」もしくはオンデマンドまたはその両方で、あるいは自動的に、構築されてもよく、それは、データベースのドキュメントまたはレコードの全てをスキャンし、インデックスを構築するための関連情報を抽出する。
さらに、1つの手法では、新たなドキュメントをスキャンすること、および新たなドキュメント内の任意の新たな、または修正済みの情報に従って影響を受ける代替インデックスを更新することによって、代替インデックスは、INSERT、UPDATE、およびERASEアクティビティ中などの標準データベース管理動作中に更新され得る。
ここで図6を参照すると、1つの実施形態による、方法600が示される。方法600は、様々な実施形態において、特に図1〜5に示される環境のいずれかにおいて本発明に従って実行され得る。当然ながら、本説明を読むと当業者に理解されるように、図6において具体的に説明されるものよりも多くの、または少ない動作が、方法600に含まれ得る。
方法600のステップのそれぞれが、動作環境の任意の適当なコンポーネントによって実行され得る。例えば、様々な実施形態において、方法600は、マイクロプロセッサ、サーバ、メインフレーム・コンピュータ、1つもしくは複数のプロセッサをその中に有する処理回路、または1つもしくは複数のプロセッサを含む何らかの他のデバイスによって、部分的にまたは完全に実行され得る。処理回路、例えば、ハードウェアまたはソフトウェアあるいはその両方において実施され、好適には少なくとも1つのハードウェア・コンポーネントを有するプロセッサ、チップ、またはモジュール、あるいはこれらの組み合わせなどが、方法600の1つまたは複数のステップを実行するために任意のデバイスにおいて利用され得る。例となるプロセッサは、MPU、CPU、ASIC、FPGAなど、それらの組み合わせ、または本技術分野において既知の任意の他の適当なコンピューティング・デバイスを含むがこれらに限定されない。
1つの実施形態では、動作環境は、環境内の追加システムのクラスタのうちの1つであり得るデータ・システムを含み得る。別の実施形態では、データ・システムは、サーバ、パーソナル・コンピュータ、モバイル・デバイス、またはプログラム命令を実行することが可能な任意のデバイスを含み得る。さらなる別の実施形態では、データ・システムは、仮想記憶環境内に含まれ得る。例えば、データ・システムは、VSAM環境の一部であってもよい。
図6に示されるように、方法600は、動作602で開始し得る。動作602において、非構造化データ・レコードが、受信される。この非構造化データ・レコードは、任意の既知のフォーマットに従って記憶されてもよく、データベース、データ・ストリームなどにおいて、非構造化データ・レコードのより大きなコレクションまたはセットの一部として受信されてもよい。
動作604において、非構造化データ・レコードが、非構造化データ・レコードの特性を判定するために構文解析される。1つの実施形態において、既知の利用可能なパーサが、非構造化データ・レコードを構文解析するために使用されてもよい。代替の実施形態において、独自パーサまたはカスタマイズされたパーサ、あるいはその両方が、非構造化データ・レコードを構文解析するために採用されてもよく、それは、ユーザ、管理者、または非構造化データ・レコードが記憶されるフォーマットの知識を有する何らかの他の人もしくはエンティティによって提供され得る。
代替インデックス・レコードにおいて、非構造化データ・レコードの特性は、情報がデータ・レコード内に記憶されるフォーマットを示す。1つの実施形態では、非構造化データ・レコードの特性は、少なくとも以下の情報、レコードの合計長、非構造化データ・レコード内のフィールドの数(コレクション内の全ての非構造化データ・レコードにわたって異なっていてもよく、または同一であってもよい)、非構造化データ・レコード内の様々なフィールドの長さ(これらの値は、典型的にはコレクション内の各非構造化データ・レコードについて一意である)、および非構造化データ・レコードに記憶されているフィールドの順序(典型的には、同一フィールドを含む任意の2つの非構造化データ・レコードについて、フィールドの順序は同一であるが、フィールドの順序は、異なるフィールドを含む非構造化データ・レコードについて変化し得る)の判定を含む。
動作606において、プライマリ・キーバリューに関連付けられたプライマリ・キー名を含む、第1のキー・ペアが取得される。1つの実施形態において、第1のキー・ペアは、指定されたプライマリ・キー名について非構造化データ・レコードを検索することによって取得され得る。プライマリ・キー名は、構造化データベース内のデータ・セットに記憶される全てのレコードについて使用されるが、第1のキーバリューは、その中のそれぞれの特定のデータ・レコードに一意である。
別の実施形態において、第1のキー・ペアは、プライマリ・キー名が非構造化データ・レコード内に存在しないことに応答して、その全てが構造化データベースへの記憶対象である非構造化データ・レコードを含む非構造化データ・レコードのコレクションまたはセットに関連付けられている、または関連付けられるプライマリ・キー名を生成することによって取得され得る。構造化データベースに記憶されるコレクション内の全てのドキュメントに、一貫したキー名が関連付けられるように、プライマリ・キー名が、非構造化データ・レコードのセット内の全ての非構造化データ・レコードについて使用される。さらに、非構造化データ・レコード内にキーバリューが存在しないことに応答して、特定の非構造化データ・レコードについて一意である整数値を含むことによって、非構造化データ・レコードに関連付けられる第1のキーバリューが、生成される。
1つの実施形態において、整数値は、最後に使用された値から整数値を1ずつインクリメントし、その結果もたらされるインクリメントされた整数を第1のキーバリューとして、例えば、0000+1=0001、0001+1=0002、...として選択することによって、生成される。
別の実施形態によれば、第1のキー・ペアは、セット内の非構造化データ・レコードの1つまたは複数からの非構造化データ・レコードのコレクションまたはセットから、プライマリ・キー名を識別することによって取得される。本実施形態では、非構造化データ・レコードのセット内の各非構造化データ・レコードは、データ・レコードそれ自体の中のどこかにプライマリ・キー名を含む。さらに、このプライマリ・キー名は、構造化データベースに記憶された他のデータ・セット内で使用される他のプライマリ・キー名から一意である。このように、非構造化データ・レコードのセットに固有であり、データ・セットとして構造化データベースに記憶された後、その中に記憶された他のデータ・セットからこれらのデータ・レコードを区別するプライマリ・キー名が提供される。
さらなる実施形態において、非構造化データ・レコードのコレクションまたはセットの任意の他の非構造化データ・レコードにおいて、キーバリューとして使用されていない整数値を選択することによって、非構造化データ・レコードに関連付けられる第1のキーバリューが生成される。このように、非構造化データ・レコードは、その中に含まれるキーバリューによって、非構造化データ・レコードのコレクションまたはセット内の全ての他のデータ・レコードから区別され得る。
動作608において、ハッシュ値を取得するために、プライマリ・キーバリューがハッシュされる。任意の既知のハッシュ・アルゴリズムが、ハッシュ値を生成するために使用され得る。好適な手法では、ハッシュ・アルゴリズムは、任意の予期される入力、例えば非構造化データ・レコードに基づいて、最小限の数の衝突をもたらす。
1つの実施形態において、ハッシュ・アルゴリズムは、第1のキーバリューだけでなく第1のキー・ペア全体に適用され得る。さらなる実施形態において、方法600は、非構造化データ・レコードからメタデータを識別することを含み得る。本実施形態では、ハッシュ・アルゴリズムは、第1のキーバリューだけでなく、メタデータに追加して第1のキー・ペア全体に適用され得る。この手法によれば、非構造化データ・レコードは、修正済みデータ・レコードの生成において、第1のキー・ペアおよびメタデータに基づくハッシュ値を用いて更新される。
動作610において、非構造化データ・レコードは、インデックス付与キーとしてハッシュ値を含むように更新され、それによって、修正済みデータ・レコードのためのインデックス付与キーを含む構造化フレームワークのインデックスを用いて構造化フレームワーク内で検索され得る、修正済みデータ・レコードを生成する。
動作612において、修正済みデータ・レコードは、構造化データベースに記憶される。さらに、いくつかの手法では、修正済みデータ・レコードに関連する非構造化データ・レコードのコレクションまたはセットからの全ての残りの非構造化データ・レコードも、方法600による修正後に構造化データベースに記憶され得る。
動作614において、構造化データベースのインデックスは、修正済みデータ・レコードのためのエントリを含むように更新される。インデックスに含まれるエントリは、少なくともハッシュ値を含み、ハッシュ値は、非構造化データ・レコードに関連付けられる少なくとも第1のキーバリューを取得するために逆ハッシュされ得る。さらに、インデックスの更新後、非構造化データ・レコードは、それが素早く位置特定され得るように、インデックスを用いて検索されてもよく、それは、構造化フレームワークまたは非構造化フレームワーク内で非構造化データ・レコードを位置特定するためのより低速またはより扱いにくい、あるいはその両方である技術に依存する従来技術に対する改善である。
いくつかの手法において、構造化データベースのインデックスは、方法600に従って非構造化データ・レコードのコレクションまたはセットからの全ての残りの非構造化データ・レコードについてのエントリを含むように更新され得る。
1つの実施形態によれば、方法600は、非構造化データ・レコードにアクセスするための要求を受信することをさらに含み得る。この要求は、所望のデータ・レコードに固有のハッシュ値、またはプライマリ・キー名:キーバリューのペア、または単に所望のデータ・レコードに固有のプライマリ・キーバリューを含み得る。方法600は、修正済みデータ・レコードの位置を判定するために、構造化データベースのインデックスを(ハッシュ値を用いて)照会することをさらに含み得る。修正済みデータ・レコード(構造化データベースに記憶される前は非構造化データ・レコードであった)が位置特定された後、修正済みデータ・レコードの元の未修正データ・レコード部分が、非構造化データ・レコードにアクセスするためのリクエストを受信することに応答して、出力され得る(例えば、プリントされ、モニタまたは画面に表示され、リモート・コンピュータに転送または送信される、など)。
別の実施形態によれば、方法600は、構造化データベースのためのセカンダリ・インデックスを生成することを含み得る。本実施形態では、セカンダリ・インデックス内の各エントリは、構造化データベースの1つのデータ・レコードに関連する。各エントリは、少なくとも以下の情報、特定のデータ・レコードのメタデータ、特定のデータ・レコードのためのベース・ポインタの数、セカンダリ・インデックスについてのバージョン標識、セカンダリ・インデックス・キーの長さ、セカンダリ・インデックス・キーの値、および1つまたは複数のベース・キーを含む。これらのフィールドのそれぞれについては、後でより詳細に説明される。1つまたは複数のベース・キーは、修正済みデータ・レコードとして構造化データベースに記憶された特定の非構造化データ・レコードの個別のプライマリ・キーバリューのハッシュされた値に、個別で(例えば、異なるベース・キーがハッシュ値のそれぞれについて合致される1対1ベースで)合致するハッシュ値である。セカンダリ・インデックスが、特定のデータ・レコードについてのベース・ポインタのうちの1つを用いて調べられた後、プライマリ・インデックス内の1つまたは複数のエントリが、ベース・キーのうちの1つまたは複数を用いて判定され得るように、構造化データベースは、1つまたは複数のベース・キーを用いて検索可能であり、それによって、所望のデータ・レコードが構造化データベース内で位置特定されることを可能にする。
方法600は、様々な手法において、IBM(R)z/OS(R)環境などの中でVSAMを利用するデータ・システム、または当技術分野において既知となるVSAMを利用する任意の他のシステムを用いて実行され得る。
方法600は、システムまたはコンピュータ・プログラム製品、あるいはその両方において実施され得る。例えば、システムは、処理回路、および処理回路と統合されたロジック、処理回路によって実行可能なロジック、または処理回路と統合され、かつ処理回路によって実行可能なロジックを含み得る。統合されるとは、処理回路が、ASIC、FPGAなど、それとともに含まれるハードコード・ロジックを有するハードウェア・プロセッサであることを意味する。実行可能とは、処理回路が、ソフトウェア・ロジックによって指示される機能性を達成するためにソフトウェア・ロジックを実行するように構成され、プロセッサはおそらくMPU、CPU、マイクロプロセッサなどであることを意味する。ロジックは、処理回路に方法600を実行させるように構成され、処理回路にアクセス可能なコンピュータ可読記憶媒体に記憶される。
別の例では、コンピュータ・プログラム製品は、それとともに具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、記憶し、その中に記憶された情報へのコンピュータ・アクセスを可能にするように構成される、本技術分野において既知の任意の適当な記憶デバイスであってもよい。本実施形態において、具現化されたプログラム命令は、処理回路に方法600を実行させるように処理回路によって実行可能である。
図6において説明される実施形態のいくつかの恩恵は、構造化フレームワークに記憶された後の非構造化データに対するアクセス速度の高速化、ならびにプライマリ・インデックス(および非構造化データに基づいて生成される任意の代替インデックス)による拡張された検索可能性を含む。さらに、その中のデータ・レコードのうちのいずれかを更新するためにデータ・セット全体が書き換えられることに依存する、バイトストリームとしてデータ・セットに記憶された非構造化データとは対照的に、データ・セット全体(複数のデータレコードをその中に含み得る)が、その中の1つまたは複数のデータ・レコードを更新するときに書き換えされない。本実施形態に従って構造化フレームワークに記憶される非構造化データは、ドキュメントまたはレコード・レベルで更新されてもよく、それによって、更新プロセスにおいて利用されるI/Oの全体量が減少し、その中に記憶された非構造化データ・レコードを処理することに関連する構造化データベースの性能が向上する。
非構造化データ・レコードは、任意の特定のフォーマットを有してもよく、任意の既知の種類の非構造化フレームワークに記憶されてもよい。この例では、非構造データ・レコードは、BSONまたはJSONドキュメント、あるいはその両方であり、非構造化データベースは、NoSQLデータベースであると仮定する。NoSQLデータベースに記憶される各BSONまたはJSONドキュメントあるいはその両方が、文字のシーケンスとして記憶されるキー名:キーバリューのペアのセットを含む。これらのドキュメントのグループは、コレクションまたはデータベースと呼ばれる。VSAMデータベースもまた、レコードのコレクションであるが、各レコードは、VSAMデータベースに記憶される特定のデータ・セットに固有の各レコード内に記憶されるオフセットおよび長さによって指定される一貫したプライマリ・キーを有する。NoSQLデータベースとVSAMデータベースとの間の1つの重要な差異は、各VSAMキーが、固定のオフセットを介してレコード内のデータから構築される一方、NoSQLドキュメントは、データ内に記憶される、あるキーと値とのペアを含むが、各ペアについて固定のオフセットを有しないということである。
この例では、JSONフォーマットを用いて記憶されるドキュメントが、この文字列を含むと仮定する。
{“名”:“Tom”,“姓”:“Jones”,“郵便番号”:11111}
この文字列内には、3つのキー名:キーバリューのペアがある。第1のキー名は、「名」であり、「Tom」のキーバリューを有する。キー名の最初の文字が、(0に基づくインデックス付与を用いて)キー名:キーバリュー文字列内の位置1において始まるため、この特定フィールドのオフセットは1である。しかしながら、可変長のフィールドを考慮すると、第2のフィールドのオフセットは、ドキュメントを検査せずには明確に分からず、ドキュメントの存続時間を超えて変化し、または変更され得る。各フィールドは、コロンの前の名前によってのみ参照され、データ値は、次のコンマまたは閉括弧の前のコロンの後に続く。
逆に、VSAMレコードは、各データ値についてのオフセットが固定され変化しないフォーマットを使用する。追加的に、VSAMは、JSONまたはBSONのような非構造化ドキュメントとは異なり、データ内にキー名を記憶しない。例えば、前述の例でのように、同一の情報が、レコード内に記憶されていると仮定すると、VSAMレコードは、以下のフォーマットを有し得る。
[Tom.....Jones...1111]
このレコードについてのVSAMキーは、オフセットおよび長さに基づいて構築される。例えば、オフセット0および長さ8を有するキー、例えば、KEY(0 8)は、名(オフセット0 長さ8)に基づいてデータを編成するキーをもたらす。
1つの実施形態によれば、非構造化ドキュメントは、VSAMリクエストがキー名:キーバリューのペアに基づいてVSAMデータベース内の非構造化ドキュメントを素早く見つけることを可能にするために、VSAMデータベースのフレームワーク内に記憶され得る。これは、非構造化データの柔軟性とVSAMインデックス付与の速度の両方を活用する。
本実施形態では、各非構造化ドキュメントは、一貫したキー名に割り当てられるか、または各非構造化レコード内の一貫したキー名が発見される。このキー名は、VSAMプライマリ・キーを構築するために関連付けられたキーバリューとともに使用される。VSAMプライマリ・キーは、VSAMインデックスが構築されるVSAMデータベース内でドキュメントを位置特定するためのVSAMインデックスを構築するために使用される。特定の実施形態において、デフォルト・キーは、「_id」またはドキュメント内に既に現れそうにない何らかの他の適当なデフォルト・キー文字列などであり、全ての非構造化データ・レコードに使用され得る。第2の実施形態において、インデックス付与に使用されるキー名:キーバリューのペアを含むドキュメントをユーザが提供できないことに応答して、キー名は、非構造化ドキュメント内に自動的に挿入され、値は、対応するキーバリューのために生成される。さらなる実施において、このキーバリューは、追加レコード毎に増加し、キーバリュー長と一致する所定の長さを有し、1で開始する整数値であってもよく、例えば、「00000001」、「00000002」などである。このデフォルト・キー名は、1つの手法によれば、データ・セット定義中に設定される。
VSAMに提供されている特定の文書のためのPUTまたはUPDATEリクエストに応答して、1つの実施形態において、渡されるドキュメント(VSAMに転送されるリクエスト)が、リクエストにおいて指定されたキー名:キーバリュー・ペアについてスキャンされ得る。このペアからのキーバリューは、次いで、固定長ハッシュ値フィールド(64バイト、128バイト、256バイトなど、または何らかの他の適当な所定値)にハッシュされる。渡されるドキュメント内にキー名が見つからないことに応答して、リクエストされるキー名が自動的に追加され、キーバリューが生成される。キーバリューは、インクリメンタル・カウンタ、またはデータベース内で二重化されない一意のキーバリューを生成する何らかの他の体系的方法に基づき得る。この値は、次いで、ドキュメントから取られる内部メタデータと結合され、元のドキュメントに追加される。
例えば、以下のドキュメント{“_id”:0001,“名”:“John”,“姓”:“Snow”}に対するPUTについてデータベース・リクエストが発行される場合、方法は、_idキー名フィールドを探し、0001のキーバリューを使用する。キーバリューは、次いで、所定の固定長値にハッシュされる。このハッシュは、それが任意の可能性のある入力について衝突を最小にする限り、任意のハッシュ・アルゴリズムを用いて実行され得る。この値は、ハッシュされたIDを生成するために、元のドキュメント、およびおそらく何らかのメタデータと結合される。一例では、ハッシュされたIDは、<固定バイト数のハッシュされた_idフィールド+予約スペース><メタデータ>{“_id”:0001,“名”:“John”,“姓”:“Snow”}であってもよい。この新たなレコードは、VSAMデータ・セット内に記憶するために基礎となるVSAM構造に渡され、新たに構築された一意なキーに基づいてインデックス付与される。これは、1つのドキュメントを保持する各VSAMレコードを有するVSAMデータ・セットをもたらす。この例では、VSAMは、VSAMインデックス・オフセット0および閾値バイト数に対応する長さを用いることによって、例えば、最初の66バイト、最初の132バイト、最初の264バイトなど、レコードの最初の閾値バイト数に基づいて、レコードにインデックス付与する。
別の実施形態において、GET DIRECTリクエストについて、値は、ユーザ、管理者、または何らかの他のルーチンなどによってVSAM構造に渡されてもよい。一例では、「GET 0001」を指定する値が渡され得る。本実施形態では、この値(0001)が、VSAMキーを生成するために上述した同じハッシュ・アルゴリズムを用いてハッシュされる。この生成されたVSAMキーは、GET DIRリクエストなどを介して、基礎となるVSAM構造に渡される。GET 0001の例において、0001の値は、ハッシュ値を生成するために、128バイトなど所定の長さにハッシュされる。予約スペースが連結され、このハッシュされた値が、RPLリクエストなどを介して、VSAMキーとしてVSAM構造に提出される。
別の実施形態では、ERASE機能性が、GET DIRECTリクエストに類似の動作をし、その場合に、渡される値がハッシュされ、VSAMキーが、ハッシュされた値から構築される。次いで、ERASEリクエストが、基礎となるVSAM構造に渡される。
一例では、典型的なBSONオブジェクトが、以下に示されるようにVSAMレコード内に記憶され得る。
BSON in UTF-8 (simple case, just "_id:00001")
HEX: 13000000 02 5F6964 00 05000000 3030303031 00
Fields: total length, type, "_id",end indicator, length, "0 0 0 0 1", end indicator
Or to break it out by field:
Total length: x'13000000' (little-endian)
Type: x'02'
Key "_id": x'5F6964'
End marker: x'00'
Value length: x'05000000' (little-endian)
Value "00001": x'3030303031'
End marker: x'00'
この例では、VSAMレコード内に記憶されるデータは、以下の情報を含み得る。
000000 4F564AA0 14F4C21C 28C71304 ED75EA01 916E8199 DA4F9A75 7924235B 6056D613 *|.c..4B..G.......>...|.....$-.O.*
000020 88EA7F08 04A56275 293D33EB 713FFB78 E2AB6E7C F6245A45 9FD7DC12 BD77DC68 *.."............S.>@6.!.oP.......*
000040 00000000 00000000 00000000 00000028 00000000 00000000 00000000 00000000 *................................*
000060 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................*
000080 00000001 00000001 00000000 00049000 00D11014 F0D1B771 06000000 07D80001 *...........{.....J..0J.......Q..*
0000A0 E2E8E2E3 C5D4F140 01130000 00025F69 64000500 00003030 30303100 *SYSTEM1......^.............*
この例では、16進数を用いて、KEYが、オフセットx‘00’からx‘83’に位置する。キーについてのメタデータは、オフセットx‘84’からx‘A9’に位置し、キー生成およびハッシュ前の実際のBSONドキュメントは、オフセットx‘AB’からx‘BE’に位置する。さらに、さらなる例において、GET FRDインターフェースは、コレクション内の最初のドキュメントに戻るために使用され得る。このGET FRDの後にGET SEQが続く場合、ハッシュされたキーと合致する最初のドキュメントで始まり、最後のドキュメントが返されるまでVSAMデータ・セットの初めから終わりまで、各レコードがハッシュされたキー・シーケンスにおいて逐次的に返される。
1つの実施形態によれば、本明細書で説明される方法の上で動作するアプリケーション層は、キー名:キーバリュー・ペアの中から特定の値を検索するためにこれらの返されたドキュメントをスキャンし得る。さらに、前述したように、代替キーが生成されてもよく、それは、プライマリ・キーと同様にキー名:キーバリュー・ペアに基づく。代替インデックス(AIX)が生成されてもよく、代替インデックスは、データ・セット内のドキュメント全てをスキャンし、(キー名:キーバリュー・ペアから)キー名を検索し、次いで、代替キーをプライマリ・キーとペアにするVSAMレコードを返す。このデータは、代替キー名:キーバリュー・ペアに基づいてドキュメントを探索するために使用され得る。
1つの実施形態によれば、一意ではない代替キーについて、後続のGETリクエストは、それらが代替インデックスに記憶される順序で各ドキュメントを返す。ユーザが、この新たな代替インデックスで値および特定のキー名:キーバリュー・ペアの探索を開始することに応答して、ユーザは、特定の代替インデックスを使用するようにインターフェースに命令し(PATH OPEN)、次いでリクエストされる値を用いてGETリクエストを発行する。そのようなリクエストに応答して、代替インデックスは、代替キーに対応するプライマリ・キーを見つけるために検索される。その情報が取得されると、プライマリ・インデックスは、リクエストされたドキュメントを直接指すプライマリ・キーについて検索され、次いで、リクエストされたドキュメントがユーザに返され得る。
ここで図7を参照すると、1つの実施形態による、方法700が示される。方法700は、様々な実施形態において、特に図1〜5に示される環境のいずれかにおいて本発明に従って実行され得る。当然ながら、本説明を読むと当業者に理解されるように、図7において具体的に説明されるものよりも多くの、または少ない動作が、方法700に含まれ得る。
方法700のステップのそれぞれが、動作環境の任意の適当なコンポーネントによって実行され得る。例えば、様々な実施形態において、方法700は、マイクロプロセッサ、サーバ、メインフレーム・コンピュータ、1つもしくは複数のプロセッサをその中に有する処理回路、または1つもしくは複数のプロセッサを含む何らかの他のデバイスによって、部分的にまたは完全に実行され得る。処理回路、例えば、ハードウェアまたはソフトウェアあるいはその両方において実施され、好適には少なくとも1つのハードウェア・コンポーネントを有するプロセッサ、チップ、またはモジュール、あるいはこれらの組み合わせが、方法700の1つまたは複数のステップを実行するために任意のデバイスにおいて利用され得る。例となるプロセッサは、MPU、CPU、ASIC、FPGAなど、それらの組み合わせ、または本技術分野において既知の任意の他の適当なコンピューティング・デバイスを含むがこれらに限定されない。
1つの実施形態では、動作環境は、環境内の追加システムのクラスタのうちの1つであり得るデータ・システムを含み得る。別の実施形態では、データ・システムは、サーバ、パーソナル・コンピュータ、モバイル・デバイス、またはプログラム命令を実行することが可能な任意のデバイスを含み得る。さらなる別の実施形態では、データ・システムは、仮想記憶環境内に含まれ得る。例えば、データ・システムは、VSAM環境の一部であってもよい。
図7に示すように、方法700は、動作702で開始し得る。動作702において、JSON(Java(R)Script Object Notation)またはBSON(binary Java(R)Script Object Notation)に準拠する非構造化データ・レコードが、データベース管理インターフェース、または構造化データベースを管理するように構成される何らかの他の論理構造もしくは物理デバイスなどにおいて、受信される。
動作704において、データ・レコードが、少なくとも以下の情報、非構造化データ・レコードの合計長、非構造化データ・レコード内のフィールドの数、非構造化データ・レコード内のフィールドの長さ、および非構造化データ・レコードに記憶されているフィールドの順序を判定するために、独自の、またはユーザ提供されるパーサを用いて構文解析される。
動作706において、プライマリ・キー名が、取得され、プライマリ・キー名が、非構造化データ・レコードを含むデータ・レコードのセットに関連付けられる。データ・レコードのセット内のこれらの他のデータ・レコードは、1つの手法では、構造化データベースに記憶された後に非構造化データ・レコードに関連付けられてもよい。
動作708において、非構造化データ・レコードに関連付けられるプライマリ・キーバリューが、生成される。1つの手法では、プライマリ・キーバリューは、整数値を1ずつインクリメントし、その結果もたらされる値をプライマリ・キーバリューとして選択することによって生成され得る。別の手法では、非構造化レコードを含む構造化データベースに記憶されるデータ・セット内のいかなる他のデータ・レコードにも利用されていない限り、乱数が選択されてもよい。
動作710において、プライマリ・キー名:キーバリュー・ペア内のプライマリ・キーバリューは、ハッシュ値を取得するために、任意の既知のハッシュ・アルゴリズムを用いてハッシュされる。ハッシュ・アルゴリズムは、非構造化データ・レコードを含むデータ・セット内の全てのデータ・レコードについて衝突を避けるべきである。
動作712において、非構造化データ・レコードは、修正済みデータ・レコードを生成するために、その中の元のデータとともに、プライマリ・キー名:キーバリュー・ペアおよびハッシュ値をインデックス付与キーとして追加することまたは含むことによって、更新され、または書き換えられる。
動作714において、修正済みデータ・レコードは、プライマリ・インデックス、例えば、KSDSを介して検索可能なVSAMデータベースに記憶される。
動作716において、VSAMデータベースのインデックス(KSDS)は、修正済みデータ・レコードのためのエントリを含むように更新される。このエントリは、最小限、非構造化データ・レコードのプライマリ・キーバリューから生成されるハッシュ値を含む。
1つの実施形態において、方法700は、データ・レコードからメタデータを識別することと、修正済みデータ・レコードの生成において、プライマリ・キー名:キーバリュー・ペアに関連付けられたメタデータおよびハッシュ値でデータ・レコードを更新することと、を含み得る。
別の実施形態によれば、方法700は、データ・レコードにアクセスするためのリクエストを受信することを含み得る。本実施形態において、リクエストは、プライマリ・キー名:キーバリュー・ペア、データ・レコードに固有のハッシュ値、またはデータ・レコードに固有のプライマリ・キーバリューを含み得る。リクエストを受信後、プライマリ・キー名:キーバリュー・ペアのプライマリ・キーバリューは、データ・レコードをデータベースに記憶する際に使用されるハッシュ・アルゴリズムに対する逆ハッシュ・アルゴリズムを用いて、ハッシュ値を取得するためにハッシュされ得る。その後、KSDS VSAMデータベース・インデックスは、データベース内の修正済みデータ・レコードの位置を判定するために照会されてもよく、データ・レコードを含む修正済みデータ・レコードの一部が、データ・レコードにアクセスするためのリクエストを受信することに応答して出力され得る。
別の実施形態によれば、方法700は、VSAMデータベースについてのセカンダリ・インデックスを生成することを含み得る。本実施形態では、セカンダリ・インデックス内の各エントリは、VSAMデータベースの1つのデータ・レコードに関連する。さらに、セカンダリ・インデックス内の各エントリは、少なくとも以下の情報、特定のデータ・レコードのメタデータ、特定のデータ・レコードのためのベース・ポインタの数、セカンダリ・インデックスについてのバージョン標識、セカンダリ・インデックス・キーの長さ、セカンダリ・インデックス・キーの値、および1つまたは複数のベース・キーを含む。1つまたは複数のベース・キーは、修正済みデータ・レコードとしてVSAMデータベースに記憶される特定のデータ・レコードの個々のプライマリ・キーバリューのハッシュされた値に個別に合致するハッシュ値である。さらに、VSAMデータベースは、1つまたは複数のベース・キーを用いて検索可能である。
方法700は、様々な手法において、IBM(R)z/OS(R)環境などの中でVSAMを利用するデータ・システム、または当技術分野において既知となるVSAMを利用する任意の他のシステムを用いて実行され得る。
方法700は、システムまたはコンピュータ・プログラム製品、あるいはその両方において実施され得る。例えば、システムは、処理回路、および処理回路と統合されたロジック、処理回路によって実行可能なロジック、または処理回路と統合され、かつ処理回路によって実行可能なロジックを含み得る。統合されるとは、処理回路が、ASIC、FPGAなど、それとともに含まれるハードコード・ロジックを有するハードウェア・プロセッサであることを意味する。実行可能とは、処理回路が、ソフトウェア・ロジックによって指示される機能性を達成するためにソフトウェア・ロジックを実行するように構成され、プロセッサはおそらくMPU、CPU、マイクロプロセッサなどであることを意味する。ロジックは、処理回路に方法700を実行させるように構成され、処理回路にアクセス可能なコンピュータ可読記憶媒体に記憶される。
別の例では、コンピュータ・プログラム製品は、それとともに具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、記憶し、その中に記憶された情報へのコンピュータ・アクセスを可能にするように構成される、本技術分野において既知の任意の適当な記憶デバイスであってもよい。本実施形態において、具現化されたプログラム命令は、処理回路に方法700を実行させるように処理回路によって実行可能である。
図7において説明される実施形態のいくつかの恩恵は、構造化フレームワークに記憶された後の非構造化データに対するアクセス速度の高速化、ならびにプライマリ・インデックス(および非構造化データに基づいて生成される任意の代替インデックス)による拡張された検索可能性を含む。さらに、その中のデータ・レコードのうちのいずれかを更新するためにデータ・セット全体が書き換えられることに依存する、バイトストリームとしてデータ・セットに記憶された非構造化データとは対照的に、データ・セット全体(複数のデータ・レコードをその中に含み得る)が、その中の1つまたは複数のデータ・レコードを更新するときに書き換えされない。本実施形態に従って構造化フレームワークに記憶される非構造化データは、ドキュメントまたはレコード・レベルで更新されてもよく、それによって、更新プロセスにおいて利用されるI/Oの全体量が減少し、その中に記憶された非構造化データ・レコードを処理することに関連する構造化データベースの性能が向上する。
ここで図8を参照すると、1つの実施形態による、方法800が示される。方法800は、様々な実施形態において、特に図1〜5に示される環境のいずれかにおいて本発明に従って実行され得る。当然ながら、本説明を読むと当業者に理解されるように、図8において具体的に説明されるものよりも多くの、または少ない動作が、方法800に含まれ得る。
方法800のステップのそれぞれが、動作環境の任意の適当なコンポーネントによって実行され得る。例えば、様々な実施形態において、方法800は、マイクロプロセッサ、サーバ、メインフレーム・コンピュータ、1つもしくは複数のプロセッサをその中に有する処理回路、または1つもしくは複数のプロセッサを含む何らかの他のデバイスによって、部分的にまたは完全に実行され得る。処理回路、例えば、ハードウェアまたはソフトウェアあるいはその両方において実施され、好適には少なくとも1つのハードウェア・コンポーネントを有するプロセッサ、チップ、またはモジュール、あるいはこれらの組み合わせなどが、方法800の1つまたは複数のステップを実行するために任意のデバイスにおいて利用され得る。例となるプロセッサは、MPU、CPU、ASIC、FPGAなど、それらの組み合わせ、または本技術分野において既知の任意の他の適当なコンピューティング・デバイスを含むがこれらに限定されない。
1つの実施形態では、動作環境は、環境内の追加システムのクラスタのうちの1つであり得るデータ・システムを含み得る。別の実施形態では、データ・システムは、サーバ、パーソナル・コンピュータ、モバイル・デバイス、またはプログラム命令を実行することが可能な任意のデバイスを含み得る。さらなる別の実施形態では、データ・システムは、仮想記憶環境内に含まれ得る。例えば、データ・システムは、VSAM環境の一部であってもよい。
図8に示されるように、方法800は、動作802で開始し得る。動作802において、非構造化データベースが、受信される。非構造化データベースは、非リレーショナル・データベースとも呼ばれてもよく、複数の非構造化データ・レコードをその中に含む。非構造化データ・レコードは、任意の既知のフォーマットに従って記憶され得る。
動作804において、複数の非構造化データ・レコードのうちの少なくとも1つのデータ・レコードが、少なくとも以下の情報、非構造化データ・レコードの合計長、少なくとも1つのデータ・レコード内のフィールドの数、少なくとも1つのデータ・レコード内のフィールドの長さ、および少なくとも1つのデータ・レコードに記憶されているフィールドの順序を判定するために、非構造データ・レコードが記憶されるフォーマットに固有の、独自の、またはユーザ提供されるパーサなどを用いて構文解析される。情報のこれらの部分のそれぞれが、情報がデータ・レコード内にどのように記憶されるかを定義し説明するのに役立つ。それは、構造化データベース内のデータ・レコードを管理する際に、構造化フォーマットに非構造化データ・レコードを書き換えることなく、そのような情報が識別されソートされることを可能にする。
動作806において、プライマリ・キー名が、取得され、プライマリ・キー名が、複数の非構造化データ・レコードに関連付けられる。1つの実施形態において、プライマリ・キー名を関連付けることは、非構造化データ・レコードのそれぞれにプライマリ・キー名を記憶することを含む。
1つの実施形態によれば、プライマリ・キー名は、同一のデータ・セット内に記憶されている非構造化データ・レコードのそれぞれに、“_id”、“|name|”、“%key”などのデフォルト識別子、またはデータ・レコードにおいて典型的には現れない何らかの他の適当なマーカもしくは識別子を割り当てることによって生成され得る。
動作808において、複数の非構造化データ・レコードのそれぞれの非構造化データ・レコードにつき1つ、複数のキーバリューが生成される。1つの実施形態によれば、複数のキーバリューは、複数の非構造化データ・レコードの各データ・レコードについて個別に一意な整数値を選択すること、およびこれらの値を非構造化データ・レコードに個別に割り当てることによって、生成され得る。
動作810において、複数の非構造化データ・レコードの各データ・レコードについてのプライマリ・キーバリューは、複数の非構造化データ・レコードに1対1で複数のハッシュ値、例えば、データ・レコード1つにつき1つのハッシュ値を取得するように、既知のハッシュ・アルゴリズムを用いて、ハッシュされる。
動作812において、複数の非構造化データ・レコードの各データ・レコードは、プライマリ・キー名:キーバリュー・ペア、および各データ・レコードに固有のハッシュ値を個別に追加することによって、更新または修正、あるいはその両方が行われる。これは、対応するプライマリ・キー名:キーバリュー・ペアおよびハッシュ値を含む各修正済みデータ・レコードを有する複数の修正済みデータ・レコードを生成する。
別の実施形態では、プライマリ・キー名:キーバリュー・ペアにおけるキーバリューは、修正済みデータ・レコード内の値を記憶する前に、ハッシュされ得る。
動作814において、複数の修正済みデータ・レコードが、VSAMデータベースなどの構造化データベースまたは半構造化データベースに記憶される。
動作816において、構造化データベースまたは半構造化データベースのプライマリ・インデックスは、修正済みデータ・レコードの全てについてのエントリを含むように更新される。1つの実施形態において、プライマリ・インデックスは、KSDS VSAMデータベース・インデックスであってもよい。各エントリは、複数のハッシュ値のうちの1つを含み、それによって、プライマリ・インデックスを介して非構造化データ・レコードの全てにインデックス付与することをもたらす。
1つの実施形態において、方法800は、複数の非構造化データ・レコードの各データ・レコードからメタデータを識別することを含み得る。この実施形態において、複数のハッシュ値の各ハッシュ値は、ハッシュ値を提供するために、各データ・レコードについてのプライマリ・キーバリューを、対応するデータ・レコードに固有の識別されたメタデータとともにハッシュすることによって、生成される。「メタデータ」は、バージョン数、修正日もしくは生成日、またはデータ・レコードのうちの少なくともいくつかにおいて異なると見られるデータ・レコードに含まれる何らかの他の既知の情報など、個別に非構造化データ・レコードのそれぞれから選択される情報または非構造化データ・レコードのそれぞれについての情報、あるいはその両方を含む。追加メタデータは、名前、住所、時間、値、パラメータなどを含むが、これらに限定されない。
別の実施形態によれば、方法800は、構造化データベースまたは半構造化データベースのための1つまたは複数のセカンダリ・インデックスを生成することを含み得る。セカンダリ・インデックス内の各エントリは、構造化データベースまたは半構造化データベースに記憶されるデータ・レコードに関連し、少なくとも以下の情報、特定のデータ・レコードのメタデータ、特定のデータ・レコードのためのベース・ポインタの数、セカンダリ・インデックスについてのバージョン標識、セカンダリ・インデックス・キーの長さ、セカンダリ・インデックス・キーの値、および1つまたは複数のベース・キーを含み得る。ベース・キーのそれぞれが、ベース構造化または半構造化データベースに記憶される特定のデータ・レコードのハッシュされたキーバリューに合致するハッシュ値である。構造化データベースまたは半構造化データベースは、1つまたは複数のベース・キーを用いて検索可能であり、したがって、セカンダリ・インデックスは、プライマリ・インデックスを検索するため、および特定のデータ・レコードを位置特定するために使用され得る情報を取得するために使用され得る。
方法800は、様々な手法において、IBM(R)z/OS(R)環境などの中でVSAMを利用するデータ・システム、または当技術分野において既知となるVSAMを利用する任意の他のシステムを用いて実行され得る。
方法800は、システムまたはコンピュータ・プログラム製品、あるいはその両方において実施され得る。例えば、システムは、処理回路、および処理回路と統合されたロジック、処理回路によって実行可能なロジック、または処理回路と統合され、かつ処理回路によって実行可能なロジックを含み得る。統合されるとは、処理回路が、ASIC、FPGAなど、それとともに含まれるハードコード・ロジックを有するハードウェア・プロセッサであることを意味する。実行可能とは、処理回路が、ソフトウェア・ロジックによって指示される機能性を達成するためにソフトウェア・ロジックを実行するように構成され、プロセッサはおそらくMPU、CPU、マイクロプロセッサなどであることを意味する。ロジックは、処理回路に方法800を実行させるように構成され、処理回路にアクセス可能なコンピュータ可読記憶媒体に記憶される。
別の例では、コンピュータ・プログラム製品は、それとともに具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、記憶し、その中に記憶された情報へのコンピュータ・アクセスを可能にするように構成される、本技術分野において既知の任意の適当な記憶デバイスであってもよい。本実施形態において、具現化されたプログラム命令は、処理回路に方法800を実行させるように処理回路によって実行可能である。
図8において説明される実施形態のいくつかの恩恵は、構造化フレームワークに記憶された後の非構造化データに対するアクセス速度の高速化、ならびにプライマリ・インデックス(および非構造化データに基づいて生成される任意の代替インデックス)による拡張された検索可能性を含む。さらに、その中のデータ・レコードのうちのいずれかを更新するためにデータ・セット全体が書き換えられることに依存する、バイトストリームとしてデータ・セットに記憶された非構造化データとは対照的に、データ・セット全体(複数のデータ・レコードをその中に含み得る)が、その中の1つまたは複数のデータ・レコードを更新するときに書き換えされない。本実施形態に従って構造化フレームワークに記憶される非構造化データは、ドキュメントまたはレコード・レベルで更新されてもよく、それによって、更新プロセスにおいて利用されるI/Oの全体量が減少し、その中に記憶された非構造化データ・レコードを処理することに関連する構造化データベースの性能が向上する。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作り出すように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせが特定のやり方で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されたプロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表してもよい。いくつかの代替的な実施において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
さらに、様々な実施形態によるシステムは、プロセッサと、プロセッサに統合されたロジックまたはプロセッサにより実行可能なロジックあるいはその両方を含んでもよく、ロジックは、本明細書に列挙されるプロセス・ステップのうちの1つまたは複数を実行するように構成される。統合されるとは、プロセッサが、それとともに具現化されたロジックをASIC、FPGAなどのハードウェア・ロジックとして有することを意味する。プロセッサにより実行可能とは、ロジックが、ハードウェア・ロジック、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などのソフトウェア・ロジック、またはプロセッサによりアクセス可能であり、プロセッサによる実行時に何らかの機能性をプロセッサに実行させるように構成される、ハードウェア・ロジックおよびソフトウェア・ロジックの何らかの組み合わせであることを意味する。ソフトウェア・ロジックは、当技術分野において既知の任意のメモリタイプのローカル・メモリまたはリモート・メモリあるいはその両方の上に記憶され得る。ソフトウェア・プロセッサ・モジュールまたはASIC、FPGA、CPU、集積回路(IC)、グラフィック処理ユニット(GPU)などのハードウェア・プロセッサ、あるいはその両方などの、本技術分野において既知の任意のプロセッサが使用され得る。
前述のシステムまたは方法論あるいはその両方の様々な特徴が、上記で提示された説明から複数の組み合わせを生成して、任意のやり方で組み合わされ得ることは明らかである。
様々な実施形態が上記で説明されたが、それらは、限定ではなく例示としてのみ提示されていると理解されるべきである。よって、好適な実施形態の幅および範囲は、上述した例示的実施形態のうちのいずれかによって限定されるべきでなく、以下の特許請求の範囲およびその等価物に従ってのみ定義されるべきである。

Claims (25)

  1. 非構造化データ・レコードを受信することと、
    前記非構造化データ・レコードの特性を判定するために前記非構造化データ・レコードを構文解析することであって、前記特性が、
    前記非構造化データ・レコードの合計長、
    フィールドの数、
    前記フィールドの長さ、および
    前記非構造化データ・レコードに記憶されている前記フィールドの順序
    の判定を含む、前記構文解析することと、
    第1のキーバリューに関連付けられたプライマリ・キー名を含む、第1のキー・ペアを取得することと、
    ハッシュ値を取得するために少なくとも前記第1のキーバリューをハッシュすることと、
    インデックス付与キーとして前記ハッシュ値を含むように前記非構造化データ・レコードを更新し、それによって修正済みデータ・レコードを生成することと、
    前記修正済みデータ・レコードを構造化データベースに記憶することと、
    前記修正済みデータ・レコードのためのエントリを含むように前記構造化データベースのインデックスを更新することであって、前記エントリが前記ハッシュ値を含む、前記更新することと、
    を含む、方法。
  2. 前記ハッシュ値が、前記第1のキー・ペアをハッシュすることによって生成され、前記方法が、
    前記非構造化データ・レコードからメタデータを識別することと、
    前記修正済みデータ・レコードの生成において、前記非構造化データ・レコードを前記第1のキー・ペアに関連付けられた前記メタデータおよび前記ハッシュ値で更新することと、
    をさらに含む、請求項1に記載の方法。
  3. 前記第1のキー・ペアを前記取得することが、
    前記非構造化データ・レコードを含む非構造化データ・レコードのセットに関連付けられる前記プライマリ・キー名を生成することであって、前記プライマリ・キー名が、前記非構造化データ・レコードのセット内の全ての非構造化データ・レコードに使用される、前記生成することと、
    整数値を1ずつインクリメントし、その結果もたらされるインクリメントされた整数を前記第1のキーバリューとして選択することによって、前記非構造化データ・レコードに関連付けられる前記第1のキーバリューを生成することと、
    をさらに含む、請求項1に記載の方法。
  4. 前記第1のキー・ペアを前記取得することが、
    前記プライマリ・キー名を非構造化データ・レコードのセットから識別することであって、前記非構造化データ・レコードのセット内の各非構造化データ・レコードが、前記プライマリ・キー名を含む、前記識別することと、
    前記非構造化データ・レコードのセットの任意の他の非構造化データ・レコードにおいてキーバリューとして使用されていない整数値を選択することによって、前記非構造化データ・レコードに関連付けられる前記第1のキーバリューを生成することと、
    をさらに含む、請求項1に記載の方法。
  5. 前記非構造化データ・レコードにアクセスするためのリクエストを受信することと、
    前記修正済みデータ・レコードの位置を判定するために、前記構造化データベースの前記インデックスを照会することと、
    前記非構造化データ・レコードにアクセスするための前記リクエストを受信することに応答して、前記非構造化データ・レコードを含む前記修正済みデータ・レコードの一部を出力することと、
    をさらに含む、請求項1に記載の方法。
  6. 前記構造化データベースについてのセカンダリ・インデックスを生成することをさらに含み、前記セカンダリ・インデックス内の各エントリが、前記構造化データベースの1つのデータ・レコードに関連し、
    前記セカンダリ・インデックス内の各エントリが、
    特定のデータ・レコードのメタデータと、
    前記特定のデータ・レコードのためのベース・ポインタの数と、
    前記セカンダリ・インデックスのバージョン標識と、
    セカンダリ・インデックス・キーの長さと、
    前記セカンダリ・インデックス・キーの値と、
    1つまたは複数のベース・キーであって、前記1つまたは複数のベース・キーが、修正済みデータ・レコードとして前記構造化データベースに記憶される特定の非構造化データ・レコードの個々のプライマリ・キーバリューのハッシュされた値に個別に合致するハッシュ値であり、前記構造化データベースが、前記1つまたは複数のベース・キーを用いて検索可能である、前記1つまたは複数のベース・キーと、
    を含む、請求項1に記載の方法。
  7. コンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、前記コンピュータ可読記憶媒体が、本来一過性信号ではなく、前記具現化されたプログラム命令が、処理回路に、
    前記処理回路によって、非構造化データ・レコードを受信させ、
    前記処理回路によって、前記非構造化データ・レコードの特性を判定するために前記非構造化データ・レコードを構文解析させ、前記特性が、
    前記非構造化データ・レコードの合計長、
    フィールドの数、
    前記フィールドの長さ、および
    前記非構造化データ・レコードに記憶されている前記フィールドの順序
    の判定を含み、
    前記処理回路によって、第1のキーバリューに関連付けられたプライマリ・キー名を含む第1のキー・ペアを取得させ、
    前記処理回路によって、ハッシュ値を取得するために少なくとも前記第1のキーバリューをハッシュさせ、
    前記処理回路によって、インデックス付与キーとして前記ハッシュ値を含むように前記非構造化データ・レコードを更新させ、それによって修正済みデータ・レコードを生成し、
    前記処理回路によって、前記修正済みデータ・レコードを構造化データベースに記憶させ、
    前記処理回路によって、前記修正済みデータ・レコードのためのエントリを含むように前記構造化データベースのインデックスを更新させ、前記エントリが前記ハッシュ値を含む、
    ように、前記処理回路によって実行可能である、コンピュータ・プログラム製品。
  8. 前記ハッシュ値が、前記第1のキー・ペアをハッシュすることによって生成され、前記具現化されたプログラム命令が、前記処理回路に、
    前記処理回路によって、前記非構造化データ・レコードからメタデータを識別させ、
    前記処理回路によって、前記修正済みデータ・レコードの生成において、前記非構造化データ・レコードを前記第1のキー・ペアに関連付けられた前記メタデータおよび前記ハッシュ値で更新させる、
    ように、前記処理回路によってさらに実行可能である、請求項7に記載のコンピュータ・プログラム製品。
  9. 前記処理回路に前記第1のキー・ペアを取得させる前記具現化されたプログラム命令が、前記処理回路に、
    前記処理回路によって、前記非構造化データ・レコードを含む非構造化データ・レコードのセットに関連付けられる前記プライマリ・キー名を生成させ、前記プライマリ・キー名が、前記非構造化データ・レコードのセット内の全ての非構造化データ・レコードに使用され、
    前記処理回路によって、整数値を1ずつインクリメントし、その結果もたらされるインクリメントされた整数を前記第1のキーバリューとして選択することによって、前記非構造化データ・レコードに関連付けられる前記第1のキーバリューを生成させる、
    請求項7に記載のコンピュータ・プログラム製品。
  10. 前記処理回路に前記第1のキー・ペアを取得させる前記具現化されたプログラム命令が、前記処理回路に、
    前記処理回路によって、前記プライマリ・キー名を非構造化データ・レコードのセットから識別させ、前記非構造化データ・レコードのセット内の各非構造化データ・レコードが、前記プライマリ・キー名を含み、
    前記処理回路によって、前記非構造化データ・レコードのセットの任意の他の非構造化データ・レコードにおいてキーバリューとして使用されていない整数値を選択することによって、前記非構造化データ・レコードに関連付けられる前記第1のキーバリューを生成させる、
    請求項7に記載のコンピュータ・プログラム製品。
  11. 前記具現化されたプログラム命令が、前記処理回路に、
    前記処理回路によって、前記非構造化データ・レコードにアクセスするためのリクエストを受信させ、
    前記処理回路によって、前記修正済みデータ・レコードの位置を判定するために、前記構造化データベースの前記インデックスを照会させ、
    前記処理回路によって、前記非構造化データ・レコードにアクセスするための前記リクエストを受信することに応答して、前記非構造化データ・レコードを含む前記修正済みデータ・レコードの一部を出力させる、
    ように、前記処理回路によってさらに実行可能である、請求項7に記載のコンピュータ・プログラム製品。
  12. 前記具現化されたプログラム命令が、前記処理回路に、前記処理回路によって、前記構造化データベースについてのセカンダリ・インデックスを生成させるように、前記処理回路によってさらに実行可能であり、前記セカンダリ・インデックス内の各エントリが、前記構造化データベースの1つのデータ・レコードに関連し、
    前記セカンダリ・インデックス内の各エントリが、
    特定のデータ・レコードのメタデータと、
    前記特定のデータ・レコードのためのベース・ポインタの数と、
    前記セカンダリ・インデックスのバージョン標識と、
    セカンダリ・インデックス・キーの長さと、
    前記セカンダリ・インデックス・キーの値と、
    1つまたは複数のベース・キーであって、前記1つまたは複数のベース・キーが、修正済みデータ・レコードとして前記構造化データベースに記憶される特定の非構造化データ・レコードの個々のプライマリ・キーバリューのハッシュされた値に個別に合致するハッシュ値であり、前記構造化データベースが、前記1つまたは複数のベース・キーを用いて検索可能である、前記1つまたは複数のベース・キーと、
    を含む、請求項7に記載のコンピュータ・プログラム製品
  13. 処理回路と、
    メモリと、
    前記メモリに記憶されるロジックであって、前記処理回路によって実行されるときに、前記処理回路に、
    非構造化データ・レコードを受信させ、
    前記非構造化データ・レコードの特性を判定するために前記非構造化データ・レコードを構文解析させ、前記特性が、
    フィールドの数、
    前記フィールドの長さ、および
    前記非構造化データ・レコードに記憶されている前記フィールドの順序
    の判定を含み、
    第1のキーバリューに関連付けられたプライマリ・キー名を含む、第1のキー・ペアを取得させ、
    ハッシュ値を取得するために少なくとも前記第1のキーバリューをハッシュさせ、
    前記ハッシュ値を含むように前記非構造化データ・レコードを更新させ、それによって修正済みデータ・レコードを生成し、
    前記修正済みデータ・レコードを構造化データベースに記憶させ、
    前記修正済みデータ・レコードのためのエントリを含むように前記構造化データベースのインデックスを更新させ、前記エントリが前記ハッシュ値を含む、
    前記ロジックと、
    を備える、システム。
  14. 前記ハッシュ値が、前記第1のキー・ペアをハッシュすることによって生成され、前記ロジックが、前記処理回路にさらに、
    前記非構造化データ・レコードからメタデータを識別させ、
    前記修正済みデータ・レコードの生成において、前記非構造化データ・レコードを前記第1のキー・ペアに関連付けられた前記メタデータおよび前記ハッシュ値で更新させる、
    請求項13に記載のシステム。
  15. 前記処理回路に前記第1のキー・ペアを取得させる前記ロジックが、前記処理回路にさらに、
    前記非構造化データ・レコードを含む非構造化データ・レコードのセットに関連付けられる前記プライマリ・キー名を生成させ、前記プライマリ・キー名が、前記非構造化データ・レコードのセット内の全ての非構造化データ・レコードに使用され、
    整数値を1ずつインクリメントし、その結果もたらされるインクリメントされた整数を前記第1のキーバリューとして選択することによって、前記非構造化データ・レコードに関連付けられる前記第1のキーバリューを生成させる、
    請求項13に記載のシステム。
  16. 前記処理回路に前記第1のキー・ペアを取得させる前記ロジックが、前記処理回路にさらに、
    前記プライマリ・キー名を非構造化データ・レコードのセットから識別させ、前記非構造化データ・レコードのセット内の各非構造化データ・レコードが、前記プライマリ・キー名を含み、
    前記非構造化データ・レコードのセットの任意の他の非構造化データ・レコードにおいてキーバリューとして使用されていない整数値を選択することによって、前記非構造化データ・レコードに関連付けられる前記第1のキーバリューを生成させる、
    請求項13に記載のシステム。
  17. 前記ロジックが、前記処理回路にさらに、
    前記非構造化データ・レコードにアクセスするためのリクエストを受信させ、
    前記修正済みデータ・レコードの位置を判定するために、前記構造化データベースの前記インデックスを照会させ、
    前記非構造化データ・レコードにアクセスするための前記リクエストを受信することに応答して、前記非構造化データ・レコードを含む前記修正済みデータ・レコードの一部を出力させる、
    請求項13に記載のシステム。
  18. 前記ロジックが、前記処理回路にさらに、前記構造化データベースについてのセカンダリ・インデックスを生成させ、前記セカンダリ・インデックス内の各エントリが、前記構造化データベースの1つのデータ・レコードに関連し、
    前記セカンダリ・インデックス内の各エントリが、
    特定のデータ・レコードのメタデータと、
    前記特定のデータ・レコードのためのベース・ポインタの数と、
    前記セカンダリ・インデックスのバージョン標識と、
    セカンダリ・インデックス・キーの長さと、
    前記セカンダリ・インデックス・キーの値と、
    1つまたは複数のベース・キーであって、前記1つまたは複数のベース・キーが、修正済みデータ・レコードとして前記構造化データベースに記憶される特定の非構造化データ・レコードの個々のプライマリ・キーバリューのハッシュされた値に個別に合致するハッシュ値であり、前記構造化データベースが、前記1つまたは複数のベース・キーを用いて検索可能である、前記1つまたは複数のベース・キーと、
    を含む、請求項13に記載のシステム。
  19. JSON(Java(R)Script Object Notation)またはBSON(binary Java(R)Script Object Notation)に準拠する非構造化データ・レコードを受信することと、
    前記非構造化データ・レコードの合計長、
    フィールドの数、
    前記フィールドの長さ、および
    前記データ・レコードに記憶されている前記フィールドの順序
    を判定するために、前記データ・レコードを構文解析することと、
    プライマリ・キー名を生成し、前記プライマリ・キー名を前記データ・レコードを含むデータ・レコードのセットに関連付けることと、
    整数値を1ずつインクリメントし、その結果もたらされる値を選択することによって、前記データ・レコードに関連付けられるプライマリ・キーバリューを生成することと、
    ハッシュ値を取得するために前記プライマリ・キーバリューをハッシュすることと、
    前記プライマリ・キー名と前記プライマリ・キーバリューとのペアおよび前記ハッシュ値をインデックス付与キーとして追加することによって、修正済みデータ・レコードを生成するように前記データ・レコードを更新することと、
    前記修正済みデータ・レコードを仮想記憶アクセス法(VSAM)データベースに記憶することと、
    前記修正済みデータ・レコードのためのエントリを含むようにキー順データ・セット(KSDS)VSAMデータベース・インデックスを更新することであって、前記エントリが前記ハッシュ値を含む、前記更新することと、
    を含む、方法。
  20. 前記データ・レコードからメタデータを識別することと、
    前記修正済みデータ・レコードの生成において、前記プライマリ・キー名と前記プライマリ・キーバリューとのペアに関連付けられた前記メタデータおよび前記ハッシュ値で前記データ・レコードを更新することと、
    をさらに含む、請求項19に記載の方法。
  21. 前記データ・レコードにアクセスするためのリクエストを受信することであって、前記リクエストが、前記プライマリ・キー名とキーバリューのペアを含む、前記受信することと、
    前記ハッシュ値を取得するために前記プライマリ・キーバリューをハッシュすることと、
    前記ハッシュ値に基づいて前記修正済みデータ・レコードの位置を判定するために、前記KSDS VSAMデータベースのインデックスを照会することと、
    前記データ・レコードにアクセスするための前記リクエストを受信することに応答して、前記データ・レコードを含む前記修正済みデータ・レコードの一部を出力することと、
    をさらに含む、請求項19に記載の方法。
  22. 前記VSAMデータベースについてのセカンダリ・インデックスを生成することをさらに含み、前記セカンダリ・インデックス内の各エントリが、前記VSAMデータベースの1つのデータ・レコードに関連し、
    前記セカンダリ・インデックス内の各エントリが、
    特定のデータ・レコードのメタデータと、
    前記特定のデータ・レコードのためのベース・ポインタの数と、
    前記セカンダリ・インデックスのバージョン標識と、
    セカンダリ・インデックス・キーの長さと、
    前記セカンダリ・インデックス・キーの値と、
    1つまたは複数のベース・キーであって、前記1つまたは複数のベース・キーが、修正済みデータ・レコードとして前記VSAMデータベースに記憶される特定のデータ・レコードの個々のプライマリ・キーバリューのハッシュされた値に個別に合致するハッシュ値であり、前記VSAMデータベースが、前記1つまたは複数のベース・キーを用いて検索可能である、前記1つまたは複数のベース・キーと、
    を含む、請求項19に記載の方法。
  23. 複数の非構造化データ・レコードを含む非構造化データベースを受信することと、
    少なくとも1つのデータ・レコードの合計長、
    前記少なくとも1つのデータ・レコード内のフィールドの数、
    前記少なくとも1つのデータ・レコードの前記フィールドの長さ、および
    前記少なくとも1つのデータ・レコードに記憶されている前記フィールドの順序
    を判定するために、前記複数の非構造化データ・レコードの前記少なくとも1つのデータ・レコードを構文解析することと、
    プライマリ・キー名を生成し、前記プライマリ・キー名を前記複数の非構造化データ・レコードに関連付けることと、
    複数のキーバリューを生成することであって、各キーバリューが、前記複数の非構造化データ・レコードの各データ・レコードについて、一意の整数値をキーバリューとして個別に選択することによって、前記複数の非構造化データ・レコードのうちの1つのデータ・レコードに関連付けられる、前記生成することと、
    複数のハッシュ値を取得するために、前記複数の非構造化データ・レコードの各データ・レコードについてのプライマリ・キーバリューをハッシュすることと、
    複数の修正済みデータ・レコードを生成するために、各修正済みデータ・レコードに固有の前記プライマリ・キー名と前記プライマリ・キーバリューとのペアおよびハッシュ値を個別に追加することによって、前記複数の非構造化データ・レコードの各データ・レコードを更新することと、
    前記複数の修正済みデータ・レコードを構造化データベースまたは半構造化データベースに記憶することと、
    前記修正済みデータ・レコードの全てについてのエントリを含むように、前記構造化データベースまたは半構造化データベースのプライマリ・インデックスを更新することであって、各エントリが、前記複数のハッシュ値のうちの1つを含む、前記更新することと、
    を含む、方法。
  24. 前記複数の非構造化データ・レコードの前記データ・レコードそれぞれからメタデータを識別することであって、前記複数のハッシュ値の各ハッシュ値が、対応するデータ・レコードに固有の識別されたメタデータとともに、各データ・レコードについての前記プライマリ・キー名と前記プライマリ・キーバリューとのペアをハッシュすることによって生成される、前記識別することをさらに含む、請求項23に記載の方法。
  25. 前記構造化データベースまたは半構造化データベースについてのセカンダリ・インデックスを生成することをさらに含み、前記セカンダリ・インデックス内の各エントリが、前記構造化データベースまたは半構造化データベースに記憶されたデータ・レコードに関連し、
    前記セカンダリ・インデックス内の各エントリが、
    特定のデータ・レコードのメタデータと、
    前記特定のデータ・レコードのためのベース・ポインタの数と、
    前記セカンダリ・インデックスのバージョン標識と、
    セカンダリ・インデックス・キーの長さと、
    前記セカンダリ・インデックス・キーの値と、
    1つまたは複数のベース・キーであって、前記1つまたは複数のベース・キーが、前記構造化データベースまたは半構造化データベースに記憶される特定の修正済みデータ・レコードの個々のプライマリ・キーバリューのハッシュされた値に個別に合致するハッシュ値であり、前記構造化データベースまたは半構造化データベースが、前記1つまたは複数のベース・キーを用いて検索可能である、前記1つまたは複数のベース・キーと、
    を含む、請求項23に記載の方法。
JP2020531721A 2017-12-12 2018-12-05 コンピュータ処理方法、コンピュータ・プログラム製品およびシステム Active JP7146919B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/839,644 US20190179948A1 (en) 2017-12-12 2017-12-12 Storing unstructured data in a structured framework
US15/839,644 2017-12-12
PCT/IB2018/059651 WO2019116167A1 (en) 2017-12-12 2018-12-05 Storing unstructured data in a structured framework

Publications (2)

Publication Number Publication Date
JP2021506030A true JP2021506030A (ja) 2021-02-18
JP7146919B2 JP7146919B2 (ja) 2022-10-04

Family

ID=66696858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020531721A Active JP7146919B2 (ja) 2017-12-12 2018-12-05 コンピュータ処理方法、コンピュータ・プログラム製品およびシステム

Country Status (6)

Country Link
US (1) US20190179948A1 (ja)
JP (1) JP7146919B2 (ja)
CN (1) CN111373390B (ja)
DE (1) DE112018005692T5 (ja)
GB (1) GB2582234A (ja)
WO (1) WO2019116167A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7429374B2 (ja) 2021-10-31 2024-02-08 株式会社Datafluct 情報処理システム、情報処理方法及び情報処理プログラム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372571B2 (en) 2018-05-07 2022-06-28 Sap Se System and methods for providing a memory slice data structure for use with diverse memory and storage media
US20200050785A1 (en) * 2018-08-10 2020-02-13 Ca, Inc. Database record access through use of a multi-value alternate primary key
US10951395B2 (en) * 2018-08-20 2021-03-16 Fujitsu Limited Data fetching in data exchange networks
US10963353B2 (en) * 2018-10-23 2021-03-30 Capital One Services, Llc Systems and methods for cross-regional back up of distributed databases on a cloud service
CN110175176A (zh) * 2019-05-31 2019-08-27 杭州复杂美科技有限公司 一种kv数据库配置方法、查询方法、设备和存储介质
CN111007986B (zh) * 2019-11-04 2022-09-30 厦门天锐科技股份有限公司 一种基于内存的文本分段传递的方法及装置
US11327962B1 (en) * 2020-01-23 2022-05-10 Rockset, Inc. Real-time analytical database system for querying data of transactional systems
US11113191B1 (en) * 2020-06-21 2021-09-07 Tyson York Winarski Direct and indirect addressing pointers for big data
CN112817980B (zh) * 2021-02-05 2024-06-11 腾讯科技(深圳)有限公司 一种数据索引处理方法、装置、设备及存储介质
US11693852B1 (en) 2021-04-12 2023-07-04 Amdocs Development Limited System, method, and computer program for normalizing a JSON structure
US20220368533A1 (en) * 2021-05-16 2022-11-17 CodeNotary Inc. System and method to cryptographically validate rich query results
CN113253685B (zh) * 2021-05-31 2021-09-24 航天中认软件测评科技(北京)有限责任公司 一种工业数据采集方法、装置、设备及介质
CN114357054B (zh) * 2022-03-10 2022-06-03 广州宸祺出行科技有限公司 一种基于ClickHouse的非结构化数据的处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250927A (ja) * 1999-02-26 2000-09-14 Nec Commun Syst Ltd データベースの更新・検索方法
US20090196423A1 (en) * 2008-02-01 2009-08-06 Oracle International Corporation Methods to defend against tampering of audit records
US20090287986A1 (en) * 2008-05-14 2009-11-19 Ab Initio Software Corporation Managing storage of individually accessible data units
US20150088924A1 (en) * 2013-09-23 2015-03-26 Daniel ABADI Schema-less access to stored data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092061A (en) * 1997-08-15 2000-07-18 International Business Machines Corporation Data partitioning by co-locating referenced and referencing records
US7313657B1 (en) * 2005-03-24 2007-12-25 Sprint Communications Company L.P. Conflict avoidance in data store replication
US20090144220A1 (en) * 2007-11-30 2009-06-04 Yahoo! Inc. System for storing distributed hashtables
TWI480746B (zh) * 2009-11-09 2015-04-11 Hewlett Packard Development Co 使用經結構化之資料儲存器達到較快速全文檢索
US20130232157A1 (en) * 2012-03-05 2013-09-05 Tammer Eric Kamel Systems and methods for processing unstructured numerical data
CN104750809B (zh) * 2015-03-26 2018-05-18 中国科学院软件研究所 一种支持关系模型和键-值结构的混合数据存储方法
CN105677826A (zh) * 2016-01-04 2016-06-15 博康智能网络科技股份有限公司 一种针对海量非结构化数据的资源管理方法
CN105608224A (zh) * 2016-01-13 2016-05-25 广西师范大学 一种提高海量数据查询性能的正交多哈希映射索引方法
US11256746B2 (en) * 2016-04-25 2022-02-22 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
CN106776783B (zh) * 2016-11-24 2019-10-01 福建亿榕信息技术有限公司 非结构化数据存储管理方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250927A (ja) * 1999-02-26 2000-09-14 Nec Commun Syst Ltd データベースの更新・検索方法
US20090196423A1 (en) * 2008-02-01 2009-08-06 Oracle International Corporation Methods to defend against tampering of audit records
US20090287986A1 (en) * 2008-05-14 2009-11-19 Ab Initio Software Corporation Managing storage of individually accessible data units
US20150088924A1 (en) * 2013-09-23 2015-03-26 Daniel ABADI Schema-less access to stored data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7429374B2 (ja) 2021-10-31 2024-02-08 株式会社Datafluct 情報処理システム、情報処理方法及び情報処理プログラム

Also Published As

Publication number Publication date
WO2019116167A1 (en) 2019-06-20
CN111373390A (zh) 2020-07-03
GB2582234A (en) 2020-09-16
JP7146919B2 (ja) 2022-10-04
US20190179948A1 (en) 2019-06-13
GB202010394D0 (en) 2020-08-19
CN111373390B (zh) 2024-03-15
DE112018005692T5 (de) 2020-07-16

Similar Documents

Publication Publication Date Title
JP7146919B2 (ja) コンピュータ処理方法、コンピュータ・プログラム製品およびシステム
CN106605221B (zh) 具有用于即时索引的方法的多用户搜索系统
US7444317B2 (en) System and method for managing file names for file system filter drivers
US20170308621A1 (en) Hash-based efficient secondary indexing for graph data stored in non-relational data stores
US10210191B2 (en) Accelerated access to objects in an object store implemented utilizing a file storage system
KR102361153B1 (ko) 데이터 유형에 관련된 데이터 프로파일링 동작 관리
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
AU2013210018B2 (en) Location independent files
US12007943B2 (en) Virtual machine object version control
US9454588B2 (en) Custom object-in-memory format in data grid network appliance
US11030242B1 (en) Indexing and querying semi-structured documents using a key-value store
US9152683B2 (en) Database-transparent near online archiving and retrieval of data
US11775484B2 (en) Fast algorithm to find file system difference for deduplication
US11836134B2 (en) Proactive splitting and merging of nodes in a Bε-tree
US20210209057A1 (en) File system quota versioning
US20170371978A1 (en) Method and apparatus for managing a document index
US20200341956A1 (en) Processing time series metrics data
US11354288B2 (en) Optimizing operations on b e-trees stored on solid state media
US11645234B2 (en) Rule-based collections of subset(s) of metadata in response to a trigger event occurring
US20220342888A1 (en) Object tagging
US9710479B2 (en) Providing record-level alternate-index upgrade locking
US20180196860A1 (en) Efficient representation, access and modification of variable length objects
US11507553B2 (en) Range lookup operations for Bε-trees using update messages
US11500889B1 (en) Dynamic script generation for distributed query execution and aggregation
US20240119037A1 (en) Techniques for adaptive independent compression of key and non-key portions of database rows in index organized tables (iots)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220419

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220921

R150 Certificate of patent or registration of utility model

Ref document number: 7146919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150