JP6338817B2 - データベースミドルウェアを用いたデータ管理システム及びその方法 - Google Patents

データベースミドルウェアを用いたデータ管理システム及びその方法 Download PDF

Info

Publication number
JP6338817B2
JP6338817B2 JP2013008599A JP2013008599A JP6338817B2 JP 6338817 B2 JP6338817 B2 JP 6338817B2 JP 2013008599 A JP2013008599 A JP 2013008599A JP 2013008599 A JP2013008599 A JP 2013008599A JP 6338817 B2 JP6338817 B2 JP 6338817B2
Authority
JP
Japan
Prior art keywords
shard
database
hint
databases
key
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
JP2013008599A
Other languages
English (en)
Other versions
JP2013186890A (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.)
Naver Corp
Original Assignee
Naver Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Naver Corp filed Critical Naver Corp
Publication of JP2013186890A publication Critical patent/JP2013186890A/ja
Application granted granted Critical
Publication of JP6338817B2 publication Critical patent/JP6338817B2/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/44Arrangements for executing specific programs

Landscapes

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

Description

本発明の実施形態は、データベースミドルウェアを用いたデータ管理システム及びその方法に関する。
関係データベース(relational database)は、一連の定形化されたテーブルで構成されたデータ項目の集合体であり、そのデータはデータベーステーブルを再構成しなくても、様々な方法によってアクセスしたり、組合わせたりすることができる。関係データベースにおいてユーザと関係データベースとを結びつける標準検索言語をSQLというが、SQL文章は関係データベースにあるデータを直接照会したり、または報告書を抽出したりすることに用いることができる。関係データベースは、作成したり利用することが比較的容易であるが、何よりも拡張が容易であるという長所を有する。初めてデータベースを作成した後に関連するアプリケーションを変更しなくても、新しいデータ項目をデータベースに追加することができる。
ここで、1つのデータベースとして扱うことができない程に多くのデータを格納して照会しようとする場合、様々なデータベースにデータを分散して格納及び保持する方式を用いることになる。ここで、従来技術では、テーブルを分離して分割されたテーブルを様々なデータベースに分散させて格納し、アプリケーション側で所望するデータを含むデータベースを探すためのルール(rule)を算出した。したがって、このような従来技術では、アプリケーション側の複雑度が増加するという問題点がある。また、テーブルの追加分割またはデータベース増設時のアプリケーション側でも変更が必要となる問題点がある。
図1は、従来技術に係るデータ管理方法を説明するための図である。図1は、複数のユーザが複数の端末(アプリケーション側)110を介して複数のデータベース120に格納されたデータを照会する際において、データベースミドルウェア130がクエリの入力を受けてデータを処理する様子を示している。ここで、従来技術に係るデータ管理方法では、アプリケーション側でキー(Key)を生成し、含まれるメタデータを用いてデータを格納/照会/生成するためのデータベースを複数のデータベース120の中から選択しなければならない。ここで、複数のデータベース120の各々は、互いに異なる名前(name)を有してもよく、名前によって識別されてもよい。例えば、端末2がデータを追加しようとし、データが追加されなければならないデータベースが「DB3」である場合、端末2は、予め設定されたルールに従ってデータを追加しなければならないデータベースが「DB3」であることを直接確認しなければならず、「DB3」にデータを追加させるクエリを生成しなければならない。すなわち、アプリケーション側で必要なデータベースを直接探してクエリを生成しなければならないため、アプリケーション側の複雑度が増加するという問題点がある。また、テーブルを追加分割したりデータベースを増設する場合、アプリケーション側で所望するデータまたは所望するデータベースを直接探さなければならないため、アプリケーション側にも変更が発生するようになるという問題点がある。
本明細書では、複数のデータベースに分散格納されたデータをより効果的に管理できるシステム及びその方法を提供する。
本発明は、データベースミドルウェアにおいて、シャーディング(sharding)処理によってアプリケーション側の要求に適した単一データベースを複数のデータベースの中から探してデータを照会及び提供することにより、アプリケーション側の複雑度を減少させることができるデータ管理システム及びその方法を提供する。
また、本発明は、シャードプロセシングモジュールを含むデータベースミドルウェアを用いて、アプリケーション側の変更なしにテーブルの追加分割またはデータベース増設が可能なデータ管理システム及びその方法を提供する。
また、本発明は、内部ハッシュ法やユーザによって登録されたハッシュ法などのような多様なハッシュ法を使用できるデータ管理システム及びその方法を提供する。
本発明の一実施形態によれば、データベースミドルウェアを含むデータ管理システムにおいて、データベースミドルウェアは、入力されるクエリに基づいてシャードキー識別子(Shard Key ID)を生成し、生成されたシャードキー識別子とシャードメタデータ(Shard metadata)とを用いて決定されたシャード識別子(shard ID)によって複数のデータベースのうち1つのデータベースを選択するシャードプロセシングモジュールを含むことを特徴とするデータ管理システムを提供する。
また、複数のデータベースは、異種のデータベースを含み、データベースミドルウェアは、異種のデータベースの各々のために、クエリを実行する複数のクライアントライブラリーモジュール(client library module)をさらに含んでもよい。
また、データベースミドルウェアは、アプリケーション側の接続要求を容認したプロセスに分配するためのジョブキューモジュール(job queue module)、同時に複数のユーザ及びデータベースとの接続を保持して、必要時に接続を再使用するためのコネクションプーリングモジュール(connection pooling module)、リアルタイムモニタリングによって状態及び統計情報を収集するモニタリングモジュール、ユーザからのデータベース命令を処理するためのデータベースインターフェースモジュール、エラーまたは実行したクエリに対するイベントログを生成するロギングモジュール(logging module)のうち少なくとも1つのモジュールをさらに含んでもよい。
また、シャードプロセシングモジュールは、入力されるクエリに含まれる予め設定されたヒントをさらに用いてシャード識別子を選択してもよい。
また、予め設定されたヒントは、1つのデータベースが1つのシャードキーを有する場合、入力されるクエリを処理するシャード識別子を選択するためにバインド変数またはリテラル値の前に位置するヒントを含んでもよい。
また、予め設定されたヒントは、1つのデータベースが1つのシャードキーを有する場合、シャードキーを有さないテーブルの処理のためのヒントを含んでもよい。
また、予め設定されたヒントは、1つのデータベースが1つのシャードキーを有する場合、すべてのシャードにあるデータを選択するためのヒントを含んでもよい。
また、予め設定されたヒントは、1つのデータベースがいくつかのシャードキーを有する場合、特定シャードキーを選択してデータを選択するためのヒントを含んでもよい。
また、本発明の一実施形態によれば、データベースミドルウェアを含むデータ管理システムでデータを管理する方法であって、データベースミドルウェアが含むシャードプロセシングモジュールにおいて、シャードキー値(shard key value)を得るための関数とシャードキー識別子を得るための関数とを実行し、関数のリターン値と、データベースミドルウェアに設定されたシャードメタデータとを用いて複数のデータベースの各々を識別するシャード識別子のうち1つのシャード識別子を選択することを含むデータ管理方法を提供する。
また、本発明の一実施形態によれば、コンピュータシステムがウェブページを提供するように制御する命令(instruction)を含むコンピュータで読み出し可能な記録媒体であって、命令は、シャードキー値を得るための関数とシャードキー識別子を得るための関数とを実行し、関数のリターン値と、データベースミドルウェアに設定されたシャードメタデータとを用いて複数のデータベースの各々を識別するシャード識別子のうち1つのシャード識別子を選択することを含む方法によってコンピュータシステムを制御する、コンピュータで読み出し可能な記録媒体を提供する。
本発明によれば、データベースミドルウェアでシャーディング処理によってアプリケーション側の要求に適した単一データベースを複数のデータベースの中から探してデータを照会及び提供することにより、アプリケーション側の複雑度を減少させることができる。
また、シャードプロセシングモジュールを含むデータベースミドルウェアを用いてアプリケーション側の変更なしにテーブルを追加分割したり、またはデータベースを増設することができる。
また、内部ハッシュ法やユーザによって登録されたハッシュ法などのような多様なハッシュ法を用いることができる。
従来技術に係るデータ管理方法を説明するための図である。 本発明の一実施形態において、データ管理方法を説明するための図である。 本発明の一実施形態において、1つのデータベースが1つのシャードキー(shard key)を有する場合、データを選択する方法を説明するための図である。 本発明の一実施形態において、1つのデータベースが1つのシャードキーを有する場合、シャードキーを有さないテーブルを処理する方法を示す図である。 本発明の一実施形態において、1つのデータベースが1つのシャードキーを有する場合、すべてのシャードにあるデータを選択する方法を示す図である。 本発明の一実施形態において、1つのデータベースがいくつかのシャードキーを有する場合、データを選択する方法を示す図である。 本発明の一実施形態において、シャードキー識別子の生成及びシャードを選択する方法の一例を示す図である。 本発明の一実施形態において、データ管理システムの内部構成の一例を説明するためのブロック図である。 本発明の一実施形態において、データ管理方法を示すフローチャートである。
以下、本発明の実施形態について図面を参照しながら詳細に説明する。
図2は、本発明の一実施形態において、データ管理方法を説明するための図である。図1及び図2を共に参照すると、図2でも複数のユーザが複数の端末(アプリケーション側)210を介して複数のデータベース220に格納されたデータを照会する際において、データベースミドルウェア230がクエリの入力を受けてデータを処理する様子を示している。ここで、図2でデータベースミドルウェア230は、シャードプロセシング(shard processing)モジュール231を含んでいる。ここで、複数のデータベース220は、全て単一データベースの名前(name)を有してもよく、複数のシャードに分類されてもよい。
データベースミドルウェア230は、シャードプロセシングモジュール231を用いてシャードキー識別子を生成し、生成されたシャードキー識別子とシャードメタデータとを用いてシャード(データベース)を選択してもよい。一例として、データベースミドルウェア230は、シャードキーをハッシュ関数を用いてハッシュし、ハッシュ値をシャードキー識別子として生成してもよい。ここで、ハッシュ関数は、シャードキー値の入力を受けてハッシュ値を出力してもよく、出力されたハッシュ値をシャードキー識別子として用いてもよい。ここで、シャードメタデータは、一実施形態において、データベースミドルウェア230の設定ファイルに含まれてもよい。
また、他の実施形態において、シャードメタデータは、各データベースに含まれてもよい。この場合、データベースミドルウェア230は、シャードプロセシングモジュール231を用いて少なくとも1つのデータベースに含まれるシャードメタデータを参考にしてシャード識別子を決定してもよい。ここで、データベースミドルウェア230は、決定されたシャード識別子を用いてシャード(データベース)を選択してもよい。
このような、データベースミドルウェア230は、シャードプロセシングモジュール231を用いて適切なデータベースを選択するため、アプリケーション側では複数のデータベース220のうち適切なデータベースを直接選択する必要がなくなり、したがって、アプリケーション側の複雑度が減少することになる。また、このようなデータベース選択のために従来技術においてアプリケーション側が含んでいたメタデータをアプリケーション側で含んでいる必要がないため、アプリケーション側の変更なしにテーブルを追加分割したり、またはデータベースを増設することができる。それだけでなく、内部ハッシュ法やユーザによって登録されたハッシュ法などのような多様なハッシュ法を使用できるようになる。
ここで、アプリケーション側でデータベースミドルウェア230に伝えられるクエリは、多様な種類のヒント(hint)を含んでもよい。以後では、多様な種類のヒントの例を図3〜図5によって詳しく説明する。
図3は、本発明の一実施形態において、1つのデータベースが1つのシャードキーを有する場合、データを選択する方法を説明するための図である。図3は、1つのデータベース300を示している。ここで、データベース300には、ユーザテーブル310が含まれている。ここで、ユーザテーブル310は、各々「emp_no」という名前のカラムを含む3つのテーブル「emp」、「emp_評価」及び「emp_経歴」を含んでいる。ここで、図2で説明したデータベースミドルウェア230は、一例として、設定ファイルにシャードメタデータを含んでもよく、シャードメタデータは、一例として、「emp_no」と共にテーブルを識別するための情報を含んでもよい。すでに説明したように、シャードメタデータは、他の実施形態で各データベースに含まれてもよい。
ここで、アプリケーション側から伝えられるクエリは、『/*+SHARD_KEY*/』のようなヒントを含んでもよい。ヒント『/*+SHARD_KEY*/』は、1つのデータベースが1つのシャードキーを有する場合に用いられてもよく、シャードキーカラム(column)に該当するリテラル値の前に位置してもよく、バインド変数のための『?』の前に位置してもよい。下の一例として、提供されたクエリで最初と3番目目の「SELECT」文では、バインド変数を示す『?』の前にヒント『/*+SHARD_KEY*/』が位置する様子を示しており、2番目の「SELECT」の文では、シャードキーカラムの値である「1」の前にヒント『/*+SHARD_KEY*/』が位置する様子を示している。
SELECT*FROM emp
WHERE emp_no=/*+SHARD_KEY*/?
SELECT*FROM emp_評価
WHERE emp_no=/*+SHARD_KEY*/1
SELECT*FROM emp_経歴
WHERE emp_no IN{/*+SHARD_KEY*/?、/*+SHARD_KEY*/?}
図4は、本発明の一実施形態において、1つのデータベースが1つのシャードキーを有する場合、シャードキーを有さないテーブルを処理する方法を示す図である。図4は、1つのデータベース400を示している。ここで、データベース400は、ユーザテーブル410を含んでいる。ここで、ユーザテーブル410は各々「emp_no」という名前のカラムを含む2つのテーブル「emp」及び「emp_評価」と、シャードキーを有さないテーブル「without_shard_table」とを含んでいる。
ここで、図2で説明したデータベースミドルウェア230には、シャードメタデータが含まれてもよく、シャードメタデータは、一例として、「emp_no」と共に必要なテーブルを識別するための情報を含んでもよい。すでに説明したように、シャードメタデータは、他の実施形態で各データベースに含まれてもよい。
この場合、クエリは、ヒントとして『/*+SHARD_VAL(value)*/』を含んでもよい。ヒント『/*+SHARD_VAL(value)*/』は、1つのデータベース400が1つのシャードキーを有する場合、シャードキーを有さないテーブル「without_shard_table」の処理のために用いられてもよい。例えば、下のクエリと共にクエリにヒントを含んでもよい。
SELECT*FROM emp
WHERE emp_no=/*+SHARD_KEY*/?

SELECT*FROM without_shard_table
WHERE/*+SHARD_VAL1*/no=「a」
2番目の「SELECT」文では、臨時シャードキー値の「1」を用いてシャードキーがないテーブル「without_shard_table」でnoカラムの値が「a」であるデータを照会する様子を示している。
図5は、本発明の一実施形態において、1つのデータベースが1つのシャードキーを有する場合、すべてのシャードにあるデータを選択する方法を示す図である。図5は、「shard 1」で識別されるデータベース510と「shard 2」で識別されるデータベース520とを示している。ここで、データベース510及びデータベース520は、全て同一のデータベースの名前を有してもよい。各データベース(510及び520)は、「emp_no」という名前のカラムを含むテーブル「emp」を含む。ここで、ヒント『/*+SHARD_ALL*/』を用いてもよい。
SELECT*FROM emp
WHERE emp_no=/*+SHARD_KEY*/?

SELECT*FROM emp/*+SHARD_ALL*/
ここで、最初の「SELECT」文において、「?」の値によって「shard 1」または「shard 2」がダイナミックにバインディングされて、バインディングされたデータベースからデータがリターンされてもよい。
また、ヒント『/*+SHARD_ALL*/』は、「shard 1」のデータと「shard 2」のデータとが全てリターンされることを意味してもよい。ここで、アプリケーション側は、「getMoreResult API」を介して「shard 1」のデータを全て受けた後、「shard 2」のデータを受けてもよい。
図6は、本発明の一実施形態において、1つのデータベースがいくつかのシャードキーを有する場合、データを選択する方法を示す図である。データベース600は、ユーザテーブル610を含んでいる。
ここで、ユーザテーブル610は、各々「emp_no」という名前のカラムを含む2つのテーブル「emp」及び「emp_評価」を有しており、「level」という名前のカラムを含む「力量レベル」テーブルをさらに有している。ここで、図2で説明したデータベースミドルウェア230は、シャードメタデータを含んでもよく、シャードメタデータは、一例として、「emp_no」及び「level」のような必要なテーブル及びレベルを識別するための情報を含んでもよい。すでに説明したように、シャードメタデータは、他の実施形態で各データベースに含まれてもよい。
この場合、ヒント『/*+SHARD_KEY(name)/』を用いてもよい。ここで、「name」は、必要な「level」に対応してもよい。すなわち、下の3番目の「SELECT」文では、1つのデータベース600が含む複数のシャードキーのうちで必要なシャードキーを「level」を介して選択するために、ヒント『/+SHARD_KEY(name)*/』を用いる様子を示している。
SELECT*FROM emp
WHERE emp_no=/*+SHARD_KEY(emp_no)*/?
SELECT*FROM emp_評価
WHERE emp_no=/*+SHARD_KEY(emp_no)*/1

SELECT*FROM力量レベル
WHERE level=/*+SHARD_KEY (level)*/?
図7は、本発明の一実施形態において、キー識別子の生成及びシャードを選択する方法の一例を示す図である。図7は、データベースミドルウェア710、「shard 1」で識別されるデータベース720、及び「shard 2」で識別されるデータベース730を示している。ここで、データベース720は、ユーザテーブル721を含んでおり、データベース730は、ユーザテーブル731を含んでいる。
ここで、クエリ740がデータベースミドルウェア710に入力されると、データベースミドルウェア710は、データベースミドルウェア710が提供する算出方式またはユーザ定義関数を使用してシャードキーに対するハッシュ値を算出してもよく、得られたハッシュ値を用いてデータベースミドルウェア710が含むシャードメタデータの内容によってルールを適用してシャード識別子を選択してクエリを実行してもよい。ここで、シャードメタデータは、他の実施形態として各データベースに含まれてもよい。
すでに何度か説明したように、複数のデータベースは、複数のシャードに分類されてもよい。一例として、N個のデータベースがM個のシャードに分類されてもよい。この場合、NとMとは全て整数で、NはMよりもさらに大きいか同じであってもよい。もし、1つのシャードに分類されるデータベースが複数である場合、1つのシャードに分類されるデータベースは、互いに同一機種のデータベースであってもよい。
図7の例では、「45」というシャードキー識別子を用いてデータベースミドルウェア710のシャードメタデータを照会し、必要なシャード識別子が「1」であることを確認して「shard 1」で識別されるデータベース720を選択してクエリを実行する様子を示している。
クエリには、1つのシャードキー値当たり1つのシャードキーヒント(SHARD_KEY Hint)が含まれてもよく、1つ以上のシャードキーヒントが用いられる場合、各ヒントは同一のシャード識別子に対して適用してもよい。また、シャード(Shard)を越える結合クエリ(JOIN query)は、サポートしなくてもよい。
本実施形態に係るデータ管理システムは、データベースミドルウェアを含んでもよく、データベースミドルウェアは、シャードプロセシングモジュールを含んでもよい。ここで、シャードプロセシングモジュールは、入力されるクエリに基づいてシャードキー識別子を生成し、生成されたシャードキーとデータベースミドルウェアに設定されたシャードメタデータとを用いてシャード識別子を選択してもよい。ここで、データベースミドルウェアは、選択されたシャード識別子によって複数のデータベースのうち1つのデータベースを選択してもよい。一例として、データベースミドルウェア230は、シャードキーをハッシュ関数を用いてハッシュし、ハッシュ値をシャードキー識別子として生成してもよい。
ここで、複数のデータベースは、異種のデータベースを含んでもよい。ただし、1つのシャードに分類されるデータベースは、同一機種のデータベースで構成してもよい。ここで、データベースミドルウェアは、異種のデータベースの各々のために、クエリを実行する複数のクライアントライブラリー(Client Library)モジュールを必要に応じてさらに含んでもよい。また、データベースミドルウェアは、必要に応じてアプリケーション側の接続要求を容認したプロセスに分配するためのジョブキュー(Job Queuing)モジュール、同時に複数のユーザ及びデータベースとの接続を保持し、必要時に接続を再使用するためのコネクションプーリング(Connection Pooling)モジュール、リアルタイムモニタリングによって状態及び統計情報を収集するモニタリング(Monitoring)モジュール、ユーザからのデータベース命令を処理するためのデータベースインターフェース(DB Interface)モジュール、エラーまたは行ったクエリに対するイベントログを生成するロギング(Logging)モジュールのうち少なくとも1つのモジュールをさらに含んでもよい。
ここで、シャードプロセシングモジュールは、入力されるクエリに含まれる予め設定されたヒントをさらに用いてシャード識別子を選択してもよい。予め設定されたヒントは、1つのデータベースが1つのシャードキーを有する場合、入力されるクエリを処理するシャード識別子を選択するためにシャードキー値(バインド変数またはリテラル値)の前に位置するヒント、1つのデータベースが1つのシャードキーを有する場合、シャードキーを有さないテーブルの処理のためのヒント、1つのデータベースが1つのシャードキーを有する場合、すべてのシャードにあるデータを選択するためのヒント、及び1つのデータベースがいくつかのシャードキーを有する場合、特定のシャードキーを選択してデータを選択するためのヒントのうち少なくとも1つのヒントを含んでもよい。それぞれのヒントについては、図3〜図6によってすでに詳しく説明した。
図8は、本発明の一実施形態において、データ管理システムの内部構成の一例を説明するためのブロック図である。図8では、アプリケーション側として「DB Middleware Interface(データベースミドルウェアインターフェース)」810と、データベースミドルウェアとして「DB Middleware」820と、そして異種のデータベースとして互いに異なる種類の3つのデータベース(「CUBRID」、「Oracle」及び「MySQL」)830とを各々示している。
ここで、「DB Middleware」820は、上述したモジュールをすべて含む一例を示している。また、「DB Middleware Interface」810は、ジャバプログラムのうちでSQLを実行するためにデータベースを接続するアプリケーションインターフェースの「JDBC(Java(登録商標) data base connectivity)」を含む一例を示している。
図9は、本発明の一実施形態において、データ管理方法を示すフローチャートである。
ステップS910において、データ管理システムは、シャードキー値を得るための関数とシャードキー識別子を得るための関数とを実行する。ここで、シャードキー識別子は、シャードキー値をハッシュしたハッシュ値として生成されてもよい。すなわち、シャードキー識別子を得るための関数は、シャードキー値をハッシュするためのハッシュ関数であってもよい。
ステップS920において、データ管理システムは、関数のリターン値と、データベースミドルウェアに設定されたシャードメタデータとを用いて複数のデータベースの各々を識別するシャード識別子のうち1つのシャード識別子を選択する。
このようなステップS910及びステップS920は、データ管理システムが含むデータベースミドルウェアを介して、特にデータベースミドルウェアが含むシャードプロセシングモジュールによって実行してもよい。
ここで、複数のデータベースは、異種のデータベースを含んでもよい。ただし、1つのシャードに分類されるデータベースは、互いに同一の機種のデータベースで構成してもよい。ここで、データベースミドルウェアは、異種のデータベースの各々のために、クエリを実行する複数のクライアントライブラリーモジュールをさらに含んでもよい。また、データベースミドルウェアは、アプリケーション側の接続要求を容認したプロセスに分配するためのジョブキューモジュール、同時に複数のユーザ及びデータベースとの接続を保持して、必要時に接続を再使用するためのコネクションプーリングモジュール、リアルタイムモニタリングによって状態及び統計情報を収集するモニタリングモジュール、ユーザからのデータベース命令を処理するためのデータベースインターフェースモジュール、エラーまたは実行したクエリに対するイベントログを生成するロギングモジュールのうち少なくとも1つのモジュールをさらに含んでもよい。
また、ステップS920において、データ管理システムは、入力されるクエリに含まれる予め設定されたヒントをさらに用いてシャード識別子を選択してもよい。1つのデータベースが1つのシャードキーを有する場合、入力されるクエリを処理するシャード識別子を選択するためにシャードキー値(バインド変数またはリテラル値)の前に位置するヒント、1つのデータベースが1つのシャードキーを有する場合、シャードキーを有さないテーブルの処理のためのヒント、1つのデータベースが1つのシャードキーを有する場合、すべてのシャードにあるデータを選択するためのヒント、及び1つのデータベースがいくつかのシャードキーを有する場合、特定のシャードキーを選択してデータを選択するためのヒントのうち少なくとも1つのヒントを含んでもよい。それぞれのヒントについては、図3〜図6によってすでに詳しく説明した。
このように、本発明の実施形態によれば、データベースミドルウェアでシャーディング処理によってアプリケーション側の要求に適した単一データベースを複数のデータベースの中から探してデータを照会及び提供することにより、アプリケーション側の複雑度を減少させることができる。また、シャードプロセシングモジュールを含むデータベースミドルウェアを用いてアプリケーション側の変更なしにテーブルを追加分割したり、またはデータベースを増設してもよく、内部ハッシュ法やユーザによって登録されたハッシュ法などのような多様なハッシュ法を用いてもよい。
本発明の実施形態に係る方法は、多様なコンピュータ手段によって行うことができるプログラム命令形態で実現され、コンピュータ読み出し可能媒体に記録してもよい。前記記録媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせたものを含んでもよい。前記記録媒体及びプログラム命令は、本発明の目的のために特別に設計して構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり使用可能なものであってもよい。
上述したように本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
したがって、本発明の範囲は、開示された実施形態に限定されて定められるものではなく、特許請求の範囲及び特許請求の範囲と均等なものなどによって定められるものである。
230:データベースミドルウェア
231:シャードプロセシングモジュール

Claims (9)

  1. データベースミドルウェアを含むデータ管理システムにおいて、
    前記データベースミドルウェアは、
    入力されるクエリに基づいてシャードキー識別子を生成し、前記生成されたシャードキー識別子とシャードメタデータと、前記入力されるクエリに含まれる予め設定されたヒントとを用いて選択されたシャード識別子によって複数のデータベースのうち1つのデータベースを選択するシャードプロセシングモジュールを含む、
    ータ管理システム。
  2. 前記複数のデータベースは、異種のデータベースを含み、
    前記データベースミドルウェアは、
    前記異種のデータベースの各々のために、クエリを実行する複数のクライアントライブラリーモジュールをさらに含むことを特徴とする請求項1に記載のデータ管理システム。
  3. 前記データベースミドルウェアは、
    アプリケーション側の接続要求を容認したプロセスに分配するためのジョブキューモジュール、同時に複数のユーザ及びデータベースとの接続を保持して、必要時に接続を再使用するためのコネクションプーリングモジュール、リアルタイムモニタリングによって状態及び統計情報を収集するモニタリングモジュール、ユーザからのデータベース命令を処理するためのデータベースインターフェースモジュール、エラーまたは実行したクエリに対するイベントログを生成するロギングモジュールのうち少なくとも1つのモジュールをさらに含むことを特徴とする請求項1または請求項2に記載のデータ管理システム。
  4. 前記予め設定されたヒントは、
    1つのデータベースが1つのシャードキーを有する場合、
    (1)前記入力されるクエリを処理するシャード識別子を選択するためにバインド変数またはリテラル値の前に位置するヒント、
    (2)シャードキーを有さないテーブルの処理のためのヒント、及び
    (3)すべてのシャードにあるデータを選択するためのヒント、
    のうち、少なくとも1つを含み、
    1つのデータベースがいくつかのシャードキーを有する場合、
    (4)特定のシャードキーを選択してデータを選択するためのヒントを含む、ことを特徴とする請求項1に記載のデータ管理システム。
  5. データベースミドルウェアを含むデータ管理システムでデータを管理する方法であって、
    前記データベースミドルウェアが含むシャードプロセシングモジュールにおいて、
    シャードキーに基づいてシャードキー識別子を得るための関数を実行し、
    前記関数のリターン値と、前記データベースミドルウェアに設定されたシャードメタデータと、入力されるクエリに含まれる予め設定されたヒントとを用いて複数のデータベースの各々を識別するシャード識別子のうち1つのシャード識別子を選択すること、
    を含む、
    ータ管理方法。
  6. 前記複数のデータベースは、異種のデータベースを含み、
    前記データベースミドルウェアは、
    前記異種のデータベースの各々のために、クエリを実行する複数のクライアントライブラリーモジュールをさらに含むことを特徴とする請求項5に記載のデータ管理方法。
  7. 前記データベースミドルウェアは、
    アプリケーション側の接続要求を容認したプロセスに分配するためのジョブキューモジュール、同時に複数のユーザ及びデータベースとの接続を保持して、必要時に接続を再使用するためのコネクションプーリングモジュール、リアルタイムモニタリングによって状態及び統計情報を収集するモニタリングモジュール、ユーザからのデータベース命令を処理するためのデータベースインターフェースモジュール、エラーまたは実行したクエリに対するイベントログを生成するロギングモジュールのうち少なくとも1つのモジュールをさらに含むことを特徴とする請求項5または請求項6に記載のデータ管理方法。
  8. 前記予め設定されたヒントは、
    1つのデータベースが1つのシャードキーを有する場合、
    (1)前記入力されるクエリを処理するシャード識別子を選択するためにバインド変数またはリテラル値の前に位置するヒント、
    (2)シャードキーを有さないテーブルの処理のためのヒント、及び
    (3)すべてのシャードにあるデータを選択するためのヒント、
    のうち少なくとも1つの含み、
    1つのデータベースがいくつかのシャードキーを有する場合、
    (4)特定のシャードキーを選択してデータを選択するためのヒントを含む、ことを特徴とする請求項5に記載のデータ管理方法。
  9. 請求項5から請求項8のいずれか一項に係る方法を実行するためのプログラムを記録したコンピュータ読み出し可能記録媒体。
JP2013008599A 2012-03-05 2013-01-21 データベースミドルウェアを用いたデータ管理システム及びその方法 Active JP6338817B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0022434 2012-03-05
KR1020120022434A KR101365464B1 (ko) 2012-03-05 2012-03-05 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법

Publications (2)

Publication Number Publication Date
JP2013186890A JP2013186890A (ja) 2013-09-19
JP6338817B2 true JP6338817B2 (ja) 2018-06-06

Family

ID=47678575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013008599A Active JP6338817B2 (ja) 2012-03-05 2013-01-21 データベースミドルウェアを用いたデータ管理システム及びその方法

Country Status (3)

Country Link
EP (1) EP2637111B1 (ja)
JP (1) JP6338817B2 (ja)
KR (1) KR101365464B1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105264521B (zh) * 2014-02-18 2018-10-30 华为技术有限公司 一种数据表的导入方法、数据管理器以及服务器
US9659079B2 (en) 2014-05-30 2017-05-23 Wal-Mart Stores, Inc. Shard determination logic for scalable order and inventory management architecture with a sharded transactional database
US10043208B2 (en) 2014-05-30 2018-08-07 Walmart Apollo, Llc Smart order management and database sharding
US10346897B2 (en) 2014-05-30 2019-07-09 Walmart Apollo, Llc Method and system for smart order management and application level sharding
US10410169B2 (en) 2014-05-30 2019-09-10 Walmart Apollo, Llc Smart inventory management and database sharding
WO2016172195A1 (en) 2015-04-20 2016-10-27 Oracle International Corporation System and method for providing access to a sharded database using a cache and a shard topology
US10254980B1 (en) 2015-09-22 2019-04-09 Amazon Technologies, Inc. Scheduling requests from data sources for efficient data decoding
US9672110B1 (en) 2015-09-22 2017-06-06 Amazon Technologies, Inc. Transmission time refinement in a storage system
US10909211B2 (en) * 2016-08-12 2021-02-02 Oracle International Corporation System and method for control of maximum connections in a connection pool environment
US11290540B2 (en) 2016-08-12 2022-03-29 Oracle International Corporation System and method for use of server-side connection pool tagging in a multi-tenant environment
CN108090056B (zh) * 2016-11-21 2021-06-15 中兴通讯股份有限公司 数据查询方法、装置及系统
CN108874837B (zh) * 2017-05-16 2021-09-03 北京京东尚科信息技术有限公司 数据库分库方法、装置、中间件及存储介质和电子设备
KR101885554B1 (ko) * 2017-09-01 2018-08-06 한화시스템 주식회사 e-내비게이션 서비스를 위한 이종 데이터 처리 시스템 또는 데이터 서비스 플랫폼의 이종 데이터 처리 방법
US11061905B2 (en) * 2017-12-08 2021-07-13 International Business Machines Corporation Job management in data processing system
KR102276600B1 (ko) * 2019-03-28 2021-07-13 한국전자기술연구원 열처리 공정의 전력 빅데이터 분석을 위한 데이터 분산처리 관리방법 및 시스템
KR20200136151A (ko) 2019-05-27 2020-12-07 삼성에스디에스 주식회사 동적 샤드 선택 장치 및 방법
CN111400285B (zh) * 2020-03-25 2023-06-20 杭州浮云网络科技有限公司 mySQL数据分片处理方法、装置、计算机设备和可读存储介质
CN111813573B (zh) * 2020-06-29 2022-09-20 中国平安人寿保险股份有限公司 管理平台与机器人软件的通信方法及其相关设备
CN115803733A (zh) * 2020-08-12 2023-03-14 阿里巴巴集团控股有限公司 无服务器架构中工作流应用的分片
CN112417044B (zh) * 2020-11-20 2023-10-31 中国平安人寿保险股份有限公司 新增附加险系统的数据处理方法、装置及计算机设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3786233B2 (ja) * 1996-09-11 2006-06-14 日本電信電話株式会社 情報検索方法および情報検索システム
JP3515050B2 (ja) * 2000-07-07 2004-04-05 三菱電機株式会社 データベース演算処理装置
KR100516046B1 (ko) * 2003-12-01 2005-09-22 김강인 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템
KR20050121778A (ko) * 2004-06-23 2005-12-28 육상수 데이터베이스 시스템의 감사, 통제 방법 및 시스템
JP2008090404A (ja) * 2006-09-29 2008-04-17 Just Syst Corp 文書検索装置、文書検索方法および文書検索プログラム
JP2008165293A (ja) * 2006-12-27 2008-07-17 Seiko Epson Corp データ検索装置、デバイス管理装置、データ検索方法、およびコンピュータプログラム
JP4821783B2 (ja) 2008-02-08 2011-11-24 日本電気株式会社 グリッドコンピューティングシステム及びデータ処理方法
US8229945B2 (en) * 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
KR20100132752A (ko) * 2009-06-10 2010-12-20 (주)자이네스 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템

Also Published As

Publication number Publication date
EP2637111A1 (en) 2013-09-11
EP2637111B1 (en) 2019-05-29
KR20130101349A (ko) 2013-09-13
JP2013186890A (ja) 2013-09-19
KR101365464B1 (ko) 2014-02-20

Similar Documents

Publication Publication Date Title
JP6338817B2 (ja) データベースミドルウェアを用いたデータ管理システム及びその方法
US11281669B2 (en) Parallel processing database system
EP3285178B1 (en) Data query method in crossing-partition database, and crossing-partition query device
US9336263B2 (en) Data loading systems and methods
CN101727465B (zh) 分布式列存储数据库索引建立、查询方法及装置与系统
US9239741B2 (en) System and method for flexible distributed massively parallel processing (MPP)
US8150836B2 (en) System, method, and computer-readable medium for reducing row redistribution costs for parallel join operations
US8812492B2 (en) Automatic and dynamic design of cache groups
JP6898320B2 (ja) インデックス確立の方法およびデバイス
CN104182405A (zh) 一种连接查询方法及装置
CN104408159A (zh) 一种数据关联、加载、查询方法及装置
CN110399368B (zh) 一种定制数据表的方法、数据操作方法及装置
CN104268298A (zh) 一种创建数据库索引及其查询的方法
CN106471501A (zh) 数据查询的方法、数据对象的存储方法和数据系统
US11226986B2 (en) Data table partitioning management method and apparatus
CN116701443A (zh) 一种数据查询方法、装置、计算机设备及存储介质
CN112632116B (zh) 一种k-db数据库多节点集群调度的方法、系统、设备及介质
CN112417225A (zh) 一种多源异构数据的联合查询方法与系统
CN108228654A (zh) 一种大数据分布式存储方法和系统
US10963426B1 (en) Method of providing access controls and permissions over relational data stored in a hadoop file system
KR101648707B1 (ko) 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법
Bhaskar et al. An Analysis of Vertical Splitting Algorithm
CN113742346A (zh) 资产大数据平台架构优化方法
Cao et al. Efficient and Flexible Index Access in MapReduce.
CN114297260A (zh) 分布式rdf数据查询方法、装置和计算机设备

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180509

R150 Certificate of patent or registration of utility model

Ref document number: 6338817

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250