JP6998976B2 - クエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体 - Google Patents

クエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体 Download PDF

Info

Publication number
JP6998976B2
JP6998976B2 JP2020002745A JP2020002745A JP6998976B2 JP 6998976 B2 JP6998976 B2 JP 6998976B2 JP 2020002745 A JP2020002745 A JP 2020002745A JP 2020002745 A JP2020002745 A JP 2020002745A JP 6998976 B2 JP6998976 B2 JP 6998976B2
Authority
JP
Japan
Prior art keywords
query
node
logical execution
subplan
data
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.)
Active
Application number
JP2020002745A
Other languages
English (en)
Other versions
JP2020191067A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2020191067A publication Critical patent/JP2020191067A/ja
Application granted granted Critical
Publication of JP6998976B2 publication Critical patent/JP6998976B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/248Presentation of query results
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Operations Research (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、モノのインターネット技術分野及びクラウドコンピューティング分野に関し、特にクエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体に関する。
モノのインターネット分野では、データの重要性は企業にとって計り知れないが、データの背後にある価値をマイニングすることによって、過去を分析し、現在を監視し、未来を決定することができる。このプロセスにおいて重要な段階はデータのクエリである。
モノのインターネット分野におけるデータタイプが多様化されており、データ量が大容量化されており、クエリシーンは、オンライン分析処理(On-Line Analysis Processing,OLAPと略称される)スケールクエリサービスと、オンライントランザクション処理(On-Line Transaction Processing,OLTPと略称される)スケールクエリサービスとをカバーするが、従来のデータクエリエンジンがOLAPスケールクエリサービスとOLTPスケールクエリサービスの両方をサポートすることは困難であり、つまり、従来のデータクエリ技術は、モノのインターネット分野のクエリ要件を満たすことができない。
本開示は、従来技術に存在する技術的問題の少なくとも1つを解決することを目的とし、クエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体を提供している。
第1態様において、本開示の実施形態は、クエリ処理方法を提供しており、
サーバーノードによって、クエリリクエストを解析して対応する論理実行プランを生成するステップと、
前記サーバーノードによって、前記論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するステップと、
前記論理実行プランがOLAPスケールクエリサービスに属すると判定された場合に、前記サーバーノードによって前記論理実行プランを複数の論理実行サブプランに分割して、分割された前記論理実行プランをコーディネーターノードに送信するステップと、
前記コーディネーターノードによって、前記論理実行プランに対応する第1物理実行プランを生成して前記サーバーノードにフィードバックするステップであって、前記第1物理実行プランには各前記論理実行サブプランに対応するワーカーノードのノード情報が記録されているステップと、
前記サーバーノードによって、前記第1物理実行プランに基づいて各前記論理実行サブプランを対応するワーカーノードに割り当てるステップと、
前記ワーカーノードによって、対応する論理実行サブプランを処理して処理サブ結果を得、前記処理サブ結果をレイヤーごとに報告するステップと、
前記サーバーノードによって、受信された処理サブ結果を集計して、最終的なクエリ結果を生成して、前記最終的なクエリ結果をユーザにフィードバックするステップと、を含む。
いくつかの実施形態において、前記論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、前記サーバーノードによって前記論理実行プランをコーディネーターノードに送信し、
前記コーディネーターノードによって、前記論理実行プランに対応する第2物理実行プランを生成して前記サーバーノードにフィードバックし、前記第2物理実行プランには前記論理実行プランに対応するワーカーノードのノード情報が記録されており、
前記サーバーノードによって、前記第2物理実行プランに基づいて前記論理実行プランを対応するワーカーノードに割り当て、
前記ワーカーノードによって、対応する前記論理実行プランを処理して最終的なクエリ結果を得、前記最終的なクエリ結果を前記サーバーノードにアップロードし、
前記サーバーノードによって、受信された前記最終的なクエリ結果をユーザにフィードバックする。
いくつかの実施形態において、サーバーノードによって、前記論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するステップは、
前記サーバーノードによって、前記論理実行プランに関連付けられた各データソースのデータ量をストレージノードに照会することと、
前記サーバーノードによって、前記ストレージノードからフィードバックされた、前記論理実行プランに関連付けられた各データソースのデータ量に基づいて、前記論理実行プランに対応するデータクエリ合計量を推定することと、
前記サーバーノードによって、前記データクエリ合計量と予め設定されたクエリ合計量とを比較することと、
比較の結果、前記データクエリ合計量が前記予め設定されたクエリ合計量よりも大きい場合に、前記サーバーノードによって、前記論理実行プランがOLAPスケールクエリサービスに属すると判定し、前記データクエリ合計量が前記予め設定されたクエリ合計量以下である場合に、前記サーバーノードによって、前記論理実行プランがOLTPスケールクエリサービスに属すると判定することと、を含む。
いくつかの実施形態において、前記ワーカーノードによって対応する論理実行サブプランを処理するステップは具体的に、
ワーカーノード自体によって受信された論理実行サブプランがクエリプランに属するか又は集合プランに属するかを前記ワーカーノードによって検出することと、
ワーカーノード自体によって受信された論理実行サブプランがクエリプランに属すると検出された場合に、前記ストレージノードによって前記論理実行サブプランについてのデータベースを作成するために、前記ワーカーノードによって前記論理実行サブプランを前記ストレージノードに転送することと、
前記ストレージノードによって作成された前記論理実行サブプランについてのデータベースにおいて、対応するクエリ動作を前記ワーカーノードによって実行して、対応するクエリサブ結果を得ることとを含み、
前記ストレージノードがワーカーノードによって送信された論理実行サブプランを受信した場合に、前記論理実行サブプランについてのデータベースを前記ストレージノードによって作成することをさらに含む。
いくつかの実施形態において、ワーカーノード自体によって受信された論理実行サブプランが集合プランに属すると検出された場合に、前記ワーカーノードによって下位ワーカーノードから報告されるクエリサブ結果を受信して集合処理を行う。
いくつかの実施形態において、前記ストレージノードによって前記論理実行サブプランについてのデータベースを作成するステップは具体的に、
前記ストレージノードによって、受信された前記論理実行サブプランに基づいて、前記論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得することと、
前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいか否かを前記ストレージノードによって判断することと、
前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定された場合に、前記論理実行サブプランに関連付けられた各データソースから提供されたデータテーブルを、前記ストレージノードによってリレーショナルデータベースにマッピングすることと、
前記論理実行サブプランに関連付けられたデータソースの数が1であると判定された場合に、前記論理実行サブプランに関連付けられた1つのデータソースから提供されたデータテーブルをデータベースとすることと、を含む。
いくつかの実施形態において、前記ストレージノードによって、受信された前記論理実行サブプランに基づいて、前記論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得するステップは、
前記論理実行サブプランに関連付けられたデータソースを前記ストレージノードによって特定することと、
予め記憶されている対応関係テーブルから、前記論理実行サブプランに関連付けられた各データソースに対応する推奨処理フィールドを、前記ストレージノードによって特定することであって、前記対応関係テーブルには異なるデータソース及びそれらに対応する推奨処理フィールドが記録されていることと、
前記論理実行サブプランに関連付けられたデータソースのそれぞれについて、該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであるか否かを前記ストレージノードによって判断することと、
該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定された場合に、該データソースが受信されたクエリ条件に応じて該データソース自体に記憶されているデータテーブルを選別して選別済みデータテーブルを前記ストレージノードにフィードバックするために、前記論理実行サブプランにおける該データソースに対応する推奨処理フィールドのクエリ条件を、前記ストレージノードによって該データソースに送信することと、
該データソースに対応するのが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定された場合に、該データソースがデータソース自体のデータテーブルをフィードバックするために、前記ストレージノードによって該データソースにデータ取得要求を送信することと、を含む。
いくつかの実施形態において、前記サーバーノードによって、クエリリクエストを解析して対応する論理実行プランを生成するステップを実行する前に、
メタ情報管理ノードによってユーザ識別情報の有効性を検証するステップと、
ユーザ識別情報が有効性検証に成功した場合に、前記サーバーノードによってクエリリクエストを解析して対応する論理実行プランを生成するステップを実行するステップと、
ユーザ識別情報が有効性検証に失敗した場合に、前記メタ情報管理ノードによって識別情報の検証失敗情報をユーザにフィードバックするステップと、をさらに含む。
第2態様において、本開示の実施形態は、サーバーノードと、コーディネーターノードと、複数のワーカーノードと、を備えるクエリ処理システムを提供しており、
前記サーバーノードは、解析モジュール、第1判断モジュール、分割モジュール、第1割り当てモジュール、集計モジュール及び第1フィードバックモジュールを含み、
前記コーディネーターノードは、第1生成モジュールを含み、
前記ワーカーノードは、第1処理モジュールを含み、
前記解析モジュールは、クエリリクエストを解析して対応する論理実行プランを生成するように構成され、
前記第1判断モジュールは、前記論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するように構成され、
前記分割モジュールは、前記第1判断モジュールによって前記論理実行プランがOLAPスケールクエリサービスに属すると判定された場合に、前記論理実行プランを複数の論理実行サブプランに分割し、分割済みの前記論理実行プランをコーディネーターノードに送信するように構成され、
前記第1生成モジュールは、前記分割モジュールから受信された前記論理実行プランに対応する第1物理実行プランを生成して、前記サーバーノードにフィードバックするように構成され、前記第1物理実行プランには各前記論理実行サブプランに対応するワーカーノードのノード情報が記録されており、
前記第1割り当てモジュールは、前記第1物理実行プランに基づいて、各前記論理実行サブプランを対応するワーカーノードに割り当てるように構成され、
前記第1処理モジュールは、対応する論理実行サブプランを処理して、処理サブ結果を得、前記処理サブ結果をレイヤーごとに報告するように構成され、
前記集計モジュールは、受信された処理サブ結果を集計して、最終的なクエリ結果を生成するように構成され、
前記第1フィードバックモジュールは、前記最終的なクエリ結果をユーザにフィードバックするように構成される。
いくつかの実施形態において、前記サーバーノードは、送信モジュール、第2割り当てモジュール及び第2フィードバックモジュールをさらに含み、
前記コーディネーターノードは、第2生成モジュールをさらに含み、
前記ワーカーノードは、第2処理モジュールをさらに含み、
前記送信モジュールは、前記第1判断モジュールによって前記論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、前記論理実行プランをコーディネーターノードに送信するように構成され、
前記第2生成モジュールは、前記送信モジュールから受信された前記論理実行プランに対応する第2物理実行プランを生成して、前記サーバーノードにフィードバックするように構成され、前記第2物理実行プランには前記論理実行プランに対応するワーカーノードのノード情報が記録されており、
前記第2割り当てモジュールは、前記第2物理実行プランに基づいて、前記論理実行プランを対応するワーカーノードに割り当てるように構成され、
前記第2処理モジュールは、対応する前記論理実行プランを処理して、最終的なクエリ結果を得、前記最終的なクエリ結果を前記サーバーノードにアップロードするように構成され、
前記第2フィードバックモジュールは、受信された前記最終的なクエリ結果をユーザにフィードバックするように構成される。
いくつかの実施形態において、前記クエリ処理システムは、各データソースのデータ量情報が予め記憶されているストレージモジュールを含むストレージノードをさらに備え、
前記第1判断モジュールは、照会ユニット、推定ユニット及び比較ユニットを含み、
前記照会ユニットは、前記論理実行プランに関連付けられた各データソースのデータ量をストレージノードに照会するように構成され、
前記推定ユニットは、前記ストレージノードからフィードバックされた、前記論理実行プランに関連付けられた各データソースのデータ量に基づいて、前記論理実行プランに対応するデータクエリ合計量を推定するように構成され、
前記比較ユニットは、前記データクエリ合計量と予め設定されたクエリ合計量とを比較するように構成され、
前記比較ユニットによる結果、前記データクエリ合計量が前記予め設定されたクエリ合計量よりも大きい場合に、前記第1判断モジュールによって前記論理実行プランがOLAPスケールクエリサービスに属すると判定され、前記データクエリ合計量が前記予め設定されたクエリ合計量以下である場合に、前記第1判断モジュールによって前記論理実行プランがOLTPスケールクエリサービスに属すると判定される。
いくつかの実施形態において、前記第1処理モジュールは、第1検出ユニット、転送ユニット及びクエリユニットを含み、
前記クエリ処理システムは、作成モジュールを含むストレージノードをさらに備え、
前記第1検出ユニットは、前記ワーカーノード自体が受信した論理実行サブプランがクエリプランに属するか又は集合プランに属するかを検出するように構成され、
前記転送ユニットは、前記第1検出ユニットによって前記ワーカーノード自体が受信した論理実行サブプランがクエリプランに属すると検出された場合に、前記ストレージノードが前記論理実行サブプランについてのデータベースを作成するために、前記論理実行サブプランを前記ストレージノードに転送するように構成され、
前記クエリユニットは、前記ストレージノードによって作成された前記論理実行サブプランについてのデータベースにおいて対応するクエリ動作を実行して、対応するクエリサブ結果を得るように構成され、
前記作成モジュールは、前記ストレージノードがワーカーノードから送信された論理実行サブプランを受信した場合に、前記論理実行サブプランについてのデータベースを作成するように構成される。
いくつかの実施形態において、前記第1処理モジュールは集合ユニットをさらに含み、
前記集合ユニットは、前記第1検出ユニットによって前記ワーカーノード自体が受信した論理実行サブプランが集合プランに属すると検出された場合に、下位ワーカーノードから報告されるクエリサブ結果を受信して、集合処理を行うように構成される。
いくつかの実施形態において、前記作成モジュールは、取得ユニット、判断ユニット及び処理ユニットを含み、
前記取得ユニットは、受信された前記論理実行サブプランに基づいて、前記論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得するように構成され、
前記判断ユニットは、前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいか否かを判断するように構成され、
前記処理ユニットは、前記判断ユニットによって前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定された場合に、前記論理実行サブプランに関連付けられた各データソースから提供されるデータテーブルをリレーショナルデータベースにマッピングするように構成されるとともに、前記判断ユニットによって前記論理実行サブプランに関連付けられたデータソースの数が1であると判定された場合に、前記論理実行サブプランに関連付けられた1つのデータソースから提供されたデータテーブルをデータベースとするように構成される。
いくつかの実施形態において、前記取得ユニットは、第1特定サブユニット、第2特定サブユニット、判断サブユニット、第1送信サブユニット及び第2送信サブユニットを含み、
前記第1特定サブユニットは、前記論理実行サブプランに関連付けられたデータソースを特定するように構成され、
前記第2特定サブユニットは、予め記憶されている対応関係テーブルから前記論理実行サブプランに関連付けられた各データソースに対応する推奨処理フィールドを特定するように構成され、前記対応関係テーブルには異なるデータソース及びそれらに対応する推奨処理フィールドが記録されており、
前記判断サブユニットは、前記論理実行サブプランに関連付けられたデータソースのそれぞれについて、該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであるか否かを判断するように構成され、
前記第1送信サブユニットは、前記判断サブユニットによって該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定された場合に、該データソースが受信されたクエリ条件に基づいて該データソース自体に記憶されているデータテーブルを選別して選別済みデータテーブルを前記ストレージノードにフィードバックするために、前記論理実行サブプランにおける該データソースに対応する推奨処理フィールドのクエリ条件を該データソースに送信するように構成され、
前記第2送信サブユニットは、前記判断サブユニットによって該データソースに対応するのが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定された場合に、該データソースが該データソース自体のデータテーブルをフィードバックするために、該データソースにデータ取得要求を送信するように構成される。
いくつかの実施形態において、前記クエリ処理システムは、検証モジュール及び第3フィードバックモジュールを含むメタ情報管理ノードをさらに備え、
前記検証モジュールは、ユーザ識別情報の有効性を検証するように構成され、
前記第3フィードバックモジュールは、ユーザ識別情報が有効性検証に失敗した場合に、前記メタ情報管理ノードによって識別情報の検証失敗情報をユーザにフィードバックするように構成され、
前記解析モジュールは、具体的にユーザ識別情報が有効性検証に成功した場合に、クエリリクエストを解析して対応する論理実行プランを生成するように構成される。
第3態様において、本開示の実施形態は、1つ又は複数のプロセッサと、1つ又は複数のプログラムが格納されている記憶装置と、を含むサーバであって、前記1つ又は複数のプログラムが前記1つ又は複数のプロセッサによって実行されると、前記1つ又は複数のプロセッサに第1態様のいずれかの実施形態に記載の方法を実現させるサーバを提供している。
第4態様において、本開示の実施形態は、コンピュータプログラムが格納されているコンピュータ可読記憶媒体であって、該コンピュータプログラムが1つ又は複数のプロセッサによって実行されると、第1態様のいずれかの実施形態に記載の方法を実現するコンピュータ可読記憶媒体を提供している。
本開示は、次の有益な効果を有し、本開示の実施形態は、クエリリクエストに対応するデータスケールに基づいて異なる処理プロセスを選択することができ、OLAPスケールクエリサービスとOLTPスケールクエリサービスとの両方をサポートすることができ、モノのインターネット分野におけるクエリニーズを満たすことができるクエリ処理方法を提供しており、
さらに、複数のデータソースにわたるユニオンクエリについて、本開示では、異なるデータソースから提供される異なるデータテーブルをリレーショナルデータベースの形にマッピングすることができるストレージノードを設けることによって、サービス間でユニオンクエリが可能になる。
また、ユーザにとっては、SQL言語を利用するだけで、複数のデータソースにわたってワンストップでデータクエリを行うことができ、ユーザの操作が便利となる。
本開示の実施形態に係るクエリ処理方法のフローチャートである。 本開示におけるステップS2の具体的な実施フローチャートである。 本開示におけるステップS6の具体的な実施フローチャートである。 本開示におけるステップS602aの具体的な実施フローチャートである。 本開示におけるステップS6021の具体的な実施フローチャートである。 本開示の実施形態に係る他のクエリ処理方法のフローチャートである。 本開示の実施形態に係るクエリ処理システムのブロック構成図である。 本開示におけるサーバーノードのブロック構成図である。 本開示におけるコーディネーターノードのブロック構成図である。 本開示におけるワーカーノードのブロック構成図である。 本開示におけるストレージノードのブロック構成図である。 本開示におけるメタ情報管理ノードのブロック構成図である。 本開示における第1判断モジュールのブロック構成図である。 本開示における第1処理モジュールのブロック構成図である。 本開示における作成モジュールのブロック構成図である。 本開示における取得モジュールのブロック構成図である。
本開示の技術的手段を当業者によりよく理解させるために、以下、本開示に係るクエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体について、添付図面を参照しながら詳細に説明する。
以下、添付図面を参照して例示的な実施形態を完全に説明するが、前記例示的な実施形態は異なる形態で具現化されてもよく、本明細書に記載の実施形態に限定されるものと解釈されるべきではない。むしろ、これらの実施形態は、本開示を徹底的かつ完全にし、当業者が本開示の範囲を十分に理解するために提供される。
本明細書で使用される用語は、特定の実施形態を説明するためのものに過ぎず、本開示を限定することを意図するものではない。本明細書で使用されるように、単数形「1個」及び「該」は、文脈が他に明白に示さない限り、複数形も含むことが意図されている。また、「含む」及び/又は「……から製造される」という用語が本明細書に使用されるとき、述べられた特徴、全体、ステップ、動作、要素及び/又はコンポーネントの存在を指定するが、1つ以上の他の特徴、全体、ステップ、動作、要素、コンポーネント及び/又はそれらの群の存在又は追加を排除するものではないことを理解されたい。
第1、第2などの用語は、様々な要素を記述するために本明細書で使用され得るが、これらの要素は、これらの用語によって限定されるべきではないことが理解されるであろう。これらの用語は、ある要素を他の要素から区別するためにのみ使用される。したがって、以下で論じられる第1の要素、第1のコンポーネント、又は第1の部品は、本開示の教示から逸脱しない限り、第2の要素、第2のコンポーネント又は第2の部品と呼ばれてもよい。
特に定義しない限り、技術的及び科学的用語を含む、本明細書で使用される全ての用語の意味は、当業者によって一般的に理解されるものと同じである。一般的に使用される辞書に定義されるような用語は、関連技術及び本開示の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであり、本明細書で明白に定義しない限り、理想的又は過度に形式的な意味を有すると解釈されないことがさらに理解されるであろう。
当分野において、クエリプロセスに係るデータクエリ合計量の多少に応じて、クエリサービスを、クエリプロセスに係るデータクエリ合計量が所定の閾値よりも大きいクエリサービスであるOLAPスケールクエリサービスと、クエリプロセスに係るデータクエリ合計量が所定の閾値以下のクエリサービスであるOLTPスケールクエリサービスとの2つのカテゴリに区分し、該所定の閾値の取り得る値が実際の状況に応じて設定して調整することができる。OLAPスケールクエリサービスは、クエリプロセスに大規模(一般的に、桁数が「万」に達する)のデータが含まれることを特徴付け、OLTPスケールクエリサービスは、クエリプロセスに小規模データが含まれることを特徴付ける。
本開示において、構造化クエリ言語(Structured Query Language,SQLと略称される)を統合クエリ言語として、SQLはデータベースにアクセスして処理するための標準的なコンピュータ言語であり、機能が強くて、簡単で学習しやすい。ユーザがデータクエリを行う必要がある場合に、ユーザはクライアントプログラム(Client SDK)にSQL言語でクエリリクエストを入力し、クライアントプログラムが該クエリリクエストをサーバーノードに送信する。以下の各実施形態において、言及される「ユーザ」とは、Client SDKによりクエリリクエストを入力するユーザを指す。
本開示に係るクエリ処理方法は、対応するクエリ処理システムに基づき、該クエリ処理システムは少なくともサーバーノード(Server Node)、コーディネーターノード(Coodinator Node)及びワーカーノード(Worker Node)を含む。
ここで、サーバーノードは、クエリリクエストを受信する入口であり、クエリリクエストに対応する論理実行プランを解析することと、場合によっては、論理実行プランを複数の論理実行サブプランに分割することとを担当し、さらに、リセットノードによって、コーディネーターノードから生成された物理実行プランに応じて、論理実行プランを対応するワーカーノードに送信することもできる。
コーディネーターノードはシステムにおけるサーバーノード及び全てのワーカーノードを管理し、各ワーカーノードの状態情報(例えば、ワーカーノードの現在負荷、余剰リソース、処理速度など)を有し、論理実行プランに基づいて、各ワーカーノードの現在負荷、余剰リソースなどの要素と結合して実際の物理実行プランを生成することができる。
ワーカーノードはサーバーノードによって送信される論理実行プラン/サブプランの実行を担当し、1つのワーカーノードが1つ又は複数の論理実行プラン/サブプランを処理することができる。ここで、ワーカーノードが受信した論理実行サブプランは、クエリプランである可能性があり、集合プランである可能性もあり、ワーカーノードが受信した論理実行サブプランがクエリプランである場合に、ワーカーノードは対応するクエリ動作を実行し、ワーカーノードが受信した論理実行サブプランが集合プランである場合に、該ワーカーノードはその下位ワーカーノード(該ワーカーノードの子ノード)がいずれもクエリ/集合動作を完了して対応するデータを報告した後に、さらに受信したデータを集合処理する。
当業者が本開示の技術的手段をより良く理解することを容易にするために、以下に具体例を参照して詳細に説明する。
図1は、本開示の実施形態に係るクエリ処理方法のフローチャートであり、図1に示すように、該クエリ処理方法はステップS1~ステップS13を含む。
ステップS1:サーバーノードによって、クエリリクエストを解析して対応する論理実行プランを生成する。
クエリリクエストは、SQL言語で表されるSQLクエリステートメントであり、ステップS1において、サーバーノードは、サーバーノード自体に予め記憶されているコマンドパーサ(Command Parser)によりSQLクエリステートメントの構文正確性を検査して、SQLクエリステートメントの構文が正しいと検出した場合にSQLクエリステートメントを解析して、システムが動作可能な内部フォーマットに変換して、論理実行プラン(Logical Plan)を得、論理実行プランはツリー構造で表され、クエリツリー(Query Tree)とも呼ばれてもよく、該クエリリクエストを実行する際の処理論理ステップを特徴付ける。
論理実行プランには、クエリリクエストに関連付けられた各データソースのデータテーブル名、及びデータテーブルをクエリするためのクエリ条件(フィルタ条件とも呼ばれてもよい)が記録されている。
ステップS2:サーバーノードによって、論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断する。
図2は、本開示におけるステップS2の具体的な実施フローチャートであり、図2に示すように、本開示において該クエリ処理システムは、ストレージノード(Storage Node)をさらに含み、ストレージノードが全てのモノのインターネットサービスプロバイダと接続されることを担当し、モノのインターネットサービスプロバイダは、データソースとして、ストレージノードのリクエストに応じて対応するデータテーブルをストレージノードに提供することができ、ストレージノードは、各データソースのデータテーブルのデータ量をリアルタイムで監視する。
なお、本開示における「データ量」とは、データテーブルに含まれるデータ記録(一般的には、データテーブルにおける1行のデータは、1つのデータ記録を示す)の数を指す。
ワーカーノードは、ストレージノードによってデータソースから提供されるデータテーブルにアクセスすることができ、ワーカーノードが異なるデータソースから提供される異種データテーブルを同時にクエリする必要がある場合に、異なるデータソースのデータ構造の違いをマスクするために、ストレージノードが異なるデータソースから提供される異種データテーブルをリレーショナルデータベースにマッピングすることができる。
ステップS2は具体的にステップS201、S202及びS203を含む。
ステップS201:サーバーノードによって、論理実行プランに関連付けられた各データソースのデータ量をストレージノードに照会する。
ステップS201において、論理実行プランに関連付けられたデータソースのデータテーブルの数がnであると仮定すると、i番目のデータソースのデータテーブルにおけるデータ記録の数がK(nは1よりも大きい整数であり、kはn以下の正の整数である)である。
ステップS202:サーバーノードによって、ストレージノードからフィードバックされた、論理実行プランに関連付けられた各データソースのデータ量に基づいて、論理実行プランに対応するデータクエリ合計量を推定する。
ステップS202において、論理実行プランに関連付けられた各データソースのデータ量に基づいて、論理実行プランに対応するデータクエリ合計量を推定することができる。
代替的な技術的手段として、以下の式によりデータクエリ合計量Sを推定することができる。
Figure 0006998976000001
なお、上記に例示された、論理実行プランに対応するデータクエリ合計量を推定するアルゴリズムは、本開示の代替的な技術的手段のみに過ぎず、本開示の技術的手段を限定するものではない。当業者にとっては、論理実行プランに関連付けられた各データソースのデータ量に基づいて、論理実行プランに対応するデータクエリ合計量を推定するために使用される任意のアルゴリズムが、本開示の保護範囲に含まれるべきであることを理解するであろう。具体的なアルゴリズムは、ここでは例示しない。
ステップS203:サーバーノードによって、データクエリ合計量と予め設定されたクエリ合計量とを比較する。
該予め設定されたクエリ合計量(即ち、上述の「所定の閾値」)は、実際のニーズに応じて設定して調整することができる。
ステップS203において、比較の結果から、データクエリ合計量が予め設定されたクエリ合計量よりも大きい(大規模データ)場合に、論理実行プランがOLAPスケールクエリサービスに属するとサーバーノードによって判定し、データクエリ合計量が予め設定されたクエリ合計量以下である(小規模データ)場合に、論理実行プランがOLTPスケールクエリサービスに属するとサーバーノードによって判定する。
ステップS2において、論理実行プランがOLAPスケールクエリサービスに属すると判定された場合に、ステップS3を実行し、ステップS3において、論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、ステップS9を実行する。
ステップS3:サーバーノードによって論理実行プランを複数の論理実行サブプランに分割して、分割された論理実行プランをコーディネーターノードに送信する。
論理実行プランがOLAPスケールクエリサービスに属するとサーバーノードによって判定された場合に、後続のクエリ速度を高めるために、超並列処理(Massively Parallel Processing,MPPと略称される)技術を用いて後続のクエリ処理を行う。
ステップS3において、サーバーノードは、予め設定された分割アルゴリズムに基づいて、論理実行プランを複数の論理実行サブプランに分割する。なお、本開示で使用される分割アルゴリズムは、従来のMPPアーキテクチャにおいて通常使用される分割アルゴリズムであってもよく、一般的には、MPPの分割された各論理実行サブプランに対応するクエリ合計量が平均的なものである。
当業者に容易に理解させるために、以下に具体例を参照しながら詳細に説明する。
クエリシナリオは次の通りであり、クライアントが2019-01-01の日に全てのサーバデバイスのハートビートデータをクエリする必要があり、サーバデバイスのデバイス情報(デバイスid)がデバイス管理サービスプロバイダ(hubと表記される)のdeviceテーブルに格納され、deviceテーブルのデータ量のデータレベルが概ね「万」レベルであり、各サーバデバイスのハートビートデータが時系列データベースサービスプロバイダ(tsdbと表記される)のheartbeatテーブルに格納され、heartbeatテーブルのデータ量のデータレベルが概ね「10万」レベルであり、deviceテーブルとheartbeatテーブルとがデバイスidにより関連付けられている。
ユーザは、クエリする際に、Client SDKを介して以下のSQLステートメントを入力することができ、
Figure 0006998976000002
ここで、hub.deviceは、デバイス管理サービスプロバイダにおけるdeviceテーブル(dで表記されることもある)を表し、d.idは、deviceテーブルにおけるデバイスidを特徴付けるためのフィールドが「id」であることを表し、h.timestampは、heartbeatテーブルにおけるタイムスタンプ(通常秒単位)を特徴付けるフィールドが「timestamp」であることを表し、h.deviceIdは、heartbeatテーブルにおけるデバイスidを特徴付けるフィールドが「deviceId」であることを表し、d.id=h.deviceIdは、deviceテーブルにおけるフィールド「id」をheartbeatテーブルにおけるフィールド「deviceId」に関連付けることを表す。
h.timestamp between‘2019-01-01’and‘2019-01-02’は、タイムスタンプが2019年1月1日0時0分0秒から2019年1月2日0時0分0秒までのクエリ条件を表す。
以上の内容から分かるように、クエリリクエストには、今回のクエリに関連付けられたデータソース(及び対応するデータテーブル)及びクエリ条件が直接記録されている。
上記の例示において、deviceテーブルのデータ量のデータレベルが概ね「万」レベルであり、heartbeatテーブルのデータ量のデータレベルが概ね「10万」レベルであることを考慮して、ステップS2により今回のクエリに係るデータクエリ合計量が「億」レベルであり、OLAPスケールクエリサービスに属すると推定することができる。
従って、ステップS3において、論理実行プランを複数の論理実行サブプラン(論理実行サブプランのそれぞれは、実質的にはクエリツリーである)に分割する。代替的な分割案として、デバイスidで論理実行プランを機械的に分割し、具体的には、論理実行プランを100個の論理実行サブプランに分割し、N番目の論理実行サブプランは、デバイスidを100で割って余りを求め、余りがN(ただし、Nは100以下の正の整数である)に等しい各サーバデバイス(即ち、hub.device.id%100=Nのサーバデバイス)の2019-01-01の日におけるハートビートデータを取得する。なお、上記100個の論理実行サブプランがいずれもクエリプランである場合は、単なる例示的な役割を果たすものであり、本開示の技術的手段に制限を加えるものではない。
なお、論理実行プランを複数の論理実行サブプランに分割するプロセスにおいて、分割された論理実行サブプランは、クエリプランだけでなく集合プランであってもよく、詳細は後述する説明を参照することができる。
ステップS3において、論理実行プランが分割された後に、サーバーノードによって、全ての論理実行サブプランをパッケージ化して1つの完全な論理実行プランとしてコーディネーターノードに送信する。
ステップS4:コーディネーターノードによって、論理実行プランに対応する第1物理実行プランを生成してサーバーノードにフィードバックする。第1物理実行プランには各論理実行サブプランに対応するワーカーノードのノード情報が記録されている。
コーディネーターノードによって受信された論理実行プランは複数の論理実行サブプランを含むので、コーディネーターノードによって今回のクエリがOLAPスケールクエリサービスであることを識別することもできる。
ステップS4において、コーディネーターノードは、各ワーカーノードの現在負荷、余剰リソース、処理速度などの監視情報に基づいて、最小コストアルゴリズムに基づいて論理実行サブプランのそれぞれのために対応するワーカーノードを配置する。なお、最小コストアルゴリズムに従って論理実行サブプランに対応するワーカーノードを割り当てる具体的なプロセスは、当分野における従来技術に属するものであり、ここでは詳細に説明しない。
コーディネーターノードは、各論理実行サブプランと、対応するワーカーノードのノードIPアドレスとを作成して、第1物理実行プランを生成して第1物理実行プランをサーバーノードにフィードバックする。
なお、論理実行サブプランにワーカーノードを割り当てるプロセスにおいて、異なる論理実行サブプランが異なるワーカーノードに割り当てられることも、同じワーカーノードに割り当てられることも可能である。
ステップS5:サーバーノードによって、第1物理実行プランに基づいて各論理実行サブプランを対応するワーカーノードに割り当てる。
ステップS6:ワーカーノードによって、対応する論理実行サブプランを処理して処理サブ結果を得、処理サブ結果をレイヤーごとに報告する。
図3は、本開示におけるステップS6の具体的な実施フローチャートであり、図3に示すように、ステップS6はステップS601~ステップS604を含む。
ステップS601:ワーカーノード自体によって受信された論理実行サブプランがクエリプランに属するか又は集合プランに属するかをワーカーノードによって検出する。
ステップS601において、ワーカーノード自体によって受信された論理実行サブプランがクエリプランに属すると検出された場合に、ステップS602を実行し、ワーカーノード自体によって受信された論理実行サブプランが集合プランに属すると検出された場合に、ステップS604を実行する。
ステップS602:論理実行サブプランについてのデータベースをストレージノードによって作成するために、ワーカーノードによって論理実行サブプランをストレージノードに転送する。
ステップS602において、ワーカーノードによって論理実行サブプランをストレージノードに転送し、ストレージノードは、受信された論理実行サブプランに基づいて、対応するデータソースからデータテーブルを取得して、論理実行サブプランについてのデータベースを形成する。
ステップS603:ストレージノードによって作成された論理実行サブプランについてのデータベースにおいて、対応するクエリ動作をワーカーノードによって実行して、対応するクエリサブ結果を得る。
ステップS604:ワーカーノードによって、下位ワーカーノードから報告されるクエリサブ結果を受信して集合処理を行う。
なお、ワーカーノードによって受信された論理実行サブプランが集合プランに属する場合に、該ワーカーノードは必ず下位ワーカーノード(当該ワーカーノードの子ノードとも呼ばれる)を有する。
ステップS604において、集合プランを実行するワーカーノードの全ての下位ワーカーノードが、対応する論理実行サブプランを実行してデータの報告を完了した後に、集合プランを実行するワーカーノードによって、受信された全てのデータを集合処理して、集合処理により得られたデータを上位へ引き続き報告する。
ステップS602とステップS603との間にステップS602aをさらに含む。
ステップS602a:論理実行サブプランについてのデータベースをストレージノードによって作成する。
図4は、本開示におけるステップS602aの具体的な実施フローチャートであり、図4に示すように、ステップS602aを実施するための代替的な実施形態として、ステップS602aはS6021を含む。
S6021:ストレージノードによって、受信された論理実行サブプランに基づいて、論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得する。
図5は、本開示におけるステップS6021の具体的な実施フローチャートであり、図5に示すように、ステップS6021を実施するための好ましい実施形態として、ステップS6021は、S60211及びステップS60212を含む。
ステップS60211:論理実行サブプランに関連付けられたデータソースをストレージノードによって特定する。
ステップS60212:予め記憶されている対応関係テーブルから、論理実行サブプランに関連付けられた各データソースに対応する推奨処理フィールドを、ストレージノードによって特定する。対応関係テーブルには異なるデータソース及びそれらに対応する推奨処理フィールドが記録されている。
実際の使用中に、異なるデータソース(モノのインターネットサービスプロバイダ)自体が、異なるクエリフィールドに対して異なるクエリパフォーマンスを示すこと(これは、各サービスプロバイダ自体の特別なサービスシナリオによって決定される)を考慮し、即ち、ある具体的なデータソースについて、該データソースは、ある1つ又は複数のクエリフィールドに対して優れたクエリパフォーマンスを示すことがあるので、該データソースが優れたクエリパフォーマンスを示すことができるクエリフィールドを、該データソースに対応する推奨処理フィールドとして設定することができる。例えば、時系列データベースサービスプロバイダ自体は、クエリフィールドが「timestamp」であるクエリ条件に対して優れたクエリパフォーマンスを有することを考慮し、データソースが時系列データベースサービスプロバイダである推奨処理フィールドを「timestamp」に設定することができる。データソースに対して対応する推奨処理フィールドを構成することは、手動で予め作成して各データソースに対応する推奨処理フィールドを、ストレージノードに予め格納された対応関係テーブルに記録することができる。
当業者が本開示の技術的手段をより良く理解することを容易にするために、以下、上述のクライアントが2019-01-01の日における全てのサーバデバイスのハートビートデータをクエリする必要があるシナリオについて、引き続き例示的に説明する。ここで、デバイス管理サービスプロバイダには対応する推奨処理フィールドが存在しておらず、時系列データベースサービスプロバイダに対応する推奨処理フィールドは「timestamp」であるとする。
N番目の論理実行サブプランはN番目のワーカーノードに割り当てられ、デバイスidがhub.device.id%100=Nを満たす各サーバデバイスの2019-01-01の日におけるハートビートデータを取得することを、N番目のワーカーノードによって実行する必要がある。
このときに、該N番目の論理実行サブプランに関連付けられたデータソースは、1)デバイス管理サービスプロバイダと、2)時系列データベースサービスプロバイダとの2つであり、N番目の論理実行サブプランに対応するクエリ条件は、1)hub.device.id%100=Nと、2)h.timestamp between ‘2019-01-01’and ‘2019-01-02’との2つである。
ステップ60212において、N番目の論理実行サブプランに関連付けられたデバイス管理サービスプロバイダに対応する推奨処理フィールドが空であり、N番目の論理実行サブプランに関連付けられた時系列データベースサービスプロバイダに対応する推奨処理フィールドが「timestamp」であると特定することができる。
論理実行サブプランに関連付けられたデータソースのそれぞれについて、下記ステップS60213を実行する。
ステップS60213:該データソースに対応する推奨処理フィールドが論理実行サブプランに含まれるクエリ条件のクエリフィールドであるか否かをストレージノードによって判断する。
ステップS60213において、該データソースに対応する推奨処理フィールドが論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定された場合に、ステップS60214を実行し、該データソースに対応するのが論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定された場合に、ステップS60215を実行する。
ステップS60214:該データソースが受信されたクエリ条件に応じて該データソース自体に記憶されているデータテーブルを選別して選別済みデータテーブルをストレージノードにフィードバックするために、論理実行サブプランにおける該データソースに対応する推奨処理フィールドのクエリ条件を、ストレージノードによって該データソースに送信する。
ステップS60215:該データソースがデータソース自体のデータテーブルをフィードバックするために、ストレージノードによって該データソースにデータ取得要求を送信する。
前記ステップS60213~ステップS60215について、N番目の論理実行サブプランを処理するプロセスを例にとって、例示的に説明する。
データソースがデバイス管理サービスプロバイダである場合について、対応する推奨処理フィールドが空であるため、ステップS60213において、デバイス管理サービスプロバイダに対応する推奨処理フィールドがN番目の論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定されるので、ステップS60213の終了後に、ストレージノードによってデバイス管理サービスプロバイダにデータ取得要求を送信し、デバイス管理サービスプロバイダが、deviceテーブルの全データをdeviceテーブルに送信するステップS60215を実行する。
データソースが時系列データベースサービスプロバイダである場合について、その対応する推奨処理フィールドがtimestampであり、N番目の論理実行サブプランに含まれるクエリ条件においてクエリフィールドのtimestampが存在するので、ステップS60213において、デバイス管理サービスプロバイダに対応する推奨処理フィールドがN番目の論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定されるので、ステップS60213の終了後に、クエリ条件のh.timestamp between‘2019-01-01’and‘2019-01-02’をストレージノードによって時系列データベースサービスプロバイダに送信し、時系列データベースサービスプロバイダは、該クエリ条件に基づいてheartbeatテーブルを選別して、timestampの値が2019年1月1日0時0分0秒から2019年1月2日0時0分0秒を満たす記録を選別して、選別された記録をストレージノードにフィードバックするステップS60214を実行する。
S6022:論理実行サブプランに関連付けられたデータソースの数が1よりも大きいか否かをストレージノードによって判断する。
ステップS6022において、論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定された場合に、ステップS6023を実行し、論理実行サブプランに関連付けられたデータソースの数が1であると判定された場合に、ステップS6024を実行する。
ステップS6023:論理実行サブプランに関連付けられた各データソースから提供されたデータテーブルを、ストレージノードによってリレーショナルデータベースにマッピングする。
ステップS6023により、異なるデータソース間のデータ構造の違いをマスクすることができる。
前記ステップS6022及びステップS6023について、N番目の論理実行サブプランを処理するプロセスを例にとる。
N番目の論理実行サブプランに関連付けられたデータソースの数が2つであるので、ステップS6022において、N番目の論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定され、その後ステップS6023を実行する。ステップS6023において、ストレージノードによってデータの選別が行われていないdeviceテーブルと、データの選別が行われたheartbeatテーブルとを1つのリレーショナルデータベースにマッピングして、N番目のワーカーノードによる該リレーショナルデータベースに基づいた対応するクエリプランの実行に供する。
ステップS6024:論理実行サブプランに関連付けられた1つのデータソースから提供されたデータテーブルをデータベースとする。
論理実行サブプランに関連付けられたデータソースの数が1つである場合に、該データソースから提供されたデータテーブルを直接データベースとして、ワーカーノードによる対応するクエリプランの実行に供する。
ステップS7:サーバーノードによって、受信された処理サブ結果を集計して、最終的なクエリ結果を生成する。
サーバーノードによって、ワーカーノード(1つ又は複数であってもよく、論理実行プランに対応するツリー構造で決定される)から報告される処理サブ結果を集計して、最終的なクエリ結果を生成する。
ステップS8:サーバーノードによって、集計により得られた最終的なクエリ結果を対応するユーザにフィードバックする。
ステップS9:サーバーノードによって論理実行プランをコーディネーターノードに送信する。
サーバーノードによって論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、データクエリ合計量が小さいことを示し、後続で通常のクエリフローに従って行ってもよい。
ステップS10:コーディネーターノードによって、論理実行プランに対応する第2物理実行プランを生成してサーバーノードにフィードバックし、第2物理実行プランには論理実行プランに対応するワーカーノードのノード情報が記録されている。
物理実行プランを生成するプロセスは、上述の説明を参照してもよく、ここでは詳しい説明を省略する。ステップS10において、論理実行プランが完全なタスクとして分割されていないので、第2物理実行プランには該論理実行プランを実行する1つのワーカーノードのノード情報のみが記録されている。
ステップS11:サーバーノードによって、第2物理実行プランに基づいて論理実行プランを対応するワーカーノードに割り当てる。
ステップS12:ワーカーノードによって、対応する論理実行プランを処理して最終的なクエリ結果を得、最終的なクエリ結果をサーバーノードにアップロードする。
ステップS12において、ワーカーノードによって処理される論理実行プランは必ずクエリプランであり、該ワーカーノードから得られた結果が最終的なクエリ結果であり、後続でサーバーノードによる集計が不要である。
なお、コーディネーターノードによって、論理実行プランに対応する第2物理実行プランを生成する際に、データクエリ合計量が相対的に小さいので、サーバーノードに余剰リソースがある場合に、サーバーノードをワーカーノードとして論理実行プランを実行することができる。
ステップS13:サーバーノードによって、受信された最終的なクエリ結果を対応するユーザにフィードバックする。
本開示の実施形態は、クエリリクエストに対応するデータスケールに基づいて異なる処理プロセスを選択することができ、OLAPスケールクエリサービスとOLTPスケールクエリサービスとの両方をサポートすることができ、モノのインターネット分野におけるクエリ要件を満たすことができるクエリ処理方法を提供する。
さらに、複数のデータソース間でのユニオンクエリについて、本開示では、異なるデータソースから提供される異なるデータテーブルをリレーショナルデータベースの形にマッピングすることができるストレージノードを設けることによって、サービス間でのユニオンクエリを可能にする。
また、ユーザにとっては、SQL言語を利用するだけで、従来のリレーショナルデータベースにアクセスすると同様に、複数のデータソースにわたってワンストップでデータクエリを行うことができる。
図6は、本開示の実施形態に係る他のクエリ処理方法のフローチャートであり、図6に示すように、図1に示される実施形態とは異なり、本実施形態は、上述の実施形態におけるステップS1~ステップS13を含むことに加えて、ステップS01及びステップS02をさらに含み、ステップS1~ステップS13についての説明は、上述の内容を参照してもよく、以下、ステップS01及びステップS02のみについて詳細に説明する。
ステップS01:メタ情報管理ノードによってユーザ識別情報の有効性を検証する。
ステップS01において、ユーザ識別情報が有効性検証に成功した場合に、ステップS1を実行し、ユーザ識別情報が有効性検証に失敗した場合に、ステップS02を実行する。
ステップS02:メタ情報管理ノードによって識別情報の検証失敗情報をユーザにフィードバックする。
本実施形態において、メタ情報管理ノードによってユーザ識別情報の有効性検証を実現することができる。
図7aは、本開示の実施形態に係るクエリ処理システムのブロック構成図であり、図7b~図7fはそれぞれ、本開示におけるサーバーノード、コーディネーターノード、ワーカーノード、ストレージノード及びメタ情報管理ノードのブロック構成図であり、図7a~図7fに示すように、該クエリ処理システムは、上述の実施形態におけるクエリ処理方法を実現するように構成され、サーバーノード1、コーディネーターノード2及び複数のワーカーノード3を含み、ここで、サーバーノード1は、解析モジュール101、第1判断モジュール102、分割モジュール103、第1割り当てモジュール104、集計モジュール105及び第1フィードバックモジュール106を含み、コーディネーターノード2は、第1生成モジュール201を含み、ワーカーノード3は、第1処理モジュール301を含む。
解析モジュール101は、クエリリクエストを解析して対応する論理実行プランを生成するように構成される。
第1判断モジュール102は、論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するように構成される。
分割モジュール103は、第1判断モジュール102によって論理実行プランがOLAPスケールクエリサービスに属すると判定された場合に、論理実行プランを複数の論理実行サブプランに分割し、分割済みの論理実行プランをコーディネーターノード2に送信するように構成される。
第1生成モジュール201は、分割モジュール103から受信された論理実行プランに対応する第1物理実行プランを生成して、サーバーノード1にフィードバックするように構成され、第1物理実行プランには各論理実行サブプランに対応するワーカーノード3のノード情報が記録されている。
第1割り当てモジュール104は、第1物理実行プランに基づいて、各論理実行サブプランを対応するワーカーノード3に割り当てるように構成される。
第1処理モジュール301は、対応する論理実行サブプランを処理して、処理サブ結果を得、処理サブ結果をレイヤーごとに報告するように構成される。
集計モジュール105は、受信された処理サブ結果を集計して、最終的なクエリ結果を生成するように構成される。
第1フィードバックモジュール106は、最終的なクエリ結果を対応するユーザにフィードバックするように構成される。
いくつかの実施形態において、サーバーノード1は、送信モジュール107、第2割り当てモジュール108及び第2フィードバックモジュール109をさらに含み、コーディネーターノード2は、第2生成モジュール202をさらに含み、ワーカーノード3は、第2処理モジュール302をさらに含む。
送信モジュール107は、第1判断モジュール102によって論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、論理実行プランをコーディネーターノード2に送信するように構成される。
第2生成モジュール202は、送信モジュール107から受信された論理実行プランに対応する第2物理実行プランを生成して、サーバーノード1にフィードバックするように構成され、第2物理実行プランには論理実行プランに対応するワーカーノード3のノード情報が記録されている。
第2割り当てモジュール108は、第2物理実行プランに基づいて、論理実行プランを対応するワーカーノード3に割り当てるように構成される。
第2処理モジュール302は、対応する論理実行プランを処理して、最終的なクエリ結果を得、最終的なクエリ結果をサーバーノード1にアップロードするように構成される。
第2フィードバックモジュール109は、受信された最終的なクエリ結果を対応するユーザにフィードバックするように構成される。
いくつかの実施形態において、クエリ処理システムは、各データソースのデータ量情報が予め記憶されているストレージモジュール401を含むストレージノード4をさらに備える。
図8は、本開示における第1判断モジュール102のブロック構成図であり、図8に示すように、第1判断モジュール102は、照会ユニット1021、推定ユニット1022及び比較ユニット1023を含む。
照会ユニット1021は、論理実行プランに関連付けられた各データソースのデータ量をストレージノード4に照会するように構成される。
推定ユニット1022は、ストレージノード4からフィードバックされた、論理実行プランに関連付けられた各データソースのデータ量に基づいて、論理実行プランに対応するデータクエリ合計量を推定するように構成される。
比較ユニット1023は、データクエリ合計量と予め設定されたクエリ合計量とを比較するように構成される。
比較ユニット1023による結果、データクエリ合計量が予め設定されたクエリ合計量よりも大きい場合に、第1判断モジュール102によって論理実行プランがOLAPスケールクエリサービスに属すると判定され、データクエリ合計量が予め設定されたクエリ合計量以下である場合に、第1判断モジュール102によって論理実行プランがOLTPスケールクエリサービスに属すると判定される。
図9は、本開示における第1処理モジュールのブロック構成図であり、図9に示すように、いくつかの実施形態において、第1処理モジュール301は、第1検出ユニット3011、転送ユニット3012及びクエリユニット3013を含み、クエリ処理システムは、作成モジュール402を含むストレージノード4をさらに備える。
ここで、第1検出ユニット3011は、ワーカーノード3自体が受信した論理実行サブプランがクエリプランに属するか又は集合プランに属するかを検出するように構成される。
転送ユニット3012は、第1検出ユニット3011によってワーカーノード3自体が受信した論理実行サブプランがクエリプランに属すると検出された場合に、ストレージノード4による論理実行サブプランについてのデータベースの作成に供するために、論理実行サブプランをストレージノード4に転送するように構成される。
クエリユニット3013は、ストレージノード4によって作成された論理実行サブプランについてのデータベースにおいて対応するクエリ動作を実行して、対応するクエリサブ結果を得るように構成される。
作成モジュール402は、ストレージノード4がワーカーノード3から送信された論理実行サブプランを受信した場合に、論理実行サブプランについてのデータベースを作成するように構成される。
引き続き図9を参照して、いくつかの実施形態において、第1処理モジュール301は集合ユニット3014をさらに含み、集合ユニット3014は、第1検出ユニット3011によってワーカーノード3自体が受信した論理実行サブプランが集合プランに属すると検出された場合に、下位ワーカーノード3から報告されるクエリサブ結果を受信して、集合処理を行うように構成される。
図10は、本開示における作成モジュールのブロック構成図であり、作成モジュール402は、図10に示すように、取得ユニット4021、判断ユニット4022及び処理ユニット4023を含む。
ここで、取得ユニット4021は、受信された論理実行サブプランに基づいて、論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得するように構成される。
判断ユニット4022は、論理実行サブプランに関連付けられたデータソースの数が1よりも大きいか否かを判断するように構成される。
処理ユニット4023は、判断ユニット4022によって論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定された場合に、論理実行サブプランに関連付けられた各データソースから提供されるデータテーブルをリレーショナルデータベースにマッピングするように構成されるとともに、判断ユニット4022によって論理実行サブプランに関連付けられたデータソースの数が1であると判定された場合に、論理実行サブプランに関連付けられた1つのデータソースから提供されたデータテーブルをデータベースとするように構成される。
図11は、本開示における取得ユニットのブロック構成図であり、図11に示すように、いくつかの実施形態において、取得ユニット4021は、第1特定サブユニット40211、第2特定サブユニット40212、判断サブユニット40213、第1送信サブユニット40214及び第2送信サブユニット40215を含む。
第1特定サブユニット40211は、論理実行サブプランに関連付けられたデータソースを特定するように構成される。
第2特定サブユニット40212は、予め記憶されている対応関係テーブルから論理実行サブプランに関連付けられた各データソースに対応する推奨処理フィールドを特定するように構成され、対応関係テーブルには異なるデータソース及びそれらに対応する推奨処理フィールドが記録されている。
判断サブユニット40213は、論理実行サブプランに関連付けられたデータソースのそれぞれについて、該データソースに対応する推奨処理フィールドが論理実行サブプランに含まれるクエリ条件のクエリフィールドであるか否かを判断するように構成される。
第1送信サブユニット40214は、判断サブユニット40213によって該データソースに対応する推奨処理フィールドが論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定された場合に、該データソースが受信されたクエリ条件に基づいて該データソース自体に記憶されているデータテーブルを選別して選別済みデータテーブルをストレージノード4にフィードバックするために、論理実行サブプランにおける該データソースに対応する推奨処理フィールドのクエリ条件を該データソースに送信するように構成される。
第2送信サブユニット40215は、判断サブユニット40213によって該データソースに対応するのが論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定された場合に、該データソースが該データソース自体のデータテーブルをフィードバックするために、該データソースにデータ取得要求を送信するように構成される。
図7fを参照して、いくつかの実施形態において、クエリ処理システムは、検証モジュール501及び第3フィードバックモジュール502を含むメタ情報管理ノード5をさらに備える。ここで、検証モジュール501は、ユーザ識別情報の有効性を検証するように構成され、第3フィードバックモジュール502は、ユーザ識別情報が有効性検証に失敗した場合に、メタ情報管理ノード5によって識別情報の検証失敗情報をユーザにフィードバックするように構成される。
この場合に、解析モジュール101は、具体的にユーザ識別情報が有効性検証に成功した場合に、クエリリクエストを解析して対応する論理実行プランを生成するように構成される。
上記の各モジュール、ユニット、サブユニットの説明については、クエリ処理方法において各ステップに関する上述の説明を参照してもよく、ここで詳細に説明しない。
本開示の実施形態はさらに、1つ又は複数のプロセッサと、1つ又は複数のプログラムが格納されている記憶装置と、を含むサーバであって、前記1つ又は複数のプログラムが前記1つ又は複数のプロセッサによって実行される場合に、前記1つ又は複数のプロセッサに上述の実施形態に係るクエリ処理方法を実現させるサーバを提供している。
本開示の実施形態は、コンピュータプログラムが格納されているコンピュータ可読記憶媒体であって、該コンピュータプログラムが実行される場合に、上述の実施形態に係るクエリ処理方法を実現するコンピュータ可読記憶媒体をさらに提供している。
当業者は、上記で開示された方法におけるステップ、装置における機能ブロック/ユニットの全て又は一部が、ソフトウェア、ファームウェア、ハードウェア、及びそれらの適切な組み合わせとして実装され得ることを理解されるであろう。ハードウェアの実施形態において、上記の説明において言及された機能モジュール/ユニット間の区分は、必ずしも物理的な構成の区分に対応するとは限らず、例えば、1つの物理的コンポーネントが複数の機能を有してもよく、又は、1つの機能又はステップが複数の物理的コンポーネントによって協力して実行されてもよい。いくつかの物理的コンポーネント又は全ての物理的コンポーネントは、中央処理装置、デジタル信号処理装置、又はマイクロプロセッサなどのプロセッサによって実行されるソフトウェアとして、又はハードウェアとして、又は特定用途向け集積回路などの集積回路として実装されてもよい。そのようなソフトウェアは、コンピュータ記憶媒体(又は非一時的媒体)及び通信媒体(又は一時的媒体)を含むことができるコンピュータ可読媒体に分散されてもよい。当業者に周知のように、コンピュータ記憶媒体という用語は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するための任意の方法又は技術において実装される、揮発性及び不揮発性の、リムーバブル及び非リムーバブルの媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)若しくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するために使用されることが可能であって、コンピュータによってアクセスされることが可能な任意の他の媒体を含むが、これらに限定されない。さらに、通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波もしくは他の転送機構などの変調データ信号における他のデータを含み、任意の情報配信媒体を含んでもよいことが当業者に知られている。
本明細書に例示的な実施形態が開示されており、特定の用語が用いられているが、それらは単に一般的な例示的な意味として解釈されるべきであり、限定することを意図しない。いくつかの例において、特定の実施形態に合わせて説明される特徴、特性及び/又は要素は、特に明記されない限り、単独で使用されてもよく、又は他の実施形態に合わせて説明される特徴、特性及び/又は要素と組み合わせて使用されてもよいことは、当業者には明らかであろう。したがって、当業者は、添付の特許請求の範囲によって示される本開示の範囲から逸脱することなく、様々な形態及び詳細における変更を行うことができることを理解するであろう。

Claims (19)

  1. サーバーノードによって、クエリリクエストを解析して対応する論理実行プランを生成するステップと、
    前記サーバーノードによって、前記論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するステップと、
    前記論理実行プランがOLAPスケールクエリサービスに属すると判定された場合に、前記サーバーノードによって前記論理実行プランを複数の論理実行サブプランに分割して、分割された前記論理実行プランをコーディネーターノードに送信するステップと、
    前記コーディネーターノードによって、前記論理実行プランに対応する第1物理実行プランを生成して前記サーバーノードにフィードバックするステップであって、前記第1物理実行プランには各前記論理実行サブプランに対応するワーカーノードのノード情報が記録されているステップと、
    前記サーバーノードによって、前記第1物理実行プランに基づいて各前記論理実行サブプランを対応するワーカーノードに割り当てるステップと、
    前記ワーカーノードによって、対応する論理実行サブプランを処理して処理サブ結果を得、前記処理サブ結果をレイヤーごとに報告するステップと、
    前記サーバーノードによって、受信された処理サブ結果を集計して、最終的なクエリ結果を生成して、前記最終的なクエリ結果をユーザにフィードバックするステップと、を含むことを特徴とするクエリ処理方法。
  2. 前記論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、前記サーバーノードによって前記論理実行プランをコーディネーターノードに送信し、
    前記コーディネーターノードによって、前記論理実行プランに対応する第2物理実行プランを生成して前記サーバーノードにフィードバックし、前記第2物理実行プランには前記論理実行プランに対応するワーカーノードのノード情報が記録されており、
    前記サーバーノードによって、前記第2物理実行プランに基づいて前記論理実行プランを対応するワーカーノードに割り当て、
    前記ワーカーノードによって、対応する前記論理実行プランを処理して最終的なクエリ結果を得、前記最終的なクエリ結果を前記サーバーノードにアップロードし、
    前記サーバーノードによって、受信された前記最終的なクエリ結果をユーザにフィードバックすることを特徴とする請求項1に記載のクエリ処理方法。
  3. サーバーノードによって、前記論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するステップは、
    前記サーバーノードによって、前記論理実行プランに関連付けられた各データソースのデータ量をストレージノードに照会することと、
    前記サーバーノードによって、前記ストレージノードからフィードバックされた、前記論理実行プランに関連付けられた各データソースのデータ量に基づいて、前記論理実行プランに対応するデータクエリ合計量を推定することと、
    前記サーバーノードによって、前記データクエリ合計量と予め設定されたクエリ合計量とを比較することと、
    比較の結果、前記データクエリ合計量が前記予め設定されたクエリ合計量よりも大きい場合に、前記サーバーノードによって、前記論理実行プランがOLAPスケールクエリサービスに属すると判定し、前記データクエリ合計量が前記予め設定されたクエリ合計量以下である場合に、前記サーバーノードによって、前記論理実行プランがOLTPスケールクエリサービスに属すると判定することと、を含むことを特徴とする請求項1又は2に記載のクエリ処理方法。
  4. 前記ワーカーノードによって対応する論理実行サブプランを処理するステップは、
    ワーカーノード自体によって受信された論理実行サブプランがクエリプランに属するか又は集合プランに属するかを前記ワーカーノードによって検出することと、
    ワーカーノード自体によって受信された論理実行サブプランがクエリプランに属すると検出された場合に、ストレージノードによって前記論理実行サブプランについてのデータベースを作成するために、前記ワーカーノードによって前記論理実行サブプランを前記ストレージノードに転送することと、
    前記ストレージノードによって作成された前記論理実行サブプランについてのデータベースにおいて、対応するクエリ動作を前記ワーカーノードによって実行して、対応するクエリサブ結果を得ることとを含み、
    前記ストレージノードがワーカーノードによって送信された論理実行サブプランを受信した場合に、前記論理実行サブプランについてのデータベースを前記ストレージノードによって作成することをさらに含むことを特徴とする請求項1又は2に記載のクエリ処理方法。
  5. ワーカーノード自体によって受信された論理実行サブプランが集合プランに属すると検出された場合に、前記ワーカーノードによって下位ワーカーノードから報告されるクエリサブ結果を受信して集合処理を行うことを特徴とする請求項4に記載のクエリ処理方法。
  6. 前記ストレージノードによって前記論理実行サブプランについてのデータベースを作成するステップは、
    前記ストレージノードによって、受信された前記論理実行サブプランに基づいて、前記論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得することと、
    前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいか否かを前記ストレージノードによって判断することと、
    前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定された場合に、前記論理実行サブプランに関連付けられた各データソースから提供されたデータテーブルを、前記ストレージノードによってリレーショナルデータベースにマッピングすることと、
    前記論理実行サブプランに関連付けられたデータソースの数が1であると判定された場合に、前記論理実行サブプランに関連付けられた1つのデータソースから提供されたデータテーブルをデータベースとすることと、を含むことを特徴とする請求項4に記載のクエリ処理方法。
  7. 前記ストレージノードによって、受信された前記論理実行サブプランに基づいて、前記論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得するステップは、
    前記論理実行サブプランに関連付けられたデータソースを前記ストレージノードによって特定することと、
    予め記憶されている対応関係テーブルから、前記論理実行サブプランに関連付けられた各データソースに対応する推奨処理フィールドを、前記ストレージノードによって特定することであって、前記対応関係テーブルには異なるデータソース及びそれらに対応する推奨処理フィールドが記録されていることと、
    前記論理実行サブプランに関連付けられたデータソースのそれぞれについて、該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであるか否かを前記ストレージノードによって判断することと、
    該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定された場合に、該データソースが受信されたクエリ条件に応じて該データソース自体に記憶されているデータテーブルを選別して選別済みデータテーブルを前記ストレージノードにフィードバックするために、前記論理実行サブプランにおける該データソースに対応する推奨処理フィールドのクエリ条件を、前記ストレージノードによって該データソースに送信することと、
    該データソースに対応するのが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定された場合に、該データソースがデータソース自体のデータテーブルをフィードバックするために、前記ストレージノードによって該データソースにデータ取得要求を送信することと、を含むことを特徴とする請求項6に記載のクエリ処理方法。
  8. 前記サーバーノードによって、クエリリクエストを解析して対応する論理実行プランを生成するステップを実行する前に、
    メタ情報管理ノードによってユーザ識別情報の有効性を検証するステップと、
    ユーザ識別情報が有効性検証に成功した場合に、前記サーバーノードによってクエリリクエストを解析して対応する論理実行プランを生成するステップを実行するステップと、
    ユーザ識別情報が有効性検証に失敗した場合に、前記メタ情報管理ノードによって識別情報の検証失敗情報をユーザにフィードバックするステップと、をさらに含むことを特徴とする請求項1又は2に記載のクエリ処理方法。
  9. サーバーノードと、コーディネーターノードと、複数のワーカーノードと、を備え、
    前記サーバーノードは、解析モジュール、第1判断モジュール、分割モジュール、第1割り当てモジュール、集計モジュール及び第1フィードバックモジュールを含み、
    前記コーディネーターノードは、第1生成モジュールを含み、
    前記ワーカーノードは、第1処理モジュールを含み、
    前記解析モジュールは、クエリリクエストを解析して対応する論理実行プランを生成するように構成され、
    前記第1判断モジュールは、前記論理実行プランがOLAPスケールクエリサービスに属するか又はOLTPスケールクエリサービスに属するかを判断するように構成され、
    前記分割モジュールは、前記第1判断モジュールによって前記論理実行プランがOLAPスケールクエリサービスに属すると判定された場合に、前記論理実行プランを複数の論理実行サブプランに分割し、分割済みの前記論理実行プランをコーディネーターノードに送信するように構成され、
    前記第1生成モジュールは、前記分割モジュールから受信された前記論理実行プランに対応する第1物理実行プランを生成して、前記サーバーノードにフィードバックするように構成され、前記第1物理実行プランには各前記論理実行サブプランに対応するワーカーノードのノード情報が記録されており、
    前記第1割り当てモジュールは、前記第1物理実行プランに基づいて、各前記論理実行サブプランを対応するワーカーノードに割り当てるように構成され、
    前記第1処理モジュールは、対応する論理実行サブプランを処理して、処理サブ結果を得、前記処理サブ結果をレイヤーごとに報告するように構成され、
    前記集計モジュールは、受信された処理サブ結果を集計して、最終的なクエリ結果を生成するように構成され、
    前記第1フィードバックモジュールは、前記最終的なクエリ結果をユーザにフィードバックするように構成されることを特徴とするクエリ処理システム。
  10. 前記サーバーノードは、送信モジュール、第2割り当てモジュール及び第2フィードバックモジュールをさらに含み、
    前記コーディネーターノードは、第2生成モジュールをさらに含み、
    前記ワーカーノードは、第2処理モジュールをさらに含み、
    前記送信モジュールは、前記第1判断モジュールによって前記論理実行プランがOLTPスケールクエリサービスに属すると判定された場合に、前記論理実行プランをコーディネーターノードに送信するように構成され、
    前記第2生成モジュールは、前記送信モジュールから受信された前記論理実行プランに対応する第2物理実行プランを生成して、前記サーバーノードにフィードバックするように構成され、前記第2物理実行プランには前記論理実行プランに対応するワーカーノードのノード情報が記録されており、
    前記第2割り当てモジュールは、前記第2物理実行プランに基づいて、前記論理実行プランを対応するワーカーノードに割り当てるように構成され、
    前記第2処理モジュールは、対応する前記論理実行プランを処理して、最終的なクエリ結果を得、前記最終的なクエリ結果を前記サーバーノードにアップロードするように構成され、
    前記第2フィードバックモジュールは、受信された前記最終的なクエリ結果をユーザにフィードバックするように構成されることを特徴とする請求項9に記載のクエリ処理システム。
  11. 前記クエリ処理システムは、各データソースのデータ量情報が予め記憶されているストレージモジュールを含むストレージノードをさらに備え、
    前記第1判断モジュールは、照会ユニット、推定ユニット及び比較ユニットを含み、
    前記照会ユニットは、前記論理実行プランに関連付けられた各データソースのデータ量をストレージノードに照会するように構成され、
    前記推定ユニットは、前記ストレージノードからフィードバックされた、前記論理実行プランに関連付けられた各データソースのデータ量に基づいて、前記論理実行プランに対応するデータクエリ合計量を推定するように構成され、
    前記比較ユニットは、前記データクエリ合計量と予め設定されたクエリ合計量とを比較するように構成され、
    前記比較ユニットによる結果、前記データクエリ合計量が前記予め設定されたクエリ合計量よりも大きい場合に、前記第1判断モジュールによって前記論理実行プランがOLAPスケールクエリサービスに属すると判定され、前記データクエリ合計量が前記予め設定されたクエリ合計量以下である場合に、前記第1判断モジュールによって前記論理実行プランがOLTPスケールクエリサービスに属すると判定されることを特徴とする請求項9又は10に記載のクエリ処理システム。
  12. 前記第1処理モジュールは、第1検出ユニット、転送ユニット及びクエリユニットを含み、
    前記クエリ処理システムは、作成モジュールを含むストレージノードをさらに備え、
    前記第1検出ユニットは、前記ワーカーノード自体が受信した論理実行サブプランがクエリプランに属するか又は集合プランに属するかを検出するように構成され、
    前記転送ユニットは、前記第1検出ユニットによって前記ワーカーノード自体が受信した論理実行サブプランがクエリプランに属すると検出された場合に、前記ストレージノードが前記論理実行サブプランについてのデータベースを作成するために、前記論理実行サブプランを前記ストレージノードに転送するように構成され、
    前記クエリユニットは、前記ストレージノードによって作成された前記論理実行サブプランについてのデータベースにおいて対応するクエリ動作を実行して、対応するクエリサブ結果を得るように構成され、
    前記作成モジュールは、前記ストレージノードがワーカーノードから送信された論理実行サブプランを受信した場合に、前記論理実行サブプランについてのデータベースを作成するように構成されることを特徴とする請求項9又は10に記載のクエリ処理システム。
  13. 前記第1処理モジュールは集合ユニットをさらに含み、
    前記集合ユニットは、前記第1検出ユニットによって前記ワーカーノード自体が受信した論理実行サブプランが集合プランに属すると検出された場合に、下位ワーカーノードから報告されるクエリサブ結果を受信して、集合処理を行うように構成されることを特徴とする請求項12に記載のクエリ処理システム。
  14. 前記作成モジュールは、取得ユニット、判断ユニット及び処理ユニットを含み、
    前記取得ユニットは、受信された前記論理実行サブプランに基づいて、前記論理実行サブプランに関連付けられたデータソースから提供されたデータテーブルを取得するように構成され、
    前記判断ユニットは、前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいか否かを判断するように構成され、
    前記処理ユニットは、前記判断ユニットによって前記論理実行サブプランに関連付けられたデータソースの数が1よりも大きいと判定された場合に、前記論理実行サブプランに関連付けられた各データソースから提供されるデータテーブルをリレーショナルデータベースにマッピングするように構成されるとともに、前記判断ユニットによって前記論理実行サブプランに関連付けられたデータソースの数が1であると判定された場合に、前記論理実行サブプランに関連付けられた1つのデータソースから提供されたデータテーブルをデータベースとするように構成されることを特徴とする請求項12に記載のクエリ処理システム。
  15. 前記取得ユニットは、第1特定サブユニット、第2特定サブユニット、判断サブユニット、第1送信サブユニット及び第2送信サブユニットを含み、
    前記第1特定サブユニットは、前記論理実行サブプランに関連付けられたデータソースを特定するように構成され、
    前記第2特定サブユニットは、予め記憶されている対応関係テーブルから前記論理実行サブプランに関連付けられた各データソースに対応する推奨処理フィールドを特定するように構成され、前記対応関係テーブルには異なるデータソース及びそれらに対応する推奨処理フィールドが記録されており、
    前記判断サブユニットは、前記論理実行サブプランに関連付けられたデータソースのそれぞれについて、該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであるか否かを判断するように構成され、
    前記第1送信サブユニットは、前記判断サブユニットによって該データソースに対応する推奨処理フィールドが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドであると判定された場合に、該データソースが受信されたクエリ条件に基づいて該データソース自体に記憶されているデータテーブルを選別して選別済みデータテーブルを前記ストレージノードにフィードバックするために、前記論理実行サブプランにおける該データソースに対応する推奨処理フィールドのクエリ条件を該データソースに送信するように構成され、
    前記第2送信サブユニットは、前記判断サブユニットによって該データソースに対応するのが前記論理実行サブプランに含まれるクエリ条件のクエリフィールドではないと判定された場合に、該データソースが該データソース自体のデータテーブルをフィードバックするために、該データソースにデータ取得要求を送信するように構成されることを特徴とする請求項14に記載のクエリ処理システム。
  16. 前記クエリ処理システムは、検証モジュール及び第3フィードバックモジュールを含むメタ情報管理ノードをさらに備え、
    前記検証モジュールは、ユーザ識別情報の有効性を検証するように構成され、
    前記第3フィードバックモジュールは、ユーザ識別情報が有効性検証に失敗した場合に、前記メタ情報管理ノードによって識別情報の検証失敗情報をユーザにフィードバックするように構成され、
    前記解析モジュールは、ユーザ識別情報が有効性検証に成功した場合に、クエリリクエストを解析して対応する論理実行プランを生成するように構成されることを特徴とする請求項9又は10に記載のクエリ処理システム。
  17. 1つ又は複数のプロセッサと、
    1つ又は複数のプログラムが格納されている記憶装置と、を含むサーバであって、
    前記1つ又は複数のプログラムが前記1つ又は複数のプロセッサによって実行される場合に、前記1つ又は複数のプロセッサに請求項1~8のいずれか1項に記載の方法を実現させるサーバ。
  18. コンピュータプログラムが格納されているコンピュータ可読媒体であって、
    前記プログラムがプロセッサによって実行される場合に、請求項1~8のいずれか1項に記載の方法を実現するコンピュータ可読媒体。
  19. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサにより実行されると、請求項1~8のいずれか1項に記載の方法を実現する、コンピュータプログラム。
JP2020002745A 2019-05-21 2020-01-10 クエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体 Active JP6998976B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910426050.9 2019-05-21
CN201910426050.9A CN110263105B (zh) 2019-05-21 2019-05-21 查询处理方法、查询处理系统、服务器和计算机可读介质

Publications (2)

Publication Number Publication Date
JP2020191067A JP2020191067A (ja) 2020-11-26
JP6998976B2 true JP6998976B2 (ja) 2022-01-18

Family

ID=67915047

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020002745A Active JP6998976B2 (ja) 2019-05-21 2020-01-10 クエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体

Country Status (4)

Country Link
US (1) US11194807B2 (ja)
JP (1) JP6998976B2 (ja)
KR (1) KR102336079B1 (ja)
CN (1) CN110263105B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955701B (zh) * 2019-11-26 2023-04-25 中思博安科技(北京)有限公司 一种分布式数据的查询方法、装置及分布式系统
CN111190924A (zh) * 2019-12-18 2020-05-22 中思博安科技(北京)有限公司 跨域的数据查询方法及装置
US20210303574A1 (en) * 2020-03-31 2021-09-30 Paul Geoffrey Brown Matrix-related operations in relational databases systems including massively parallel processing systems
CN111897891B (zh) * 2020-06-19 2023-06-13 阿里云计算有限公司 数据处理方法及装置
CN111913986B (zh) * 2020-08-03 2024-04-16 支付宝(杭州)信息技术有限公司 一种查询优化方法及装置
CN112052242B (zh) * 2020-09-02 2024-06-04 平安科技(深圳)有限公司 数据查询方法、装置、电子设备及存储介质
CN112632053A (zh) * 2020-12-30 2021-04-09 第四范式(北京)技术有限公司 实现数据拼接的方法和实现数据拼接的系统
CN114911728A (zh) * 2021-02-07 2022-08-16 华为技术有限公司 一种数据查找方法、装置及集成电路
CN112965989A (zh) * 2021-03-04 2021-06-15 浪潮云信息技术股份公司 一种主体分散数据查询及研判方法
CN113901078A (zh) * 2021-11-18 2022-01-07 平安普惠企业管理有限公司 业务订单关联查询方法、装置、设备及存储介质
CN114860333A (zh) * 2022-04-25 2022-08-05 海信视像科技股份有限公司 一种服务编排方法和电子设备
WO2023236776A1 (en) * 2022-06-11 2023-12-14 Huawei Cloud Computing Technologies Co., Ltd. Method and apparatus for sub-optimal query identification and index optimizations post migration
CN114756629B (zh) * 2022-06-16 2022-10-21 之江实验室 基于sql的多源异构数据交互分析引擎及方法
CN116680299B (zh) * 2023-06-05 2024-04-09 粤港澳大湾区(广东)国创中心 数据库查询方法、系统、存储介质以及设备
CN117251472B (zh) * 2023-11-16 2024-02-27 中邮消费金融有限公司 跨源数据处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004536402A (ja) 2001-07-17 2004-12-02 ビーイーエイ システムズ, インコーポレイテッド 同期されたコールバック処理特徴をもったトランザクション処理システム及び方法
CN102508834A (zh) 2011-09-22 2012-06-20 用友软件股份有限公司 基于消息的大型事务应用装置和方法
JP2012138082A (ja) 2010-12-08 2012-07-19 Dassault Systemes Enovia Corp Oltpデータベース環境とolapデータベース環境を統合するための、コンピュータの方法およびシステム
JP2014120153A (ja) 2012-12-14 2014-06-30 Sap Ag 列ベースのデータベースに対する列スマートな機構

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778118A (ja) 1993-06-18 1995-03-20 Hitachi Ltd 資源競合回避スケジューリング方法
CN101566986A (zh) * 2008-04-21 2009-10-28 阿里巴巴集团控股有限公司 联机事务处理中的数据处理方法和装置
CN101697170B (zh) * 2009-10-27 2012-12-05 用友软件股份有限公司 一种动态选择数据库的方法和装置
US9239741B2 (en) * 2012-10-16 2016-01-19 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP)
KR20140098529A (ko) 2013-01-31 2014-08-08 한국전자통신연구원 데이터에 대한 접근 패턴이 서로 상이한 olap 응용 및 oltp 응용을 동시에 효과적으로 지원하는 장치 및 방법
US9770352B2 (en) 2013-03-14 2017-09-26 W. L. Gore & Associates, Inc. Inflatable balloon and cover
CN103324724B (zh) * 2013-06-26 2017-02-08 华为技术有限公司 数据处理方法及装置
CN103942342B (zh) 2014-05-12 2017-02-01 中国人民大学 一种内存数据库oltp&olap并发查询优化方法
KR101562359B1 (ko) 2014-10-14 2015-10-22 주식회사 웨어밸리 Oltp와 olap의 동시 서비스를 위한 데이터 베이스 이중화 시스템 및 그 방법
CN105824957B (zh) * 2016-03-30 2019-09-03 电子科技大学 分布式内存列式数据库的查询引擎系统及查询方法
US11068506B2 (en) 2016-05-10 2021-07-20 Sap Se Selective dispatching of OLAP requests using execution statistics
EP3291103B1 (en) * 2016-09-01 2019-11-06 Huawei Technologies Co., Ltd. System and method for creating a snapshot of a subset of a database
KR20180035035A (ko) * 2016-09-28 2018-04-05 한국전자통신연구원 데이터 엔진에서의 질의 최적화 방법 및 장치
CN106649687B (zh) * 2016-12-16 2023-11-21 飞狐信息技术(天津)有限公司 大数据联机分析处理方法及装置
US11036735B2 (en) * 2018-01-16 2021-06-15 Oracle International Corporation Dimension context propagation techniques for optimizing SQL query plans
US10909116B2 (en) * 2018-02-20 2021-02-02 International Business Machines Corporation Optimizing query processing and routing in a hybrid workload optimized database system
US10803061B2 (en) * 2018-07-31 2020-10-13 Veracode, Inc. Software vulnerability graph database

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004536402A (ja) 2001-07-17 2004-12-02 ビーイーエイ システムズ, インコーポレイテッド 同期されたコールバック処理特徴をもったトランザクション処理システム及び方法
JP2012138082A (ja) 2010-12-08 2012-07-19 Dassault Systemes Enovia Corp Oltpデータベース環境とolapデータベース環境を統合するための、コンピュータの方法およびシステム
CN102508834A (zh) 2011-09-22 2012-06-20 用友软件股份有限公司 基于消息的大型事务应用装置和方法
JP2014120153A (ja) 2012-12-14 2014-06-30 Sap Ag 列ベースのデータベースに対する列スマートな機構

Also Published As

Publication number Publication date
CN110263105A (zh) 2019-09-20
KR102336079B1 (ko) 2021-12-06
US11194807B2 (en) 2021-12-07
CN110263105B (zh) 2021-09-10
US20200372027A1 (en) 2020-11-26
JP2020191067A (ja) 2020-11-26
KR20200134140A (ko) 2020-12-01

Similar Documents

Publication Publication Date Title
JP6998976B2 (ja) クエリ処理方法、クエリ処理システム、サーバ及びコンピュータ可読媒体
US11625387B2 (en) Structuring data
US11650854B2 (en) Executing algorithms in parallel
US9990385B2 (en) Method and system for collecting and analyzing time-series data
US10915508B2 (en) Data linking
US8601112B1 (en) Method and system for collecting and analyzing time-series data
US7979439B1 (en) Method and system for collecting and analyzing time-series data
US10469330B1 (en) Client account versioning metadata manager for cloud computing environments
US20110295728A1 (en) Systems and methods for automatically collection of performance data in a multi-tenant database system environment
US20160034379A1 (en) Information technology testing and testing data management
US11153325B1 (en) Server-based restricted access storage
US11669599B2 (en) Systems and methods for software license management
US9684689B2 (en) Distributed parallel processing system having jobs processed by nodes based on authentication using unique identification of data
US10210227B2 (en) Processing a data set
US11698938B2 (en) System and method for data event management system
US20140280274A1 (en) Probabilistic record linking
US11816511B1 (en) Virtual partitioning of a shared message bus
US20150317336A1 (en) Data reconstruction
US9727666B2 (en) Data store query
US10524028B1 (en) Validating live metering service in a cloud infrastructure
WO2017008658A1 (zh) 一种文本数据的存储校验方法和系统
US11048677B1 (en) Streamlined transaction and dimension data collection
US11500874B2 (en) Systems and methods for linking metric data to resources
CN114328494A (zh) 数据汇聚方法及装置
US20190347333A1 (en) Systems and methods for log file ranking and replay

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200305

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210720

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211221

R150 Certificate of patent or registration of utility model

Ref document number: 6998976

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150