JP2021502655A - データクエリ - Google Patents

データクエリ Download PDF

Info

Publication number
JP2021502655A
JP2021502655A JP2020544099A JP2020544099A JP2021502655A JP 2021502655 A JP2021502655 A JP 2021502655A JP 2020544099 A JP2020544099 A JP 2020544099A JP 2020544099 A JP2020544099 A JP 2020544099A JP 2021502655 A JP2021502655 A JP 2021502655A
Authority
JP
Japan
Prior art keywords
command
metadata
phoenix
query
hbase
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
JP2020544099A
Other languages
English (en)
Other versions
JP7018516B2 (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.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies Co Ltd
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 New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Publication of JP2021502655A publication Critical patent/JP2021502655A/ja
Application granted granted Critical
Publication of JP7018516B2 publication Critical patent/JP7018516B2/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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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/2452Query translation
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/242Query formulation

Landscapes

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

Abstract

【課題】記憶装置、クエリビルダー装置、及び接続装置を含むデータクエリシステムに適用可能なデータクエリ方法を提案する。【解決手段】データクエリ方法、システム及び接続装置である。当該方法は、クエリビルダー装置がSparkSQLクエリコマンド(41)を接続装置に送信するステップであって、前記SparkSQLクエリコマンドが、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含むステップと、前記接続装置が、前記SparkSQLクエリコマンドを受信した後、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが記憶装置に存在する場合、第1のPhoenixクエリコマンドを生成し、前記第1のPhoenixクエリコマンドを前記記憶装置(42)に送信するステップであって、前記インデックステーブルが、HBaseテーブルのメタデータの属性値とHBaseテーブルの行キーとの対応関係を記録するためのものであり、前記第1のPhoenixクエリコマンドが、前記テーブル識別子と、前記メタデータと、前記属性値とを含むステップと、前記記憶装置が、前記第1のPhoenixクエリコマンドを受信した後、前記テーブル識別子と前記メタデータとに対応する前記インデックステーブルから、前記属性値に対応する行キーを取得し、前記テーブル識別子に対応するHBaseテーブルから、前記行キーに対応する行データ(43)を取得し、前記行データを前記接続装置(44)に返信するステップと、前記接続装置が、前記行データを取得した後、前記行データを前記クエリビルダー装置(45)に返信するステップと、を含む。【選択図】図1

Description

関連出願の相互参照
本特許出願は、2017年11月30日に提出された201711235855.2の中国特許出願を優先権として主張し、その全内容が援用により本願に取り込まれている。
HBaseデータベースは、大規模データセットに対してランダムかつリアルタイムに読取り/書込みアクセスサービスを提供するための高信頼性、高性能、列指向、スケーラブルな分散ストレージシステムである。ここで、当該HBaseデータベースはデータをデータテーブル(本明細書ではHBaseテーブルと呼ばれる)の形で格納し、HBaseテーブルは行と列のファミリーからなる。表1に示すのがHBaseテーブルの例である。行キー(RowKey)はインデックスであり、列ファミリー(Column Family)は、1つ又は複数の列からなる。表1では、名前、住所、年齢、携帯番号、メールアドレスなどはメタデータであり、各メタデータは複数の属性値に対応し、例えば、名前に対応する属性値は張三や李四などである。
図1は本開示の一実施形態におけるデータクエリシステムの構成図である。 図2は本開示の一実施形態におけるデータクエリシステムの構成図である。 図3は本開示の一実施形態におけるインデックステーブルの作成方法のフローチャートである。 図4は本開示の一実施形態におけるデータクエリ方法のフローチャートである。 図5は本開示の一実施形態におけるデータ格納方法のフローチャートである。 図6は本開示の別の実施形態におけるデータクエリ方法のフローチャートである。 図7は本開示の一実施形態における接続装置のハードウェア構成を示す模式図である。
表1に示すHBaseのテーブル構造に基づいて、行キーによってデータを高速にクエリできる。例えば、クエリリクエストを受信した場合、クエリリクエストに含まれる行キーが001であれば、HBaseテーブルからクエリされた内容が1行目のデータであるので、1行目のデータが返信される。クエリリクエストに行キーが含まれず、北京のようなあるメタデータの属性値が含まれると、その行キーによって対応するデータを高速にクエリすることができない。「北京」を含む行データをクエリするには、HBaseテーブル全体に対して全テーブルのスキャンを行う必要があるため、クエリ性能が低い。
したがって、本発明の実施例には、記憶装置、クエリビルダー装置、及び接続装置を含むデータクエリシステムに適用可能なデータクエリ方法を提案する。クエリビルダー装置、記憶装置、及び接続装置は、同一サーバに設けられていてもよく、別々のサーバに設けられていてもよい。クエリビルダー装置、記憶装置、及び接続装置が同一サーバに配置される場合、クエリビルダー装置、記憶装置、及び接続装置は、当該サーバの3つの機能モジュールとなる。例えば、クエリビルダー装置がデータクエリビルダー装置機能を実現するSQL(Structured Query Language、構造化クエリ言語)エンジンで、記憶装置がデータ格納機能を実現するデータベースで、接続装置が接続機能を実現するミドルウェアであってもよい。クエリビルダー装置、記憶装置、及び接続装置が別々のサーバに配置される場合、クエリビルダー装置、記憶装置、及び接続装置は、3つの独立されたサーバとなる。
図1は上記データクエリシステムの構成を示す図である。
HBaseデータベースを使用してデータを格納するとき、記憶装置は、HBaseデータベースにSQL支援を提供するためのPhoenixコンポーネントを使用してデータの格納を実現する。このように、記憶装置がSQLリクエストを受信すると、SQLリクエストに基づいてHBaseデータベース内のデータを操作することができる。
クエリビルダー装置は、SparkSQLエンジン(Sparkベースの分散SQLエンジン)を用いてデータのクエリを実現することができ、当該SparkSQLエンジンは、外部データソース(DataSource)にアクセスする複数のインタフェース、例えばJDBC(Java DataBase Connectivity、javaデータベース接続)、ODBC(OpenDatabaseConnectivity、オープンデータベース接続)、API(ApplicationProgrammingInterface、アプリケーションプログラミングインタフェース)などのインタフェースを開放することができる。さらに、SparkSQLエンジンは、マルチフォーマットのデータソース、例えば、JSON(Java Script Object Notation,Javaスクリプトオブジェクト表記)、Parquet(列式格納フォーマット)、avro(データシリアル化システム)、CSV(Comma Separated Values,コンマ区切り値)などのフォーマットなどをサポートすることもできる。
記憶装置がPhoenixコンポーネントを用いてデータの格納を実現し、クエリビルダー装置がSparkSQLエンジンを用いてデータのクエリを実現する。すなわち、クエリビルダー装置はSparkSQLコマンドを処理することができ、記憶装置はPhoenixコマンドを処理することができる。そのため、クエリビルダー装置がSparkSQLコマンドを送信した後、記憶装置は、SparkSQLコマンドを受信すると、SparkSQLコマンドを処理することができない。同様に、記憶装置がPhoenixコマンドを送信した後、クエリビルダー装置は、Phoenixコマンドを受信すると、そのPhoenixコマンドを処理することができない。これに基づいて、SparkSQLコマンドとPhoenixコマンドとの変換を実現するための接続装置を、記憶装置とクエリビルダー装置との間に配置してもよい。本開示の実施例では、HBaseテーブルにおけるメタデータの属性値と行キーとの対応関係(例えば、表1における「北京」と「001」との対応関係)を記録するためのインデックステーブルを記憶装置に作成してもよい。このように、Phoenixコマンドが行キー「001」を含まず、属性値「北京」を含むと、記憶装置は、属性値「北京」によりインデックステーブルをクエリして行キー「001」を得て、そして行キー「001」により表1に示されるHBaseテーブルをクエリして、1行目のデータを得る。上記形態では、HBaseテーブルを全テーブルスキャンを行う必要がなくなり、クエリ性能が向上し、クエリ効率が向上する。
本開示の実施形態では、インデックステーブル作成ステップ、データクエリステップ、データ格納ステップ、インデックステーブル削除ステップ、インデックステーブル取得ステップのいずれか、または、これらの組み合わせに関する。
図2を参照すると、クエリビルダー装置は、SparkSQL作成インターフェースを提供し、当該SparkSQLに基づいて、インデックステーブルを作成するためのSparkSQL作成コマンドを生成し送信することができる。接続装置は、SparkSQL作成インターフェース及びPhoenix作成インターフェースを提供することができ、SparkSQL作成インタフェースに基づいて、SparkSQL作成コマンドの内容を解析することができ、当該Phoenix作成インタフェースに基づいて、SparkSQL作成コマンドから解析された内容からPhoenix作成コマンドを生成して送信することができ、当該Phoenix作成コマンドはインデックステーブルの作成に用いられる。記憶装置は、Phoenix作成インタフェースを提供することができ、当該Phoenix作成インタフェースに基づいて、Phoenix作成コマンドの内容を解析し、その内容によりインデックステーブルを作成することができる。
図2を見ると、クエリビルダー装置は、SparkSQLクエリインターフェースを提供することができ、当該SparkSQLクエリインターフェースに基づいて、データをクエリするためのSparkSQLクエリコマンドを生成して送信することができ、SparkSQLクエリコマンドに対するSparkSQL応答コマンドを処理することができる。
接続装置は、SparkSQLクエリインタフェース及びPhoenixクエリインタフェースを提供することができる。SparkSQLクエリインタフェースに基づいて、接続装置は、SparkSQLクエリコマンドの内容を解析することができ、Phoenixクエリインタフェースに基づいて、接続装置は、SparkSQLクエリコマンドから解析された内容により、Phoenixクエリコマンドを生成して送信することができる。なお、Phoenixクエリインタフェースに基づいて、接続装置は、Phoenixクエリコマンドに対するPhoenix応答コマンドの内容を解析することもでき、SparkSQLクエリインタフェースに基づいて、Phoenix応答コマンドから解析された内容により、SparkSQL応答コマンドを生成して送信することができる。
記憶装置は、Phoenixクエリインタフェースを提供することができ、当該Phoenixクエリインタフェースに基づいて、Phoenixクエリコマンドの内容を解析し、そしてクエリを行い、そのクエリの結果によりPhoenix応答コマンドを作成して送信することができる。
図2を見ると、クエリビルダー装置は、SparkSQL格納インターフェースを提供し、当該SparkSQL格納インターフェースに基づいて、データを格納するためのSparkSQL格納コマンドを生成して送信することができる。接続装置は、SparkSQL格納インターフェース及びPhoenix格納インターフェースを提供することができ、SparkSQL格納インタフェースに基づいて、SparkSQL格納コマンドの内容を解析することができ、Phoenix格納インタフェースに基づいて、SparkSQL格納コマンドから解析された内容により、データを格納するためのPhoenix格納コマンドを生成して送信することができる。記憶装置は、Phoenix格納インタフェースを提供することができ、当該Phoenix格納インタフェースに基づいて、Phoenix格納コマンドの内容を解析し、その内容により関連データを格納することができる。
図2を見ると、クエリビルダー装置は、SparkSQL削除インターフェースを提供し、当該SparkSQL削除インターフェースに基づいて、インデックステーブルを削除するためのSparkSQL削除コマンドを生成し送信することができる。接続装置は、SparkSQL削除インターフェース及びPhoenix削除インターフェースを提供することができ、SparkSQL削除インタフェースに基づいて、SparkSQL削除コマンドの内容を解析することができ、当該Phoenix削除インタフェースに基づいて、SparkSQL削除コマンドから解析された内容により、インデックステーブルを削除するためのPhoenix削除コマンドを生成して送信することができる。記憶装置は、Phoenix削除インタフェースを提供することができ、当該Phoenix削除インタフェースに基づいて、記憶装置は、Phoenix削除コマンドの内容を解析し、その内容に基づいてインデックステーブルを削除することができる。
図2を参照すると、クエリビルダー装置は、SparkSQL取得インターフェースを提供することができ、当該SparkSQL取得インターフェースに基づいて、インデックテーブルを取得するためのSparkSQL取得コマンドを生成して送信することができ、SparkSQL取得コマンドに対するSparkSQL応答コマンドを処理することができる。
接続装置は、SparkSQL取得インタフェース及びPhoenix取得インタフェースを提供することができる。接続装置は、SparkSQL取得インタフェースに基づいて、SparkSQL取得コマンドの内容を解析することができ、Phoenix取得インタフェースに基づいて、SparkSQL取得コマンドから解析された内容により、Phoenix取得コマンドを生成して送信することができる。なお、Phoenix取得インタフェースに基づいて、接続装置は、Phoenix取得コマンドに対するPhoenix応答コマンドの内容を解析することもでき、SparkSQL取得インタフェースに基づいて、Phoenix応答コマンドから解析された内容により、SparkSQL応答コマンドを生成して送信することができる。
記憶装置は、Phoenix取得インタフェースを提供することができ、Phoenix取得インタフェースに基づいて、Phoenix取得コマンドの内容を解析し、インデックステーブルを取得し、Phoenix応答コマンドを作成して送信することができる。
上記の応用シーンにおいて、インデックステーブル作成フローについて、図3に示されるステップを参照して説明する。
ステップ31では、クエリビルダー装置は、SparkSQL作成コマンド(インデックステーブルを作成するためのものである)を接続装置に送信する。
ここで、SparkSQL作成コマンドは、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータとを含む。例えば、表1で示されるHBaseテーブルに対してインデックステーブルを作成し、メタデータ「携帯番号」をインデックステーブルのインデックスとすると、当該SparkSQL作成コマンドは、当該HBaseテーブルのテーブル識別子と、メタデータ「携帯番号」とを含んでもよい。
ステップ32では、接続装置は、SparkSQL作成コマンドを受信すると、SparkSQL作成コマンドにより、Phoenix作成コマンドを生成し、該Phoenix作成コマンドを記憶装置に送信する。
具体的には、接続装置は、SparkSQL作成コマンドを解析してHBaseテーブルのテーブル識別子と当該HBaseテーブルのメタデータとを得、当該テーブル識別子と当該メタデータとによって、Phoenix作成コマンドを生成する。すなわち、当該Phoenix作成コマンドは、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータ(例えば、「携帯番号」)とを含む。
ステップ33では、記憶装置は、Phoenix作成コマンドを受信した後、テーブル識別子に対応するHBaseテーブルから当該メタデータに対応する属性値と当該属性値に対応する行キーとを取得し、当該テーブル識別子と当該メタデータとに対応するインデックステーブルを作成して、当該属性値と当該行キーとの対応関係を当該インデックステーブルに記録する。
例えば、記憶装置は、表1により、メタデータ「携帯番号」に対応する属性値18611111111を取得し、当該属性値が行キー001に対応し、そしてインデックステーブルにおいて属性値18611111111と行キー001との対応関係を記録する。このように類推すると、表2に示すインデックステーブルを得ることができる。
一例では、仮に表1に示すHBaseテーブルのテーブル識別子をAとすると、記憶装置は、表2のインデックステーブルを作成した後、HBaseテーブルのテーブル識別子Aとメタデータ「携帯番号」とを接続装置に送信する。接続装置は、当該テーブル識別子と当該メタデータとの対応関係をローカルのマッピングテーブルに記録する。当該対応関係は、当該テーブル識別子と当該メタデータとに対応付けられたインデックステーブルが記憶装置に存在することを示す。
以上のステップに基づいて、インデックステーブルの作成が完成し、さらに該インデックステーブルに基づいてデータのクエリが完成できる。
次に、図4に示すステップを参照して、データクエリステップについて説明する。
ステップ41では、クエリビルダー装置は、SparkSQLクエリコマンド(データをクエリするためのものである)を接続装置に送信する。
ここで、SparkSQLクエリコマンドは、HBaseテーブルのテーブル識別子と、メタデータと、当該メタデータに対応する属性値とを含む。例えば、表1に示すHBaseの表から「18611111111」に対応するデータをクエリする場合、SparkSQLクエリコマンドは、HBaseテーブルの表識別子Aと、メタデータ「携帯番号」と、「携帯番号」に対応する属性値「18611111111」とを含んでもよい。
ステップ42では、接続装置は、SparkSQLクエリコマンドを受信した後、当該テーブル識別子と当該メタデータに対応するインデックステーブルが記憶装置に存在する場合、第1のPhoenixクエリコマンドを生成し、記憶装置に送信する。当該テーブル識別子と当該メタデータに対応するインデックステーブルが記憶装置に存在しない場合、第2のPhoenixクエリコマンドを生成し、記憶装置に送信する。
接続装置は、当該SparkSQLクエリコマンドを受信すると、当該SparkSQLクエリコマンドを解析して、HBaseテーブルのテーブル識別子、メタデータ、及び当該メタデータに対応する属性値を得る。そして、接続装置は、当該テーブル識別子と当該メタデータとに対応するインデックステーブルが記憶装置に存在するか否かを判断することができる。
第1のPhoenixクエリコマンドは、HBaseテーブル識別子と、メタデータと、メタデータに対応する属性値と、を含む。
第2のPhoenixクエリコマンドは、HBaseテーブル識別子と、メタデータに対応する属性値と、を含む。又は、第2のPhoenixクエリコマンドは、HBaseテーブル識別子と、メタデータと、メタデータに対応する属性値と、を含む。
ここで、「接続装置が当該テーブル識別子と当該メタデータとに対応するインデックステーブルが記憶装置に存在するか否かを判断する」ステップは、
接続装置がローカルで上記マッピングテーブルをメンテナンスしている場合、接続装置は、SparkSQLのクエリコマンドを解析してテーブル識別子とメタデータを得た後、当該テーブル識別子と当該メタデータとの対応関係がマッピングテーブルに存在するか否かをクエリし、存在する場合、当該テーブル識別子と当該メタデータとに対応するインデックステーブルが記憶装置に存在すると確定し、存在しない場合、当該インデックステーブルが記憶装置に存在しないと確定することができる、第1の態様と、
接続装置がSparkSQLクエリコマンドを解析してテーブル識別子とメタデータを得た後、当該テーブル識別子と当該メタデータを含むPhoenix管理コマンドを記憶装置に送信し、記憶装置が、Phoenix管理コマンドを受信した後、当該テーブル識別子と当該メタデータとに対応するインデックステーブルがローカルに存在するか否かをクエリし、クエリの結果が含まれるPhoenix応答コマンドを接続装置に送信し、接続装置が、当該クエリ結果によって、当該テーブル識別子と当該メタデータとに対応するインデックステーブルが記憶装置に存在するか否かを判定することができる、第2の態様と、
を含む。
ステップ43では、記憶装置は、上記第1のPhoenixクエリコマンドを受信した後、テーブル識別子とメタデータとに対応するインデックステーブルから属性値に対応する行キーを取得し、当該テーブル識別子に対応するHBaseテーブルから当該行キーに対応する一行のデータ(即ち行データ)を取得する。
例えば、記憶装置は、第1のPhoenixクエリコマンドを解析して、表識別子Aと、メタデータ「携帯番号」と、属性値「18611111111」を得る。テーブル識別子Aとメタデータ「携帯番号」とに対応するインデックステーブルは、表2に示し、記憶装置は、表2から属性値「18611111111」に対応する行キー001を取得することができる。テーブル識別子Aに対応するHBaseテーブルは、表1に示し、記憶装置は、行キー001に対応する行データを表1から取得し、当該の行データが「001、張三、北京、28、18611111111」を含む。
別の例では、記憶装置は、第2のPhoenixクエリコマンドを受信した後、第2のPhoenixクエリコマンドから、対応するHBaseテーブルが表1に示すようなテーブル識別子Aと、属性値「張三」とを解析することができ、表1を全テーブルスキャンし、「張三」に対応する行データを取得し、当該行データは「001、張三、北京、28、18611111111」を含む。
ここで、接続装置は、Phoenixクエリコマンドを生成する際に、当該Phoenixクエリコマンドが第1のPhoenixクエリコマンドであるか、それとも第2のPhoenixクエリコマンドであるかを示すための特定の識別子をさらに含んでもよい。記憶装置は、第1のPhoenixクエリコマンドを受信すると、インデックステーブルをクエリしてからHBaseテーブルをクエリしてもよい。記憶装置は、第2のPhoenixクエリコマンドを受信すると、HBaseテーブルを直接にクエリしてもよい。
ステップ44では、記憶装置は、行データを取得した後、その行データを接続装置に返信する。
ステップ45では、接続装置は、行データを取得した後、その行データをクエリビルダー装置に返信する。
記憶装置は、第1のPhoenixクエリコマンド又は第2のPhoenixクエリコマンドに対するPhoenix応答コマンドを生成し、クエリされた行データを含むPhoenix応答コマンドを接続装置に送信することができる。接続装置は、Phoenix応答コマンドを受信した後、Phoenix応答コマンドを解析して当該クエリされた行データを得、SparkSQLのクエリコマンドに対するSparkSQL応答コマンドを生成し、SparkSQL応答コマンドをクエリビルダー装置に送信する。クエリビルダー装置は、SparkSQLの応答コマンドを解析して行データを得る。
以上のステップにより、データのクエリが完成する。
なお、上記インデックステーブルに基づいてデータ格納を完成することもできる。以下、図5に示すフローチャートを参照して、データ格納ステップについて説明する。
ステップ51では、クエリビルダー装置は、SparkSQL格納コマンド(データを格納するためのものである)を接続装置に送信する。
ここで、SparkSQL格納コマンドは、HBaseテーブルのテーブル識別子と、HBaseテーブルの少なくとも1つのメタデータと、各メタデータに対応する属性値と、行キーとを含む。例えば、表1に示すHBaseテーブルに行キー「005」と、氏名「韓七」と、住所「深セン」と、年齢「50」と、携帯番号「18655555555」とのデータを格納する必要がある場合、SparkSQL格納コマンドは、HBaseテーブルのテーブル識別子A、メタデータ「氏名」と属性値「韓七」との対応関係、メタデータ「住所」と属性値「深セン」との対応関係、メタデータ「年齢」と属性値「50」との対応関係、メタデータ「携帯番号」と属性値「18655555555」との対応関係、及び行キー「005」、を含む。
ステップ52では、接続装置は、SparkSQL格納コマンドを受信した後、当該SparkSQL格納コマンドにより、第1のPhoenix格納コマンド及び/又は第2のPhoenix格納コマンドを生成し、第1のPhoenix格納コマンド及び/又は第2のPhoenix格納コマンドを記憶装置に送信する。
接続装置は、当該SparkSQL格納コマンドを受信した後、当該SparkSQL格納コマンドを解析し、HBaseテーブルのテーブル識別子と、HBaseテーブルの少なくとも1つのメタデータと、各メタデータに対応する属性値及び行キーを得る。
各メタデータに対して、以下の操作を行う。
当該テーブル識別子と当該メタデータとが対応付けられたインデックステーブルが記憶装置に存在する場合には、当該SparkSQL格納コマンドにより、第1のPhoenix格納コマンドを生成して記憶装置に送信する。そうでない場合には、第1のPhoenix格納コマンドを生成する必要がない。第1のPhoenix格納コマンドは、前記のテーブル識別子と、前記のメタデータと、前記のメタデータに対応する属性値と、行キーとを含む。
なお、SparkSQL格納コマンドの各メタデータに対して、接続装置は、当該テーブル識別子と当該メタデータに対応するインデックステーブルが記憶装置に存在するか否かを判定し、具体的な判定方法は、ステップ42を参照できるので、再度説明の必要はない。
例えば、メタデータの「氏名」と、「住所」と、「年齢」とについて、対応するインデックステーブルが記憶装置に存在しないとの判定結果であれば、ステップを終了する。メタデータ「携帯番号」について、対応するインデックステーブルが記憶装置に存在するとの判定結果であれば、接続装置は、テーブル識別子A、メタデータ「携帯番号」、属性値「18655555555」、と行キー005を含む第1のPhoenix格納コマンドを生成することができる。
接続装置は、当該SparkSQL格納コマンドを受信した後、第2のPhoenix格納コマンドをさらに生成してもよく、第2のPhoenix格納コマンドは、前記テーブル識別子と、前記少なくとも1つのメタデータと、前記各メタデータに対応する属性値と、行キーとを含む。
ここで、第1のPhoenix格納コマンドは、インデックステーブルにデータを格納させることを記憶装置に指示し、第2のPhoenix格納コマンドは、HBaseテーブルにデータを格納させることを記憶装置に指示してもよい。
接続装置は、Phoenix格納コマンドを生成する際に、当該Phoenix格納コマンドは、Phoenix格納コマンドが第1のPhoenix格納コマンドであるか、それとも第2のPhoenix格納コマンドであるかを示すための特定の識別子をさらに含んでもよい。記憶装置が第1のPhoenix格納コマンドを受信した場合、ステップ54が実行され、記憶装置が第2のPhoenix格納コマンドを受信した場合、ステップ53が実行される。
ステップ53では、記憶装置が第2のPhoenix格納コマンドを受信した後、その行キーと各メタデータとに対応する属性値を、当該テーブル識別子に対応するHBaseテーブルに記録する。
例えば、記憶装置が、第2のPhoenix格納コマンドを解析し、HBaseテーブルのテーブル識別子A、メタデータ「氏名」と属性値「韓七」との対応関係、メタデータ「住所」と属性値「深セン」との対応関係、メタデータ「年齢」と属性値「50」との対応関係、メタデータ「携帯番号」と属性値「18655555555」との対応関係、及び行キー「005」を得る。そのため、表1に示すHBaseテーブルに、表3に示す行キーが005の行データのような一行のデータが追加される。
第2のPhoenix格納コマンドに含まれている行キーがこのHBaseテーブルに既に存在する場合、当該HBaseテーブルでその対応する各メタデータの行キーに対応する位置に、第2のPhoenix格納コマンドに含まれている対応する属性値を追加することができる。第2のPhoenix格納コマンドに含まれる行キーが、当該HBaseテーブルに存在しない場合、HBaseテーブルに新たなデータ行を追加し、当該第2のPhoenix格納コマンドに含まれる行キーと各メタデータの属性値を当該新たなデータ行に記録することができる。
ステップ54では、記憶装置は、第1のPhoenix格納コマンドを受信した後、当該メタデータの属性値と当該行キーとに対応する関係を、当該テーブル識別子と当該メタデータとが対応するインデックステーブルに記録する。
例えば、記憶装置は第1のPhoenix格納コマンドを解析し、テーブル識別子Aと、メタデータ「携帯番号」と、属性値「18655555555」と行キー005とを得るので、表2に示すインデックステーブルに、属性値「18655555555」と行キー「005」との対応関係を記録することができ、表4に示すインデックステーブルが得られる。
インデックステーブルに基づいて、インデックステーブルの削除を行うこともできる。以下、インデックステーブルの削除ステップについて説明する。
ケース1では、クエリビルダー装置は、SparkSQL削除コマンドを接続装置に送信し、当該SparkSQL削除コマンドは、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータとを含む。接続装置は、SparkSQL削除コマンドを受信した後、当該SparkSQL削除コマンドによって、Phoenix削除コマンドを生成し、当該Phoenix削除コマンドを記憶装置に送信することができる。当該Phoenix削除コマンドは、当該テーブル識別子と当該メタデータとを含んでもよい。記憶装置は、Phoenix削除コマンドを受信した後、Phoenix削除コマンドを解析し、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータとを得て、当該テーブル識別子と当該メタデータとに対応するインデックステーブルを削除する。
例えば、Phoenix削除コマンドがテーブル識別子Aと、メタデータ「携帯番号」とを含むと、表4に示すインデックステーブルが記憶装置に存在する場合、記憶装置は、当該Phoenix削除コマンドによって、表4を削除してもよい。
ケース2では、クエリビルダー装置は、SparkSQL削除コマンドを接続装置に送信し、当該SparkSQL削除コマンドは、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータと、当該メタデータに対応する属性値とを含んでもよい。
接続装置は、当該SparkSQL削除コマンドを受信した後、当該SparkSQL削除コマンドによって、Phoenix削除コマンドを生成し、当該Phoenix削除コマンドを記憶装置に送信することができ、当該Phoenix削除コマンドは、当該テーブル識別子と、当該メタデータと、当該メタデータが対応する属性値とを含んでもよい。
記憶装置は、Phoenix削除コマンドを受信した後、Phoenix削除コマンドを解析し、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータと、当該メタデータが対応する属性値とを得、当該テーブル識別子と当該メタデータとに対応するインデックステーブルから、当該属性値に対応する行データを削除してもよい。
例えば、Phoenix削除コマンドがテーブル識別子(例えば、テーブルA)、メタデータ(例えば、携帯番号)、属性値(例えば、18655555555)が含むと、表4に示すインデックステーブルが記憶装置に存在する場合、記憶装置は、当該Phoenix削除コマンドにより、表4に対応するデータを削除し、削除した後のインデックステーブルは、表2に示すようになる。
インデックステーブルに基づいて、インデックステーブルの取得を行うこともできる。以下、インデックステーブルの取得ステップについて説明する。
ケース1では、クエリビルダー装置は、SparkSQL取得コマンドを接続装置に送信し、当該SparkSQL取得コマンドは、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータとを含む。接続装置は、SparkSQL取得コマンドを受信した後、当該SparkSQL取得コマンドによって、Phoenix取得コマンドを生成し、当該Phoenix取得コマンドを記憶装置に送信することができ、当該Phoenix取得コマンドは、当該テーブル識別子と当該メタデータとを含んでもよい。
記憶装置は、Phoenix取得コマンドを受信した後、Phoenix取得コマンドを解析し、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータを得、当該テーブル識別子と、当該メタデータに対応するインデックステーブルとを、接続装置を介してクエリビルダー装置に返信してもよい。
「当該テーブル識別子と、当該メタデータに対応するインデックステーブルとを、接続装置を介してクエリビルダー装置に返信する」ステップについて、記憶装置は、Phoenix取得コマンドに対するPhoenix応答コマンドを接続装置に送信し、当該Phoenix応答コマンドは当該インデックステーブルを含み、そして、接続装置は、SparkSQL取得コマンドに対するSparkSQL応答コマンドをクエリビルダー装置に送信してもよく、当該SparkSQL応答コマンドは当該インデックステーブルを含む。
例えば、Phoenix取得コマンドがテーブル識別子(例えばテーブルA)と、メタデータ(例えば携帯番号)とを含むと、表4に示すインデックステーブルが記憶装置に存在する場合、記憶装置は、当該Phoenix取得コマンドによって、表4をクエリビルダー装置に返信してもよい。
ケース2では、クエリビルダー装置は、SparkSQL取得コマンドを接続装置に送信し、当該SparkSQL取得コマンドは、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータと、当該メタデータに対応する属性値とを含んでもよい。
接続装置は、SparkSQL取得コマンドを受信した後、当該SparkSQL取得コマンドによって、Phoenix取得コマンドを生成し、当該Phoenix取得コマンドを記憶装置に送信することができ、当該Phoenix取得コマンドは、当該テーブル識別子と、当該メタデータと、当該メタデータに対応する属性値とを含んでもよい。
記憶装置は、Phoenix取得コマンドを受信した後、当該Phoenix取得コマンド解析し、HBaseテーブルのテーブル識別子と、当該HBaseテーブルのメタデータと、当該メタデータに対応する属性値とを得、当該テーブル識別子と当該メタデータとが対応するインデックステーブルから、当該属性値に対応する行データを取得してもよい。
そして、記憶装置は、接続装置を介して、当該行データをクエリビルダー装置に返信する。具体的には、記憶装置がPhoenix取得コマンドに対するPhoenix応答コマンドを接続装置に送信してもよく、当該Phoenix応答コマンドが当該行データを含む。そして、接続装置は、SparkSQL取得コマンドに対するSparkSQL応答コマンドをクエリビルダー装置に送信してもよい。当該SparkSQL応答コマンドは当該行データを含む。
例えば、Phoenix削除コマンドにテーブル識別子(例えば、テーブルA)と、メタデータ(例えば、携帯番号)と、属性値(例えば、18655555555)とが含まれると、表4に示すインデックステーブルが記憶装置に存在する場合、記憶装置は、当該Phoenix取得コマンドによって、表4に対応する行データ(「携帯番号」と、「18655555555」と、「行キイ」と、「005」とを含む)を、クエリビルダー装置に返信する。
上記技術案に基づいて、本開示の実施形態では、インデックステーブルを作成し、HBaseテーブルのメタデータの属性値と、HBaseテーブルの行キーとの対応関係をインデックステーブルに記録することにより、Phoenixクエリコマンドを受信した後に、PhoenixクエリコマンドにHBaseテーブルの行キーが含まれていなく、HBaseテーブルのメタデータに対応する属性値が含まれていても、当該属性値によりインデックステーブルをクエリして当該HBaseテーブルの行キーを得て、HBaseテーブルの行キーで当該HBaseテーブルをクエリして、対応する行データを得ることができる。上記の形態では、HBaseテーブル全体に全テーブルスキャンをする必要がなく、クエリ性能が向上できる。
実際の応用では、1つのHBaseテーブルの内容が多いすぎ、クエリが複雑になることを避けるためには、記憶装置は、複数のHBaseテーブルを格納してもよい。2つのHBaseテーブルを例とし、便宜上、一つのHBaseテーブルをHBaseテーブルとし、そのHBaseテーブル識別子を第1のテーブル識別子とし、例えば表1をHBaseテーブルとし、第1のテーブル識別子をテーブルAとする。別のHBaseテーブルを、当該HBaseテーブルに対応する関連HBaseテーブルとし、関連HBaseテーブルのテーブル識別子を、第2のテーブル識別子とし、表5に示されるのは関連HBaseテーブルの例であって、第2のテーブル識別子はテーブルBである。
本応用シーンにおいて、HBaseテーブルと関連HBaseテーブルを作成する際に、HBaseテーブルおよび関連HBaseテーブルのデータを関連付けるためには、HBaseテーブルと関連HBaseテーブルとが同じメタデータを有することが必要がある。例えば表1と表5のように両方が同じメタデータ「携帯番号」を有する。また、表1に示すHBaseテーブルにインデックステーブルを作成する際に、当該インデックステーブルのインデックスがメタデータである必要がある。即ち、図3に示すステップによりインデックステーブルを作成する際に、SparkSQL作成コマンドに含まれるメタデータが「携帯番号」であるので、インデックステーブルが記録するのは、メタデータ「携帯番号」に対応する属性値と行キーとの対応関係となる。
上記の応用シーンにおいて、データクエリステップについて、図6に示されるステップを参照して説明する。
ステップ61では、クエリビルダー装置は、SparkSQL関連クエリコマンドを接続装置に送信し、当該SparkSQL関連クエリコマンドは、HBaseテーブルの第1のテーブル識別子と、当該HBaseテーブルに対応する関連HBaseテーブルの第2のテーブル識別子とを含む。
ここで、SparkSQL関連クエリコマンドには、第1のテーブル識別子(例えば、テーブルA)及び第2のテーブル識別子(例えば、テーブルB)のみが含まれて、メタデータと当該メタデータに対応する属性値等の内容が含まれなくてもよい。
ステップ62では、接続装置は、SparkSQL関連クエリコマンドを受信した後、当該SparkSQL関連クエリコマンドによって、第1のPhoenix関連クエリコマンドを生成し、第1のPhoenix関連クエリコマンドを記憶装置に送信する。
ここで、接続装置は、SparkSQL関連クエリコマンドを解析し、第1のテーブル識別子及び第2のテーブル識別子を得る。そして、当該第2のテーブル識別子を含む第1のPhoenix関連クエリコマンドを生成してもよい。
一例において、接続装置は、SparkSQL関連クエリコマンドを解析して2つのテーブル識別子を得る。これら2つのテーブル識別子を区別するためには、2つのテーブル識別子に対応するHBaseテーブルのデータ量を取得し、データ量が大きい方のテーブルの識別子を第1のテーブル識別子として確定し、データ量が小さい方のテーブルの識別子を第2のテーブル識別子として確定してもよい。第2のテーブル識別子が確定された後、第2のテーブル識別子を含む第1のPhoenix関連クエリコマンドが生成されることができる。
通常、HBaseテーブルと関連HBaseテーブルを作成する際、HBaseテーブルのデータ量が関連HBaseテーブルのデータ量よりも大きいため、HBaseテーブルのテーブル識別子が第1のテーブル識別子となり、関連HBaseテーブルのテーブル識別子が第2のテーブル識別子となる。逆に、HBaseテーブルのデータ量が関連HBaseテーブルのデータ量よりも小さければ、HBaseテーブルのテーブル識別子が第2のテーブル識別子となり、関連HBaseテーブルのテーブル識別子が第1のテーブル識別子となるが、そのステップは同じであり、第2のテーブル識別子を含む第1のPhoenix関連クエリコマンドを生成することであるため、その説明は省略する。
要するに、HBaseテーブルと関連HBaseテーブルのうち、データ量が小さい方のテーブルの識別子を第2のテーブル識別子とする。
一例において、接続装置は、第2のテーブル識別子を決定した後、第2のテーブル識別子に対応するテーブルのデータ量が閾値未満であるか否かをさらに判定し、閾値未満であると判定した場合、第2のテーブル識別子を含む第1のPhoenix関連クエリコマンドを生成し、そして、後続のステップを実行する。そうではないと判定した場合、第1のPhoenix関連クエリコマンドを生成せず、当該第1のテーブル識別子に対応するHBaseテーブルと、第2のテーブル識別子に対応する関連HBaseテーブルとを記憶装置から直接取得し、そしてHBaseテーブル及び関連HBaseテーブルをクエリビルダー装置に送信する。その説明は省略する。
一例において、「接続装置は、テーブル識別子に対応するHBaseテーブルのデータ量を取得する」ステップに対して、接続装置は、テーブル識別子に対応するHBaseテーブルのデータ量を記憶装置から取得することができるが、これに限定されない。
ステップ63では、記憶装置は、第1のPhoenix関連クエリコマンドを受信した後、第2のテーブル識別子に対応する関連HBaseテーブルから全ての第1種の行データを取得し、全ての第1種の行データを接続装置に返信する。ここで、各第1種の行データのそれぞれは、少なくとも1つのメタデータに対応する属性値を含む。
例えば、記憶装置は、第2のテーブル識別子「テーブルB」に対応する関連HBaseテーブルから、全ての第1種の行データを取得し、すなわち、テーブル5の全内容を取得し、全ての第1種の行データを接続装置に返信してもよい。例えば、返信された内容は、第1種の行データ1(行キー011、携帯番号18611111111、身分証明番号100000000000000000)と、第1種の行データ2(行キー012、携帯番号18622222222、身分証明番号200000000000000000)と等々を含んでもよい。
一例において、記憶装置は、前記第1のPhoenix関連クエリコマンドに対するPhoenix応答コマンドを接続装置に送信し、Phoenix応答コマンドは、上記全ての第1種の行データを含んでもよい。
ステップ64では、各第1種のラインデータの各メタデータに対して次の操作を行う。
当該第1のテーブル識別子(SparkSQL関連クエリコマンドに含まれる第1のテーブル識別子)と、当該メタデータに対応するインデックステーブルとが記憶装置に存在すると、接続装置は、第2のPhoenix関連クエリコマンドを生成し、第2のPhoenix関連クエリコマンドを記憶装置に送信し、第2のPhoenix関連クエリコマンドは、当該第1のテーブル識別子と、当該メタデータと、当該メタデータに対応する属性値とを含む。記憶装置は、第2のPhoenix関連クエリコマンドを受信した後、当該第1のテーブル識別子と、当該メタデータとに対応するインデックステーブルから、当該属性値に対応する行キーを取得して、当該第1のテーブル識別子に対応するHBaseテーブルから、当該行キーに対応する第2種の行データを取得し、当該第2種行データを接続装置に返信する。接続装置は、当該第1種の行データと、当該第2種行データとを関連付けしてクエリビルダー装置に返信する。
なお、記憶装置に第1のテーブル識別子、当該メタデータに対応するインデックステーブルが存在しない場合、接続装置は、第2のPhoenix関連クエリコマンドを生成しなくて他のメタデータを分析する。
例えば、第1種の行データ1のメタデータ「身分証明番号」については、第1テーブル識別子(テーブルA)と、メタデータ「身分証明番号」とに対応するインデックステーブルが記憶装置に存在しないため、第2のPhoenix関連クエリコマンドは生成されない。第1種の行データ1のメタデータ「携帯番号」については、第1のテーブル識別子(テーブルA)と、メタデータ「携帯番号」とに対応するインデックステーブルが記憶装置に存在するため、接続装置は、第2のPhoenix関連クエリコマンドを生成し、第2のPhoenix関連クエリコマンドを記憶装置に送信し、第2のPhoenix関連クエリコマンドは、第1のテーブル識別子(テーブルA)と、メタデータ「携帯番号」と、当該メタデータに対応する属性値「18611111111」と、を含む。
記憶装置が第2のPhoenix関連クエリコマンドを受信した後、第1のテーブル識別子(表A)と、メタデータ「携帯番号」とに対応するインデックステーブルは表2に示し、すなわち、記憶装置は表2から属性値「18611111111」に対応する行キー「001」を取得する。第1のテーブル識別子(表A)に対応するHBaseテーブルは表1に示し、すなわち、記憶装置は、行キー「001」に対応する第2種の行データ1「001、張三、北京、28、18611111111」を表1から取得する。そして、第2種の行データを接続装置に返信する。接続装置は、第1種の行データ1と第2種の行データ1とを関連付け、関連付けられた第1種行データ1と第2種行データ1とをクエリビルダー装置に返信する。
上記ステップにより、接続装置は、第1種行データ1と第2種行データ1との関連付けを完成する。そして、接続装置は、第1種行データ2と、第1種行データ3と、第1種行データ4との関連付けをさらに行うことができるが、その関連付けのステップは、第1種行データ1の関連付けの手順と同様であるので、ここでは説明を省略する。
上記実施例において、接続装置は、当該第1テーブル識別子と、当該メタデータに対応するインデックステーブルとが記憶装置に存在するか否かを判定し、具体的な判定方法は、ステップ42を参照して、ここでは説明を省略する。
上記実施例では、「記憶装置は、第2種行データを接続装置に返信する」ステップについて、記憶装置は、第2のPhoenix関連クエリコマンドに対するPhoenix応答コマンドを接続装置に送信し、Phoenix応答コマンドが前記第2種の行データを含んでもよいので、第2種の行データを接続装置に返信することができる。
上記実施例では、「接続装置は、第1種の行データと第2種の行データとを関連付けてクエリビルダー装置に返信する」ステップについて、接続装置は、SparkSQL関連クエリコマンドに対するSparkSQL応答コマンドをクエリビルダー装置に送信し、当該SparkSQL応答コマンドが当該第1種行データと当該第2種行データとを含んでもよいので、当該第1種の行データと当該第2種の行データとを接続装置に返信することができる。
例えば、接続装置は、複数のSparkSQL応答コマンドをクエリビルダー装置に送信してもよい。SparkSQL応答コマンド1は、第1種の行データ1及び第2種の行データ1を含み、SparkSQL応答コマンド2は第1種の行データ2及び第2種の行データ2を含むように類推する。又は、接続装置は、一つのSparkSQL応答コマンドをクエリビルダー装置に送信してもよく、当該SparkSQL応答コマンドは、第1種の行データ1と第2種の行データ1との関連関係及び第1種の行データ2と第2種の行データ2との関連関係を含むように類推する。
上記ステップにより、クエリビルダー装置は、HBaseテーブルと関連HBaseテーブルにおける第1種の行データと第2種の行データとの関連関係が得られるので、クエリビルダー装置が関連付ける必要がないため、クエリビルダー装置の動作量が節約できる。
上記技術案に基づいて、関連HBaseテーブルのデータ量が少ない場合に、接続装置で第1種の行データ1と第2種の行データ1とを関連付け、関連付けられた第1種の行データ1と第2種の行データ1とをクエリビルダー装置に送信する。これにより、HBaseテーブルと関連HBaseテーブルをクエリビルダー装置に返信することを回避し、クエリビルダー装置でHBaseテーブルの第1種の行データと関連HBaseテーブルの第2種の行データとを関連付け、HBaseテーブルと関連HBaseテーブルのクエリ性能を大幅に向上させ、IO操作を低減することができる。
本開示の実施例では、上記方法と同様の出願思想に基づいて、図7に示すようなハードウェア構成を有する接続装置を提案する。ここで、当該接続装置は、機械可読記憶媒体601と、プロセッサ602とを含み、当該機械可読記憶媒体601とプロセッサ602はシステムバス603を介して通信できる。
ここで、機械可読記憶媒体601は、接続装置が上記ステップにおいて実行する操作に対応する機械実行可能なコマンドを格納できる。プロセッサ602は、上記接続装置の操作を実現するように、機械実行可能なコマンドをロードして実行すること。前記接続部の操作は以下のことを含む。クエリビルダー装置から送信されたSparkSQLクエリコマンドを受信することを含む。ここで、前記SparkSQLクエリコマンドは、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含む。前記テーブル識別子と前記メタデータとに対応するインデックステーブルが記憶装置に存在する場合に、第1のPhoenixクエリコマンドを生成し、前記第1のPhoenixクエリコマンドを前記記憶装置に送信する。ここで、前記インデックステーブルは、HBaseテーブルのメタデータの属性値とHBaseテーブルの行キーとの対応関係を記録するためのものであり、前記第1のPhoenixクエリコマンドは、前記テーブル識別子と、前記メタデータと、前記属性値とを含み、前記記憶装置に、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから前記属性値に対応する行キーを取得させ、前記テーブル識別子に対応するHBaseテーブルから前記行キーに対応する行データを取得させて、前記行データを前記接続装置に返信させる。そして、受信された前記行データを前記クエリビルダー装置に返信する。
一例において、機械実行可能なコマンドはさらに、プロセッサ602に以下の操作を実行させる。前記クエリビルダー装置から送信されたSparkSQL作成コマンドを受信する。ここで、前記SparkSQL作成コマンドは、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータとを含む。Phoenix作成コマンドを生成し、前記Phoenix作成コマンドを前記記憶装置に送信する。ここで、前記Phoenix作成コマンドは、前記テーブル識別子と前記メタデータとを含み、前記テーブル識別子に対応するHBaseテーブルから、前記メタデータに対応する属性値と前記属性値に対応する行キーとを前記記憶装置に取得させ、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを作成させて、前記属性値と前記行キーとの対応関係を前記インデックステーブルに記録させる。
一例において、機械実行可能なコマンドはさらに、以下の操作をプロセッサ602に実行させる。前記クエリビルダー装置から送信されたSparkSQL格納コマンドを受信する。ここで、前記SparkSQL格納コマンドは、HBaseテーブルのテーブル識別子と、HBaseテーブルの少なくとも1つのメタデータと、各メタデータに対応する属性値及び行キーとを含む。各メタデータに対し、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合に、第1のPhoenix格納コマンドを生成し、前記第1のPhoenix格納コマンドを前記記憶装置に送信する。ここで、前記第1のPhoenix格納コマンドは、前記テーブル識別子と、前記メタデータと、前記メタデータに対応する属性値と、前記属性値に対応する行キーとを含み、前記記憶装置に、前記属性値と前記行キーとの対応関係を前記テーブル識別子と前記メタデータとに対応するインデックステーブルに記録させる。
一例において、機械実行可能なコマンドはさらに、以下の操作をプロセッサ602に実行させる。第2のPhoenix格納コマンドを生成し、前記記憶装置に前記第2のPhoenix格納コマンドを送信する。ここで、前記第2のPhoenix格納コマンドは、前記テーブル識別子と、前記少なくとも1つのメタデータと、前記各メタデータに対応する属性値及び前記行キーとを含み、前記記憶装置に、前記行キーと前記各メタデータに対応する属性値との対応関係を前記テーブル識別子に対応するHBaseテーブルに記録させる。
一例において、機械実行可能なコマンドはさらに、以下の操作をプロセッサ602に実行させる。前記クエリビルダー装置から送信されたSparkSQL削除コマンドを受信する。前記Phoenix削除コマンドを生成し、前記Phoenix削除コマンドを前記記憶装置に送信する。ここで、前記Phoenix削除コマンドは、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含み、前記記憶装置に、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを削除させるコマンドと、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータと前記メタデータに対応する属性値とを含み、前記記憶装置に、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを削除させるコマンドとのうちのコマンドの1つである。
一例において、機械実行可能なコマンドはさらに、以下の操作をプロセッサ602に実行させる。前記クエリビルダー装置から送信されたSparkSQL取得コマンドを受信する。前記Phoenix取得コマンドを生成し、前記Phoenix取得コマンドを前記記憶装置に送信する。ここで、Phoenix取得コマンドは、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含み、前記記憶装置に、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを前記接続装置に返信させるコマンドと、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータと前記メタデータに対応する属性値とを含み、前記記憶装置に、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを取得させて、前記行データを前記接続装置に返信するコマンドとのうちのコマンドの1つである。前記インデックステーブル又は前記行データを受信した後、前記インデックステーブル又は前記行データを前記クエリビルダー装置に返信する。
一例において、機械実行可能なコマンドはさらに、以下の操作をプロセッサ602に実行させる。前記クエリビルダー装置から送信されたSparkSQL関連クエリコマンドを受信する。ここで、前記SparkSQL関連クエリコマンドは、HBaseテーブルの第1のテーブル識別子と、前記HBaseテーブルに対応する関連HBaseテーブルの第2のテーブル識別子とを含む。第1のPhoenix関連クエリコマンドを生成し、前記第1のPhoenix関連クエリコマンドを前記記憶装置に送信する。ここで、前記第1のPhoenix関連クエリコマンドは、前記第2のテーブル識別子を含み、前記記憶装置に、前記第2のテーブル識別子に対応する関連HBaseテーブルから、全ての第1種の行データを取得させ、全ての第1種の行データを前記接続装置に返信させ、前記各第1種の行データは、少なくとも1つのメタデータに対応する属性値を含む。各第1種の行データの各メタデータのそれぞれに対し、前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、第2のPhoenix関連クエリコマンドを生成し、前記第2のPhoenix関連クエリコマンドを前記記憶装置に送信する操作を行う。ここで、前記第2のPhoenix関連クエリコマンドは、前記第1テーブル識別子と、前記メタデータと、及び前記メタデータに対応する属性値とを含み、前記記憶装置に、前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行キーを取得させ、前記第1テーブル識別子に対応するHBaseテーブルから、前記行キーに対応する第2種の行データを取得させ、前記第2種の行データを前記接続装置に返信させて、前記第1種の行データと前記第2種の行データとを関連付けた後、前記クエリビルダー装置に返信する。
一つの実施例として、機械可読記憶媒体601は、任意の電子的、磁気的、光学的、または他の物理的記憶装置であってもよく、例えば、実行可能命令や、データなどの情報を含んでまたは格納してもよい。例えば、機械可読記憶媒体は、RAM(Radom Access Memory、ランダムアクセス記憶装置)、揮発性記憶装置、不揮発性記憶装置、フラッシュ記憶装置、記憶装置ドライブ(ハードディスクドライブ)、ソリッドステートハードディスク、任意の種類の記憶ディスク(光ディスク、dvdなど)、または似た記憶媒体、あるいはそれらの組合せであってもよい。
上記の説明は、本開示の実施例にすぎず、本開示を限定するものではない。本開示は、当業者にとって様々な変更及び変形が可能である。本開示の精神及び原理の範囲内で行われるあらゆる修正や、等価置換、変更等は、本開示の特許請求の範囲に含まれるべきである。

Claims (21)

  1. クエリビルダー装置がSparkSQLクエリコマンドを接続装置に送信するステップであって、前記SparkSQLクエリコマンドが、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含むステップと、
    前記接続装置が前記SparkSQLクエリコマンドを受信した後、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが記憶装置に存在する場合に、第1のPhoenixクエリコマンドを生成し、前記第1のPhoenixクエリコマンドを前記記憶装置に送信するステップであって、前記インデックステーブルがHBaseテーブルのメタデータの属性値とHBaseテーブルの行キーとの対応関係を記録するためのものであり、前記第1のPhoenixクエリコマンドが、前記テーブル識別子と、前記メタデータと、前記属性値とを含むステップと、
    前記記憶装置が前記第1のPhoenixクエリコマンドを受信した後、前記テーブル識別子と前記メタデータとに対応する前記インデックステーブルから前記属性値に対応する行キーを取得し、前記テーブル識別子に対応するHBaseテーブルから前記行キーに対応する行データを取得し、前記行データを前記接続装置に返信するステップと、
    前記接続装置が前記行データを受信した後、前記行データを前記クエリビルダー装置に返信するステップと、
    を含むデータクエリ方法。
  2. 請求項1に記載のデータクエリ方法であって、
    前記クエリビルダー装置がSparkSQL作成コマンドを前記接続装置に送信するステップであって、前記SparkSQL作成コマンドが、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータとを含むステップと、
    前記接続装置が前記SparkSQL作成コマンドを受信した後、Phoenix作成コマンドを生成し、前記Phoenix作成コマンドを前記記憶装置に送信するステップであって、前記Phoenix作成コマンドが前記テーブル識別子と前記メタデータとを含むステップと、
    前記記憶装置が前記Phoenix作成コマンドを受信した後、前記テーブル識別子に対応するHBaseテーブルから前記メタデータに対応する属性値と、前記属性値に対応する行キーとを取得し、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを作成し、前記インデックステーブルに前記属性値と前記行キーとの対応関係を記録するステップと、
    をさらに含むデータクエリ方法。
  3. 請求項1に記載のデータクエリ方法であって、
    前記クエリビルダー装置がSparkSQL格納コマンドを前記接続装置に送信するステップであって、前記SparkSQL格納コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルの少なくとも1つのメタデータと、各メタデータに対応する属性値と、行キーとを含むステップと、
    前記接続装置が前記SparkSQL格納コマンドを受信した後、各メタデータに対して、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、第1のPhoenix格納コマンドを生成し、前記第1のPhoenix格納コマンドを前記記憶装置に送信する操作を行い、前記第1のPhoenix格納コマンドは、前記テーブル識別子と、前記メタデータと、前記メタデータに対応する属性値と、前記属性値に対応する行キーとを含むものである、ステップと、
    前記記憶装置が前記第1のPhoenix格納コマンドを受信した後、前記テーブル識別子と前記メタデータとに対応するインデックステーブルに前記属性値と前記行キーとの対応関係を記録するステップと、
    を含むデータクエリ方法。
  4. 請求項3に記載のデータクエリ方法であって、
    前記接続装置が前記SparkSQL格納コマンドを受信した後、第2のPhoenix格納コマンドを生成し、前記第2のPhoenix格納コマンドを前記記憶装置に送信するステップであって、前記第2のPhoenix格納コマンドが、前記テーブル識別子と、前記少なくとも1つのメタデータと、前記各メタデータに対応する属性値と、行キーとを含むステップと、
    前記記憶装置が前記第2のPhoenix格納コマンドを受信した後、前記行キーと各メタデータに対応する属性値との対応関係を、前記テーブル識別子に対応するHBaseテーブルに記録するステップと、
    を含むデータクエリ方法。
  5. 請求項1に記載のデータクエリ方法であって、
    前記クエリビルダー装置が前記接続装置にSparkSQL削除コマンドを送信するステップと、
    前記接続装置が前記SparkSQL削除コマンドを受信した後、Phoenix削除コマンドを生成し、前記Phoenix削除コマンドを前記記憶装置に送信するステップであって、前記Phoenix削除コマンドが、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含み、又は、前記Phoenix削除コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータとに対応する属性値とを含むステップと、
    前記記憶装置が前記Phoenix削除コマンドを受信した後、前記Phoenix削除コマンドがHBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを削除し、前記Phoenix削除コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを削除するステップと、
    を含むデータクエリ方法。
  6. 請求項1に記載のデータクエリ方法であって、
    前記クエリビルダー装置がSparkSQL取得コマンドを前記接続装置に送信するステップと、
    前記接続装置が前記SparkSQL取得コマンドを受信した後、Phoenix取得コマンドを生成し、前記Phoenix取得コマンドを前記記憶装置に送信するステップであって、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータとを含み、または、Phoenix取得コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含むステップと、
    前記記憶装置が前記Phoenix取得コマンドを受信した後、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを前記接続装置に返信し、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから前記属性値に対応する行データを取得し、前記行データを前記接続装置に返信するステップと、
    前記接続装置が前記インデックステーブル又は前記行データを受信した後、前記インデックステーブル又は前記行データを前記クエリビルダー装置に返信するステップと、
    を含むデータクエリ方法。
  7. 請求項1に記載のデータクエリ方法であって、
    前記クエリビルダー装置がSparkSQL関連クエリコマンドを前記接続装置に送信するステップであって、前記SparkSQL関連クエリコマンドが、HBaseテーブルの第1のテーブル識別子と、前記HBaseテーブルに対応する関連HBaseテーブルの第2のテーブル識別子とを含むステップと、
    前記接続装置が前記SparkSQL関連クエリコマンドを受信した後、第1のPhoenix関連クエリコマンドを生成し、前記第1のPhoenix関連クエリコマンドを前記記憶装置に送信するステップであって、前記第1のPhoenix関連クエリコマンドが第2のテーブル識別子を含むステップと、
    前記記憶装置が前記第1のPhoenix関連クエリコマンドを受信した後、前記第2のテーブル識別子に対応する関連HBaseテーブルから全ての第1種の行データを取得し、全ての第1種の行データを前記接続装置に返信するステップであって、各第1種のデータのいずれも少なくとも1つのメタデータに対応する属性値を含むステップと、
    各第1種の行データの各メタデータに対し、
    第1のテーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、前記接続装置が第2のPhoenix関連クエリコマンドを生成し、前記第2のPhoenix関連クエリコマンドを前記記憶装置に送信する操作であって、前記第2のPhoenix関連クエリコマンドが、前記第1のテーブル識別子と、前記メタデータと、前記メタデータが対応する属性値とを含む操作と、
    前記記憶装置が前記第2のPhoenix関連クエリコマンドを受信した後、前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行キーを取得し、前記第1のテーブル識別子に対応するHBaseテーブルから、前記行キーに対応する第2種の行データを取得し、前記第2種の行データを前記接続装置に返信する操作と、
    前記接続装置が前記第1種の行データと前記第2種の行データとを関連付けて前記クエリビルダー装置に返信する操作とを、行うステップと、
    を含むデータクエリ方法。
  8. データクエリシステムであって、
    SparkSQLクエリコマンドを接続装置に送信するためのクエリビルダー装置であって、前記のSparkSQLクエリコマンドが、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含むクエリビルダー装置と、
    前記SparkSQLクエリコマンドを受信した後、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが記憶装置に存在する場合に、第1のPhoenixクエリコマンドを生成し、前記第1のPhoenixクエリコマンドを前記記憶装置に送信するための接続装置であって、前記のインデックステーブルがHBaseテーブルのメタデータの属性値とHBaseテーブルの行キーとの対応関係を記録するためのものであり、前記第1のPhoenixクエリコマンドが、前記テーブル識別子と、前記メタデータと、前記属性値とを含む接続装置と、
    前記第1のPhoenixクエリコマンドを受信した後、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行キーを取得し、前記テーブル識別子に対応するHBaseテーブルから、前記行キーに対応する行データを取得し、前記行データを前記接続装置に送信する前記記憶装置と、を含み、
    前記接続装置は、さらに、前記行データを受信した場合に前記行データを前記クエリビルダー装置に返信するためのものである
    データクエリシステム。
  9. 請求項8に記載のデータクエリシステムであって、
    前記クエリビルダー装置は、さらに、SparkSQL作成コマンドを前記接続装置に送信するためのものであり、前記SparkSQL作成コマンドが、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータとを含み、
    前記接続装置は、さらに、前記SparkSQL作成コマンドを受信した後、Phoenix作成コマンドを生成し、前記Phoenix作成コマンドを前記記憶装置に送信するためのものであり、前記Phoenix作成コマンドが、前記テーブル識別子と、前記メタデータとを含み、
    前記記憶装置は、さらに、Phoenix作成コマンドを受信した後、前記テーブル識別子に対応するHBaseテーブルから、前記メタデータに対応する属性値と、前記属性値に対応する行キーとを取得し、テーブル識別子と前記メタデータとに対応するインデックステーブルを作成し、前記属性値と前記行キーとの対応関係を前記インデックステーブルに記録するためのものである
    データクエリシステム。
  10. 請求項8に記載のデータクエリシステムであって、
    前記クエリビルダー装置は、さらに、SparkSQL格納コマンドを前記接続装置に送信するためのものであり、前記SparkSQL格納コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルの少なくとも1つのメタデータと、各メタデータに対応する属性値と行キーとを含み、
    前記接続装置は、さらに、前記SparkSQL格納コマンドを受信した後、各メタデータに対し、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、第1のPhoenix格納コマンドを生成し、前記第1のPhoenix格納コマンドを前記記憶装置に送信する操作を行い、前記第1のPhoenix格納コマンドが、前記テーブル識別子と、前記メタデータと、前記メタデータに対応する属性値と、前記属性値に対応する行キーとを含み、
    前記記憶装置は、さらに、前記第1のPhoenix格納コマンドを受信した後、前記属性値と前記行キーとに対応する関係を、前記テーブル識別子と前記メタデータとに対応するインデックステーブルに記録するためのものである
    データクエリシステム。
  11. 請求項10に記載のデータクエリシステムであって、
    前記接続装置は、さらに、前記SparkSQL格納コマンドを受信した後、第2のPhoenix格納コマンドを生成し、前記第2のPhoenix格納コマンドを前記記憶装置に送信するためのものであり、前記の第2のPhoenix格納コマンドが、前記のテーブル識別子と、前記の少なくとも1つのメタデータと、前記の各メタデータに対応する属性値と行キーとを含み、
    前記記憶装置は、さらに、前記第2のPhoenix格納コマンドを受信した後、前記行キー及び各メタデータに対応する属性値の対応関係を、前記テーブル識別子が対応するHBaseテーブルに記録するためのものである
    データクエリシステム。
  12. 請求項8に記載のデータクエリシステムであって、
    前記クエリビルダー装置は、さらに、SparkSQL削除コマンドを前記接続装置に送信するためのものであり、
    前記接続装置は、さらに、前記SparkSQL削除コマンドを受信した後、Phoenix削除コマンドを生成し、前記Phoenix削除コマンドを前記記憶装置に送信するためのものであり、前記Phoenix削除コマンドが、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含み、または、前記Phoenix削除コマンドが、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含み、
    前記記憶装置は、さらに、前記Phoenix削除コマンドを受信した後、前記Phoenix削除コマンドがHBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを削除し、前記Phoenix削除コマンドがHBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを削除するためのものである
    データクエリシステム。
  13. 請求項8に記載のデータクエリシステムであって、
    前記クエリビルダー装置は、さらに、SparkSQL取得コマンドを前記接続装置に送信するためのものであり、
    前記接続装置は、さらに、前記SparkSQL取得コマンドを受信した後、Phoenix取得コマンドを生成し、前記Phoenix取得コマンドを前記記憶装置に送信するためのものであり、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータとを含み、又は、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含み、
    前記記憶装置は、さらに、前記Phoenix取得コマンドを受信した後、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子及びHBaseテーブルのメタデータを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを前記接続装置に返信し、前記Phoenix取得コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含む場合、前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを取得し、前記行データを前記接続装置に返信するためのものであり、
    前記接続装置は、さらに、前記インデックステーブル又は前記行データを受信した後、前記インデックステーブル又は前記行データを前記クエリビルダー装置に返信するためのものである
    データクエリシステム。
  14. 請求項8に記載のデータクエリシステムであって、
    前記クエリビルダー装置は、さらに、SparkSQL関連クエリコマンドを前記接続装置に送信するためのものであり、前記SparkSQL関連クエリコマンドが、HBaseテーブルの第1のテーブル識別子と、前記HBaseテーブルに対する関連HBaseテーブルの第2のテーブル識別子とを含み、
    前記接続装置は、さらに、前記SparkSQL関連クエリコマンドを受信した後、第1のPhoenix関連クエリコマンドを生成し、前記第1のPhoenix関連クエリコマンドを前記記憶装置に送信するためのものであり、前記第1のPhoenix関連クエリコマンドが、第2のテーブル識別子を含み、
    前記記憶装置は、さらに、前記第1のPhoenix関連クエリコマンドを受信した後、第2のテーブル識別子に対応する関連HBaseテーブルから、全ての第1種の行データを取得し、全ての第1種の行データを接続装置に返信するためのものであり、各前記第1種のデータのそれぞれが少なくとも1つのメタデータに対応する属性値を含み、
    各第1種行データ1の各メタデータに対し、
    前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在すると、前記接続装置は、さらに、第2のPhoenix関連クエリコマンドを生成し、前記第2のPhoenix関連クエリコマンドを前記記憶装置に送信するためのものであり、前記第2のPhoenix関連クエリコマンドが、前記第1のテーブル識別子と、前記メタデータと、前記メタデータが対応する属性値とを含み、
    前記記憶装置は、さらに、前記第2のPhoenix関連クエリコマンドを受信した後、前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルから、前記の属性値に対応する行キーを取得し、前記第1のテーブル識別子に対応するHBaseテーブルから、前記行キーに対応する第2種の行データを取得し、前記第2種行データを前記接続装置に返信するためのものであり、
    前記接続装置は、さらに、前記第1種の行データと前記第2種の行データとを関連付けて前記クエリビルダー装置に返信するためのものである
    データクエリシステム。
  15. プロセッサと、
    機械実行可能なコマンドを格納する機械可読記憶媒体と、
    を含む接続装置であって、
    前記機械実行可能なコマンドを読み取って実行することにより、前記プロセッサは、
    クエリビルダー装置から送信されたSparkSQL取得コマンドを受信し、前記のSparkSQLクエリコマンドが、HBaseテーブルのテーブル識別子と、前記のHBaseテーブルのメタデータと、前記のメタデータに対応する属性値とを含むステップと、
    前記テーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、第1のPhoenixクエリコマンドを生成し、前記第1のPhoenixクエリコマンドを前記記憶装置に送信し、前記のインデックステーブルが、HBaseテーブルのメタデータの属性値とHBaseテーブルの行キーとの対応関係を記録するためのものであり、前記第1のPhoenixクエリコマンドが、前記テーブル識別子と、前記メタデータと、前記属性値とを含み、前記記憶装置が前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行キーを取得し、前記テーブル識別子に対応するHBaseテーブルから、前記行キーに対応する行データを取得し、前記行データを前記接続装置に返信するステップと、
    受信された前記行データを前記クエリビルダー装置に返信するステップとを実行する
    接続装置。
  16. 請求項15に記載の接続装置であって、
    前記機械実行可能なコマンドにより、前記プロセッサは、
    前記クエリビルダー装置から送信されたSparkSQL作成コマンドを受信し、前記SparkSQL作成コマンドが、HBaseテーブルのテーブル識別子と、前記HBaseテーブルのメタデータとを含むステップと、
    Phoenix作成コマンドを生成し、前記Phoenix作成コマンドを前記記憶装置に送信し、前記Phoenix作成コマンドが前記のテーブル識別子と前記メタデータとを含み、前記記憶装置が前記テーブル識別子に対応するHBaseテーブルから、前記メタデータに対応する属性値と前記属性値に対応する行キーとを取得し、前記テーブル識別子と前記メタデータとに対応するインデックステーブルを作成し、前記属性値と前記行キーとの対応関係を前記インデックステーブルに記録するステップと、を実行する
    接続装置。
  17. 請求項15に記載の接続装置であって、
    前記機械実行可能なコマンドにより、前記プロセッサは、
    前記クエリビルダー装置から送信されたSparkSQL格納コマンドを受信し、前記のSparkSQL格納コマンドが、HBaseテーブルのテーブル識別子と、HBaseテーブルの少なくとも1つのメタデータと、各メタデータに対応する属性値と、行キーとを含むステップと、
    各メタデータに対し、前記テーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、第1のPhoenix格納コマンドを生成し、前記第1のPhoenix格納コマンドを前記記憶装置に送信する操作を行い、前記第1のPhoenix格納コマンドが、前記テーブル識別子と、前記メタデータと、前記メタデータに対応する属性値と、前記属性値に対応する行キーとを含み、前記記憶装置が前記属性値と前記行キーとの対応関係を前記テーブル識別子と前記メタデータとに対応するインデックステーブルに記録するステップと、を実行する
    接続装置。
  18. 請求項17に記載の接続装置であって、
    前記機械実行可能なコマンドにより、前記プロセッサは、
    第2のPhoenix格納コマンドを生成し、前記第2のPhoenix格納コマンドを前記記憶装置に送信し、前記第2のPhoenix格納コマンドは、前記テーブル識別子と、前記少なくとも1つのメタデータと、前記各メタデータに対応する属性値と前記行キーとを含み、前記記憶装置が前記行キーと前記各メタデータに対応する属性値との対応関係を前記テーブル識別子に対応するHBaseテーブルに記録する
    接続装置。
  19. 請求項15に記載の接続装置であって、
    前記機械実行可能なコマンドにより、前記プロセッサは、
    前記クエリビルダー装置から送信されたSparkSQL削除コマンドを受信するステップと、
    Phoenix削除コマンドを生成し、前記Phoenix削除コマンドを前記記憶装置に送信し、前記Phoenix削除コマンドは、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含み、前記記憶装置が前記テーブル識別子と前記メタデータとに対応するインデックステーブルを削除するコマンドと、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータと前記メタデータに対応する属性値とを含み、前記記憶装置が前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを削除するコマンドとのうちの1つのコマンドであるスップと、を実行する
    接続装置。
  20. 請求項15に記載の接続装置であって、
    前記機械実行可能なコマンドにより、前記プロセッサは、
    前記クエリビルダー装置から送信されたSparkSQL取得コマンドを受信するステップと、
    前記Phoenix取得コマンドを生成し、前記Phoenix取得コマンドを前記記憶装置に送信し、前記Phoenix取得コマンドは、HBaseテーブルのテーブル識別子とHBaseテーブルのメタデータとを含み、前記記憶装置が前記テーブル識別子と前記メタデータとに対応するインデックステーブルを前記接続装置に返信するコマンドと、HBaseテーブルのテーブル識別子と、HBaseテーブルのメタデータと、前記メタデータに対応する属性値とを含み、前記記憶装置が前記テーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行データを取得し、前記行データを前記接続装置に返信するコマンドとうちの1つのコマンドのであるステップと、
    前記インデックステーブル又は前記行データを受信した後、前記インデックステーブル又は前記行データを前記クエリビルダー装置に返信するステップと、実行する
    接続装置。
  21. 請求項15に記載の接続装置であって、
    前記機械実行可能なコマンドにより、前記プロセッサは、
    前記クエリビルダー装置から送信されたSparkSQL関連クエリコマンドを受信し、前記SparkSQL関連クエリコマンドが、HBaseテーブルの第1のテーブル識別子と、前記HBaseテーブルに対応する関連HBaseテーブルの第2のテーブル識別子とを含むステップと、
    第1のPhoenix関連クエリコマンドを生成し、前記第1のPhoenix関連クエリコマンドを前記記憶装置に送信し、前記第1のPhoenix関連クエリコマンドが前記第2のテーブル識別子を含み、前記記憶装置が前記第2のテーブル識別子に対応する関連HBaseテーブルから、全ての第1種の行データを取得し、全ての第1種の行データを接続装置に返信し、前記各第1種の行データのそれぞれが少なくとも1つのメタデータに対応する属性値を含むステップと、
    各第1種の行データの各メタデータに対し、
    前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルが前記記憶装置に存在する場合、第2のPhoenix関連クエリコマンドを生成し、前記第2のPhoenix関連クエリコマンドを前記記憶装置に送信し、前記第2のPhoenix関連クエリコマンドが、前記第1のテーブル識別子と、前記メタデータと、前記メタデータに対応する属性値とを含み、前記記憶装置が前記第1のテーブル識別子と前記メタデータとに対応するインデックステーブルから、前記属性値に対応する行キーを取得し、前記第1テーブル識別子に対応するHBaseテーブルから、前記行キーに対応する第2種の行データを取得し、前記第2種の行データを前記接続装置に返信する操作を行うステップと、
    前記第1種の行データと前記第2種の行データとを関連付けて前記クエリビルダー装置に返信するステップと、を実行する
    前記接続装置。
JP2020544099A 2017-11-30 2018-11-29 データクエリ Active JP7018516B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201711235855.2 2017-11-30
CN201711235855.2A CN109101516B (zh) 2017-11-30 2017-11-30 一种数据查询方法和服务器
PCT/CN2018/118249 WO2019105420A1 (zh) 2017-11-30 2018-11-29 数据查询

Publications (2)

Publication Number Publication Date
JP2021502655A true JP2021502655A (ja) 2021-01-28
JP7018516B2 JP7018516B2 (ja) 2022-02-10

Family

ID=64796513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020544099A Active JP7018516B2 (ja) 2017-11-30 2018-11-29 データクエリ

Country Status (5)

Country Link
US (1) US11269881B2 (ja)
EP (1) EP3683697A4 (ja)
JP (1) JP7018516B2 (ja)
CN (1) CN109101516B (ja)
WO (1) WO2019105420A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083597A (zh) * 2019-03-16 2019-08-02 平安普惠企业管理有限公司 命令查询方法、装置、计算机设备和存储介质
CN110457346B (zh) * 2019-07-05 2024-04-30 中国平安财产保险股份有限公司 数据查询方法、装置及计算机可读存储介质
CN111125090B (zh) * 2019-11-12 2023-05-30 中盈优创资讯科技有限公司 数据存取方法及装置
CN111104426B8 (zh) * 2019-11-22 2024-04-23 北京傲速科技有限公司 一种数据查询方法及系统
CN110888929B (zh) * 2019-12-06 2022-03-29 秒针信息技术有限公司 数据处理方法、装置、数据节点及存储介质
CN111125216B (zh) * 2019-12-10 2024-03-12 中盈优创资讯科技有限公司 数据导入Phoenix的方法及装置
US11386089B2 (en) 2020-01-13 2022-07-12 The Toronto-Dominion Bank Scan optimization of column oriented storage
CN113434580A (zh) * 2020-03-23 2021-09-24 北京国双科技有限公司 Phoenix数据库访问方法、装置、设备及介质
CN112800073B (zh) * 2021-01-27 2023-03-28 浪潮云信息技术股份公司 一种基于NiFi更新Delta Lake的方法
CN113656397A (zh) * 2021-07-02 2021-11-16 阿里巴巴新加坡控股有限公司 一种针对时序数据的索引构建及查询的方法、装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010224824A (ja) * 2009-03-23 2010-10-07 Toshiba Corp 情報処理装置
JP2015072688A (ja) * 2013-10-01 2015-04-16 クラウデラ インコーポレイテッド Hadoopにおける強化されたSQLライクなクエリのためのバックグラウンドフォーマット最適化
US20170139997A1 (en) * 2015-11-18 2017-05-18 American Express Travel Related Services Company, System and method for reading and writing to big data storage formats

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8489773B1 (en) * 2008-06-06 2013-07-16 Amdocs Software Systems Limited System, method, and computer program for sending a response to a client based on a replication message received from a master server
CN101350028A (zh) * 2008-07-10 2009-01-21 西安中电商务信息技术有限公司 一种基于SQL结构化查询语言的XML数据XPath查询方法
CN101788992A (zh) * 2009-05-06 2010-07-28 厦门东南融通系统工程有限公司 一种数据库查询语句的转换方法和转换系统
EP2780831A4 (en) * 2011-11-18 2015-07-22 Hewlett Packard Development Co GENERATION OF QUERY SUMMARIES WITH ROW COLUMN DATA STORAGE
CN102737132A (zh) * 2012-06-25 2012-10-17 天津神舟通用数据技术有限公司 基于数据库行列混合存储的多规则复合压缩方法
CN104750727B (zh) * 2013-12-30 2019-03-26 沈阳亿阳计算机技术有限责任公司 一种列式内存存储查询装置及列式内存存储查询方法
US9779150B1 (en) 2014-08-15 2017-10-03 Tableau Software, Inc. Systems and methods for filtering data used in data visualizations that use relationships
US20160104090A1 (en) * 2014-10-09 2016-04-14 Splunk Inc. State determination using per-entity thresholds
CN105354255B (zh) * 2015-10-21 2018-01-02 华为技术有限公司 数据查询方法和装置
CN106682042B (zh) * 2015-11-11 2019-11-22 杭州海康威视数字技术股份有限公司 一种关系数据缓存及查询方法及装置
CN105589969A (zh) * 2015-12-23 2016-05-18 浙江大华技术股份有限公司 一种数据处理方法及装置
CN107122437B (zh) 2017-04-19 2020-08-04 高新兴科技集团股份有限公司 一种支持多条件检索和实时分析的大数据处理方法
CN107133342A (zh) * 2017-05-16 2017-09-05 广州舜飞信息科技有限公司 一种IndexR实时数据分析库

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010224824A (ja) * 2009-03-23 2010-10-07 Toshiba Corp 情報処理装置
JP2015072688A (ja) * 2013-10-01 2015-04-16 クラウデラ インコーポレイテッド Hadoopにおける強化されたSQLライクなクエリのためのバックグラウンドフォーマット最適化
US20170139997A1 (en) * 2015-11-18 2017-05-18 American Express Travel Related Services Company, System and method for reading and writing to big data storage formats

Also Published As

Publication number Publication date
US11269881B2 (en) 2022-03-08
WO2019105420A1 (zh) 2019-06-06
CN109101516A (zh) 2018-12-28
EP3683697A4 (en) 2020-07-29
CN109101516B (zh) 2019-09-17
US20200372028A1 (en) 2020-11-26
JP7018516B2 (ja) 2022-02-10
EP3683697A1 (en) 2020-07-22

Similar Documents

Publication Publication Date Title
JP7018516B2 (ja) データクエリ
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
US20160364407A1 (en) Method and Device for Responding to Request, and Distributed File System
US8214355B2 (en) Small table: multitenancy for lots of small tables on a cloud database
CN104618482B (zh) 访问云数据的方法、服务器、传统存储设备、系统
US8700567B2 (en) Information apparatus
US8990227B2 (en) Globally unique identification of directory server changelog records
JP5600736B2 (ja) データベース管理方法およびシステム
JP2015501976A (ja) 大量データプラットフォームを操作するシステム及び方法
US20130325915A1 (en) Computer System And Data Management Method
CN108614837B (zh) 文件存储和检索的方法及装置
CN104408111A (zh) 一种删除重复数据的方法及装置
CN111221791A (zh) 一种多源异构数据导入数据湖的方法
WO2017161540A1 (zh) 数据查询的方法、数据对象的存储方法和数据系统
US20190377815A1 (en) Storing data items and identifying stored data items
CN112395264A (zh) 分布式存储系统中逻辑目标与卷之间映射的处理方法
CN112817973A (zh) 数据处理方法、装置、数据处理设备及存储介质
CN108280123B (zh) 一种HBase的列聚合方法
US20220342888A1 (en) Object tagging
WO2023083237A1 (zh) 图数据的管理
US10762139B1 (en) Method and system for managing a document search index
CN107526530B (zh) 数据处理方法和设备
US20230075443A1 (en) Conversion and migration of key-value store to relational model
US20130218851A1 (en) Storage system, data management device, method and program
US8745072B2 (en) Virtual directory server changelog

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210907

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210916

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: 20220125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220131

R150 Certificate of patent or registration of utility model

Ref document number: 7018516

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150