IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シーエフピーエイチ, エル.エル.シー.の特許一覧

特開2024-1260索引データ構造及びグラフィカルユーザインタフェース
<>
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図1
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図2
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図3
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図3A
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図3B
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図3C
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図3D
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図4
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図5
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図5A
  • 特開-索引データ構造及びグラフィカルユーザインタフェース 図5B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024001260
(43)【公開日】2024-01-09
(54)【発明の名称】索引データ構造及びグラフィカルユーザインタフェース
(51)【国際特許分類】
   G06F 16/22 20190101AFI20231226BHJP
   G06F 16/2455 20190101ALI20231226BHJP
【FI】
G06F16/22
G06F16/2455
【審査請求】有
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2023183465
(22)【出願日】2023-10-25
(62)【分割の表示】P 2021500226の分割
【原出願日】2019-07-02
(31)【優先権主張番号】16/028,641
(32)【優先日】2018-07-06
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】506361856
【氏名又は名称】シーエフピーエイチ, エル.エル.シー.
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100132883
【弁理士】
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【弁理士】
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100147924
【弁理士】
【氏名又は名称】美恵 英樹
(72)【発明者】
【氏名】コーエン、メナシェ
(57)【要約】      (修正有)
【課題】コンピュータがより効率的な方法でビッグデータの集合を問い合わせて、かつ、表示する装置を提供する。
【解決手段】システム100において、サーバコンピュータ103では、検索の線形性を低下させるために、索引103の複数のレベルのデータ構造の階層が特定の日と関連付けられる。問合せの結果を受けるクライアントコンピュータ112、116、118は、連結リストに結果の記録と一致する記録の形式で問合せの結果を保存する。クライアントコンピュータは、全ての結果が受信されるまで、グラフィカルユーザインタフェースを問合せの結果で周期的に更新することも行う。
【選択図】図1
【特許請求の範囲】
【請求項1】
メモリと、
相互に連結されたデータ構造の階層と、ハッシュテーブルであって、当該ハッシュテーブルにおけるエントリが、日と前記相互に連結されたデータ構造の階層における第1のデータ構造との間の関連を含むような、ハッシュテーブルとを含む、索引を前記メモリに生成し、
リモートデバイスから、前記日を含む複数の検索パラメータを有する、検索要求を受け、
前記日を用いて、前記相互に連結されたデータ構造の階層における前記第1のデータ構造のメモリアドレスがあるかについて、前記ハッシュテーブルを検索し、
前記検索パラメータに基づいて前記相互に連結されたデータ構造をトラバースするための計画を判別し、
前記トラバースの計画に従った前記第1のデータ構造における前記検索要求によって求められているデータの検索を開始し、
前記リモートデバイスに前記検索の結果を返す、
少なくとも1つのプロセッサと、
を備える、
装置。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願)
本出願は、2018年7月6日に出願された米国特許出願シリアル番号第16/028641号の利益を主張し、これにより当該出願の内容が全体としてここで参照によって取り込まれる。
【背景技術】
【0002】
(背景)
現在のコンピュータ計算デバイス及びアプリケーションは、重大な決定、予測分析、ビジネスインテリジェンス等のために使われ得る圧倒的な量のデータ(「ビッグデータ」)を生成する。このようなデバイス及びアプリケーションは、センサ、携帯電話、ラップトップ及びソーシャルネットワーキングアプリケーションを含んでいてもよいが、これらに限られるものではない。幸運にも、データストレージのコストは低下してきた。
【図面の簡単な説明】
【0003】
図1図1は、この開示の複数の観点に従った例示システムである。
図2図2は、この開示の複数の観点に従った例示フロー図である。
図3図3から3Dは、この開示の複数の観点に従った実例を描いたものである。
図3A図3から3Dは、この開示の複数の観点に従った実例を描いたものである。
図3B図3から3Dは、この開示の複数の観点に従った実例を描いたものである。
図3C図3から3Dは、この開示の複数の観点に従った実例を描いたものである。
図3D図3から3Dは、この開示の複数の観点に従った実例を描いたものである。
図4図4は、本開示の複数の観点に従った別の例示フロー図である。
図5図5から5Bは、本開示の複数の観点に従った更なる例示フロー図である。
図5A図5から5Bは、本開示の複数の観点に従った更なる例示フロー図である。
図5B図5から5Bは、本開示の複数の観点に従った更なる例示フロー図である。
【発明を実施するための形態】
【0004】
ビッグデータは多数の利益を提供するが、効率的な方法でこのようなデータを処理することは、終わりのない挑戦である。伝統的なデータ処理は、ビッグデータの集合の複雑さと量に対処することができない。その結果、ビッグデータを扱う多数の異なる解決法が進化し、多数のデータベースの索引が設計されてきた。場合によっては、特定の問合せがごく一般的である。例えば、ユーザは、特定の日に起こるトランザクションを度々検索する。このような問合せの高度な知識がある程度あるにもかかわらず、それに応じてデータ索引は整理されていない。クライアント側では、結果自体も大きく、かつ、複雑であるため、大きなデータ問合せの結果を受け取ることと表示することも挑戦的であり得る。これは、ユーザが彼らのグラフィカルユーザインタフェース(「GUI」)から遅い応答を経験することにつながるであろう。
【0005】
上述したことを考慮して、ビッグデータの集合の問合せ及び表示のための装置、非一時的なコンピュータ読み取り可能な媒体及び方法が本明細書において開示される。本明細書において開示される技術は、コンピュータがより効率的な方法でビッグデータの集合を問い合わせて、かつ、表示することを可能にすることにより、コンピュータの性能を向上させる。次に、ユーザはGUI上の遅延を少ししか経験せずに、データベース上に載せられた負荷は軽減され得る。
【0006】
一例において、装置は、メモリと以下の動作を実行する少なくとも1つのプロセッサを備え得る。少なくとも1つのプロセッサは、相互に連結されたデータ構造の階層と、ハッシュテーブルであって、ハッシュテーブルにおけるエントリが、日と相互に連結されたデータ構造の階層における第1のデータ構造との間の関連を含むような、ハッシュテーブルとを含む、索引をメモリに生成し、リモートデバイスから、日を含む複数の検索パラメータを有する、検索要求を受け、日を用いて、相互に連結されたデータ構造の階層における第1のデータ構造のメモリアドレスがあるかについて、ハッシュテーブルを検索し、検索パラメータに基づいて相互に連結されたデータ構造をトラバースするための計画を判別し、トラバースの計画に従った第1のデータ構造における検索要求によって求められているデータの検索を開始し、リモートデバイスに検索の結果を返す。
【0007】
更なる例において、方法が開示される。方法は、少なくとも1つのプロセッサによって、相互に連結されたデータ構造の階層と、ハッシュテーブルであって、ハッシュテーブルにおけるエントリが、日と相互に連結されたデータ構造の階層における第1のデータ構造との間の関連を含むような、ハッシュテーブルとを含む、索引をメモリに生成することと、少なくとも1つのプロセッサによって、リモートデバイスから、日を含む複数の検索パラメータを有する、検索要求を受けることと、少なくとも1つのプロセッサによって、日を用いて、相互に連結されたデータ構造の階層における第1のデータ構造のメモリアドレスがあるかについて、ハッシュテーブルを検索することと、少なくとも1つのプロセッサによって、検索パラメータに基づいて相互に連結されたデータ構造をトラバースするための計画を判別することと、少なくとも1つのプロセッサによって、トラバースの計画に従った第1のデータ構造における検索要求によって求められているデータの検索を開始することと、少なくとも1つのプロセッサによって、リモートデバイスに検索の結果を返すことと、を含み得る。
【0008】
更に別の例において、装置は、メモリと、表示デバイスと、以下の動作を実行する少なくとも1つのプロセッサと、を備え得る。少なくとも1つのプロセッサは、表示デバイスにグラフィカルユーザインタフェースをレンダリングし、リモートサーバに検索要求を伝送し、検索要求に応答して、それぞれの受信される記録の形式が、それぞれの記録に割り当てられたそれぞれのメモリ空間の形式と一致する複数の記録を受信し、それぞれの受信した記録を個別の割り当てられたメモリ空間に複製し、複数の記録が受信された順序を反映するような順序を示す、メモリ空間の連結リストに、それぞれの割り当てられたメモリ空間を追加し、検索要求に対応する全てのデータの記録が受信されるまで、現在受信している記録をグラフィカルユーザインタフェースに周期的にレンダリングする。
【0009】
以下の例の説明及び付属する図を参照して考慮すると、本開示の複数の観点、特徴及び利点が理解される。以下の説明は、応用を限定するものではなく、この開示の範囲は添付の請求の範囲及びそれらと均等のものによって定義される。
【0010】
(詳細な説明)
図1は本開示の動作を実行するための例示的なシステム100の概略図を示す。コンピュータ装置101、112、116及び118は、それぞれ命令を処理し、かつ、他のコンピュータにデータを伝送し、他のコンピュータからデータの伝送を受けることができるデバイスを含んでいてもよい。図1の例において、コンピュータ装置101は、索引103として調整された大きなデータリポジトリを含むサーバコンピュータであってもよい。コンピュータ装置112、116及び118は、コンピュータ装置101からデータを問い合わせ、問合せの結果を表示するためのクライアントコンピュータであってもよい。図1に示したそれぞれの装置は、コンピュータに関連して通常用いられる全ての部品を含んでいてもよい。例えば、それぞれがキーボードとマウス、及び/又は、ペン入力、ジョイスティック、ボタン、タッチスクリーン等の様々な他の種類の入力デバイス、並びに、例えば、CRT、LCD、プラズマスクリーンモニタ、TV、プロジェクタ等を含み得るディスプレイ114を有し得る。
【0011】
図1に示したそれぞれのコンピュータ装置は、インテル(登録商標)コーポレーションから販売されているプロセッサなどの、少なくとも1つのプロセッサ102を備えていてもよく、それは、既知の任意のプロセッサの数であってもよい。別の例においては、プロセッサ102は、特定用途向け集積回路(「ASIC」)であり得る。各コンピュータは、プロセッサ102によって取得され、実行され得る命令を保持するメモリ104を備えていてもよい。上述したように、コンピュータ装置101のメモリ104は、索引103を保持してもよい。以下で更に詳細に説明されるように、索引103は、特定の日に生じるデータに対する問合せを最適化する特定の方法で整理されたデータベースであり得る。一例において、メモリ104は、ランダムアクセスメモリ(「RAM」)デバイスであり得る。更なる例において、メモリ104は、デュアル・インライン・メモリ・モジュール(「DIMM」)として整理された複数のメモリセグメントに分割され得る。また、メモリ104は、非一時的なコンピュータ読み取り可能な媒体などの他の種類のデバイスを含み得る。非一時的なコンピュータ読み取り可能な媒体は、多数の物理メディア(例えば、電子的、磁気的、光学的、電磁気的又は半導体の媒体)のうちの任意のものを含み得る。適切な非一時的なコンピュータ読み取り可能な媒体のより具体的な例は、フロッピーディスク又はハードドライブなどの移動可能な磁気的コンピュータディスク、読み取り専用メモリ(「ROM」)、消去可能なプログラム可能な読み取り専用メモリ、移動可能なコンパクトディスクまたはコンピュータ装置に直接に又は間接に結合され得る他のストレージデバイスを含むが、これらに限定されるものではない。メモリ104は、上記の1つ以上及び/又は他のデバイスの任意の組合せも含んでいてよい。各コンピュータ装置の全ての構成要素は同一のブロック内にあるように機能的に説明されているが、構成要素は同一の物理的なハウジング内に保持されていてもされていなくてもよいことが理解される。
【0012】
図1に示した複数のコンピュータは、ネットワークインタフェース108を用いたネットワークを介して互いに接続されていてもよい。ネットワークは、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、インターネット等であってもよい。ネットワークインタフェース108は、仮想プライベートネットワーク、ローカルイーサネットのネットワーク、1つ以上の会社に独自の通信プロトコルを利用するプライベートネットワーク、セルラー及びワイヤレスのネットワーク、HTTP、及びこれらの様々な組合せを含む様々なプロトコルを利用してもよい。本明細書においては少数のコンピュータしか描かれないが、ネットワークが追加的な相互に接続されたコンピュータを含んでいてもよいことが理解されるべきである。
【0013】
上述したように、メモリ104に存在する命令はプロセッサ102によって取得され、実行されてもよい。これらの命令はプロセッサ102によって直接に(機械語など)、又は間接に(スクリプトなど)実行されるべき命令の任意の集合を含んでいてもよい。この点について、「命令」、「スクリプト」又は「モジュール」という語は、本明細書において、交換可能に用いられ得る。コンピュータ実行可能命令は、オブジェクトコード又はソースコードのモジュールなどで、任意のコンピュータ言語又は形式で保存され得る。さらに、命令はハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組合せの形式で実装されてもよく、本明細書における例は単なる例示であることを理解されたい。
【0014】
本明細書の技術に従った1つの動作例が図2から3Dに示されている。具体的には、図2は、問合せに応答するための例示の方法200のフロー図を説明している。図3から3Dは、対応する動作例を示している。図3から3Dに示されている動作は、以下、図2のフロー図に関して説明される。
【0015】
図2を参照して、ブロック202に示されているように、少なくとも1つのプロセッサがメモリに相互に連結されたデータ構造の階層を生成し得る。相互に連結されたデータ構造の階層は、データベースの索引の一部であってもよく、二分木のデータ構造、連結リストのデータ構造、ベクトルのデータ構造等を含んでいてもよいが、それらに限定されるものではない。更に詳細に説明されるように、階層の所定のレベルにおけるデータ構造の各ノードは、次のレベルの第2のデータ構造における対応するノードへのポインタを含んでいてもよい。
【0016】
次にブロック204を参照して、少なくとも1つのプロセッサは、メモリにハッシュテーブルを生成し得る。ハッシュテーブルは索引の別の観点であり得る。一例において、ハッシュテーブルにおける各エントリは、日と相互に連結されたデータ構造の階層の第1のデータ構造との間の関連を有し得る。次に図3を参照して、説明のためのハッシュテーブル302が示されている。ハッシュテーブル302は、日304(即ち、2017年7月20日)とデータ構造308との関連とデータ構造310との日306(即ち、2016年2月2日)の関連を示す。図3の例において、データ構造308とデータ構造310は、二分探索木(「BST」)である。さらに、データ構造308とデータ構造310は、それぞれのデータ構造の階層において、それぞれ第1のデータ構造であり得る。説明のためのハッシュテーブル302は、日を有する問合せがその日に関連するデータに効率的にマッピングされることを可能にする。データ構造308/310は、それぞれ問合せによって求められているデータにつながる階層の第1のレベルにあり、その求められているデータは、第1のレベルにおいて見つかり得る。以下で更に詳細に説明されるように、二分木を第1の層として用いることの利点は、二分木がデータにおける構造的な関係を反映し得ることである。構造的な関係は、コンピュータが要求されたデータを見つけるためにかかる時間を削減し得る。
【0017】
図2に戻って参照して、少なくとも1つのプロセッサは、ブロック206に示されているように、リモートデバイスから検索要求を受け得る。検索要求は、日と複数の他の検索パラメータを含み得る。ブロック208において、少なくとも1つのプロセッサは、日を用いて、データ構造の階層の第1のデータ構造の関連付けられたメモリアドレスがあるかについて、ハッシュテーブル(例えば、ハッシュテーブル302)を検索し得る。ブロック210において、コンピュータの少なくとも1つのプロセッサは、検索パラメータに基づいて、相互に連結されたデータ構造の階層をトラバースするための計画を判別し得る。一例において、トラバースの計画は、検索パラメータに基づいて、求められているデータが見つかるであろう階層における深さを判別することを含み得る。少なくとも1つのプロセッサは、ブロック212に示されているように、階層の第1のデータ構造において求められているデータの検索を開始し得る。
【0018】
次に図3Aを参照して、データ構造308の詳細な説明が示される。例として、データは、金融商品のトランザクションを含み得て、問合せによって求められているデータは、全て2017年7月20日に銘柄記号「TTT」に対して実行された全ての取引のトランザクションである。図3に示されているように、2017年7月20日という日は、データ構造308にマッピングされている。図3AのBSTは7つのノード312、314、316、318、320、322及び324しか含まないが、ビッグデータの環境におけるBSTは遙かに多数のノードを有しており、図3Aには説明を容易にするため、少数のノードが示されていることが理解される。この例における各メモリノードは、銘柄記号を保持する。ルートノード312は、銘柄記号「MMM」を含み、ルートノード312の左から分岐するノードはアルファベット順で「MMM」より小さい一方、右側から分岐するノードはアルファベット順で「MMM」より大きい。少なくとも1つのプロセッサは、「TTT」記号を検索する途中で、比較をしながらBSTをルートから葉までトラバースし得る。平均して、プロセッサが木の約半分をスキップすることを、それぞれの比較が可能にするように、BSTは整理されている。このようにして、記号を調べるためにかかる時間は、木に保持されている項目の数の対数に比例し得て、これは、線形探索よりも効率的である。
【0019】
BST308は、この例において、データ構造の階層における第1のデータ構造であり得る。図3Aに示されているBSTにおける各ノードは、階層における第2のデータ構造へのポインタを含み得る。階層の第1のレベルは、記号を含み得る一方、階層の第2のレベルは、その特定の日の、その記号と関連付けられたトランザクションを含み得る。図3Aの例においては、ノード312は2017年7月20日の記号「MMM」に対する全てのトランザクションを含むデータ構造312Aへのポインタを含み、ノード320は2017年7月20日の記号「TTT」に対する全てのトランザクションを含むデータ構造320Aへのポインタを含み、ノード314は2017年7月20日の記号「GGG」に対する全てのトランザクションを含むデータ構造314Aへのポインタを含み、ノード316は2017年7月20日の記号「CCC」に対する全てのトランザクションを含むデータ構造316Aへのポインタを含み、ノード318は2017年7月20日の記号「JJJ」に対する全てのトランザクションを含むデータ構造318Aへのポインタを含み、ノード322は2017年7月20日の記号「PPP」に対する全てのトランザクションを含むデータ構造322Aへのポインタを含み、ノード324は2017年7月20日の記号「YYY」に対する全てのトランザクションを含むデータ構造324Aへのポインタを含む。図3Aの例は、データの2つのレベルしか含まないが、階層は特定の問合せに対応するために必要とされる数のレベルを含み得る。即ち、データは、検索をより線形でないようにするためにより多くのレベルを含んでいてもよい。
【0020】
次に図3Bを参照して、データ構造320Aの詳細な説明が示される。プロセッサは、2017年7月20日の「TTT」トランザクションを検索するときに、BSTのノード320に到達し得る。しかし、この動作例においては、第1レベルのデータ構造308は記号だけを含んでいる。トランザクションは次のレベルにおいて見つけられ得る。上述したように、データ構造320Aは、階層の第2レベルにあり、2017年7月20日の記号「TTT」に対する全てのトランザクションを含んでいる。図3Bの例において、データ構造320Aはベクトルのデータ構造であり得る。図3Bのベクトルのデータ構造は、2017年7月20日の記号「TTT」に対する順序を表す3つのノード326、328及び330を示す。各ノードはそこから分岐し、それぞれの順序に対するトランザクションを表す更なる連結リストを含む。例えば、ノード326は、そこから分岐する2つのトランザクション326A及び326Bで順序を表し得て、ノード328は、そこから分岐する3つのトランザクション328A、328B及び328Cで順序を表し得て、ノード330は、そこから分岐する1つのトランザクションで順序を表し得る。図2の方法に戻って参照して、ブロック214に示されているように、問合せの結果が返される。図3Bに戻って参照して、ベクトルのデータ構造320Aにおけるデータが、この情報を要求しているデバイスに送り返され得る。この例は順序のためにベクトルのデータ構造を使うが、他の状況においては、配列、連結リスト等の他の種類のデータ構造が使われてもよいことが理解される。
【0021】
上述したように、最も頻繁に受ける問合せに応じて、データ構造は2レベルより多いデータを含み得る。図3Cの例においては、二値のデータ構造310がそこから分岐する3レベルとともに示されている。図3においてこれまでに見たように、データ構造310はハッシュテーブル302における2016年2月2日という日と関連付けられている。図3Cの説明のための階層は、3層のデータの階層である。具体的には、図3Cの例は、顧客を示す記号とトランザクションとの間のレベルを含む。この整理は、特定の顧客による記号トランザクションに対する問合せが一般的である場合に有益であり得る。図3Cの例示的な階層において、ノード332は記号「MMM」、及び、記号「MMM」と関わりを持つ顧客を含むデータ構造332Aへのポインタを含み、今度は、データ構造332Aは、顧客による記号「MMM」のためのトランザクションを示すトランザクションデータ構造332Bへのポインタを含む。ノード344は、記号「GGG」と記号「GGG」と関わりを持つ顧客を含むデータ構造344Aへのポインタを含み、今度は、データ構造344Aは、顧客による記号「GGG」のためのトランザクションを示すトランザクションデータ構造344Bへのポインタを含む。ノード334は、記号「TTT」、及び、記号「TTT」と関わりを持つ顧客を含むデータ構造334Aへのポインタを含み、今度は、データ構造334Aは、顧客による記号「TTT」のためのトランザクションを示すトランザクションデータ構造334Bへのポインタを含む。ノード342は、記号「CCC」、及び、記号「CCC」と関わりを持つ顧客を含むデータ構造342Aへのポインタを含み、今度は、データ構造342Aは、顧客による記号「CCC」のためのトランザクションを示すトランザクションデータ構造342Bへのポインタを含む。ノード340は、記号「JJJ」、及び、記号「JJJ」と関わりを持つ顧客を含むデータ構造340Aへのポインタを含み、今度は、データ構造340Aは、顧客による記号「JJJ」のためのトランザクションを示すトランザクションデータ構造340Bへのポインタを含む。ノード338は、記号「PPP」、及び、記号「PPP」と関わりを持つ顧客を含むデータ構造338Aへのポインタを含み、今度は、データ構造338Aは、顧客による記号「PPP」のためのトランザクションを示すトランザクションデータ構造338Bへのポインタを含む。ノード336は、記号「YYY」、及び、記号「YYY」と関わりを持つ顧客を含むデータ構造336Aへのポインタを含み、今度は、データ構造336Aは、顧客による記号「YYY」のためのトランザクションを示すトランザクションデータ構造336Bへのポインタを含む。
【0022】
次に図3Dを参照して、顧客データ構造334Aの詳細な説明が示される。図3Cにおいて見たように、「TTT」の記号のノード334は、ポインタの方法によってデータ構造334Aと関連付けられている。データ構造334Aは、顧客「JPMorgan」を含むルートノード352、顧客「Chase」を含むノード354及び顧客「NFSC」を含むノード356を備えるBSTとしても整理され得る。図3Cは、トランザクションデータ構造への個別のポインタを含む各顧客ノードも描いている。イベントにおいて、2016年2月2日に顧客「Chase」によって行われた「TTT」のトランザクションに対する問合せが受信されると、少なくとも1つのプロセッサは、「TTT」の記号を含むノード334に到達するため、BST構造310をまずトラバースし得て、これは、BST構造334Aにつながる。プロセッサは、次に、ノード354における顧客「Chase」を見つけるために、BST構造334Aをトラバースし得て、これは、トランザクションデータ構造334Bにつながる。トランザクションデータ構造334Bからのデータは、問合せに応じて返され得る。顧客の名前を含む余分なBSTを追加することは、検索をより線形でなくすことにより、特定の日に生じた顧客のトランザクションを検索する効率を改善し得る。
【0023】
以上で説明した階層は単に例示的なものである。そのようなものとして、階層はデータ構造の異なる組合せを含むことができる。例えば、第1のレベルはBSTであってもよく、第2のレベルは配列であってもよく、第3のレベルは別のBSTであってもよい。特定の階層において用いられたデータ構造の組合せは、最も頻繁に受ける問合せに対応されてもよい。特定のシステムに対する階層は、検索の線形性を減少させるように設計されてもよい。しかし、異なる状況は異なるデータ構造の整理を要求し得る。
【0024】
ビッグデータの問合せの性能が改善され得る別の領域は、データを要求するクライアントデバイスにある。ビッグデータの問合せの結果を表示する動作例が図4から5Bに示される。具体的には、図4は問合せの結果を表示するための例示的な方法400のフロー図を示し、図5から5Bは対応する動作例を示す。図5から5Bに示された動作は図4のフロー図との関係で、以下説明される。
【0025】
図4を参照して、コンピュータ装置の少なくとも1つのプロセッサは、ブロック402に示されているように、スクリーンにGUIをレンダリングし、ブロック404に示すように、検索要求をリモートサーバに伝送する。ブロック406において、少なくとも1つのプロセッサが検索要求に応答して、複数の記録を受信し得て、ブロック408において、それぞれの受信した記録が個別の割り当てられたメモリ空間に複製され得る。一例において、それぞれの受信された記録は、それぞれの記録に割り当てられたそれぞれのメモリ空間の形式と一致する。メモリ空間と記録の間の形式を一致させておくことは、少なくとも1つのプロセッサがそれぞれの受信された記録のフィールドをメモリにおける対応するフィールドに効率的に複製することを可能にし得る。そのようなものとして、フィールド、データの種類またはデータのオブジェクトの形式を再設定する必要がないため、得られた記録を処理するための時間が削減され得る。
【0026】
図5を参照して、コンピュータ装置101は、記録をコンピュータ装置112に提供するサーバコンピュータであり得て、コンピュータ装置112は、要求するクライアントコンピュータであり得る。コンピュータ装置101が記録502をコンピュータ装置112に戻すように示されている。記録は、表示デバイス508に表示され得る。
【0027】
図4に戻って参照して、ブロック410に示されているように、それぞれの割り当てられたメモリ空間は、メモリ空間の連結リストに追加され得る。一例において、連結リストの順序は、記録が受信された順序を反映し得る。図5は、メモリ104における記録の連結リスト504を示す。図4に戻って参照して、ブロック412に示されているように、現在受信している記録は、周期的にGUIにレンダリングされ得る。一例において、所定の周期の時間、1秒毎等が経過すると、記録はレンダリングされ得る。周期的にGUIを更新することの利点は、残りの結果がまだ転送中の間に、ユーザが現在受信している結果をまだ確認することができることである。このため、ネットワークの遅延が生じると、ユーザは既にGUI上で結果を見ることができるので、そのような遅延はユーザから隠され得る。一例において、更新は全ての結果が受信されるまで周期的に続く。
【0028】
図5Aを参照して、取引データの問合せの結果を伴う説明のためのGUI510が示されている。GUIは、状態、記号、価格、サイズ等の取引データに典型的であろうフィールドを含んでいるが、これらに限られるものではない。一例において、クライアントデバイスの少なくとも1つのプロセッサがGUI上に表示されている所定の行のユーザ選択を検出し得る。選択に応答して、プロセッサは、その所定の行に対応する集計データを表示し得る。例として、ユーザがGUI510の記号(「Sym」)の行をクリックしてもよい。その結果、少なくとも1つのプロセッサは、図5Bに示されているように、記号の行に関連する全ての順序を集計する別のGUI514をレンダリングし得る。一例において、少なくとも1つのプロセッサは、記号の行をユーザがクリックしたことに応答して、記号の行をキーとして用いて、連結リスト(例えば、連結リスト504)の線形走査をし得る。即ち、ユーザは任意の行をクリックしてもよく、少なくとも1つのプロセッサは選択された行を線形走査のためのキーとして用いてもよい。
【0029】
有利なことに、上記の装置、非一時的なコンピュータ読み取り可能な媒体及び方法は、ハッシュテーブルと特定の日に生じたトランザクションに関する一般的な問合せに最適であり得る複数のレベルのデータ構造を備える索引を生成する。更に、クライアントデバイスは、問合せの結果の形式と一致する形式を備えるメモリを割り当ててもよく、GUI上に周期的に問合せの結果を更新してもよい。今度は、結果を取得するときに遅延があるとしても、ユーザは、GUI上でデータをまだ見ることができる。従って、上で開示された索引とGUIの技術は、サーバにおけるビッグデータの問合せを加速して、クライアントにおける問合せの結果の表示を加速することにより、コンピュータの性能を改善する。
【0030】
本明細書における開示は具体例を参照して説明されたが、これらの例は単にこの開示の本質を説明するためのものであることを理解されたい。このため、例に多数の変更が施されてもよく、付属の請求の範囲によって定義されるようにこの開示の精神と範囲から離れることなく他の変形がなされてもよいことを理解されたい。更に、添付の図面において、具体的な処理が特定の順序で示されているが、そのような処理は、そのような順序が本明細書に明示的に記載されていない限り、いかなる特定の順序にも限定されない。むしろ、様々なステップが異なる順序で、又は同時に処理されることができ、ステップが省略され、又は追加されてもよい。
【0031】
(付記)
(付記1)
メモリと、
相互に連結されたデータ構造の階層と、ハッシュテーブルであって、当該ハッシュテーブルにおけるエントリが、日と前記相互に連結されたデータ構造の階層における第1のデータ構造との間の関連を含むような、ハッシュテーブルとを含む、索引を前記メモリに生成し、
リモートデバイスから、前記日を含む複数の検索パラメータを有する、検索要求を受け、
前記日を用いて、前記相互に連結されたデータ構造の階層における前記第1のデータ構造のメモリアドレスがあるかについて、前記ハッシュテーブルを検索し、
前記検索パラメータに基づいて前記相互に連結されたデータ構造をトラバースするための計画を判別し、
前記トラバースの計画に従った前記第1のデータ構造における前記検索要求によって求められているデータの検索を開始し、
前記リモートデバイスに前記検索の結果を返す、
少なくとも1つのプロセッサと、
を備える、
装置。
【0032】
(付記2)
前記トラバースの計画を判別するように、前記検索要求によって求められている前記データを取得するために、前記階層をトラバースすべき深さを判別するように、前記少なくとも1つのプロセッサが更に構成されている、
付記1に記載の装置。
【0033】
(付記3)
前記第1のデータ構造は、前記相互に連結されたデータ構造の階層における第1のレベルにある、
付記1に記載の装置。
【0034】
(付記4)
前記第1のデータ構造は、第1の二分木のデータ構造である、
付記3に記載の装置。
【0035】
(付記5)
前記少なくとも1つのプロセッサは、前記第1の二分木のデータ構造の各ノードにおいて、前記階層における第2のレベルに属する第2のデータ構造へのポインタを生成するように更に構成されている、
付記4に記載の装置。
【0036】
(付記6)
前記第2のデータ構造は、ベクトルのデータ構造である、
付記5に記載の装置。
【0037】
(付記7)
前記第2のデータ構造は、第2の二分木のデータ構造である、
付記5に記載の装置。
【0038】
(付記8)
前記少なくとも1つのプロセッサは、前記第2の二分木のデータ構造の各ノードにおいて、前記階層における第3のレベルに属する第3のデータ構造へのポインタを生成するように更に構成されている、
付記7に記載の装置。
【0039】
(付記9)
少なくとも1つのプロセッサによって、相互に連結されたデータ構造の階層と、ハッシュテーブルであって、当該ハッシュテーブルにおけるエントリが、日と前記相互に連結されたデータ構造の階層における第1のデータ構造との間の関連を含むような、ハッシュテーブルとを含む、索引をメモリに生成することと、
前記少なくとも1つのプロセッサによって、リモートデバイスから、前記日を含む複数の検索パラメータを有する、検索要求を受けることと、
前記少なくとも1つのプロセッサによって、前記日を用いて、前記相互に連結されたデータ構造の階層における前記第1のデータ構造のメモリアドレスがあるかについて、前記ハッシュテーブルを検索することと、
前記少なくとも1つのプロセッサによって、前記検索パラメータに基づいて前記相互に連結されたデータ構造をトラバースするための計画を判別することと、
前記少なくとも1つのプロセッサによって、前記トラバースの計画に従った前記第1のデータ構造における前記検索要求によって求められているデータの検索を開始することと、
前記少なくとも1つのプロセッサによって、前記リモートデバイスに前記検索の結果を返すことと、
を含む、
方法。
【0040】
(付記10)
前記トラバースの計画を判別することは、前記少なくとも1つのプロセッサによって、前記検索要求によって求められている前記データを取得するために、前記階層をトラバースすべき深さを判別することを含む、
付記9に記載の方法。
【0041】
(付記11)
前記第1のデータ構造は、前記相互に連結されたデータ構造の階層における第1のレベルにある、
付記9に記載の方法。
【0042】
(付記12)
前記第1のデータ構造は、第1の二分木のデータ構造である、
付記11に記載の方法。
【0043】
(付記13)
前記少なくとも1つのプロセッサによって、前記第1の二分木のデータ構造の各ノードにおいて、前記階層における第2のレベルに属する第2のデータ構造へのポインタを生成することを更に含む、
付記12に記載の方法。
【0044】
(付記14)
前記第2のデータ構造は、ベクトルのデータ構造である、
付記12に記載の方法。
【0045】
(付記15)
前記第2のデータ構造は、第2の二分木のデータ構造である、
付記14に記載の方法。
【0046】
(付記16)
前記少なくとも1つのプロセッサによって、前記第2の二分木のデータ構造の各ノードにおいて、前記階層における第3のレベルに属する第3のデータ構造へのポインタを生成することを更に含む、
付記15に記載の装置。
【0047】
(付記17)
メモリと、
表示デバイスと、
前記表示デバイスにグラフィカルユーザインタフェースをレンダリングし、
リモートサーバに検索要求を伝送し、
前記検索要求に応答して、それぞれの受信される記録の形式が、それぞれの記録に割り当てられたそれぞれのメモリ空間の形式と一致する複数の記録を受信し、
それぞれの受信した記録を個別の割り当てられたメモリ空間に複製し、
前記複数の記録が受信された順序を反映するような順序を示す、前記メモリ空間の連結リストに、それぞれの割り当てられた前記メモリ空間を追加し、
前記検索要求に対応する全てのデータの記録が受信されるまで、現在受信している記録を前記グラフィカルユーザインタフェースに周期的にレンダリングする、
少なくとも1つのプロセッサと、
を備える、
装置。
【0048】
(付記18)
前記少なくとも1つのプロセッサは、所定の期間が満了すると、前記現在受信している記録をレンダリングするように構成されている、
付記17に記載の装置。
【0049】
(付記19)
前記少なくとも1つのプロセッサは、
前記グラフィカルユーザインタフェースに表示されている所定のフィールドの選択を検出し、
前記選択に応答して、前記所定のフィールドに対応する集計データを含む別のグラフィカルユーザインタフェースをレンダリングする、
ように更に構成されている、
付記17に記載の装置。
【0050】
(付記20)
前記所定の期間は、約1秒である、
付記17に記載の装置。
図1
図2
図3
図3A
図3B
図3C
図3D
図4
図5
図5A
図5B