(57)【要約】【課題】データ・レコードをグループ化し、データ・アクセスを最適化する。【解決手段】１つ以上のデータ・ストアの各データ・レコードを取り出し、各データ・レコードのレコード・キーの識別ビットが、データ・ストアの中のデータ・レコードの事前定義された密度、及び事前定義されたグループ・サイズを使用して評価される。次に、同一の識別ビットを有するデータ・レコードが、それらの識別ビットに関連付けられた１つ以上のデータ・ストアの中にグループ化される。また、１つ以上のデータ・ストアの中にデータ・レコードを、識別ビットとその１つ以上のデータ・ストアのメタデータ情報とのマッピングに基づいて記憶する。【選択図】図８
2017004507.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するために、データ・レコードをグループ化するための方法であって、
ネットワーク・ノードのプロセッサにより、前記１つ又は複数のデータ・ストアの各データ・レコードを取り出すこと、
前記プロセッサにより、前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及び前記データ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビットを評価すること、及び
前記プロセッサにより、同一の識別ビットを有する前記データ・レコードを、対応する識別ビットに関連付けられた前記１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化し、前記少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化することを備える方法。
【請求項２】
前記プロセッサにより、前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中に入力データ・レコードを記憶することを、
前記入力データ・レコードのサイズを識別すること、
前記入力データ・レコードの前記サイズを使用して前記入力データ・レコードのレコード・キーの識別ビットを評価すること、
前記入力データ・レコードの前記レコード・キーの前記評価された識別ビットを、前記１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングすること、及び
前記マッピングに基づいて、前記１つ又は複数のデータ・ストアのうちの１つの中に前記入力データ・レコードを記憶して、前記１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化すること、
を実行することによって行う請求項１に記載の方法。
【請求項３】
各データ・レコードは、１つ又は複数のクライアント・デバイスから受信された少なくとも１つの入力キーに基づいて取り出され、前記入力データ・レコードは、前記１つ又は複数のクライアント・デバイスから受信される請求項１に記載の方法。
【請求項４】
前記データ・ストアの中のデータ・レコードの前記事前定義された密度は、前記データ・ストアの中の前記データ・レコードの数と前記データ・ストアの中の前記データ・レコードの収束の少なくともいずれかに基づいて計算される請求項１に記載の方法。
【請求項５】
前記プロセッサにより、各データ・レコードの前記レコード・キーの前記識別ビットのメタデータ情報を前記ネットワーク・ノードの中に記憶することを更に備える請求項１に記載の方法。
【請求項６】
前記識別ビットの前記メタデータ情報は、前記ネットワーク・ノードの中にルックアップ・テーブルの形態で記憶される請求項５に記載の方法。
【請求項７】
データ・レコードを、１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するためにグループ化するためのネットワーク・ノードであって、
プロセッサと、
前記プロセッサに通信可能に結合されたメモリであって、実行されると、前記プロセッサに、
前記１つ又は複数のデータ・ストアの各データ・レコードを取り出すこと、
前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及び前記データ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビットを評価すること、及び
同一の識別ビットを有する前記データ・レコードを、対応する識別ビットに関連付けられた前記１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化し、前記少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化すること、
を行わせるプロセッサ実行可能命令を記憶するメモリを備えるネットワーク・ノード。
【請求項８】
前記プロセッサは、前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中に入力データ・レコードを記憶することを、
前記入力データ・レコードのサイズを識別すること、
前記入力データ・レコードの前記サイズを使用して前記入力データ・レコードのレコード・キーの識別ビットを評価すること、
前記入力データ・レコードの前記レコード・キーの前記評価された識別ビットを、前記１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングすること、及び
前記マッピングに基づいて、前記１つ又は複数のデータ・ストアの１つの中に前記入力データ・レコードを記憶し、前記１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化すること、
を実行することによって行うように構成される請求項７に記載のネットワーク・ノード。
【請求項９】
１つ又は複数のクライアント・デバイスに通信可能に接続されたネットワーク・ノードであって、各データ・レコードは、１つ又は複数のクライアント・デバイスから受信された少なくとも１つの入力キーに基づいて取り出され、前記入力データ・レコードは、前記１つ又は複数のクライアント・デバイスから受信される請求項８に記載のネットワーク・ノード。
【請求項１０】
前記プロセッサは、前記データ・ストアの中のデータ・レコードの前記事前定義された密度を、前記データ・ストアの中の前記データ・レコードの数と前記データ・ストアの中の前記データ・レコードの収束の少なくともいずれかに基づいて計算する請求項８に記載のネットワーク・ノード。
【請求項１１】
前記プロセッサは、各データ・レコードの前記レコード・キーの前記識別ビットのメタデータ情報を前記メモリの中に記憶するように更に構成される請求項８に記載のネットワーク・ノード。
【請求項１２】
前記識別ビットの前記メタデータ情報は、前記メモリの中にルックアップ・テーブルの形態で記憶される請求項１１に記載のネットワーク・ノード。
【請求項１３】
１つ又は複数のデータ・ストアのうちのデータ・ストアの中に入力データ・レコードを記憶して、前記データ・ストアにおけるデータ・アクセスを最適化するためにための方法であって、
ネットワーク・ノードのプロセッサにより、前記入力データ・レコードのサイズを識別すること、
前記プロセッサにより、前記入力データ・レコードの前記サイズを使用して前記入力データ・レコードのレコード・キーの識別ビットを評価すること、
前記プロセッサにより、前記入力データ・レコードの前記レコード・キーの前記評価された識別ビットを、前記１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングすること、及び
前記プロセッサによる、前記マッピングに基づいて、前記１つ又は複数のデータ・ストアのうちの１つの中に前記入力データ・レコードを記憶し、前記１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化することを備える方法。
【請求項１４】
前記１つ又は複数のデータ・ストアの中にデータ・レコードをグループ化することを、
前記１つ又は複数のデータ・ストアの各データ・レコードを取り出すこと、
前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及び前記データ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビットを評価すること、及び
同一の識別ビットを有する前記データ・レコードを、対応する識別ビットに関連付けられた前記１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化し、前記少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化すること、
を実行することによって行う請求項１３に記載の方法。
【請求項１５】
各データ・レコードは、１つ又は複数のクライアント・デバイスから受信された少なくとも１つの入力キーに基づいて取り出され、前記入力データ・レコードは、前記１つ又は複数のクライアント・デバイスから受信される請求項１４に記載の方法。
【請求項１６】
前記データ・ストアの中のデータ・レコードの前記事前定義された密度は、前記データ・ストアの中の前記データ・レコードの数と前記データ・ストアの中の前記データ・レコードの収束の少なくともいずれかに基づいて計算される請求項１５に記載の方法。
【請求項１７】
前記プロセッサにより、各データ・レコードの前記レコード・キーの前記識別ビットのメタデータ情報を前記ネットワーク・ノードの中に記憶することを更に備える請求項１４に記載の方法。
【請求項１８】
前記識別ビットの前記メタデータ情報は、前記ネットワーク・ノードの中にルックアップ・テーブルの形態で記憶される請求項１７に記載の方法。
【請求項１９】
１つ又は複数のデータ・ストアのうちのデータ・ストアの中に入力データ・レコードを記憶し、前記データ・ストアにおけるデータ・アクセスを最適化するためのネットワーク・ノードであって、
プロセッサと、
前記プロセッサに通信可能に結合されたメモリであって、実行されると、前記プロセッサに、
前記入力データ・レコードのサイズを識別すること、
前記入力データ・レコードの前記サイズを使用して前記入力データ・レコードのレコード・キーの識別ビットを評価すること、
前記入力データ・レコードの前記レコード・キーの前記評価された識別ビットを、前記１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングすること、及び
前記マッピングに基づいて、前記１つ又は複数のデータ・ストアのうちの１つの中に前記入力データ・レコードを記憶し、前記１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化すること、
を行わせるプロセッサ実行可能命令を記憶するメモリを備えるネットワーク・ノード。
【請求項２０】
前記プロセッサは、前記１つ又は複数のデータ・ストアの中にデータ・レコードをグループ化することを、
前記１つ又は複数のデータ・ストアの各データ・レコードを取り出すこと、
前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及び前記データ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビットを評価すること、及び
同一の識別ビットを有する前記データ・レコードを、対応する識別ビットに関連付けられた前記１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化し、前記少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化すること、
を実行することによって行う請求項１９に記載のネットワーク・ノード。
【請求項２１】
１つ又は複数のクライアント・デバイスに通信可能に接続されたネットワーク・ノードであって、各データ・レコードは、１つ又は複数のクライアント・デバイスから受信された少なくとも１つの入力キーに基づいて取り出され、前記入力データ・レコードは、前記１つ又は複数のクライアント・デバイスから受信される請求項２０に記載のネットワーク・ノード。
【請求項２２】
前記プロセッサは、前記データ・ストアの中のデータ・レコードの前記事前定義された密度を、前記データ・ストアの中の前記データ・レコードの数と前記データ・ストアの中の前記データ・レコードの収束の少なくともいずれかに基づいて計算する請求項２１に記載のネットワーク・ノード。
【請求項２３】
前記プロセッサは、各データ・レコードの前記レコード・キーの前記識別ビットのメタデータ情報を前記メモリの中に記憶するように更に構成される請求項２１に記載のネットワーク・ノード。
【請求項２４】
前記識別ビットの前記メタデータ情報は、前記メモリの中にルックアップ・テーブルの形態で記憶される請求項２３に記載のネットワーク・ノード。
【請求項２５】
プロセッサによって処理されると、ネットワーク・ノードに、
前記１つ又は複数のデータ・ストアの各データ・レコードを取り出す動作と、
前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及び前記データ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビットを評価する動作と、
同一の識別ビットを有する前記データ・レコードを、対応する識別ビットに関連付けられた前記１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化し、前記少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化する動作とを実行させる、記憶された命令を含む非一時的なコンピュータ可読媒体。
【請求項２６】
前記命令は、前記プロセッサに、前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中に入力データ・レコードを記憶すること備える動作を、
前記入力データ・レコードのサイズを識別すること、
前記入力データ・レコードの前記サイズを使用して前記入力データ・レコードのレコード・キーの識別ビットを評価すること、
前記入力データ・レコードの前記レコード・キーの前記評価された識別ビットを、前記１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングすること、及び
前記マッピングに基づいて、前記１つ又は複数のデータ・ストアのうちの１つの中に前記入力データ・レコードを記憶し、前記１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化すること、
を実行することによって行わせる請求項２５に記載の媒体。
【請求項２７】
前記命令は、前記プロセッサに、各データ・レコードの前記レコード・キーの前記識別ビットのメタデータ情報を前記ネットワーク・ノードの中に更に備えることを備える動作を更に実行させる請求項２６に記載の媒体。
【請求項２８】
プロセッサによって処理されると、ネットワーク・ノードに、
前記入力データ・レコードのサイズを識別する動作と、
前記入力データ・レコードの前記サイズを使用して前記入力データ・レコードのレコード・キーの識別ビットを評価する動作と、
前記入力データ・レコードの前記レコード・キーの前記評価された識別ビットを、前記１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングする動作と、
前記プロセッサにより、前記マッピングに基づいて、前記１つ又は複数のデータ・ストアのうちの１つの中に前記入力データ・レコードを記憶し、前記１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化する動作と、
を実行させる記憶された命令を含む非一時的なコンピュータ可読媒体。
【請求項２９】
前記命令は、前記プロセッサに、前記１つ又は複数のデータ・ストアの中にデータ・レコードをグループ化することを、
前記１つ又は複数のデータ・ストアの各データ・レコードを取り出すこと、
前記１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及び前記データ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビットを評価すること、及び
同一の識別ビットを有する前記データ・レコードを、対応する識別ビットに関連付けられた前記１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化し、前記少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化すること、
を実行することよって実行させる請求項２８に記載の媒体。
【請求項３０】
前記命令は、前記プロセッサに、各データ・レコードの前記レコード・キーの前記識別ビットのメタデータ情報を前記ネットワーク・ノードの中に記憶することを備える動作を更に実行させる請求項２９に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本主題は、一般に、データ・ストレージに関し、より詳細には、排他的にではなく、データ・レコードをグループ化し、データ・ストアの中にそれらのデータ・レコードを記憶するためのネットワーク・ノードに関する。
【背景技術】
【０００２】
一般に、ビッグ・データは、ネットワークを介してアクセスされ得るビッグ・データ・ストア（データ・ストアと呼ばれる）の中に記憶された大量の複雑なデータの集まりを備える。その大量の複雑なデータは、一般に、索引付けされ、並べ替えられ、圧縮されて１つ又は複数のデータ・レコードにされたデータ・ブロックの形態で記憶される。それらのデータ・レコードは、テーブルの中に記憶され、そのテーブルが、１つ又は複数のデータ・ストアの中に記憶される。
【０００３】
１つの従来の方法において、その１つ又は複数のデータ・レコードは、順次に記憶され、その１つ又は複数のデータ・ストアの中の記憶のためのスペースの利用可能性に基づいて、その１つ又は複数のデータ・ストアの中にランダムに分配される。例えば、データ・レコード１及び５が、データ・ストア１の中に記憶され得る。同様に、データ・レコード６及び１０が、データ・ストア２の中に記憶され得る。データ・レコード１１及び１６が、データ・ストア３の中に記憶されることが可能であり、データ・レコード１７及び２０が、データ・ストア４の中に記憶されることが可能である。図１は、その１つ又は複数のデータ・ストアの中にその１つ又は複数のデータ・レコードを記憶することを示す。特に、図１は、その１つ又は複数のデータ・ストアの中にその１つ又は複数のデータ・レコードをランダムに配布することを示す。通常、その１つ又は複数のデータ・レコードの各データ・レコードは、固定長サイズであることも、可変長サイズであることも可能な特定のビット・サイズを備える。その１つ又は複数のデータ・レコードの各データ・レコードのビット・サイズから、その１つ又は複数のデータ・ストアの中にビット単位で記憶するために最上位ビット（ＭＳＢ：Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔｓ）及び低位ビット（ＬＳＢ：Ｌｏｗ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）が決定され得る。既存の方法では、その１つ又は複数のデータ・ストアからのデータにアクセスすることは、全ビット・サイズに依存する。例えば、ユーザが、１から４までの範囲でキーを入力することを考慮されたい。すると、１から４までの範囲のキーを満足させるその１つ又は複数のデータ・ストア全てが探索される。その１つ又は複数のデータ・ストア全ての中で探索を行うことが関与するデータ・アクセスのそのような様態は、時間がかかる。更に、データ・アクセスのそのような様態は、一部のデータ・レコードはユーザによって要求されない可能性があるので、データをフェッチすることの無駄をもたらす。更に、既存の方法では、その１つ又は複数のデータ・ストアの全ての中で探索することは、その１つ又は複数のデータ・ストア全てを相手にした継続的なネットワーク接続を要求する。しかし、そのデータ・アクセスは、ユーザによって入力されたキーに関する応答時間を次々に遅くするネットワーク待ち時間（latency）が存在する場合、失敗する。更に、そのような従来の方法を使用してビッグ・データの中にその１つ又は複数のデータ・レコードを記憶することに関して困難及び遅延が存在する。
【０００４】
１つの従来の方法において、中央メタデータ・リポジトリが、その１つ又は複数のデータ・ストア全てを相手に、その１つ又は複数のデータ・ストアからデータをフェッチするために接続を確立する媒体として使用される。しかし、そのデータ・アクセスは、その中央メタデータ・リポジトリが機能することができない、且つ／又はその１つ又は複数のデータ・ストアとの接続をもたらすことができない場合、失敗する。
【０００５】
１つの従来の方法において、データ・パーティションを行う、すなわち、その１つ又は複数のデータ・ストアの中にその１つ又は複数のデータ・レコードを記憶するオフライン技法が提供される。特に、このオフライン技法は、その１つ又は複数のデータ・レコードが記憶に先立って前もって収集されるシナリオを参照する。次に、その１つ又は複数のデータ・レコードのビット・サイズに基づいて、その１つ又は複数のデータ・レコードが、その１つ又は複数のデータ・ストアの中に記憶される。そのようなオフライン技法は、リアルタイムで生成され、リアルタイムで記憶されることを要求する、その１つ又は複数のデータ・レコードを記憶する問題を解決しない。
【０００６】
１つの従来の方法において、ユーザによって入力されたキーに従って要求される、データ・アクセスが、グループのデータ・レコードに関してではなく、単一のデータ・レコードに関して実行される個別レコード指向の技法が、使用される。特に、そのような技法は、キー範囲を満足させる一括操作に関してパフォーマンスを低下させる。例えば、データ・レコードの隣接したセットの挿入／更新／フェッチに関して、その１つ又は複数のデータ・ストアの中でターゲット・データ・ストアを一度に探し出すのに、各キーがスキャンされる。そのようにして、その１つ又は複数のデータ・ストアが、データ・アクセスのために一度にスキャンされなければならない。しかし、従来の方法は、一括のデータ・レコードに関するデータ・アクセス、又はブロック指向のデータ・アクセスを含まない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本開示を介して、従来技術の１つ又は複数の欠点が克服され、さらなる利点がもたらされる。さらなる特徴及び利点が、本開示の技法を介して実現される。本開示の他の実施例及び態様が、本明細書において詳細に説明され、主張される開示の一部分と見なされる。
【課題を解決するための手段】
【０００８】
したがって、本開示は、１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するためにデータ・レコードをグループ化するための方法に関する。この方法は、その１つ又は複数のデータ・ストアの各データ・レコードを取り出すことを備える。各データ・レコードを取り出すと、各データ・レコードの識別ビットが、その１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及びそれらのデータ・レコードの事前定義されたグループ・サイズを使用して評価される。次に、同一の識別ビットを有するデータ・レコードが、それらの識別ビットに関連付けられたその１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化され、その少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化する。
【０００９】
更に、本開示は、１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するためにデータ・レコードをグループ化するためのネットワーク・ノードに関する。このシステムは、プロセッサと、そのプロセッサに通信可能に結合されたメモリとを更に備え、そのメモリは、実行されると、そのプロセッサにその１つ又は複数のデータ・ストアの各データ・レコードを取り出させるプロセッサ実行可能命令を記憶する。プロセッサは、その１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及びそれらのデータ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードの識別ビットを評価する。プロセッサは、同一の識別ビットを有するデータ・レコードを、それらの識別ビットに関連付けられたその１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化され、その少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化する。
【００１０】
したがって、本開示は、１つ又は複数のデータ・ストアのうちのデータ・ストアの中に、そのデータ・ストアにおけるデータ・アクセスを最適化するために入力データ・レコードを記憶するための方法に関する。この方法は、その入力データ・レコードのサイズを識別することを備える。次に、その受信された入力データ・レコードの識別ビットが、そのデータ・レコードのサイズを使用して評価される。その入力データ・レコードの評価された識別ビットが、その１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングされる。その入力データ・レコードは、そのマッピングに基づいてその１つ又は複数のデータ・ストアのうちの１つの中に記憶され、その１つ又は複数のデータ・ストアのうちのその１つにおけるデータ・アクセスを最適化する。
【００１１】
更に、本開示は、１つ又は複数のデータ・ストアのうちのデータ・ストアの中に、そのデータ・ストアにおけるデータ・アクセスを最適化するために入力データ・レコードを記憶するためのネットワーク・ノードに関する。このシステムは、プロセッサと、そのプロセッサに通信可能に結合されたメモリとを更に備え、そのメモリは、実行されると、そのプロセッサにその入力データ・レコードのサイズを識別させるプロセッサ実行可能命令を記憶する。プロセッサは、その受信された入力データ・レコードの識別ビットを、そのデータ・レコードのサイズを使用して評価する。次に、プロセッサは、その入力データ・レコードの評価された識別ビットを、その１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングする。プロセッサは、マッピングに基づいて、その入力データ・レコードをその１つ又は複数のデータ・ストアのうちの１つの中に記憶し、その１つ又は複数のデータ・ストアのうちのその１つにおけるデータ・アクセスを最適化する。
【００１２】
更に、本開示は、少なくとも１つのプロセッサによって処理されると、ネットワーク・ノードに、１つ又は複数のデータ・ストアの各データ・レコードを取り出す動作を実行させる、記憶された命令を含む非一時的なコンピュータ可読媒体に関する。次に、各データ・レコードの識別ビットが、その１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及びそれらのデータ・レコードの事前定義されたグループ・サイズを使用して評価される。同一の識別ビットを有するデータ・レコードが、それらの識別ビットに関連付けられたその１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中にグループ化され、その少なくとも１つのデータ・ストアにおけるデータ・アクセスを最適化する。
【００１３】
更に、本開示は、少なくとも１つのプロセッサによって処理されると、ネットワーク・ノードに、その入力データ・レコードのサイズを識別する動作を実行させる、記憶された命令を含む非一時的なコンピュータ可読媒体に関する。次に、その受信された入力データ・レコードの識別ビットが、そのデータ・レコードのサイズを使用して評価される。その入力データ・レコードの評価された識別ビットが、その１つ又は複数のデータ・ストアの１つ又は複数のメタデータ情報にマッピングされる。その入力データ・レコードは、そのマッピングに基づいてその１つ又は複数のデータ・ストアのうちの１つの中に記憶され、その１つ又は複数のデータ・ストアのうちのその１つにおけるデータ・アクセスを最適化する。
【００１４】
以上の概要は、単に例示的であり、限定することは全く意図していない。前段で説明される例示的な態様、実施例、及び特徴に加えて、さらなる態様、実施例、及び特徴が、図面、及び以下の詳細な説明を参照して明白となろう。
【００１５】
本開示に組み込まれ、本開示の一部分を成す添付の図面が、例示的な実施例を示し、説明と一緒になって、開示される原理を説明する役割をする。図において、参照符号の左端の数字は、その参照符号が最初に現れる図を識別する。図の全てにおいて、同様の特徴、及び同様の構成要素を参照するのに同一の符号が使用される。次に、本主題の実施例によるシステム及び／又は方法のいくつかの実施例が、単に例として、添付の図を参照して説明される。
【図面の簡単な説明】
【００１６】
【図１】１つ又は複数のデータ・ストアの中にデータ・レコードをランダムに分配するための従来の方法を示す図である。
【図２】本開示のいくつかの実施例による、１つ又は複数のデータ・ストアの中にデータ・レコードを、データ・アクセスを最適化するために、それらのデータ・レコードのレコード・キーの同一の識別ビット、すなわち、最上位ビット（ＭＳＢ）に基づいて一緒にグループ化することを示す図である。
【図３】本開示のいくつかの実施例による、１つ又は複数のデータ・ストアのうちのデータ・ストアの中にデータ・レコードを、データ・アクセスを最適化するために、そのデータ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢに基づいて記憶することを示す図である。
【図４Ａ】本開示のいくつかの実施例による、データ・レコードを、それらのデータ・レコードの識別ビットに基づいてグループ化し、データ・レコードを記憶するための環境の例示的な実施例を示す図である。
【図４Ｂ】本開示のいくつかの実施例による、データ・レコードを、それらのデータ・レコードの識別ビットに基づいてグループ化し、データ・レコードを記憶するための環境の例示的な実施例を示す図である。
【図５】本開示のいくつかの実施例による、様々なデータと、データ・レコードを、それらのデータ・レコードの識別ビットに基づいてグループ化し、識別ビットに基づいてデータ・レコードを記憶するためのモジュールとを有する例示的なネットワーク・ノードを示すブロック図である。
【図６Ａ】本開示のいくつかの実施例による識別ビットの計算を示す図である。
【図６Ｂ】本開示のいくつかの実施例による識別ビットの計算を示す図である。
【図６Ｃ】本開示のいくつかの実施例による識別ビットの計算を示す図である。
【図６Ｄ】本開示のいくつかの実施例による識別ビットの計算を示す図である。
【図６Ｅ】本開示のいくつかの実施例による識別ビットの計算を示す図である。
【図６Ｆ】本開示のいくつかの実施例による識別ビットの計算を示す図である。
【図７Ａ】本開示のいくつかの実施例による密度変動の要素分解（factorization）を示す図である。
【図７Ｂ】本開示のいくつかの実施例による密度変動の要素分解を示す図である。
【図８】本開示のいくつかの実施例による、１つ又は複数のデータ・ストアの中にデータ・レコードをグループ化し、その１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するための方法を示す流れ図である。
【図９】本開示のいくつかの実施例による、１つ又は複数のデータ・ストアの中に入力データ・レコードを記憶し、その１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するための方法を示す流れ図である。
【図１０】本開示に合致する実施例を実施するための例示的なコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【００１７】
本明細書におけるいずれのブロック図も、本主題の原理を実現する例示的なシステムの概念図を表すことが当業者には認識されよう。同様に、いずれのフローチャート、流れ図、状態遷移図、疑似コードなども、コンピュータ可読媒体において実質的に表されるとともに、コンピュータ又はプロセッサによって、そのようなコンピュータ又はプロセッサが明示されるか否かにかかわらず、実行されることが可能な、様々なプロセスを表すことも認識されよう。
【００１８】
本明細書において、「例示的」という語は、「例、実例、又は例示の役割をする」を意味するように本明細書で使用される。本明細書において「例示的」である説明される本主題のいずれの実装例又は実施例も、必ずしも、他の実施例より好ましい、又は有利であると解釈されるべきではない。
【００１９】
本開示は、様々な変形形態及び代替形態が可能であるが、本開示の特定の実施例が、図面において例として示されており、後段で詳細に説明される。しかし、本開示を、開示される特定の形態に限定することは意図されておらず、それどころか、本開示は、本開示の範囲に含まれる全ての変形形態、機能形態、及び代替形態を範囲に含むべきことを理解されたい。
【００２０】
「備える」という用語、「備えた」という用語、又はこれらの用語の他の任意の変種は、非排他的な包含を範囲に含むことを意図しており、したがって、構成要素又はステップのリストを備えるセットアップ、デバイス、又は方法は、それらの構成要素又はステップを含むだけではなく、明示的にリストアップされない、又はそのようなセットアップ又はデバイス又は方法に本来的ではない他の構成要素又はステップを含むことが可能である。すなわち、「〜を備える」の前に記載される、システム又は装置における１つ又は複数の要素は、さらなる制約なしには、そのシステム又は装置における他の要素又はさらなる要素の存在を排除しない。
【００２１】
本開示は、１つ又は複数のデータ・ストアの中にデータ・レコードを、その１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化するためにグループ化するための方法及びネットワーク・ノードに関する。このネットワーク・ノードは、データ・レコードを有する１つ又は複数のデータ・ストアに関連付けられたネットワーク・サーバであり得る。代替として、このネットワーク・ノードは、データ・レコードを備える対応するデータ・ストアを有する、又はそのようなデータ・ストアに関連付けられた他のネットワーク・ノードに接続されてもよい。一部のシナリオにおいて、このネットワーク・ノードは、それらの他のネットワーク・ノードのデータ・ストアの中にデータ・レコードをグループ化するインテリジェンス／ロジックを備える。したがって、各ネットワーク・ノードは、本開示の実施例において例示されるとおり、動作を実行することができる。その１つ又は複数のデータ・ストアは、それぞれのテーブル特性とともに行と列を有するテーブルの形態でデータ・レコードを包含するデータベースを指す。一実施例において、本開示は、その１つ又は複数のデータ・ストアの各データ・レコードを取り出す方法に更に関する。１つ又は複数のクライアント・デバイスから受信された入力キーに対応する各データ・レコードが、取り出される。入力キーは、１つ又は複数のクライアント・デバイスを介してユーザによって入力されたビット情報及び／又はキーワードを備え得る。次に、各データ・レコードの識別ビットが、その１つ又は複数のデータ・ストアのうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及びそれらのデータ・レコードの事前定義されたグループ・サイズを使用して評価される。識別ビットとは、各データ・レコードのレコード・キーの最上位ビット（ＭＳＢ）を意味する。一実例において、識別ビットのメタデータ情報が、本開示の実施例を実行することに関与するネットワーク・ノードの中に記憶され、そのメタデータ情報を使用して、それらのデータ・レコードを位置決めをするためにそのネットワーク・ノードが識別される。事前定義されたグループ・サイズは、その１つ又は複数のデータ・ストアの中に記憶されることが要求されるデータ・レコードのグループを参照する低位ビット（ＬＳＢ）を定義する。例えば、識別ビット、すなわち、ＭＳＢが２０ＭＳＢであると評価されるものと想定すると、異なる２＾２０（２の２０乗）のグループのデータ・レコード、すなわち、グループ・サイズ（ＬＳＢ）が存在することが可能であり、各グループは、最大で２＾（３２−２０）＝２＾１２のデータ・レコードを包含することが可能である。したがって、２０ビットの１ＭＳＢの場合、２＾１２のデータ・レコードが存在し、これが、１粒子(particle)である。同一の識別ビット、すなわち、同一のＭＳＢを有するデータ・レコードは、その１つ又は複数のデータ・ストアのうちの少なくとも１つのデータ・ストアの中に一緒にグループ化される。それらのデータ・レコードは、対応する識別ビット、すなわち、対応するＭＳＢに関連付けられたその少なくとも１つのデータ・ストアの中に、その少なくとも１つのデータ・ストアにおけるデータ・アクセ��を最適化するためにグループ化される。そのようにして、同一のＭＳＢを有するデータ・レコードは、その１つ又は複数のデータ・ストアの中に一緒にグループ化され、その１つ又は複数のデータ・ストアの全てに別々にアクセスすることが解消される。特に、同一のＭＳＢを共有するデータ・レコードを一緒に置くことは、シーケンシャル・データ・アクセスを強化する。また、データ・アクセス中のネットワーク待ち時間及び時間消費が低減される。更に、同一のＭＳＢに基づいてデータ・レコードをグループ化することによってそのように最適化することは、その１つ又は複数のデータ・ストアの全てを相手に接続をもたらすための中央メタデータ・リポジトリの使用を解消する。特に、本開示において、その１つ又は複数のデータ・ストアは、直接にアクセスされ得る。
【００２２】
図２は、本開示のいくつかの実施例による、その１つ又は複数のデータ・ストアの中にデータ・レコードを、それらのデータ・レコードの各々のレコードの同一の識別ビット、すなわち、同一のＭＳＢに基づいて一緒にグループ化することを示す。ユーザが、入力キーを入力し、その入力キーに対応して、データ・レコードが取り出されるものと考える。例えば、データ・レコード１、データ・レコード５、データ・レコード６、データ・レコード１０、データ・レコード１１、及びデータ・レコード１６が、その入力キーに関して取り出されるものと考える。しかし、識別ビット評価、すなわち、ＭＳＢ評価に基づいて、データ・レコード１とデータ・レコード５が同一のＭＳＢを有すると判定され、データ・レコード６とデータ・レコード１０が同一のＭＳＢを有すると判定され、データ・レコード１１とデータ・レコード１６が同一のＭＳＢを有すると判定される。そのような事例において、それらのデータ・レコードの各々のレコードの同一の識別ビット、すなわち、同一のＭＳＢが、１つのデータ・ストアの中にグループ化される。例えば、データ・レコード１とデータ・レコード５が、データ・ストア１の中に一緒にグループ化され、データ・レコード６とデータ・レコード１０が、データ・ストア２の中に一緒にグループ化され、データ・レコード１１とデータ・レコード１６が、データ・ストア３の中に一緒にグループ化される。実施例において、各データ・レコードは、グループ化されると、その１つ又は複数のデータ・ストアの中に順次に記憶される。
【００２３】
本開示は、その１つ又は複数のデータ・ストアのうちのデータ・ストアの中に入力データ・レコードを記憶するための方法及びネットワークに関する。このネットワーク・ノードは、前述したノードと同様である。実施例において、同一のネットワーク・ノードが、データ・レコードをグループ化することを含む動作と、データ・レコードを記憶することを含む動作の両方を実行することができる。この方法は、入力データ・レコードのサイズを識別することを備える。一実施例において、入力データ・レコードは、その１つ又は複数のデータ・ストアの中に記憶するために１つ又は複数のクライアント・デバイスを介してユーザによって入力されたデータ・レコードである。入力データ・レコードのサイズとは、固定長、及び／又は入力データ・レコードのサイズに基づく可変長を指す。次に、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢが、入力データ・レコードのサイズを使用して評価される。次に、入力データ・レコードの評価された識別ビットが、その１つ又は複数のデータ・ストアの各データ・ストアのメタデータ情報にマッピングされる。その１つ又は複数のデータ・ストアのメタデータ情報とは、その１つ又は複数のデータ・ストアのビット情報を指し、そのビット情報を使用して、その１つ又は複数のデータ・ストアが識別される。そのマッピングに基づいて、入力データ・レコードは、その１つ又は複数のデータ・ストアのうちの１つの中に記憶され、その１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化する。特に、入力データ・レコードは、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢがマッピングされたメタデータ情報を持つデータ・ストアの中に記憶される。
【００２４】
図３は、本開示のいくつかの実施例による、１つ又は複数のデータ・ストアのうちのデータ・ストアの中にデータ・レコードを、データ・アクセスを最適化するために、そのデータ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢに基づいて記憶することを示す。ユーザがデータ・レコード８を記憶することを所望するものと考える。入力データ・レコード８のレコード・キーの識別ビット、すなわち、ＭＳＢが評価される。入力データ・レコード８のレコード・キーの識別ビット、すなわち、ＭＳＢが、その１つ又は複数のデータ・ストアのメタデータ情報にマッピングされる。例示的な図３において、入力データ・レコード８のレコード・キーのＭＳＢが、データ・ストア１のメタデータ情報にマッピングされるべきものと判定される。このため、入力データ・レコード８は、データ・ストア１の中に記憶される。そのようにして、同一の識別ビット、すなわち、同一のＭＳＢを有するデータ・レコードは、一緒に記憶され、したがって、データ・アクセスを行っている間の時間消費及びネットワーク待ち時間が低減され得る。
【００２５】
本開示の実施例の以下の詳細な説明において、本明細書の一部分を形成し、例として、本開示が実施され得る特定の実施例が示される添付の図面を参照する。これらの実施例は、当業者が本開示を実施することを可能にするように十分に詳細に説明され、他の実施例が使用されてもよいこと、及び本開示の範囲を逸脱することなく変更が行われてもよいことを理解されたい。したがって、以下の説明は、限定する意味で解釈されるべきではない。
【００２６】
図4Aは、本開示のいくつかの実施例による、データ・レコードを、データ・アクセスを最適化するために、それらのデータ・レコードの識別ビットに基づいてグループ化し、識別ビットに基づいてデータ・レコードを記憶するための環境の例示的な実施例を示す。
【００２７】
一実装例において、ネットワーク・ノード４００は、ラップトップ・コンピュータ、デスクトップ・コンピュータ、パーソナル・コンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノートブック、スマートフォン、タブレット、電子書籍リーダ（例えば、Ｋｉｎｄｌｅ及びＮｏｏｋ）、ワークステーション、メインフレーム・コンピュータ、サーバ、ネットワーク・サーバなどの様々なコンピューティング・システムにおいて実施され得る。一実例において、ネットワーク・ノード４００は、企業に関連する。実施例において、ネットワーク・ノード４００は、企業、及び／又は他の任意のサードパーティ企業に関連するデータ・レコードを有する１つ又は複数のデータ・ストア４１０ａ、４１０ｂ、．．．４１０ｎ（ひとまとめにして４１０と呼ぶ）を包含することも、包含しないことも可能である。１つ又は複数のデータ・ストア４１０は、この説明の後段において詳細に説明される。一実装例において、ネットワーク・ノード４００は、データ・レコードを備える対応するデータ・ストアを有する他のノードに接続され得る。図4Bは、ネットワーク・ノード４００が、通信ネットワークを介して他のノード４１２、４１４、４１６、及び４１８などに通信可能に接続された図を示す。各ノード４１２、４１４、４１６、及び４１８は、ネットワーク・ノード４００と同様にデータ・レコードを有する１つ又は複数のデータ・ストア（図示せず）を包含する。各ノード４１２、４１４、４１６、及び４１８は、ネットワーク・ノード４００と同様に動作する。特に、各ノード４１２、４１４、４１６、及び４１８は、識別ビット、すなわち、ＭＳＢに基づいて、１つ又は複数のデータ・ストア４１０及び／又はそのノード４１２、４１４、４１６、及び４１８自らのデータ・ストアの中にデータ・レコードをグループ化すること、及びデータ・ストア４１０及び／又はそのノード４１２、４１４、４１６、及び４１８自らのデータ・ストアの中に入力データ・レコードを記憶することができる。実施例において、ネットワーク・ノード４００及び／又は他のノード４１２、４１４、４１６、及び４１８などは、ネットワーク・ノード４００及び／又は他のノード４１２、４１４、４１６、及び４１８などが、１つ又は複数のデータ・ストア４１０のメタデータ情報、及び／又はデータ・レコードの識別ビット情報を提供することができる場合、マスタ・ノードとなる。例示的な図4Bにおいて、ネットワーク・ノード４００は、他のノード４１２、４１４、４１６、及び４１８などのためのマスタ・ノードである。ネットワーク・ノード４００及び他のそれぞれのノード４１２、４１４、４１６、及び４１８は、ネットワーク・ノード４００及び他のノード４１２、４１４、４１６、及び４１８の各ノードのメタデータ情報を包含する。ネットワーク・ノード４００の構成要素については、この説明の後段で詳細に説明される。
【００２８】
図4Aを再び参照すると、ネットワーク・ノード４００及び／又は他のノード４１２、４１４、４１６、及び４１８の各々が、通信ネットワーク（図4Aには示されない）を介して１つ又は複数のクライアント・デバイス４０８ａ、４０８ｂ、．．．４０８ｎ（ひとまとめにして４０８と呼ぶ）に通信可能に接続される。１つ又は複数のクライアント・デバイス４０８の例には、デスクトップ・コンピュータ、ポータブル・コンピュータ、モバイル電話、ハンドヘルド・デバイス、ワークステーションが含まれるが、以上には限定されない。１つ又は複数のクライアント・デバイス４０８は、企業の様々な利害関係者(stakeholder)又はエンド・ユーザ又はユーザによって使用され得る。実施例において、１つ又は複数のクライアント・デバイス４０８は、関連する利害関係者又はエンド・ユーザ又はユーザによって、１つ又は複数のデータ・ストア４１０の中にデータ・レコードをグループ化するための入力キーを与えるのに使用される。１つ又は複数のクライアント・デバイス４０８は、利害関係者又はエンド・ユーザ又はユーザによって、１つ又は複数のデータ・ストア４１０の中に入力データ・レコードを記憶するために入力データ・レコードを供給するのに使用される。その利害関係者又はエンド・ユーザ又はユーザには、管理者、開発者、試験者、マネージャ、エディタ、情報技術（ＩＴ：Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）スタッフ、ビジネス・インテリジェンス（ＢＩ：Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）専門家、データ・サイエンティストなどが含まれるが、以上には限定されない。実施例において、利害関係者又はエンド・ユーザ又はユーザには、本開示に含まれるアクションのようなユーザによって実行されるアクションを実行することができるクライアント・デバイス４０８自体が含まれ得る。一実装例において、１つ又は複数のクライアント・デバイス４０８は、入出力（Ｉ／Ｏ）デバイス（図4Aには示されない）と通信するための入出力（Ｉ／Ｏ）インターフェースを含み得る。１つ又は複数のクライアント・デバイス４０８には、１つ又は複数のデータ・ストア４１０、及び／又はネットワーク・ノード４００の各々のデータ・ストアにアクセスするために１つ又は複数の通信リンク（図示せず）をサポートするソフトウェア及び／又はハードウェアのような１つ又は複数のインターフェース（図4Aには示されない）がインストールされる。実施例において、１つ又は複数のクライアント・デバイス４０８は、ネットワーク・インターフェース（図４Ａには示されない）を介して通信ネットワークと通信する。
【００２９】
１つ又は複数のデータ・ストア４１０（ときとして、データ・ウェアハウスと呼ばれる）は、ユーザによってアクセスされ、使用されるデータ・レコードを包含するデータベースである。１つ又は複数のデータ・ストア４１０の目的は、標準化され、構造化され、一貫性があり、統合され、正しく、浄化され、適時のデータをデータ・レコードの形態で記憶することである。データ・レコードは、各テーブル・エントリにデータを有する行と列を有するテーブルを備える。一実装例において、各データ・レコードは、１つ又は複数のデータ・ストア４１０の中に順次に、分散された様態で記憶される。特に、１つ又は複数のデータ・ストア４１０の各データ・ストアが、順次のデータ・アクセスを提供する。１つ又は複数のデータ・ストア４１０の各データ・ストアは、メタデータ情報に関連付けられる。特に、そのメタデータ情報は、１つ又は複数のデータ・ストア４１０の各データ・ストアのＭＳＢ情報を提供する。そのようにして、メタデータ情報は、対応するＭＳＢを有するデータ・レコードが対応するデータ・ストアの中に記憶されていることを暗示する。例えば、８ビットのＭＳＢ−０００１１０１１データ・レコードが、その８ビットのＭＳＢ−０００１１０１１に関連付けられたデータ・ストアの中に記憶される。実施例において、１つ又は複数のデータ・ストア４１０のメタデータ情報は、各データ・レコードのレコード・キーの識別ビット情報と一緒にネットワーク・ノード４００の中に記憶される。
【００３０】
例示される図４Ａにおいて、ネットワーク・ノード４００は、本開示のいくつかの実施例により、Ｉ／Ｏインターフェース４０２と、少なくとも１つの中央処理装置（「ＣＰＵ」又は「プロセッサ」）４０４と、メモリ４０６とを備える。
【００３１】
Ｉ／Ｏインターフェース４０２は、１つ又は複数のクライアント・デバイス４０８から入力キー及び／又は入力データ・レコードが受け取られることに介在する媒体である。更に、Ｉ／Ｏインターフェース４０２は、１つ又は複数のクライアント・デバイス４０８から事前定義された密度情報、及び事前定義されたグループ・サイズ情報を受け取るように構成される。Ｉ／Ｏインターフェース４０２は、それらのデータ・レコードの各々のレコード・キーの同一の識別ビット、すなわち、同一のＭＳＢに基づいて、それらのデータ・レコードをグループ化することの結果を、１つ又は複数のクライアント・デバイス４０８、及び／又はネットワーク・ノード４００に関連付けられたディスプレイ・ユニット（図示せず）に供給するように構成される。また、Ｉ／Ｏインターフェース４０２は、１つ又は複数のデータ・ストア４１０の中に入力データ・レコードを記憶することの結果を、１つ又は複数のクライアント・デバイス４０８、及びディスプレイ・ユニットに供給するように構成される。記憶することの結果は、１つ又は複数のデータ・ストア４１０のメタデータ情報を入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢにマッピングすることに基づいて供給される。Ｉ／Ｏインターフェース４０２は、プロセッサ４０４に結合される。
【００３２】
プロセッサ４０４は、同一の識別ビット、すなわち、同一のＭＳＢに基づいて、データ・レコードをグループ化し、１つ又は複数のデータ・ストア４１０の中に入力データ・レコードを記憶するために、ユーザ又はデバイスによって生成された入力キー、及び／又は入力データ・レコードを実行するためのプログラム構成要素を実行するための少なくとも１つのデータ・プロセッサを備えることが可能である。ユーザ又はデバイスによって生成された入力キーの場合、プロセッサ４０４は、受け取られた入力キーに対応する各データ・レコードを、１つ又は複数のデータ・ストア４１０から取り出すように構成される。プロセッサ４０４は、１つ又は複数のデータ・ストア４１０のうちのデータ・ストアの中のデータ・レコードの事前定義された密度、及びそれらのデータ・レコード、すなわち、異なるＬＳＢを有するデータ・レコードの事前定義されたグループ・サイズ（すなわち、ＬＳＢ）を使用して各データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢを評価する。プロセッサ４０４は、対応するデータ・ストアの中に存在するデータ・レコードの数、及び対応するデータ・ストアの中のデータ・レコードの収束に基づいて、データ・ストアの中のデータ・レコードの密度を計算する。プロセッサ４０４は、同一の識別ビット、すなわち、同一のＭＳＢを有するデータ・レコードを、それらの識別ビットに関連付けられた１つ又は複数のデータ・ストア４１０のうちの少なくとも１つのデータ・ストアの中に一緒にグループ化する。
【００３３】
１つ又は複数のデータ・ストア４１０の中に記憶されることが要求されるユーザ又はデバイスによって生成された入力データ・レコードの場合、プロセッサ４０４は、固定長サイズ及び／又は可変長サイズであり得る入力データ・レコードのサイズを識別する。入力データ・レコードのサイズから、プロセッサ４０４が、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢを評価する。プロセッサ４０４は、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢを、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングする。プロセッサ４１０は、そのマッピングに基づいて入力データ・レコードを１つ又は複数のデータ・ストア４１０の１つの中に記憶し、１つ又は複数のデータ・ストア４１０におけるデータ・アクセスを最適化する。１つ又は複数のデータ・ストア４１０の中にデータ・レコードをグループ化すること、及び／又はデータ・レコードを記憶することは、以下の説明において説明される様々なモジュールによってリアルタイムで実行される。様々なモジュールは、ネットワーク・ノード４００のプロセッサ４０４によって実行される。
【００３４】
メモリ４０６が、少なくとも１つのプロセッサ４０４によって実行可能である命令を記憶する。実施例において、メモリ４０６は、入力キー・データ、入力データ・レコード・データ、データ・ストア・メタデータ情報、データ・レコード識別ビット情報、データ・ストアの事前定義された密度情報、事前定義されたグループ・サイズ情報、及びルックアップ・テーブルを記憶する。実施例において、入力キー・データ、入力データ・レコード・データ、データ・ストア・メタデータ情報、データ・レコード識別ビット情報、データ・ストアの事前定義された密度情報、及び事前定義されたグループ・サイズ情報は、データ・アクセスを最適化するために要求される１つ又は複数のデータとして記憶される。この１つ又は複数のデータは、本開示の後段の説明において説明される。
【００３５】
図５は、本開示のいくつかの実施例による、データ・アクセスを最適化するための様々なデータ及びモジュールを有する例示的なネットワーク・ノード４００のブロック図を示す。例示される図５において、メモリ４０６の中に記憶された１つ又は複数のデータ５００、及び１つ又は複数のモジュール５１８が、本明細書で詳細に説明される。
【００３６】
実施例において、１つ又は複数のデータ５００は、１つ又は複数のデータ・ストア４１０におけるデータ・アクセスを最適化するために、例えば、入力キー・データ５０２、入力データ・レコード５０４、データ・ストア・メタデータ情報５０６、データ・レコード識別ビット情報５０８、データ・ストアの事前定義された密度情報５１０、事前定義されたグループ・サイズ情報５１２、ルックアップ・テーブル５１４、及び他のデータ５１６を含み得る。
【００３７】
入力キー・データ５０２とは、１つ又は複数のクライアント・デバイス４０８から受け取られる入力キーの情報を指す。入力キー・データ５０２は、限定なしに、入力キーのサイズ、及びビット情報を含む。入力キーのサイズは、固定長サイズ及び／又は可変長サイズであり得る。例えば、入力キーは、固定長サイズである８ビット整数であり得る。実施例において、入力キーの可変長サイズは、固定長サイズに変換される。
【００３８】
入力データ・レコード・データ５０４とは、１つ又は複数のデータ・ストア４１０の中に記憶するために１つ又は複数のクライアント・デバイス４０８から受信された入力データ・レコードの情報を指す。入力データ・レコード・データ５０４は、限定なしに、入力データ・レコードのサイズ、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢ情報、及び入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢのメタデータ情報を含む。例えば、入力データ・レコードは、固定長サイズである８ビット整数であり得る。実施例において、入力データ・レコードの可変長サイズは、固定長サイズに変換される。
【００３９】
データ・ストア・メタデータ情報５０６とは、１つ又は複数のデータ・ストア４１０の対応するメタデータ情報を使用する１つ又は複数のデータ・ストア４１０の識別の詳細を指す。１つ又は複数のデータ・ストア４１０のメタデータ情報は、１つ又は複数のデータ・ストア４１０の識別ビット、すなわち、ＭＳＢを包含する。データ・ストア・メタデータ情報５０６は、限定なしに、１つ又は複数のデータ・ストア４１０のＭＳＢビット情報、１つ又は複数のデータ・ストア４１０のアドレス情報、１つ又は複数のデータ・ストア４１０の識別（ＩＤ）情報、１つ又は複数のデータ・ストア４１０のサイズ、及びデータ・アクセスを最適化するために使用され得る１つ又は複数のデータ・ストア４１０の他のデータを含む。
【００４０】
データ・レコード識別ビット情報５０８とは、入力キーに関する各データ・レコードのレコード・キーのＭＳＢ情報、及び／又は入力データ・レコードのＭＳＢ情報を指す。データ・レコード識別ビット情報５０８は、限定なしに、データ・レコードのレコード・キー及び／又は入力データ・レコードのＭＳＢを参照する各データ・レコードのＭＳＢビット情報、各データ・レコードのレコード・キー及び／又は入力データ・レコードの識別ビット、すなわち、ＭＳＢのメタ情報、各データ・レコード及び／又は入力データ・レコードのＩＤを含む。
【００４１】
事前定義された密度情報５１０とは、１つ又は複数のデータ・ストア４１０の各データ・ストアの事前定義された密度を指す。事前定義された密度情報５１０は、限定なしに、各データ・ストアの中のデータ・レコードの密度、各データ・ストアの中の平均密度、密度情報の変動係数を含む。
【００４２】
事前定義されたグループ・サイズ情報５１２とは、グループ化されるべきデータ・レコードの数を定義する事前定義されたグループ・サイズ、すなわち、ＬＳＢを指す。一緒にグループ化されるデータ・レコードのそのような数は、ハッシュ・バケット・サイズ又はハッシュ・バケット範囲と呼ばれる。事前定義されたグループ・サイズ情報５１２は、限定なしに、データ・レコードのグループのサイズ、データ・レコードの数、各データ・レコードの各ＬＳＢのビット情報を含む。
【００４３】
ルックアップ・テーブル５１４は、テーブルの中にメタデータとしてＭＳＢ長を包含する。以下のテーブル１が、ルックアップ・テーブルを示す。
【００４４】
【表１】
2017004507.tif 000003
【００４５】
他のデータ５１６とは、データ・アクセスを最適化するために１つ又は複数のデータ・ストア４１０の中にデータ・レコードをグループ化するため、及び／又は入力データ・レコードを記憶するために参照され得るようなデータを指すことが可能である。
【００４６】
実施例において、メモリ４０６の中の１つ又は複数のデータ５００が、ネットワーク・ノード４００の１つ又は複数のモジュール５１８によって処理される。１つ又は複数のモジュール５１８は、図５に示されるとおりメモリ４０６内に記憶され得る。実例において、プロセッサ４０４に通信可能に結合された１つ又は複数のモジュール５１８は、メモリ４０６の外部に存在して、ハードウェアとして実施されることも可能である。本明細書で使用されるモジュールという用語は、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、電子回路、プロセッサ（共有、専用、又はグループの）、及び１つ又は複数のソフトウェア・プログラム若しくはファームウェア・プログラムを実行するメモリ、組合せ論理回路、及び／又は説明される機能をもたらす他の適切な構成要素を指す。
【００４７】
一実装例において、１つ又は複数のモジュール５１８は、例えば、受信モジュール５２０と、評価モジュール５２２と、グループ化モジュール５２４と、サイズ識別モジュール５２６と、マッピング・モジュール５２８と、記憶モジュール５３０とを含み得る。また、メモリ４０６が、ネットワーク・ノード４００の種々雑多な機能を実行する他のモジュール５３２を備えることも可能である。そのような前述したモジュールは、単一のモジュールとして表されても、異なるモジュールの組合せとして表されてもよいことが認識されよう。
【００４８】
１つ又は複数のデータ・ストア４１０のうちの少なくとも１つのデータ・ストアの中にデータ・レコードを一緒にグループ化する実施例が、本明細書に例示される。実施例において、同一のＭＳＢに基づいてデータ・レコードをグループ化することが、第１レベル・ハッシング(hashing)と呼ばれる。実施例において、受信モジュール５２０が、１つ又は複数のクライアント・デバイス４０８から入力キーを受信する。対応する入力キーの入力キー・データ５０２に基づいて、各データ・レコードが、１つ又は複数のデータ・ストア４１０の各々から取り出される。例えば、入力キーがユーザから受け取られることを考える。入力キーに関して、異なるデータ・ストアから取り出されるべき、又はフェッチされるべき、又はアクセスされるべき２０のデータ・レコードが存在する。例えば、その入力キーのために１から５までのデータ・ストアにアクセスが行われ、データ・ストア１から５から２０のデータ・レコードがフェッチされる。また、受信モジュール５２０が、ユーザから、そのグループの中に存在するデータ・レコードの数を定義する事前定義されたグループ・サイズ、すなわち、ＬＳＢのカウントを受信する。
【００４９】
評価モジュール５２２が、データ・ストアの事前定義された密度、及びデータ・レコードの事前定義されたグループ・サイズを使用して各データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢを評価する。データ・ストアの事前定義された密度は、事前定義された密度情報５１０を使用して計算される。データ・ストアの事前定義された密度は、データ・ストアの中のデータ・レコードの数、及び／又はデータ・ストアの中のデータ・レコードの収束に基づいて計算される。密度の計算は、本明細書で詳細に説明される。実施例において、データ・ストアの密度は、統計的方法、ガウス分布などのパラメータ分布を含むが、以上には限定されない技法を使用して計算される。実施例において、ガウス分布において、その分布上の信頼区間が、密度の推定を導き出すのに使用され得る。図6Aは、データ・レコードの数が収束するまで密度サンプリングすることを示す。密度は、数が「Ｘ」、例えば、Ｘ＝３である取り出されたデータ・レコードをグループ化することによってサンプリングされる。特に、取り出されたデータ・レコードは、図6Aに示されるとおり、例えば、サイズ「Ｘ」のデータ・レコードのセットとしてグループ化される。実施例において、入力キーの最小サイズ及び最大サイズが評価される。順序を保つハッシュ関数を使用して、入力キーは、ハッシュに変換される。そのようにして、データ・レコードのセットに関する最小ハッシュ及び最大ハッシュが評価される。最大ハッシュと最小ハッシュの差により、データ・レコードのセットに関するハッシュ範囲、すなわち、グループの中のデータ・レコードの範囲が評価される。ハッシュ範囲によって分割されたデータ・レコードのセットの中のデータ・レコードの数により、ハッシュ空間、すなわち、データ・ストアの中のデータ・レコードのサンプル密度が評価される。実施例において、サンプル密度は、データ・レコードの異なるセットにより変わる。図6Bは、サンプル密度の高い変動を示す。そのサンプルから、図6Cに示されるとおり或るポイントに収束する傾向がある平均密度がプロットされる。実施例において、その収束は、以下のとおり定義される変動係数（ＣＶ：Ｃｏｅｆｆｉｃｉｅｎｔ  ｏｆ  Ｖａｒｉａｎｃｅ）と呼ばれる量によって測定される。すなわち、
変動係数（ＣＶ）＝標準偏差／平均密度  （１）
【００５０】
ＣＶがしきい値、例えば、０．０１未満である場合、平均密度からの推定される誤差は、１％に過ぎない。したがって、密度は、ハッシュ空間内の密度から評価された平均値に収束したと考えられると判定される。実施例において、密度は、ユーザによって入力され得る定数又は変数である。
【００５１】
データ・ストアの事前定義された密度に基づいて、事前定義されたグループ・サイズが評価される。グループ・サイズは、各データ・レコードのハッシュ・バケット・サイズ(hash bucket size)、すなわち、ＬＳＢを定義する。グループ・サイズ（ハッシュ・バケット・サイズ、すなわち、ＬＳＢ）の計算は、本明細書において詳細に説明される。グループ・サイズは、グループの中に所望される数のデータ・レコードを要求するユーザによって入力される。例えば、「Ｂ」という数のデータ・レコードのグループ・サイズが所望されると考えられたい。ハッシュ空間は、固定サイズのバケットに分割される。式（１）及び粒子サイズ（Ｂ）から評価された密度値を使用して、ハッシュ・バケット・サイズは、以下の式を使用して評価され得る。すなわち、
ハッシュ・バケット・サイズ＝グループ・サイズ／密度  （２）
【００５２】
実施例において、ハッシュ・バケット・サイズは、１つのＭＳＢに関するデータ・レコードのＬＳＢのセットの数を定義する。ハッシュ・バケット・サイズは、データ・レコードのＬＳＢの２のべき乗であり得る。実施例において、ハッシュ・バケット・サイズは、データ・レコードのＬＳＢの最も近い、２のべき乗にサイズ変更される。このため、ハッシュ・バケット・サイズは、以下のとおり与えられる。すなわち、
ハッシュ・バケット・サイズ＝２＾Ｌ  （３）
【００５３】
ここで、「Ｌ」は、ハッシュ・バケット内の各データ・レコードをアドレス指定することができるデータ・レコードの最下位ビット（ＬＳＢ）である。
【００５４】
ハッシュ空間「Ｈ」は、図6Dに示されるとおり、部分、すなわち、「Ｈ−Ｌ」であるＭＳＢと「Ｌ」であるＬＳＢに分割される。ＭＳＢは、各ハッシュ・バケット／粒子を一意に識別することができる。図6Eは、ＭＳＢの評価、及びグループ・サイズ、すなわち、ＬＳＢを示す。密度Ｄ＝０．５であるものと考えられたい。そのような事例において、図6Eを参照して、バケットが、図6Fに示されるとおり、半分満たされる。
【００５５】
図７は、密度変動の要素分解を示す。図6Fに示されるとおり、ＬＳＢサイズを「Ｌ１」であるものと考える。そのＬＳＢサイズが、図７に示されるとおり、ハッシュ空間を幅（Ｗ）＝２＾Ｌ１というサイズのバケットに分割する。実施例において、密度の変動のため、いくつかのハッシュ・バケットは、非常に密にポピュレートされ、いくつかのハッシュ・バケットは、まばらにポピュレートされる。そのような事例において、少数の粒子しか、大多数のデータを保持することができない。それら少数の粒子が、より小さいサイズである場合、データ・レコードの分配は、データ・レコードの不均衡なクラスタにつながる。このため、密度変動の要素分解（factorization）が、バケット・サイズを小さくするように実行される。そのようにして、バケットの数が増やされ、データが均等に配分される。そのような要素分解は、「変動の不確かさ（variational uncertainity）」を使用することによって実行される。実施例において、以下に与えられるとおり、密度分散及びデータ・レコードの数に比例する分布の真の分散を定義する中心極限定理が使用される。
真の分散≒密度分散＊データ・レコードの数  （５）
【００５６】
したがって、上記の式（５）から、変動の不確かさは、以下のとおり与えられる。すなわち、
変動の不確かさ≒真の分散  （６）
【００５７】
実施例において、式（６）において真の変動の代わりにＣＶが適用される。このため、以下の式が、変動の不確かさに関して適用される。すなわち、
変動の不確かさ＝ＣＶ＊データ・レコードの数  （７）
【００５８】
式（７）から、変動の不確かさが、対数によって与えられる。例えば、「Ｗｔ」が対数に与えられた重みであるものと考えられたい。したがって、最終的なＬＳＢカウントは、以下のとおりであり得る。すなわち、
Ｌ２＝Ｌ１−Ｗｔ＊Ｌｏｇ（変動の不確かさ）  （８）
【００５９】
実施例において、ハッシュ・バケット・サイズの低減は、ＬＳＢカウントをＬ１からＬ２に低減することからもたらされる。ハッシュ・バケット・サイズの低減は、粒子の数を増加させ、図7Bに示されるとおり、データ・レコードの分布のより良好な負荷分散をもたらす。
【００６０】
グループ化モジュール５２４が、同一の識別ビット、すなわち、同一のＭＳＢを有するデータ・レコードを、前述したとおり評価されたグループ・サイズに沿って１つ又は複数のデータ・ストア４１０のうちの少なくとも１つのデータ・ストアの中にグループ化する。全てのデータ・レコードのメタデータ情報、及びグループ化した後の１つ又は複数のデータ・ストア４１０が、マスタ・ノードになるネットワーク・ノード４００の中に記憶される。今や、ネットワーク・ノード４００は、１つ又は複数のデータ・ストア４１０のメタデータ情報に従って１つ又は複数のデータ・ストア４１０の中にデータ・レコードを記憶しながら、他の全てのノードによって参照され、したがって、同一のＭＳＢベースのデータ・レコードが一緒に配置される。データ・レコードをグループ化した結果は、出力モジュール（図示せず）を介して閲覧するために１つ又は複数のクライアント・デバイス４０８に、且つ／又はディスプレイ・ユニットに供給される。
【００６１】
実施例において、ユーザ又はデバイスが、１つ又は複数のデータ・ストア４１０の中に記憶されるべき入力データ・レコードを生成したものと考える。受信モジュール５２０が、ユーザからその入力データ・レコードを受信する。次に、評価モジュール５２２が、その入力データ・レコードを適切な負荷分散で記憶するためにランダム化ハッシュ変換を適用する。サイズ識別モジュール５２６が、入力データ・レコードのサイズを識別する。実施例において、１つ又は複数のデータ・ストア４１０の中にデータ・レコードを記憶するために、ノードにマッピングされる最終的なハッシュ値をもたらす一貫性のあるハッシングが実行される。例えば、入力キーが固定長であるものと考えられたい。そのような事例において、入力キーに対応するデータ・レコードが、一貫性のあるハッシングを使用して１つ又は複数のデータ・ストア４１０の中に記憶される。次に、入力キーが可変長サイズであるものと考えられたい。次に、順序を保つハッシュが、１つ又は複数のデータ・ストア４１０に入れる一貫性のあるハッシングのために使用される。入力データ・レコードのサイズの評価に基づいて、評価モジュール５２２が、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢを評価する。評価の後、マッピング・モジュール５２８が、入力データ・レコードのレコード・キーの識別ビット、すなわち、ＭＳＢを、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングする。実施例において、クライアント・デバイス４０８が、現在、マスタ・ノードであるネットワーク・ノード４００と通信して、マッピングに基づいて宛先データ・ストアのアドレスを取り出す。次に、クライアント・デバイス４０８が、宛先データ・ストアに直接に接続され、記憶モジュール５３０は、図３にも示されるとおり、宛先データ・ストアの中に入力データ・レコードを記憶するように構成される。そのようにして、データ・アクセスの次のサイクルにおいて、新たな宛先データ・ストアが参照される。実施例において、１つ又は複数のデータ・ストア４１０の中に入力データ・レコードを記憶することの結果が、出力モジュールによって１つ又は複数のクライアント・デバイス４０８及び／又はディスプレイ・ユニットに供給される。
【００６２】
図８及び図９に示されるとおり、この方法は、シナリオに依存して、１つ又は複数のデータ・ストア４１０の中にデータ・レコードをグループ化し、且つ／又は入力データ・レコードを記憶するための１つ又は複数のブロックを備える。この方法は、コンピュータ実行可能命令の一般的な脈絡において説明され得る。一般に、コンピュータ実行可能命令は、特定の機能を実行する、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造、プロシージャ、モジュール、及び関数を含み得る。
【００６３】
この方法が説明される順序は、限定として解釈されることは意図しておらず、説明される方法ブロックのうちのいくつでも、この方法を実施するのに任意の順序で組み合わされることが可能である。更に、個々のブロックが、本明細書で説明される主題の範囲を逸脱することなく、それらの方法から削除されることが可能である。更に、この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、又は以上の組合せにおいて実施され得る。
【００６４】
図８は、本開示のいくつかの実施例による、１つ又は複数のデータ・ストア４１０の中にデータ・レコードを、１つ又は複数のデータ・ストア４１０におけるデータ・アクセスを最適化するためにグループ化するための方法８００を例示する流れ図を示す。
【００６５】
ブロック８０２で、１つ又は複数のデータ・ストア４１０の各データ・レコードが、１つ又は複数のクライアント・デバイス４０８から受信された入力キーに基づいて取り出される。
【００６６】
ブロック８０４で、各データ・レコードの識別ビットが、１つ又は複数のデータ・ストア４１０のデータ・ストアの中のデータ・レコードの事前定義された密度、及びそれらのデータ・レコードの事前定義されたグループ・サイズを使用して評価される。グループ・サイズは、ユーザによって要求される、グループ化されるべきデータ・レコードの数である。実施例において、データ・ストアの中のデータ・レコードの事前定義された密度は、データ・ストアの中のデータ・レコードの数、及びデータ・ストアの中のデータ・レコードの収束に基づいて計算される。実施例において、各データ・レコードの識別ビットのメタデータ情報は、ネットワーク・ノードの中にルックアップ・テーブルの形態で記憶される。
【００６７】
実施例において、方法８００は、１つ又は複数のクライアント・デバイス４０８から受信された入力データ・レコードのサイズを識別することを実行することによって、１つ又は複数のデータ・ストア４１０のデータ・ストアの中に入力データ・レコードを記憶することを更に備える。次に、入力データ・レコードの識別ビットが、入力データ・レコードのサイズを使用して評価される。入力データ・レコードの評価された識別ビットは、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングされる。そのマッピングに基づいて、入力データ・レコードは、１つ又は複数のデータ・ストア４１０の中に記憶され、その１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化する。
【００６８】
図９は、本開示のいくつかの実施例による、１つ又は複数のデータ・ストア４１０の中に入力データ・レコードを、１つ又は複数のデータ・ストア４１０におけるデータ・アクセスを最適化するために記憶するための方法９００を例示する流れ図を示す。
【００６９】
ブロック９０２で、入力データ・レコードのサイズが識別される。実施例において、入力データ・レコードは、１つ又は複数のクライアント・デバイス４０８から受信される。
【００７０】
ブロック９０４で、入力データ・レコードの識別ビットが、入力データ・レコードのサイズを使用して評価される。
【００７１】
ブロック９０６で、入力データ・レコードの評価された識別ビットが、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングされる。
【００７２】
ブロック９０８で、識別ビットが、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングされるか否かの条件が調べられる。識別ビットが、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングされる場合、プロセスは、「はい」経由でブロック９１０に進む。ブロック９１０で、入力データ・レコードが、１つ又は複数のデータ・ストア４１０の中に記憶され、その１つ又は複数のデータ・ストアにおけるデータ・アクセスを最適化する。識別ビットが、１つ又は複数のデータ・ストア４１０の１つ又は複数のメタデータ情報にマッピングされない場合、プロセスは、「いいえ」経由でブロック９１２に進み、プロセスは、終了される。
【００７３】
（コンピュータ・システム）
図１０は、本開示と合致する実施例を実施するための例示的なコンピュータ・システム１０００のブロック図を示す。実施例において、コンピュータ・システム１０００は、ネットワーク・ノード４００を実施するのに使用される。コンピュータ・システム１０００は、同一のＭＳＢに従ってデータ・レコードをグループ化し、ＭＳＢのマッピングに従って入力データ・レコードを記憶する。コンピュータ・システム１０００は、中央処理装置（「ＣＰＵ」又は「プロセッサ」）１００２を備え得る。プロセッサ１００２は、ユーザ又はデバイスによって生成された入力キー及び入力データ・レコードを実行するためのプログラム構成要素を実行するための少なくとも１つのデータ・プロセッサを備え得る。プロセッサ１００２は、統合されたシステム（バス）コントローラ、メモリ管理制御ユニット、浮動小数点演算装置、グラフィックス処理ユニット、デジタル信号処理ユニットなどの専用の処理ユニットを含み得る。
【００７４】
プロセッサ１００２は、Ｉ／Ｏインターフェース１００１を介して１つ又は複数の入出力（Ｉ／Ｏ）デバイス（図示せず）と通信状態にあるように配置され得る。Ｉ／Ｏインターフェース１００１は、限定なしに、オーディオ、アナログ、デジタル、モノラル、ＲＣＡ、ステレオ、ＩＥＥＥ−１３９４、シリアル・バス、ユニバーサル・シリアル・バス（ＵＳＢ：ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）、赤外線、ＰＳ／２、ＢＮＣ、同軸、コンポーネント、合成、デジタル・ビジュアル・インターフェース（ＤＶＩ：ｄｉｇｉｔａｌ  ｖｉｓｕａｌ  ｉｎｔｅｒｆａｃｅ）、高精細度マルチメディア・インターフェース（ＨＤＭＩ（登録商標）：ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ）、ＲＦアンテナ、Ｓ−Ｖｉｄｅｏ、ＶＧＡ、ＩＥＥＥ８０２．ｎ／ｂ／ｇ／ｎ／ｘ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラ（例えば、符号分割多元接続（ＣＤＭＡ：ｃｏｄｅ−ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ）、高速パケット・アクセス（ＨＳＰＡ＋）、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ（登録商標）：ｇｌｏｂａｌ  ｓｙｓｔｅｍ  ｆｏｒ  ｍｏｂｉｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）、ロングターム・エボリューション（ＬＴＥ：ｌｏｎｇ−ｔｅｒｍ  ｅｖｏｌｕｔｉｏｎ）、ＷｉＭＡＸなど）、その他などの通信プロトコル／方法を使用することが可能である。
【００７５】
Ｉ／Ｏインターフェース１００１を使用して、コンピュータ・システム１０００が、１つ又は複数のＩ／Ｏデバイスと通信することが可能である。例えば、入力デバイスは、アンテナ、キーボード、マウス、ジョイスティック、（赤外線）リモコン、カメラ、カード・リーダ、ファックス装置、ドングル、バイオメトリック・リーダ、マイクロフォン、タッチスクリーン、タッチパッド、トラックボール、スタイラス、スキャナ、ストレージ・デバイス、トランシーバ、ビデオ・デバイス／ソースなどであり得る。出力デバイスは、プリンタ、ファックス装置、ビデオ・ディスプレイ（例えば、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）、プラズマ、プラズマ・ディスプレイ・パネル（ＰＤＰ）、有機発光ダイオード・ディスプレイ（ＯＬＥＤ）など）、オーディオ・スピーカ、その他であり得る。
【００７６】
いくつかの実施例において、コンピュータ・システム１０００が、通信ネットワーク１００９を介して１つ又は複数のクライアント・デバイス１０１１ａ、．．．１０１１ｎ、及び１つ又は複数のデータ・ストア１０１０ａ、．．．１０１０ｎに接続される。プロセッサ１００２が、ネットワーク・インターフェース１００３を介して通信ネットワーク１００９と通信状態にあるように配置され得る。ネットワーク・インターフェース１００３は、通信ネットワーク１００９と通信することが可能である。ネットワーク・インターフェース１００３は、限定なしに、直接接続、イーサネット（登録商標）（例えば、より対線１０／１００／１０００  Ｂａｓｅ  Ｔ）、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、トークン・リング、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ／ｘなどを含む接続プロトコルを使用することが可能である。通信ネットワーク１００９は、限定なしに、直接相互接続、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ワイド・エリア・ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ワイヤレス・ネットワーク（例えば、ワイヤレス・アプリケーション・プロトコルを使用する）、インターネット、その他を含み得る。ネットワーク・インターフェース１００３及び通信ネットワーク１００９を使用して、コンピュータ・システム１０００は、１つ又は複数のソース１０１１ａ、．．．１０１１ｎ、１つ又は複数のセンサ１０１０ａ、．．．１０１０ｎ、及び１つ又は複数の光インジケータと通信することが可能である。ネットワーク・インターフェース１００３は、直接接続、イーサネット（登録商標）（例えば、より対線１０／１００／１０００  Ｂａｓｅ  Ｔ）、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、トークン・リング、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ／ｘなどを含むが、以上には限定されない接続プロトコルを使用することが可能である。
【００７７】
通信ネットワーク１００９は、直接相互接続、ｅコマース・ネットワーク、ピア・ツー・ピア（Ｐ２Ｐ：ｐｅｅｒ  ｔｏ  ｐｅｅｒ）ネットワーク、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、ワイヤレス・ネットワーク（例えば、ワイヤレス・アプリケーション・プロトコルを使用する）、インターネット、Ｗｉ−Ｆｉなどを含むが、以上には限定されない。第１のネットワーク及び第２のネットワークは、様々なプロトコル、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ワイヤレス・アプリケーション・プロトコル（ＷＡＰ）などを使用して、互いに通信する異なるタイプのネットワークの関連付けを表す、専用ネットワークであることも、共有ネットワークであることも可能である。更に、第１のネットワーク及び第２のネットワークは、ルータ、ブリッジ、サーバ、コンピューティング・デバイス、ストレージ・デバイスなどを含む、様々なネットワーク・デバイスを含み得る。
【００７８】
いくつかの実施例において、プロセッサ１００２が、ストレージ・インターフェース１００４を介してメモリ１００５（例えば、図１０には示されないＲＡＭ、ＲＯＭなど）と通信状態にあるように配置され得る。ストレージ・インターフェース１００４は、限定なしに、Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、ＩＥＥＥ−１３９４、ユニバーサル・シリアル・バス（ＵＳＢ）、ファイバ・チャネル、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）などの接続プロトコルを使用するメモリ・ドライブ、リムーバブル・ディスク・ドライブなどを含むメモリ１００５に接続され得る。メモリ・ドライブは、ドラム、磁気ディスク・ドライブ、光磁気ドライブ、光ドライブ、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｃｓ（ＲＡＩＤ）、ソリッドステート・メモリ・デバイス、ソリッドステート・ドライブなどを更に含み得る。
【００７９】
メモリ１００５は、限定なしに、ユーザ・インターフェース１００６、オペレーティング・システム１００７、ウェブ・サーバ１００８などを含むプログラム構成要素又はデータベース構成要素の集まりを記憶することが可能である。いくつかの実施例において、コンピュータ・システム１０００が、本明細書で開示される、データ、変数、レコードなどのユーザ／アプリケーション・データ１００６を記憶することが可能である。そのようなデータベースは、Ｏｒａｃｌｅ又はＳｙｂａｓｅなどのフォールトトレラントで、リレーショナル型の、スケーラブルな、セキュリティ保護されたデータベースとして実施され得る。
【００８０】
オペレーティング・システム１００７が、コンピュータ・システム１０００のリソース管理及び動作を円滑にすることが可能である。オペレーティング・システムの例には、限定なしに、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ  ＯＳ  Ｘ、Ｕｎｉｘ（登録商標）、Ｕｎｉｘ（登録商標）様のシステム配布（例えば、Ｂｅｒｋｅｌｅｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ（ＢＳＤ）、ＦｒｅｅＢＳＤ、ＮｅｔＢＳＤ、ＯｐｅｎＢＳＤ、その他）、Ｌｉｎｕｘ（登録商標）配布（例えば、Ｒｅｄ  Ｈａｔ、Ｕｂｕｎｔｕ、Ｋｕｂｕｎｔｕ、その他）、ＩＢＭ  ＯＳ／２、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）（ＸＰ、Ｖｉｓｔａ／７／８、その他）、Ａｐｐｌｅ  ｉＯＳ、Ｇｏｏｇｌｅ  Ａｎｄｒｏｉｄ、Ｂｌａｃｋｂｅｒｒｙ  ＯＳなどが含まれる。
【００８１】
いくつかの実施例において、コンピュータ・システム１０００は、ウェブ・ブラウザ１００７によって記憶されたプログラム構成要素を実施することが可能である。ウェブ・ブラウザ１００８は、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ、Ａｐｐｌｅ  Ｓａｆａｒｉなどのハイパーテキスト閲覧アプリケーションであり得る。セキュリティ保護されたウェブ・ブラウジングが、Ｓｅｃｕｒｅ  Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ（ＨＴＴＰＳ）、Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（ＳＳＬ）、Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ（ＴＬＳ）などを使用して提供され得る。ウェブ・ブラウザ１００８は、ＡＪＡＸ、ＤＨＴＭＬ、Ａｄｏｂｅ  Ｆｌａｓｈ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｊａｖａ（登録商標）、アプリケーション・プログラミング・インターフェース（ＡＰＩ）などのファシリティを利用することが可能である。いくつかの実施例において、コンピュータ・システム１０００は、メール・サーバに記憶されたプログラム構成要素を実施することが可能である。メール・サーバは、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅなどのインターネット・メール・サーバであり得る。メール・サーバは、ＡＳＰ、Ａｃｔｉｖｅ  Ｘ、ＡＮＳＩ  Ｃ＋＋／Ｃ＃、Ｍｉｃｒｏｓｏｆｔ  ．ＮＥＴ、ＣＧＩスクリプト、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、ＰＥＲＬ、ＰＨＰ、Ｐｙｔｈｏｎ、ＷｅｂＯｂｊｅｃｔなどのファシリティを利用することが可能である。メール・サーバは、インターネット・メッセージ・アクセス・プロトコル（ＩＭＡＰ：Ｉｎｔｅｒｎｅｔ  Ｍｅｓｓａｇｅ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）、Ｍｅｓｓａｇｉｎｇ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ＭＡＰＩ）、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅ、Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ（ＰＯＰ）簡易メール転送プロトコル（ＳＭＴＰ：Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルを利用することが可能である。いくつかの実施例において、コンピュータ・システム１０００は、メール・クライアントによって記憶されたプログラム構成要素を実施することが可能である。メール・クライアントは、Ａｐｐｌｅ  Ｍａｉｌ、Ｍｉｃｒｏｓｏｆｔ  Ｅｎｔｏｕｒａｇｅ、Ｍｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋ、Ｍｏｚｉｌｌａ  Ｔｈｕｎｄｅｒｂｉｒｄなどのメール閲覧アプリケーションであり得る。
【００８２】
更に、１つ又は複数のコンピュータ可読記憶媒体が、本開示と合致する実施例を実施する際に利用され得る。コンピュータ可読記憶媒体とは、プロセッサによって読取り可能な情報又はデータが記憶され得る任意のタイプの物理メモリを指す。このため、コンピュータ可読記憶媒体は、プロセッサに、本明細書で説明される実施例と合致するステップ又はステージを実行させるための命令を含め、１つ又は複数のプロセッサによって実行されるように命令を記憶することが可能である。「コンピュータ可読媒体」という用語は、有形のアイテムを含み、搬送波及び過渡信号を除外するように、すなわち、非一時的であるものと理解されなければならない。例には、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、揮発性メモリ、不揮発性メモリ、ハードドライブ、ＣＤ  ＲＯＭ、ＤＶＤ、フラッシュ・ドライブ、ディスク、及び他の任意の知られている物理記憶媒体が含まれる。
【００８３】
本開示の実施例の利点が、本明細書で例示される。
【００８４】
本開示の実施例は、データ・アクセスを行うことに関する時間消費及びネットワーク待ち時間を低減する。
【００８５】
本開示の実施例は、ビッグ・データ解析のアプリケーションを提供する。
【００８６】
本開示の実施例は、ランダム化技法を提供することによって不均衡な負荷の問題を解決する。
【００８７】
本開示の実施例は、順次データ・アクセスをスピードアップするとともに、１つ又は複数のデータ・ストアを相手に接続をもたらすのにサードパーティ構成要素を解消する。
【００８８】
また、同一のＭＳＢを有するデータ・レコードが一緒にグループ化されるので、１つ又は複数のデータ・ストアに対するホップの時間及び数が低減されもする。
【００８９】
説明される動作は、標準のプログラミング技法及び／又はエンジニアリング技法を使用して、ソフトウェア、ファームウェア、ハードウェア、又は以上の任意の組合せをもたらす方法、システム、又は製造品として実施され得る。説明される動作は、「非一時的なコンピュータ可読媒体」の中に保持されるコードとして実施されることが可能であり、プロセッサが、そのコンピュータ可読媒体からそのコードを読み取り、実行することが可能である。プロセッサは、クエリを処理し、実行することができるマイクロプロセッサとプロセッサの少なくともいずれかである。非一時的なコンピュータ可読媒体は、磁気記憶媒体（例えば、ハードディスク・ドライブ、フロッピー（登録商標）・ディスク、テープなど）、光ストレージ（ＣＤ−ＲＯＭ、ＤＶＤ、光ディスクなど）、揮発性及び不揮発性メモリ・デバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ・メモリ、ファームウェア、プログラマブル・ロジックなど）などの媒体を備え得る。更に、非一時的なコンピュータ可読媒体は、一時的なコンピュータ可読媒体を除いて、全てのコンピュータ可読媒体を備える。説明される動作を実施するコードは、ハードウェア・ロジック（例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、特定用途向け集積回路（ＡＳＩＣ）など）として更に実施され得る。
【００９０】
更に、説明される動作を実施するコードは、「伝送信号」として実施されることが可能であり、伝送信号は、空間を介して、又は光ファイバ、銅線などの伝送媒体を介して伝播することが可能である。そのコード又はロジックが符号化される伝送信号は、ワイヤレス信号、衛星伝送、電波、赤外線信号、Ｂｌｕｅｔｏｏｔｈ（登録商標）などを更に備え得る。そのコード又はロジックが符号化される伝送信号は、送信局によって送信されること、及び受信局によって受信されることが可能であり、伝送信号内に符号化されたコード又はロジックは、受信局又は受信デバイス、及び送信局及び送信デバイスにおいて復号されて、ハードウェア又は非一時的なコンピュータ可読媒体の中に記憶されることが可能である。「製造品」は、コードが実装され得る非一時的なコンピュータ可読媒体、ハードウェア・ロジック、及び／又は伝送信号を備える。動作の説明される実施例を実施するコードが符号化されるデバイスは、コンピュータ可読媒体又はハードウェア・ロジックを備え得る。無論、本発明の範囲を逸脱することなく、この構成に多くの変形が行われることが可能であること、及び製造品は、当技術分野において知られる適切な情報担持媒体を備え得ることが、当業者には認識されよう。
【００９１】
「或る実施例」、「実施例」、「いくつかの実施例」、「その実施例」、「それらの実施例」、「１つ又は複数の実施例」、「一部の実施例」、及び「一実施例」という用語は、特に明記しない限り、「本発明の１つ又は複数の（ただし、全てではない）実施例」を意味する。
【００９２】
「含む」、「備える」、「有する」、及び以上の変種は、特に明記しない限り、「〜を含むが、〜には限定されない」を意味する。
【００９３】
項目の列挙されるリストは、特に明記しない限り、それらの項目のうちの任意の項目、又は全てが互いに排他的ではないことを暗示するわけではない。
【００９４】
「或る」及び「その」という用語は、特に明記しない限り、「１つ又は複数の」を意味する。互いに通信状態に或るいくつかの構成要素を有する実施例の説明は、全てのそのような構成要素が要求されることを暗示するものではない。それどころか、本発明の多種多様な可能な実施例を例示する様々なオプションの構成要素が説明される。
【００９５】
単一のデバイス又は物品が本明細書で説明される場合、単一のデバイス／物品の代わりに複数のデバイス／物品（それらのデバイス／物品が協働するか否かにかかわらず）が使用されてもよいことが、直ちに明白となろう。同様に、複数のデバイス又は物品が本明細書で説明される場合（それらのデバイス／物品が協働するか否かにかかわらず）、それらの複数のデバイス又は物品の代わりに単一のデバイス／物品が使用されてもよいこと、或いは、示される数のデバイス又はプログラムの代わりに、異なる数のデバイス／物品が使用されもよいことが、直ちに明白となろう。デバイスの機能及び／又は特徴は、そのような機能／特徴を有するものとして明示的に説明されない他の１つ又は複数のデバイスによって代替として実施されてもよい。このため、本発明の他の実施例は、そのデバイス自体を含まなくてもよい。
【００９６】
図８及び図９の例示される動作は、或る順序で生じるいくつかのイベントを示す。代替の実施例において、いくつかの動作は、異なる順序で実行されること、変形されること、又は除去されることが可能である。更に、前述したロジックにステップが追加されて、それでも、説明される実施例に準拠することが可能である。更に、本明細書で使用される動作は、順次に行われることが可能であり、又はいくつかの動作が、並行に行われることが可能である。更に、動作は、単一の処理ユニットによって実行されても、分散された処理ユニットによって実行されてもよい。
【００９７】
最後に、本明細書において使用される言葉は、読みやすさ、及び教示の目的で主に選択されており、本発明の主題を画定するように、又は境界付けるようには選択されていない可能性がある。したがって、本発明の範囲は、この詳細な説明によってではなく、本明細書に基づく応用から生じる任意のクレームによって限定されることが意図される。したがって、本発明の実施例の開示は、添付の特許請求の範囲に記載される本発明の範囲を例示することを意図しているが、限定することは意図していない。
【００９８】
様々な態様及び実施例が本明細書で開示されているが、他の態様及び実施例が、当業者には明白となろう。本明細書で開示される様々な態様及び実施例は、例示を目的としており、限定することは意図しておらず、真の範囲及び趣旨は、添付の特許請求の範囲によって示される。
【符号の説明】
【００９９】
４００  ネットワーク・ノード
４０２  Ｉ／Ｏインターフェース
４０４  プロセッサ
４０６  メモリ
４０８ａ、．．．４０８ｎ  クライアント・デバイス
４１０ａ、．．．４１０ｎ  データ・ストア
４１２、４１４、４１６、４１８  ノード
２０４ａ、．．．２０４ｎ  センサ
５００  データ
５０２  入力キー・データ
５０４  入力データ・レコード
５０６  データ・ストア・メタデータ情報
５０８  データ・レコード識別ビット情報
５１０  事前定義された密度情報
５１２  事前定義されたグループ・サイズ情報
５１４  ルックアップ・テーブル
５１６  他のデータ
５１８  モジュール
５２０  受信モジュール
５２２  評価モジュール
５２４  グループ化モジュール
５２６  サイズ識別モジュール
５２８  マッピング・モジュール
５３０  記憶モジュール
５３２  他のモジュール
１０００  コンピュータ・システム
１００１  Ｉ／Ｏインターフェース
１００２  プロセッサ
１００３  ネットワーク・インターフェース
１００４  ストレージ・インターフェース
１００５  メモリ
１００６  ユーザ・インターフェース
１００７  オペレーティング・システム
１００８  ウェブ・サーバ
１００９  通信ネットワーク
１０１０ａ、．．．１０１０ｎ  クライアント・デバイス
１０１１ａ、．．．１０１１ｎ  データ・ストア
１０１２  入力デバイス
１０１３  出力デバイス
【図１】
2017004507.tif 000004
【図２】
2017004507.tif 000005
【図３】
2017004507.tif 000006
【図４Ａ】
2017004507.tif 000007
【図４Ｂ】
2017004507.tif 000008
【図５】
2017004507.tif 000009
【図６Ａ】
2017004507.tif 000010
【図６Ｂ】
2017004507.tif 000011
【図６Ｃ】
2017004507.tif 000012
【図６Ｄ】
2017004507.tif 000013
【図６Ｅ】
2017004507.tif 000014
【図６Ｆ】
2017004507.tif 000015
【図７Ａ】
2017004507.tif 000016
【図７Ｂ】
2017004507.tif 000017
【図８】
2017004507.tif 000018
【図９】
2017004507.tif 000019
【図１０】
2017004507.tif 000020