JPWO2017163393A1 - データ処理システム - Google Patents
データ処理システム Download PDFInfo
- Publication number
- JPWO2017163393A1 JPWO2017163393A1 JP2018506722A JP2018506722A JPWO2017163393A1 JP WO2017163393 A1 JPWO2017163393 A1 JP WO2017163393A1 JP 2018506722 A JP2018506722 A JP 2018506722A JP 2018506722 A JP2018506722 A JP 2018506722A JP WO2017163393 A1 JPWO2017163393 A1 JP WO2017163393A1
- Authority
- JP
- Japan
- Prior art keywords
- query
- archive
- file
- record
- records
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Abstract
本発明の一実施形態に係るデータ処理システムは、1以上のテーブルと、テーブルから抽出された1以上のレコードを含む複数のアーカイブファイルを管理する。データ処理システムは、テーブルに対する検索要求を受け付けると、検索要求で指定された項目を前記テーブルから検索するクエリ(部分クエリ1)を生成し、検索要求で検索対象とされているテーブルから移動されたレコードを含むアーカイブファイルを特定して、特定されたアーカイブファイルから前記検索要求で指定された項目を検索するクエリ(部分クエリ2)を生成する。そして、部分クエリ1と部分クエリ2の出力結果の和集合を求めるクエリを生成し、生成されたクエリに係る処理を並列実行する。
Description
本発明は、データ処理システムに関する。
従来のデータベース管理ツールやデータ処理アプリケーションで処理することが困難なほど巨大なデータセットの集積物をビッグデータという。近年、ビッグデータを分析して、ビジネスの傾向の発見等に活用することが行われるようになってきている。
ビッグデータはそのサイズの大きさのせいで、従来からあるデータベースシステムで管理できないことがある。そのため、データベースシステムでそのようなデータを扱う場合、ごく最近収集されたデータをデータベースのテーブルに格納し、それ以前のデータはアーカイブファイルへと移動して保管するという運用がなされることもある。アーカイブファイルは通常、データベースシステムが提供するアクセス方法でアクセス可能なデータではないため、このような運用を行うと、アーカイブファイルに記録されたデータを用いた分析等が困難になる。
このような問題を解決するために、アーカイブもデータベースの一部としてアクセス可能にする技術が考えられている。たとえば特許文献1には、所定の抽出条件にあてはまるデータをデータベースから抽出してアーカイブファイルに移動し、移動されたデータの日付情報をディクショナリに格納しておくシステムが開示されている。このシステムでは、日付を指定したデータ検索要求を受け付けると、データベースからデータ検索を行うことに加えて、ディクショナリを参照することで、指定された日付のデータが含まれているアーカイブファイルを読み出してデータ検索を行う。
ビッグデータのような大規模なデータ群の中から所望のデータを検索する等の処理を現実的な時間で行うためには、システムのアクセス性能の向上が必要である。アクセス性能の向上施策の一つの例として、並列処理がある。しかしながら特許文献1に開示のシステムは、並列処理に対する考慮は無く、指定された日付のデータが含まれるアーカイブファイルを1つずつ特定し、逐次的にアーカイブファイル(またはテーブル)の検索を行う必要があり、処理性能の向上が難しい。
本発明の一実施形態に係るデータ処理システムは、1以上のテーブルと、テーブルから抽出された1以上のレコードを含む複数のアーカイブファイルを管理する。データ処理システムは、テーブルに対する検索要求を受け付けると、検索要求で指定された項目を前記テーブルから検索するクエリ(部分クエリ1)と、検索要求で検索対象とされているテーブルから抽出(移動)されたレコードを含むアーカイブファイルを特定して、特定されたアーカイブファイルから前記検索要求で指定された項目を検索するクエリ(部分クエリ2)とを生成する。さらに部分クエリ1と部分クエリ2を用いて、これらの出力結果の和集合を求めるクエリを生成し、生成されたクエリに係る処理を並列実行する。
本発明によれば、大規模データベースの処理性能を向上させることができる。
以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
(1) システム構成
図1は、本発明の実施例に係るデータ処理システムのハードウェア構成を示す図である。データ処理システムは、データベースサーバ1(以下、「サーバ1」あるいは「DBサーバ1」と略記する)、クライアント2、記憶装置3,4を有する。サーバ1とクライアント2は、例えばイーサネット(Ethernet)を用いて構成されたローカルエリアネットワーク(LAN)6を介して、相互通信可能に接続される。サーバ1は、たとえばファイバチャネル(FibreChannel)を用いて構成されたネットワーク5(またはSAN5と呼ばれる)を介して、記憶装置3,4と接続される。
図1は、本発明の実施例に係るデータ処理システムのハードウェア構成を示す図である。データ処理システムは、データベースサーバ1(以下、「サーバ1」あるいは「DBサーバ1」と略記する)、クライアント2、記憶装置3,4を有する。サーバ1とクライアント2は、例えばイーサネット(Ethernet)を用いて構成されたローカルエリアネットワーク(LAN)6を介して、相互通信可能に接続される。サーバ1は、たとえばファイバチャネル(FibreChannel)を用いて構成されたネットワーク5(またはSAN5と呼ばれる)を介して、記憶装置3,4と接続される。
サーバ1は、データ処理システムの利用者(以下、「ユーザ」と呼ぶ)から受領した、データベースへのアクセスリクエストの処理を行うコンピュータで、CPU11、メモリ12、LAN6に接続するためのネットワークポート13、入出力デバイス14、ストレージポート16を有する。メモリ12はたとえばDRAM等の記憶デバイスで、CPU11がプログラムを実行する時に、そのプログラムまたはプログラムの実行時に用いられる制御情報等を格納するために用いられる。CPU11はデータベースアクセス処理を実施するためのプログラムを実行するコンポーネントである。本実施例に係るデータ処理システムにおいて、サーバ1はいわゆるSMP(Symmetric Multi Processoring)サーバで、複数のCPU11を有し、各CPU11が並列に処理を実行することができる。なお、サーバ1内に複数のCPU11を設ける代わりに、サーバ1内にいわゆる複数のプロセッサコアを有するマルチコアプロセッサが1つ設けられる構成でも良い。
入出力デバイス14はたとえば、キーボードやマウスなどの、ユーザが情報入力を行う際に用いるデバイスと、ディスプレイやプリンタ等の表示(出力)デバイスを含む。ストレージポート16は、サーバ1と記憶装置3を接続するためのインタフェースである。
クライアント2は、ユーザがサーバ1に対してデータベースへの参照更新要求を発行したり、サーバ1から返送される、処理結果の出力を受領したりするために用いられるコンピュータである。クライアント2は、CPU21、メモリ22、LAN6に接続するためのネットワークポート23、入出力デバイス24を有する。CPU21、メモリ22、ネットワークポート23、入出力デバイス24はそれぞれ、サーバ1のCPU11、メモリ12、ネットワークポート13、入出力デバイス14と同様のものである。またクライアント2は、メモリ22の他に、磁気ディスクなどの補助記憶装置を備えていてもよい。
記憶装置3,4は、磁気ディスク等の不揮発性記憶デバイスを有する装置で、データベース31やアーカイブファイル32を格納するための装置である。記憶装置3,4は、いわゆるディスクアレイ(またはRAID)のように、複数の不揮発性記憶デバイスを有する装置であってもよい。記憶装置3は、SAN5を介してサーバ1のストレージポート16に接続される。
本実施例に係るデータ処理システムでは、データベース31に格納されたデータは一定期間が経過すると、アーカイブファイル32へと移される。アーカイブファイル32は、データベース31の格納される記憶装置3とは別の記憶装置4に格納される。本実施例では、アーカイブファイル32の格納される記憶装置4のことを、「アーカイブ4」と呼ぶこともある。ただしデータベース31とアーカイブファイル32とが、同一の記憶装置3に格納される構成が採用されてもよい。
また、記憶装置3とアーカイブ4は、異なる種類の記憶装置であって良い。たとえばデータベース31の格納される記憶装置3には、アーカイブ4よりもアクセス性能の高い記憶装置が用いられてもよい。また、アーカイブ4には、DVDや磁気テープ等の可搬型記憶媒体及び可搬型記憶媒体へのアクセスを行う記憶装置が用いられてもよい。
サーバ1のメモリ12には、サーバ1で実行されるプログラムや、プログラムが使用する制御情報が格納される。サーバ1で実行されるプログラムとしては、たとえばデータベース管理プログラム120、ファイルシステムプログラム121、OS122がある。
OS122は、サーバ1上で実行される各種プログラムのスケジュール制御を行い、抽象化されたハードウェアリソースを各種プログラムに提供する処理を行うプログラムである。
ファイルシステムプログラム121は、ファイル及びファイル管理情報を記憶装置4等に格納して管理するプログラムである。本実施例ではファイルシステムプログラム121は主に、データベース31から移動されたデータが格納されたアーカイブファイル32に対するアクセスを行い、データベース31へのアクセスが行われる時には、ファイルシステムプログラム121は用いられない。ただし別の実施形態として、ファイルシステムプログラム121が作成したファイルシステム(ファイルを格納・管理するためのデータ構造)の上にデータベース31を格納するように構成されてもよい。
データベース管理プログラム120は、関係データベース管理システム(RDBMS)と呼ばれることもあるプログラムで、リレーショナルデータベース(データベース31)の作成や管理を行う。また本実施例に係るデータベース管理プログラム120は、アーカイブファイル32に対するアクセスも可能である。データベース管理プログラム120が具体的に提供する機能については後述する。
また、これらのプログラムが使用する管理情報として、ディクショナリ500、チャンク管理表600、ファイル管理表700がある。これらの詳細は後述する。
なお、上で説明したプログラムや管理情報は、サーバ1が稼働していない時は記憶装置3(あるいはサーバ1に内蔵された、非図示の補助記憶装置)に格納されている。サーバ1が起動し、必要な時(検索処理等が行われる時)に、これらのプログラムや管理情報は記憶装置3からメモリ12上に読み出され、CPU11によって使用される。なお、サーバ1は上で述べたプログラム以外のプログラム、そして上で述べた管理情報以外の情報を、メモリ12に格納してもよい。
クライアント2のメモリ22には、クライアントプログラム221が存在しており、CPU21がクライアントプログラム221を実行する。クライアントプログラム221は、ユーザが情報検索指示を発行するためのGUI(Graphical User Interface)またはCLI(Command Line Interface)を提供するプログラムである。
(2) データベースとアーカイブファイルの構成
続いて、本実施例に係るデータ処理システムで取り扱われるデータベース31とアーカイブファイル32の構成について説明する。記憶装置3内に、テーブル300等を定義するためのデータベースエリア(データベース31と呼ぶ)が定義され、データベース31内には1または複数のテーブル300が定義されている。
続いて、本実施例に係るデータ処理システムで取り扱われるデータベース31とアーカイブファイル32の構成について説明する。記憶装置3内に、テーブル300等を定義するためのデータベースエリア(データベース31と呼ぶ)が定義され、データベース31内には1または複数のテーブル300が定義されている。
まず、サーバ1で作成されるテーブル300の例を、図2に示す。テーブル300は、SEQ_NO(311)、USER_DATA(312)、RECORD_DAY(313)の3つのカラムを有するレコードを複数有する。ただし図2のテーブル300は一例であり、各レコードは4以上のカラムを有していてもよい。
本実施例では、テーブル300に格納されるデータ(レコード)は一例として、時系列データとする。時系列データとはたとえば、センシングデバイス等のデータソースから継続的に取得した計測データの集合である。計測データはテーブル300内レコードのカラムUSER_DATA(312)に格納され、計測データが格納されたレコードのRECORD_DAY(313)にはたとえば、計測データをデータソースから取得した日が格納される。
テーブルの定義される記憶装置3の記憶領域、そしてアーカイブファイルの格納されるアーカイブ4の記憶領域について、図3を参照しながら説明する。本実施例では、データソースから取得されたデータを用いて作成されたレコードをテーブルに格納する時、サーバ1はデータインポートツール等のプログラム(図1等では非図示)を用いて、一度に複数のレコードをテーブルに格納する。本実施例では、データインポートツールにより、テーブルに一度にロードされたレコードの集合のことを、「チャンク」と呼ぶ。テーブルは、このチャンクを複数持つ構成となっている。なお、チャンクは上に述べた定義以外のものでもよい。例えば、特定条件により分類されているレコードの集合がチャンクと定義されてもよい。あるいは、記憶装置3の領域を所定サイズの区画に区切ることにより形成された領域に格納されたレコードの集合が、チャンクと定義されてもよい。また、これらの複数の特性を備えたレコードの集合がチャンクと定義されてもよい。たとえば、記憶装置3内の所定サイズの区画(連続領域)内に、データインポートツールにより一度にロードされたレコードの集合を、チャンクと定義してもよい。
テーブル300には、データソースから集められたデータが継続的に蓄積されるため、テーブル300に格納されるデータは、時間の経過に伴い膨大なものになる。データ量が膨大になると、記憶装置3の空き領域がなくなりデータの蓄積ができなくなる。そのためサーバ1は、テーブル300に格納されたデータのうち、古いデータ(RECORD_DAY(313)の日付が古いレコード)から順にアーカイブ4へ移動する。この処理をアーカイブ処理と呼ぶ。
アーカイブ4への移動の際、サーバ1はアーカイブ4内にファイルを作成し、移動対象のレコードをテーブル300から読み出して、作成されたファイルに格納する。このファイルはアーカイブファイルと呼ばれる。レコードはアーカイブファイルに記録されるとテーブル300からは削除される。
アーカイブ4の記憶領域には、ファイルシステムプログラム121によって、ディレクトリ等のファイル管理用のデータ構造が形成されている。アーカイブファイルを格納するディレクトリはあらかじめ定められており、そのディレクトリは「アーカイブディレクトリ」と呼ばれる。アーカイブディレクトリは、ユーザがテーブルを定義する際に指定される。
アーカイブファイル32の例を図4に示す。本実施例ではアーカイブファイル32のファイル形式には、いわゆるCSV(Comma Separated Value)形式が採用される。ただしCSV形式以外のファイル形式が用いられてもよい。またアーカイブファイル32がアーカイブ4に格納される際には、圧縮された状態で格納されてもよい。図4に示されている例は、非圧縮状態のアーカイブファイル32の内容である。
アーカイブファイル32の各行は、テーブル300のレコードに相当する。つまり、テーブル内レコードのカラム(SEQ_NO(311)、USER_DATA(312)、RECORD_DAY(313))に格納されていたデータのそれぞれが、カンマで区切られた形で記述される。図4において、行320が、テーブルに格納されていた1つのレコードを表し、要素321,322,323はそれぞれ、テーブルのSEQ_NO(311)、USER_DATA(312)、RECORD_DAY(313)に格納されていた情報である。以下では特に断りのない限り、アーカイブファイル32の行のことも、テーブル300のレコードと同じく、「レコード」と呼ぶ。
アーカイブ4に格納されるアーカイブファイル32は1つとは限らない。テーブルのデータをすべて1つのアーカイブファイル32に格納すると、アーカイブファイル32が大きくなりすぎて、アーカイブファイル32を読み出す必要が出た際に、アーカイブファイル32の読み出しに過剰に時間がかかることもあり得る。そのためサーバ1が、テーブルのデータをアーカイブ4に移す際には、データを複数のアーカイブファイル32に分けて格納することもある。
(3) 機能ブロック構成
続いて図5を用いて、サーバ1の有する機能ブロックの説明を行う。本実施例に係るサーバ1は、上で説明したプログラム(主にデータベース管理プログラム120)がCPU11で実行されることによって、ディクショナリ管理部201、チャンク管理部202、アーカイブ管理部203、クエリ受付部204、クエリ書換部205、クエリ最適化部206、クエリ実行部207、データベースアクセス部208、表関数処理部209という機能ブロックを備えた装置として動作する。以下、各機能ブロックの役割及び各機能ブロックが使用する管理情報を説明する。
続いて図5を用いて、サーバ1の有する機能ブロックの説明を行う。本実施例に係るサーバ1は、上で説明したプログラム(主にデータベース管理プログラム120)がCPU11で実行されることによって、ディクショナリ管理部201、チャンク管理部202、アーカイブ管理部203、クエリ受付部204、クエリ書換部205、クエリ最適化部206、クエリ実行部207、データベースアクセス部208、表関数処理部209という機能ブロックを備えた装置として動作する。以下、各機能ブロックの役割及び各機能ブロックが使用する管理情報を説明する。
ディクショナリ管理部201は、ユーザから受け付けたデータベーステーブル作成要求に従って、データベーステーブル(テーブル)の作成を行う。テーブル作成の際、ディクショナリ管理部201はテーブルの定義情報をディクショナリ500に記録する。ディクショナリ500の内容については後述する。
クエリ受付部204は、ユーザからのデータベースアクセス要求を受け付け、適切な機能ブロックにその要求に係る処理を行わせ、処理結果をユーザに返送する。本実施例に係るDBサーバ1は、クライアント2からSQL(Structured Query Language)で記述されたデータベースアクセス要求(「クエリ」と呼ばれる)を受領し、クエリの処理を行う。クエリ書換部205は、受け付けたクエリの書き換えを行うための機能ブロックである。クエリ書換部205で行われる処理の詳細は、後述する。
クエリ最適化部206は、受け付けたクエリを解析し、クエリに係る処理の実行手順(実行プラン)を決定する機能ブロックである。クエリ実行部207はクエリ最適化部206で決定された処理実行手順に従って、データベーステーブルに格納されているレコードの検索等の処理を行う。
データベースアクセス部208は、データベース31内のテーブル300に格納されているレコードへのアクセスを行う機能ブロックである。データベースアクセス部208はクエリ実行部207からの指示に従って、レコードのリードやライトを行い、結果をクエリ実行部207に返送する。たとえばクエリ実行部207からの指示がレコード検索の指示であれば、データベースアクセス部208はテーブル300からレコードを読み出して、クエリ実行部207に返送する。
表関数処理部209は、アーカイブファイル32の読み出しを行う機能ブロックである。表関数とは、SQL2003で規格化されている機能で、本実施例に係るデータベース管理プログラム120は表関数をサポートしている。表関数処理部209は、アーカイブファイル32(CSVファイル)を読み出して、アーカイブファイル32に記述されている各行をテーブル形式のデータとして、クエリ実行部207に返却する機能を有する。
チャンク管理部202は、テーブル300へのデータロード処理を行う機能ブロックで、またチャンク管理表600の管理を行う。またアーカイブ管理部203は、テーブル300内データのアーカイブ処理を行う機能ブロックで、アーカイブファイル32とテーブル300との対応関係をファイル管理表700に格納して管理する。
なお、本実施例では、プログラムまたはクエリ書換部205等の機能ブロックを主語として、サーバ1で実行される処理の内容が説明される箇所がある。先に述べたとおり、プログラム(主にデータベース管理プログラム120)がCPU11で実行されることによって、サーバ1がこれら機能ブロックを備えた装置として動作するものであるから、実際の処理の主体は、正確にはサーバ1のCPU11である。ただし説明が冗長になることを防ぐため、プログラムまたは機能ブロックを主語として、各種処理の流れを説明することがある。
(4) 管理情報
次に、ディクショナリ500、チャンク管理表600、ファイル管理表700について説明する。サーバ1がテーブルを作成する時、定義されるテーブルの属性情報等をディクショナリ500に記録する。図2に示されたテーブル300が定義(作成)された時に、ディクショナリ500に記録される情報の例を、図6、図7を参照しながら説明する。ディクショナリ500は、テーブル300の属性が格納されるSQL_TABLES(510)、テーブルの各カラムの属性が格納されるSQL_COLUMNS(520)を有する。図6はSQL_TABLES(510)の構成を示し、図7はSQL_COLUMNS(520)の構成を示している。
次に、ディクショナリ500、チャンク管理表600、ファイル管理表700について説明する。サーバ1がテーブルを作成する時、定義されるテーブルの属性情報等をディクショナリ500に記録する。図2に示されたテーブル300が定義(作成)された時に、ディクショナリ500に記録される情報の例を、図6、図7を参照しながら説明する。ディクショナリ500は、テーブル300の属性が格納されるSQL_TABLES(510)、テーブルの各カラムの属性が格納されるSQL_COLUMNS(520)を有する。図6はSQL_TABLES(510)の構成を示し、図7はSQL_COLUMNS(520)の構成を示している。
SQL_TABLES(510)は、スキーマ名(511)、表識別子(512)、表ID(513)、アーカイブ指定(514)、アーカイブディレクトリ(515)のカラムを有するレコードを1以上有する。テーブルが作成されるたびに、SQL_TABLES(510)に1つのレコードが作成される。スキーマ名(511)、表識別子(512)、表ID(513)はそれぞれ、作成されたテーブルの属するスキーマの名称(一般には、テーブル作成を指示したユーザのユーザ名である)、作成されたテーブルの識別子(ユーザが指定した名称)、作成されたテーブルの識別番号である。これらは公知のRDBMSでも管理される情報であるので、詳細説明は略す。なお、本実施例では、スキーマ名称とテーブルの識別子のセットのことを「テーブル名」と呼ぶことがある。
また、本実施例に係るデータベース管理プログラム120によって管理されるテーブルの属性には、アーカイブ指定(514)及びアーカイブディレクトリ(515)という情報も含まれる。先に述べたとおり、本実施例に係るDBサーバ1のアーカイブ管理部203は、テーブル300内レコードをアーカイブファイル32にアーカイブし、アーカイブファイル32とテーブル300との対応関係をファイル管理表700に格納して管理する。アーカイブ指定(514)は、アーカイブ管理部203がアーカイブ処理を行う対象のテーブルであるか否かを示す情報である。アーカイブ管理部203がアーカイブ処理を行う対象のテーブルのことを、本実施例では「アーカイブ可能なテーブル(Archivable table)」と呼ぶ。アーカイブ指定(514)はユーザが指定可能な情報である。ユーザがテーブル定義時に、そのテーブルをアーカイブ可能なテーブルにするよう指示した場合、そのテーブルのアーカイブ指定(514)には“Y”が格納される。一方、アーカイブ可能なテーブルでないテーブルのアーカイブ指定(514)には“N”が格納される。
アーカイブディレクトリ(515)には、テーブルのレコードがアーカイブファイルに移される時にそのアーカイブファイルの格納されるディレクトリ名が記録される。アーカイブファイルの格納されるディレクトリ名も、ユーザがテーブル定義時に指定する。
SQL_COLUMNS(520)は、スキーマ名(521)、表識別子(522)、列名(523)、列ID(524)、データ型(525)、データ定義長(526)、アーカイブレンジ列指定(527)のカラムを有するレコードを1以上有する。スキーマ名(521)、表識別子(522)はそれぞれ、SQL_TABLES(510)の表識別子(512)、表ID(513)と同じ情報である。列名(523)は、テーブルに作成されたカラムの名称、列ID(524)は作成されたカラムの識別番号である。
データ型(525)は、作成されたカラムに格納されるデータのタイプが指定される。データのタイプとは図7に示されているように、たとえば整数型(INTEGER)、文字列型(VARCHAR)等である。データ定義長(526)は、作成されたカラムに格納されるデータの長さ(最大長)が指定される。スキーマ名(521)〜データ定義長(526)は、公知のRDBMSでも管理される情報である。一方アーカイブレンジ列指定(527)は、本実施例に係るデータベース管理プログラム120が管理する固有の情報であり、詳細は後述する。
続いて、本実施例に係るデータベース管理プログラム120が、テーブル(特にテーブルが有するチャンク)と各アーカイブファイルとの関連付けを管理するための方法について説明する。アーカイブ処理により、複数のアーカイブファイル32が生成されることがある。そのためデータベース管理プログラム120は、各アーカイブファイル32についての情報を、チャンク管理表600及びファイル管理表700を用いて管理する。
チャンク管理表600の例を図8に示す。チャンク管理表600は、テーブルを構成する各チャンクのデータの状態(アーカイブされたか否か)を管理するための情報である。1つのレコードが1つのチャンクについての情報を保持する。
601〜604のカラムのうち、チャンクID603はチャンクの識別番号である。本実施例では、各チャンクに付されているチャンクの識別番号のことを「チャンクID」と呼ぶ。そしてスキーマ名601と表識別子602は、チャンクID603で特定されるチャンクが用いられているテーブル300のテーブル名である。
アーカイブ状態604は、このチャンクに格納されている(いた)レコードがアーカイブされたか否かを表す情報である。アーカイブ状態604に“Y”が格納されている場合、このチャンクに格納されていたレコードがアーカイブされたことを表す。このチャンクに格納されているレコードがアーカイブされていない(まだテーブル300に存在する)場合には、アーカイブ状態604にはNULLが格納される。アーカイブ状態604の初期値はNULLである。
データインポートツール等のプログラムが実行されることによって、テーブル300に複数のレコードがロードされる時、テーブル300に含まれるチャンク(及びそのチャンクのチャンクID)が新たに定義される。チャンクが定義されると、チャンク管理部202はチャンク管理表600に、定義されたチャンクに対応するレコードを作成し、チャンク管理表600に作成されたレコードに、スキーマ名601と表識別子602、そしてチャンクID603を登録する(スキーマ名601と表識別子602に登録される情報は、作成されたテーブル300のテーブル名である)。またこの時点では、作成されたレコードのアーカイブ状態604は“NULL”に設定される。
続いてファイル管理表700の例を図9に示す。ファイル管理表700は、各アーカイブファイルについての情報を格納するための表で、1つのレコードに1つのアーカイブファイルの情報が格納される。
path702は、アーカイブファイルのファイル名である。path702に格納されるファイル名には、相対パス名が用いられる。具体的には、SQL_TABLES(510)のアーカイブディレクトリ(515)に記録されているディレクトリからの相対パス名が、path702に記録される。たとえば図9の先頭行のpath702は“2012.tar.gz”、そしてSQL_TABLES(510)のアーカイブディレクトリ(515)には“/home/archivedir”が記録されているので、図9の先頭行に記録されているアーカイブファイルの記録位置を絶対パス名で表記すると、“/home/archivedir/2012.tar.gz”である。
一方チャンクID701は、path702に格納されるファイル名称のファイル(アーカイブファイル)に格納されているレコードが、アーカイブ前に格納されていたチャンクを特定するための情報(チャンクID)である。図9の先頭行のpath702は“2012.tar.gz”、そしてチャンクID701は“0”であるから、アーカイブファイル“2012.tar.gz”に格納されているレコードは、元はチャンクIDが“0”のチャンクに格納されていたことを表す。
レンジ(Min.)703及びレンジ(Max.)704はそれぞれ、アーカイブファイルに記録されているレコードの特定のカラムの情報の最小値及び最大値を表す。これらの情報は、SQL_COLUMNS(520)のアーカイブレンジ列指定(527)と関連する情報である。以下では、図2または図4に記載のレコード(あるいはアーカイブファイルに移動したレコード)、及び図6のディクショナリ500を例にとって、アーカイブレンジ列指定(527)、レンジ(Min.)703及びレンジ(Max.)704について説明する。
本実施例に係るデータベース管理プログラム120は、アーカイブファイル32内のデータ検索を行う際、テーブル内の特定カラムを参照して絞込みを行うことができる。本実施例ではこの特定カラムのことを、「アーカイブレンジ列」または「レンジ列」と呼ぶ。
レンジ列は、テーブル作成(定義)時にユーザから指定される。レンジ列に指定されたカラムの情報は、ディクショナリ500に記録される。具体的にはSQL_COLUMNS(520)のアーカイブレンジ列指定(527)に記録される。たとえば図7では、列名(523)が“RECORD_DAY”のレコードのアーカイブレンジ列指定(527)に“Y”が記録され、それ以外のレコードのアーカイブレンジ列指定(527)の値は“N”である。これは、定義されたテーブル(スキーマ名(521)及び表識別子(522)で特定されるテーブル)のカラムのうち、カラム“RECORD_DAY”(図2の例ではカラム313)がレンジ列として指定されたことを意味する。
データベース管理プログラム120はアーカイブ処理実行時に、作成したアーカイブファイル32の情報を格納したレコードをファイル管理表700に作成する。またテーブル定義時にレンジ列が指定されていた場合、データベース管理プログラム120はファイル管理表700に作成されたレコードのレンジ(Min.)703及びレンジ(Max.)704に、それぞれ作成したアーカイブファイル32に格納されたレコードのレンジ列の最小値及び最大値を格納する。
図9を参照しながら例を説明する。図9の先頭行には、ファイル“2012.tar.gz”の情報が記録されている。この行のレコードのレンジ(Min.)703及びレンジ(Max.)704はそれぞれ、“2012/01/01”、“2012/12/31”である。これは、アーカイブファイル“2012.tar.gz”に記録されているレコードは、カラム“RECORD_DAY”(レンジ列)の最小値(最も古い日付)が“2012/01/01”で、最大値(最も新しい日付)が“2012/12/31”であることを表す。
このような情報がファイル管理表700に記録されているため、アーカイブファイル32を読み出す数を削減することができる。たとえばデータベース管理プログラム120がユーザから、RECORD_DAYが2013年以降のレコードを検索する要求を受け付けた時、データベース管理プログラム120はファイル管理表700を参照することで、アーカイブファイル“2012.tar.gz”には2013年以降のレコードが格納されていないことを知ることができる。そのためデータベース管理プログラム120は、アーカイブファイル“2012.tar.gz”の内容を読み出す処理を省略することができる。
なお、本実施例では、チャンク管理表600とファイル管理表700もデータベース管理プログラム120が管理するテーブルである。そのためサーバ1がチャンク管理表600とファイル管理表700のレコードにアクセスする際、SQLクエリを発行することでアクセスできる。またチャンク管理表600とファイル管理表700の属性情報もディクショナリ500に格納される。
(5) 処理の流れ
以下では、データ処理システムで実行される処理の流れを説明していく。
以下では、データ処理システムで実行される処理の流れを説明していく。
(5−1) アーカイブ処理
まずアーカイブ処理の流れを説明する。アーカイブ処理は定期的(1年に1回、或いは半年に1回等)に実行される。あるいは、データ処理システムの管理者がアーカイブ指示をサーバ1に行ったことを契機に、サーバ1はアーカイブ処理を実行してもよい。ただし以下では、定期的にアーカイブ処理が行われる例を説明する。
まずアーカイブ処理の流れを説明する。アーカイブ処理は定期的(1年に1回、或いは半年に1回等)に実行される。あるいは、データ処理システムの管理者がアーカイブ指示をサーバ1に行ったことを契機に、サーバ1はアーカイブ処理を実行してもよい。ただし以下では、定期的にアーカイブ処理が行われる例を説明する。
アーカイブ処理は、アーカイブ管理部203が実行する。アーカイブ管理部203はSQL_COLUMNS(520)を参照することで、レンジ列を特定し、テーブル300内各レコードのうち、レンジ列の値が所定範囲に属するレコードをアーカイブする。なお、アーカイブ処理は、アーカイブ可能なテーブルに対してのみ行われる。
なお、以下ではアーカイブ管理部203が、以下に述べる(1)〜(3)の前提に基づいてアーカイブ処理を行う例を説明する。
(1) アーカイブ対象のテーブル300の形式は、図2に記載のもので、レンジ列はRECORD_DAYである。
(2) アーカイブ処理は定期的、たとえば1年に1回等の周期で行われる。アーカイブ処理実行時に、アーカイブ管理部203は、RECORD_DAY(313)に記録されている日付が最も古いレコードを特定し、そのレコードのRECORD_DAY(313)と同じ年のレコードをアーカイブする。つまり、たとえば日付が最も古いレコードのRECORD_DAY(313)の値が“2012/01/01”の場合、RECORD_DAY(313)に記録された年が2012年のレコードのレコード(RECORD_DAY(313)が2012/01/01〜2012/12/31の範囲にあるレコード)がアーカイブファイル32に移動される。
(3) 1つのアーカイブファイル32に格納されるレコードは、いずれも同一チャンクに格納されていたチャンクとする。言い換えれば、レコードAがチャンク#0に格納されており、レコードBがチャンク#1に格納されていた場合、アーカイブ管理部203は、レコードAとレコードBを異なるアーカイブファイル32に格納する。
(1) アーカイブ対象のテーブル300の形式は、図2に記載のもので、レンジ列はRECORD_DAYである。
(2) アーカイブ処理は定期的、たとえば1年に1回等の周期で行われる。アーカイブ処理実行時に、アーカイブ管理部203は、RECORD_DAY(313)に記録されている日付が最も古いレコードを特定し、そのレコードのRECORD_DAY(313)と同じ年のレコードをアーカイブする。つまり、たとえば日付が最も古いレコードのRECORD_DAY(313)の値が“2012/01/01”の場合、RECORD_DAY(313)に記録された年が2012年のレコードのレコード(RECORD_DAY(313)が2012/01/01〜2012/12/31の範囲にあるレコード)がアーカイブファイル32に移動される。
(3) 1つのアーカイブファイル32に格納されるレコードは、いずれも同一チャンクに格納されていたチャンクとする。言い換えれば、レコードAがチャンク#0に格納されており、レコードBがチャンク#1に格納されていた場合、アーカイブ管理部203は、レコードAとレコードBを異なるアーカイブファイル32に格納する。
但し、これは一例であり、1回のアーカイブ処理でアーカイブファイル32に移動されるレコードの選択基準は、上で挙げた例に限定されない。たとえば別の例として、1回のアーカイブ処理で、所定個(n個)のチャンクに格納されているレコードをアーカイブ対象とする、というルールに基づいて、アーカイブ処理が行われてもよい。あるいは、レンジ列の値がユーザから指定された範囲内に含まれるレコードがアーカイブされるようにしてもよい。以下、図10を参照しながら、アーカイブ処理の流れを説明する。
ステップ1001:アーカイブ管理部203は、テーブル300の中から、今回のアーカイブ処理でアーカイブ対象となるデータを読み出す。この時アーカイブ管理部203はクエリ受付部204に、RECORD_DAY(313)が所定期間内のデータを読み出すための問い合わせ要求を発行することで、テーブル300からレコードを取り出すとよい。
さらにアーカイブ管理部203は、読み出した全レコードをCSV形式のレコードに変換する(たとえば図4の行320のような形式のテキストを作成する)。そしてアーカイブ管理部203は、アーカイブ4にアーカイブファイル32を作成し、作成されたアーカイブファイル32に変換されたレコードを格納する。
本実施例では、アーカイブファイル32のサイズに上限が設けられている。アーカイブファイル32に変換されたレコードを全て格納するとファイルサイズが上限を超過する場合、アーカイブ管理部203は複数のアーカイブファイル32を作成し、変換された複数のレコードを、複数のアーカイブファイル32に分けて格納する。
分割の例は以下の通りである。アーカイブ管理部203は変換された複数のレコードを、順に1つのアーカイブファイル32に格納していく。なお、アーカイブファイル32に変換されたレコードを格納する際には、日付(RECORD_DAY(313))が古いレコードから順に格納されるとよい。その過程でアーカイブファイル32のサイズが所定の閾値を超過する場合、別のアーカイブファイル32を作成し、別のアーカイブファイル32に変換されたレコードを格納する。このようにすることで、アーカイブ管理部203は作成されるアーカイブファイル32のサイズが上限を超過しないようにする。
ステップ1002:アーカイブ管理部203はファイル管理表700に、作成されたアーカイブファイル32についてのレコードを作成する。レコードのチャンク701には、アーカイブファイル32に格納されたレコードが存在していたチャンクのチャンクIDが格納され、path702には、アーカイブファイル32のファイル名が格納される。レンジ(Min.)703及びレンジ(Max.)704にはそれぞれ、アーカイブファイル32に格納されたレコードのレンジ列(RECORD_DAY)の最小値と最大値が格納される。
ステップ1003:アーカイブ管理部203はチャンク管理表600のレコードのうち、今回のアーカイブ処理でレコードがアーカイブされたチャンクに関する情報を管理しているレコードのアーカイブ状態604を“Y”に変更する。なお、今回のアーカイブ処理で、アーカイブファイル32に移動されなかったレコードがチャンクに残ることもある。その場合にもアーカイブ状態604は“Y”に変更される。
ステップ1004:アーカイブ管理部203は、今回のアーカイブ処理でレコードがアーカイブされたチャンクから、アーカイブファイル32に移動されたレコードを削除し、処理を終了する。
(5−2) 検索処理
続いて検索処理の流れを説明する。図11は、検索処理のフローチャートである。検索処理は、DBサーバ1がユーザからレコード検索を要求する問い合わせ(SQLクエリ)を受領した時に実行される。
続いて検索処理の流れを説明する。図11は、検索処理のフローチャートである。検索処理は、DBサーバ1がユーザからレコード検索を要求する問い合わせ(SQLクエリ)を受領した時に実行される。
ステップ1101:クエリ受付部204は、ユーザが使用するクライアント2からSQLクエリを受け付けると、そのクエリをクエリ書換部205に渡す。クエリを渡されたクエリ書換部205では、受領したクエリの書き換えを行う。
ステップ1102:クエリ書換部205は、書き換えられたクエリをクエリ最適化部206に渡す。クエリ最適化部206では、クエリの実行プランの生成が行われる。この処理は、公知のRDBMSで行われるものと同様である。
ステップ1103:クエリ最適化部206は、生成したクエリの実行プランをクエリ実行部207に渡す。クエリ実行部207は、実行プランに従って処理を行う。クエリ実行部207は、データベースアクセス部208や表関数処理部209を用いて、テーブル300やアーカイブファイル32からレコードの読み出しを行い、読み出されたレコードから、クエリで指定された条件に該当するレコードを抽出する。そしてクエリ実行部207は、抽出したレコードをクエリ受付部204に返送する。クエリ受付部204は返送されてきた結果を、ユーザ(クライアント2)へと出力する。
これが検索処理の全体の流れである。以下では各ステップの詳細について説明していく。
(5−3) クエリ書き換え処理
ここでは、ステップ1101で行われるクエリの書き換え処理について説明する。ただしその前に、ユーザから渡されるクエリ(書き換え前クエリと呼ぶ)、そしてステップ1101において書き換えられた後のクエリ(書き換え後クエリと呼ぶ)の記述例を説明する。
ここでは、ステップ1101で行われるクエリの書き換え処理について説明する。ただしその前に、ユーザから渡されるクエリ(書き換え前クエリと呼ぶ)、そしてステップ1101において書き換えられた後のクエリ(書き換え後クエリと呼ぶ)の記述例を説明する。
図12に記載のクエリは、ユーザがサーバ1に対して発行するSQLクエリ(書き換え前クエリ)の例である。SQLは公知であるため、ここではクエリの概要のみ説明する。なお、図12等に示されているクエリの各行の先頭に付されている番号は、説明のために付されている行番号である。
図12の書き換え前クエリの記述内容を簡単に説明する。図12の書き換え前クエリは、2行目のFROM句で指定されている、テーブル“USER.TBL_01”を検索対象とするクエリである。以下、クエリのFROM句で指定されているテーブルのことを、「検索対象テーブル」と呼ぶ。
またこのクエリは、検索対象のテーブル“USER.TBL_01”の中から、3行目及び4行目のWHERE句で指定された条件に該当するレコードだけを抽出し、1行目に記載のカラム“SEQ_NO”と“USER_DATA”を出力することを指示するクエリである。WHERE句で指定された条件は具体的には、抽出すべきレコードのカラム“SEQ_NO”がxより大きく、“RECORD_DAY”の範囲がy〜zの間にあることである。なお、実際にはxには具体的な数値が指定され、y及びzには具体的な日付が指定される。
また、説明が複雑化することを避けるため、図12では検索対象テーブルは1つしか指定されていない例を示している。ただし実際には、FROM句に検索対象テーブルが複数指定されることもある。そのような例については後述する。
ユーザがサーバ1にクエリを発行する際、テーブル300の一部のレコードがアーカイブされているか否か(アーカイブファイル32に移動されているか否か)は認識していないし、認識している必要もない。そのためユーザは単純に、図12に示されているような、テーブル300からレコードを検索するクエリを発行するが、アーカイブファイル32からデータを読み出すような要求を発行することはない。
しかし検索対象テーブルがアーカイブ可能なテーブルの場合、クエリで指定されている条件(WHERE句で指定される条件等)に該当するデータは、アーカイブファイル32に格納されていることもあるため、サーバ1はアーカイブファイル32内のレコード(CSV形式に変換されたレコード)も検索対象にする必要がある。そのため、検索対象テーブルがアーカイブ可能なテーブルの場合、サーバ1はクエリの書き換えを行うことで、テーブル300に加えてアーカイブファイル32の検索も行うクエリを作成する。
本実施例に係るデータベース管理プログラム120は、アーカイブファイル32の読み出しに表関数を用いる。表関数を用いて記述された、アーカイブファイル32を読み出すためのクエリの例を図13に示す。
図13に示されたクエリは、図12の書き換え前クエリと同様の検索をアーカイブファイル32(ファイル2014.tar.gzとaaa.tar.gz)に対して行うクエリである。図13のクエリと図12のクエリの違いは、FROM句に指定された情報だけで、それ以外には違いはない。
ここで用いられている表関数の機能について説明する。表関数TABLE()の引数部分に記述されている関数ADB_CSVREAD()は、引数に指定されたファイル(CSVファイル)から読み出した各行を出力する関数である。TABLE()は、テキスト行をテーブル形式のデータとして出力する関数である。なお、ADB_CSVREAD()の引数には、複数のファイル名を指定することができる。たとえばADB_CSVREAD(MULTISET[2014.tar.gz,aaa.tar.gz])と記述されている場合、ファイル2014.tar.gzとaaa.tar.gzの読み出しが行われる。また、5行目に記述されている“COMPRESSION_FORMAT=GZIP”は、引数で指定されるファイルが圧縮形式の場合に指定される引数で、リード対象のアーカイブファイル32が圧縮形式でない場合には、この引数は不要である。
読み出すべきアーカイブファイル32のファイル名が既知の場合には、データベース管理プログラム120(つまりサーバ1のCPU11)は図13に示されたクエリを実行することで、図12の書き換え前クエリと同様の検索をアーカイブファイル32に対して行うことができる。しかし実際には、クライアント2からクエリを受領した時点では、読み出すべきアーカイブファイル32のファイル名は判明していない。そのため、読み出すべきアーカイブファイル32のファイル名を特定するための処理を行う必要がある。
チャンク管理表600には、チャンクが用いられているテーブルのテーブル名(スキーマ名601及び表識別子602)と、チャンクのアーカイブ状態604が含まれている。ファイル管理表700には、チャンク内レコードがアーカイブされたアーカイブファイルの名称(path702)が含まれている。そのため、たとえばデータベース管理プログラム120が、検索対象テーブルに格納されていたレコードがアーカイブされているアーカイブファイル32を見つけ出すためには、以下の(a)及び(b)の処理を行うとよい。
(a)チャンク管理表600から、スキーマ名601及び表識別子602が検索対象テーブルの名称と一致し、アーカイブ状態604が“Y”のチャンクのチャンクID603を特定する。
(b)さらにファイル管理表700のレコードの中から、チャンクID701の値が、特定されたチャンクID603と等しいレコードのpath702を特定する。
(a)チャンク管理表600から、スキーマ名601及び表識別子602が検索対象テーブルの名称と一致し、アーカイブ状態604が“Y”のチャンクのチャンクID603を特定する。
(b)さらにファイル管理表700のレコードの中から、チャンクID701の値が、特定されたチャンクID603と等しいレコードのpath702を特定する。
関数ADB_CSVREAD()の引数には、ファイル名を直接指定する代わりに、ファイル名を出力する関数やクエリが指定されることも許されている。そのためデータベース管理プログラム120(クエリ書換部205)は、上の(a)、(b)を行う部分クエリ(これを「部分クエリ3」と呼ぶ)を作成し、ADB_CSVREAD()の引数に部分クエリ3を記述したクエリ(これを「部分クエリ2」と呼ぶ)を作成する。そしてデータベース管理プログラム120は、この部分クエリ2を実行することにより、読み出すべきアーカイブファイル32のファイル名の特定と、特定されたアーカイブファイル32内のレコード検索を行う。
部分クエリ2の例を図14に示す。図13と図14の違いは、図14に記載のクエリには、関数ADB_CSVREAD()の引数部分に、具体的なファイル名ではなく部分クエリ3が記述されている点である(図14の5行目〜12行目)。部分クエリ3のうち5行目〜11行目が、上で説明した(a),(b)の処理を行うためのクエリである。
なお、部分クエリ3の最終行(図14の12行目)に記述されている条件について説明する。この条件は、書き換え前クエリのWHERE句に、レンジ列についての条件が記述されている場合に追加される。以下、検索条件に含まれているレンジ列についての条件を「レンジ列条件」と呼ぶ。
図12を参照すると、4行目にレンジ列条件("RECORD_DAY" BETWEEN y AND z)が存在する。この場合、レンジ列(RECORD_DAY)がy〜zの範囲にあるレコードを明らかに含まないアーカイブファイル32を読み出すことは非効率である。そのためデータベース管理プログラム120(クエリ書換部205)は、書き換え前クエリのWHERE句に、レンジ列についての条件が記述されている場合、この条件に該当するレコードが含まれている可能性があるアーカイブファイル32のみを読み出すよう、部分クエリ3にレンジ列に関する条件を追加する。これにより、不必要なアーカイブファイル32の読み込みが行われることがなくなる。
データベース管理プログラム120(クエリ書換部205)は、書き換え前のクエリに含まれているレンジ列条件を解析し、部分クエリ3のWHERE句に条件を付加する。付加される条件は以下のルールに従って決定される。
(ルール1)“レンジ列<A”の条件がレンジ列条件に含まれている場合、クエリ書換部205は“レンジ(Min.)703<A”の条件を部分クエリ3に付加する。この条件が付加されることにより、レンジ(Min.)703の値がA以上のアーカイブファイル32は、部分クエリ3による検索対象外になる。この条件が付加される理由は、“レンジ(Min.)703≧A”の条件を満たすアーカイブファイル32には、レンジ列の値がA未満のレコードは含まれていないことが明らかだからである。同様に、“レンジ列≦A”の条件がレンジ列条件に含まれている場合、“レンジ(Min.)703≦A”の条件が部分クエリ3に付加される。
(ルール2)“レンジ列>A”の条件がレンジ列条件に含まれている場合、クエリ書換部205は“レンジ(Max.)704>A”の条件を部分クエリ3に付加する。この条件が付加されることにより、レンジ(Max.)704の値がA以下のアーカイブファイル32は、部分クエリ3による検索対象外になる。この条件が付加される理由は、“レンジ(Max.)704≦A”の条件を満たすアーカイブファイル32には、レンジ列の値がAより大きいレコードは含まれていないことが明らかだからである。同様に、“レンジ列≧A”の条件がレンジ列条件に含まれている場合、“レンジ(Max.)704≧A”の条件が部分クエリ3に付加される。
クエリ書換部205は、上で述べた部分クエリ2を作成し(部分クエリ3の作成も行われる)、さらに部分クエリ2と、テーブル300内のレコード検索を行うためのクエリ(これを「部分クエリ1」と呼ぶ)の出力結果の和集合を求めるクエリを作成する。本実施例では、これを書き換え後クエリと呼ぶ。図15は、図12の書き換え前クエリを書き換えた後のクエリの例である。図中の「部分クエリ1」と記述された部分が、テーブル300内のレコード検索を行うためのクエリで、この例では、部分クエリ1の内容は書き換え前クエリと同じである。図15の8行目以降(部分クエリ2)がアーカイブファイル32からレコードを検索するクエリで、図14と同じ内容である。書き換え後クエリは、部分クエリ1と部分クエリ2を、6行目に記述されている“UNION ALL”演算子で連結したものである。
ただし上で説明した部分クエリ1〜3は一例であり、図15等に記載されたクエリと同じものが生成されなければいけないわけではない。書き換え前クエリで指定された条件のレコードを、テーブル300とアーカイブファイル32の両方から検索でき、かつ読み出すべきアーカイブファイル32を適切に特定できるクエリが生成されればよい。また、本実施例に係るクエリ書換部205が実際に行う処理も、上で説明したものとは若干異なり、書き換え後クエリの記述内容も図15に記載されたものと異なる点がある。クエリ書換部205が実際に行う処理については、以下で説明する。
次に図16を用いて、クエリの書き換え処理の流れを説明する。以下の説明では、書き換え前クエリとして、図17に記載のクエリが与えられた場合の例について説明する。図17は図12に記述されたクエリの例をより一般化したものである。SELECT句、FROM句、WHERE句には、実際にはユーザから指定される具体的なカラム名やテーブル名、或いは条件が入るが、以下ではクエリ書き換えの方法を一般化した例を説明するため、クエリ中で指定される情報を、($A),($Bn),($C)等の変数に置き換えたクエリを用いて説明を行う。
SELECT句に含まれる変数($A)は、カラム名を表す。なお($A)には複数のカラム名が指定されてよい(たとえば図12のクエリの例では、($A)に該当する箇所には"SEQ_NO"と"USER_DATA"の2つのカラムが指定されている)。
また、FROM句に含まれている変数($B1),($B2),...,($Bn)はそれぞれ、検索対象のテーブル名を表す。($B1),($B2),...,($Bn)のそれぞれが、1つのテーブル名に相当する。つまり図17のクエリは、検索対象テーブルが複数ある場合の例である。なお、以下では($Bx)のことを「テーブル($Bx)」と呼ぶこともある(xは1以上n以下の整数である)。
WHERE句に含まれる変数($C)は、クエリで指定される条件を表す。($C)には複数の条件が指定されることがある。たとえば図12の例では、[SEQ_NO> x]という条件と、["RECORD_DAY" BETWEEN y AND z]という条件が指定されている。
ここでは、FROM句で指定されたテーブル($B1),($B2),...,($Bn)のうち、テーブル($B1)がアーカイブ可能なテーブルだった場合に、クエリ書換部205によりどのようにクエリ書き換えが行われるかを説明する。図18が、図17の書き換え前クエリが書き換えられた後の例で、3行目〜5行目が部分クエリ1、10行目〜26行目が部分クエリ2である。そして部分クエリ2のうち、14行目〜21行目が部分クエリ3である。
ステップ1201:クエリ書換部205は、クエリ受付部204から受領したSQLクエリを解析し、検索対象のテーブル(FROM句に記載されたテーブル)の中で、アーカイブ可能なテーブルを1つ特定する。アーカイブ可能なテーブルの特定のために、クエリ書換部205はSQL_TABLES(510)を参照し、検索対象のテーブルのうち、アーカイブ指定(514)が“Y”のテーブルがあるか判定する。
ステップ1202:クエリ書換部205は、ステップ1201の結果、まだステップ1203以降の処理が行われていないアーカイブ可能なテーブルがあれば(ステップ1202:Y)、次にステップ1203を行う。アーカイブ可能なテーブルがない場合、あるいはすべてのアーカイブ可能なテーブルについてステップ1203以降の処理が行われた場合には(ステップ1202:N)、処理を終了する。
そのため、受け付けたクエリによる検索対象テーブルの中にアーカイブ可能なテーブルがない場合には、クエリの書き換えは行われない。また、クエリ書換部205に図12に記載のクエリが渡された場合には、図12のクエリのFROM句には検索対象のテーブル名が1つ(“USER.TBL_01”のみ)しか記述されていないため、ステップ1203以降の処理が1回行われるだけで、処理は終了する。
ステップ1203:クエリ書換部205は、受け付けたクエリから部分クエリ1を生成する。先に説明したとおり、部分クエリ1は、受け付けた書き換え前クエリで指定されているテーブルからレコードを検索するクエリで、書き換え前クエリと実質的に近い内容のクエリである。
図18に示されているように、ここで生成される部分クエリ1では、SELECT句(3行目)に、テーブル($B1)内のカラムのうち、変数($A)と($C)に記述されているカラムが指定され、またWHERE句(5行目)には、変数($C)に含まれる条件のうち、テーブル($B1)に関する条件が指定される。またFROM句にはテーブル($B1)が指定される。
ステップ1204:ステップ1204〜ステップ1206において、クエリ書換部205は部分クエリ3の生成を行う。ステップ1204では、クエリ書換部205は部分クエリ3のうち、レンジ列条件以外の部分を生成する。具体的には、図18に示された例における、14行目〜20行目に記述された部分が生成される。
14行目〜20行目に記述された部分は、先に述べた(a)及び(b)の処理を行うクエリである。つまり14行目〜20行目に記述されたクエリが実行されると、チャンク管理表600から、スキーマ名601及び表識別子602がテーブル($B1)の名称と一致し、アーカイブ状態604が“Y”のチャンクのチャンクID603が特定される。さらにファイル管理表700のレコードの中から、チャンクID701の値が、特定されたチャンクID603と等しいレコードのpath702が特定される。
ステップ1205:クエリ書換部205はさらに、書き換え前のクエリにレンジ列条件が含まれているか(レンジ列が検索条件に含まれているか)判定する。レンジ列が検索条件に含まれている場合(ステップ1205:Y)、ステップ1206が実行され、レンジ列が検索条件に含まれていない場合は(ステップ1205:N)、ステップ1206はスキップされる。
ステップ1206:この処理は、図14の部分クエリ3の例を用いて説明した処理で、レンジ列条件に該当するレコードが含まれないアーカイブファイル32の読み出しを行わないようにするために、部分クエリ3のWHERE句に条件を付加する処理である。クエリ書換部205は、上で説明したルール1、ルール2に従って、レンジ(Min.)703及びレンジ(Max.)704を用いた条件を生成し、ここで生成した条件を、ステップ1204で作成した部分クエリ3のWHERE句(図18の21行目)に付加する。ここで生成される条件の具体例は、先に説明したとおりであるので、ここでの説明は略す。
ステップ1207:クエリ書換部205は、ステップ1206までで作成された部分クエリ3を含む部分クエリ2を生成する。部分クエリ2のSELECT句(図18の10行目)、WHERE句(図18の26行目)に指定される情報は、部分クエリ1のものと同じである。そして部分クエリ2のFROM句には、ステップ1206までで作成された部分クエリ3を引数に含む表関数が指定される。
ステップ1208:クエリ書換部205は、ここまでで作成された部分クエリ1及び部分クエリ2の出力結果の和集合を出力するクエリを生成する。具体的には、図18(3行目〜26行目)に示されているように、クエリ書換部205は、部分クエリ1と部分クエリ2を“UNION ALL”演算子で連結したクエリを生成する。そして書き換え前クエリのFROM句に指定されているテーブルを、ここで生成したクエリに書き換える。たとえばステップ1201でテーブル($B1)が選択された場合、書き換え前クエリのFROM句のうち、($B1)部分を、ここで生成したクエリに書き換える。図18では($B1)が書き換えられた例が示されている。この後クエリ書換部205は、再びステップ1201からの処理を実行する。
(5−4) 実行プラン生成と最適化
最後に、ステップ1102、ステップ1103で行われる、実行プランの生成、実行処理について説明する。本実施例における実行プランの生成処理は、公知のRDBMSで行われるものと大きく変わるところはないため、本実施例における実行プランの生成及び実行処理の概要を述べる。
最後に、ステップ1102、ステップ1103で行われる、実行プランの生成、実行処理について説明する。本実施例における実行プランの生成処理は、公知のRDBMSで行われるものと大きく変わるところはないため、本実施例における実行プランの生成及び実行処理の概要を述べる。
本実施例に係るデータ処理システムでは、サーバ1が複数のCPU11を有するので、幾つかの処理を並列に実行することができる。そこでクエリ最適化部206は、実行プランを生成する際、並列化可能な複数の処理がある場合、それらの処理が並列実行されるような実行プランを生成する。
並列化可能な処理とは、たとえば互いに依存関係のない処理である。逆に依存関係のある処理同士は並列実行できない。たとえば図15等に記載の書き換え後クエリの中で、部分クエリ2と部分クエリ3は、互いに依存関係がある。つまり部分クエリ3が実行されて、読み出すべきアーカイブファイル32のファイル名が特定されるまでは、部分クエリ2は実行できないため、この2つのクエリについての処理は並列化されない。そのためクエリ最適化部206は、部分クエリ3の実行が完了してから部分クエリ2に関する処理を実行するような実行プランを生成する。
一方、部分クエリ1と部分クエリ2の間には依存関係がない。部分クエリ1の実行のためには、記憶装置3内のテーブル300を読み出す必要があり、また部分クエリ2の実行のためにはアーカイブ4内のアーカイブファイル32を読み出す必要があるが、テーブル300の読み出しとアーカイブファイル32の読み出しには互いに依存関係がない(テーブル300を読み出すまでアーカイブファイル32を読み出すことができない等の制約がない)。そのためクエリ最適化部206は、テーブル300の読み出しとアーカイブファイル32の読み出しを並列に実行する実行プランを生成し、クエリ実行部207に実行させる。クエリ実行部207ではそのような実行プランを受領すると、たとえばテーブル300の読み出しを行うタスク(スレッド)とアーカイブファイル32の読み出しを行うタスクとを生成し、両者を並列実行する。なお、並列実行可能なタスクの数は、サーバ1の構成(CPUまたはプロセッサコアの数、あるいは同時にサーバ1で実行されているタスクの状況等)によって異なり得るため、クエリ最適化部206はサーバ1の構成にあわせてタスクを並列実行するか否かを決定してもよい。本実施例のように、クエリを解析することで実行プランを生成する方法の場合、サーバ1の構成などの状態に応じて、並列実行させるタスクの数を動的に変更することも可能になる。そのため、クエリに係る処理を効率的に実行することができる。
また、部分クエリ3の実行の結果、リード対象のアーカイブファイル32が複数(たとえばm個)特定された場合、m個のアーカイブファイル32の読み出し処理を並列実行可能である。そのためクエリ最適化部206は、アーカイブファイル32の読み出しを並列実行する実行プランを生成し、クエリ実行部207に実行させる。
先に述べたとおり、アーカイブ管理部203がアーカイブファイル32を作成するとき、ファイルサイズに上限を設け、各アーカイブファイル32のサイズが所定の閾値以内に収まるようにしている。その結果、生成されるアーカイブファイル32のサイズはおおむね等しくなる(閾値に近いサイズになっている)。
そのため、クエリ実行部207が各アーカイブファイル32の読み出しを並列実行すると、それぞれのアーカイブファイル32の読み出しの所要時間はおおむね等しくなる。これは各アーカイブファイル32のサイズがおおむね等しいからである。もし各アーカイブファイル32のサイズに偏りがあり、特定のアーカイブファイル32のサイズが極端に大きい場合、そのアーカイブファイル32の読み出しに時間がかかり、並列処理の効果がなくなる。結果として部分クエリ2の実行に要する時間が長時間化することになる。本実施例に係るデータ処理システムでは、アーカイブ時にアーカイブファイル32のサイズを所定の閾値以内に収め、各アーカイブファイル32のサイズが等しくなるようにしている為、クエリ実行時の並列処理の効果が得られやすい。
また、テーブル30は複数のチャンクを有している。記憶装置3内に所定サイズの区画(連続領域)が複数形成され、各チャンクがこの各区画に格納されている場合、各チャンクを並列に読み出すことで、チャンクのリードに要する時間を短くできることがある。そのためこの場合、クエリ最適化部206は部分クエリ1の実行プランを生成する際、チャンクからのデータリードを並列実行する実行プランを生成してもよい。これによりテーブル30のリード処理の速度をより向上させることができる。
以上、本発明の実施例を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
たとえば上で説明した実施例に係るデータ処理システムでは、DBサーバとは別にクライアントが設けられ、ユーザはクライアントの入力装置及び出力装置を用いる例が説明された。ただし、クライアントを設けることは必須ではなく、DBサーバでクライアントプログラムが実行される構成にしてもよい。その場合ユーザは、DBサーバの入出力デバイスを用いて、情報検索のリクエストを発行するとよい。
また、DBサーバの台数は1台に限定されない。データ処理システムに複数のDBサーバを設けて、検索処理等を複数のDBサーバで並列実行させるようにしてもよい。
また、上で説明した実施例では、DBサーバはテーブルとアーカイブファイルの関係を管理するために、2つの表(チャンク管理表とファイル管理表)を保持しているが、2つの表を保持する代わりに、チャンク管理表が保持する属性とファイル管理表の保持する属性とを有する1つの表(仮に「アーカイブ管理表」と呼ぶ)を保持するようにしてもよい。その場合、DBサーバが生成する部分クエリ3は、アーカイブ管理表の中から、検索条件に該当するアーカイブファイル名を検索するクエリになる。
上で説明された各種プログラムは、プログラム配布サーバや計算機が読み取り可能な記憶メディアによって提供され、プログラムを実行する各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばICカード、SDカード、DVD等の不揮発性記憶媒体である。
また、上の実施例で説明されたプログラムの一部または全ての処理は、専用ハードウェアによって実現されてもよい。
1:サーバ、2:クライアント、3,4:記憶装置、5:SAN、6:LAN
Claims (15)
- サーバと第1の記憶装置と第2の記憶装置を備え、
前記サーバは、複数の列を含む1以上のテーブルを前記第1の記憶装置に格納し、前記テーブルから抽出された1以上のレコードを含む複数のアーカイブファイルを前記第2の記憶装置に格納するよう、構成されており、
前記サーバは検索要求を受け付けると、
前記検索要求で指定された条件に該当するレコードを前記テーブルから検索する、第1の部分クエリを生成し、
前記検索要求で検索対象とされている前記テーブルから抽出されたレコードを含む前記アーカイブファイルを特定して、特定された前記アーカイブファイルから前記検索要求で指定された条件に該当するレコードを検索するクエリである、第2の部分クエリを生成し、
前記第1及び第2の部分クエリの出力結果の和集合を求めるクエリを生成し、
前記生成されたクエリを解析し、前記クエリに係る処理を並列実行する、
データ処理システム。 - 前記第2の部分クエリは、前記アーカイブファイルから前記テーブルの形式のデータを出力するための表関数を含む、
請求項1に記載のデータ処理システム。 - 前記サーバは、前記生成されたクエリを解析して、少なくとも前記第1の部分クエリに係るタスクと前記第2の部分クエリに係るタスクを生成し、前記生成されたタスクを並列実行する、
請求項1に記載のデータ処理システム。 - 前記テーブルは、複数のレコードの集合であるチャンクを複数有し、
前記サーバは、前記第1の部分クエリを解析し、前記テーブルに含まれる前記チャンクにアクセスするタスクを前記チャンクごとに生成し、前記チャンクにアクセスするタスクを並列実行する、
請求項1に記載のデータ処理システム。 - 前記サーバは、前記テーブルから所定の条件に該当する1以上のレコードを抽出してアーカイブファイルに移動するアーカイブ処理を定期的に実行し、
前記アーカイブ処理の実行時に、前記サーバは、抽出された前記レコードの量が所定の上限値を超過する場合、前記抽出されたレコードを複数のアーカイブファイルに分けて格納する、
請求項1に記載のデータ処理システム。 - 前記サーバは、前記第2の部分クエリを実行することにより、複数の前記アーカイブファイルが特定された場合、
特定された複数の前記アーカイブファイルに並列にアクセスする、
請求項5に記載のデータ処理システム。 - 前記サーバは前記テーブルの定義時に、前記複数の列のうち、データ絞込みに使われる列であるレンジ列の指定を受け付け、
前記サーバは前記アーカイブ処理の実行時に、作成されたアーカイブファイルに含まれる前記レコードのレンジ列の最小値及び最大値を記録したファイル管理表を作成し、
前記サーバは、受け付けた前記検索要求でレンジ列の条件が指定されている場合、
前記ファイル管理表を用いて前記レンジ列の条件に該当するレコードを有する前記アーカイブファイルを特定する、第3の部分クエリを生成し、
前記第2の部分クエリとして、前記第3の部分クエリを含む部分クエリを生成する、
請求項5に記載のデータ処理システム。 - 複数の列を含む1以上のテーブルと、前記テーブルから抽出された1以上のレコードを含む複数のアーカイブファイルと、を管理するデータ処理システムにおいて、
前記データ処理システムが、
a) 検索要求を受け付ける工程と、
b) 前記検索要求で指定された条件に該当するレコードを前記テーブルから検索する、第1の部分クエリを生成する工程と、
c) 前記検索要求で検索対象とされている前記テーブルから抽出されたレコードを含む前記アーカイブファイルを特定して、特定された前記アーカイブファイルから前記検索要求で指定された条件に該当するレコードを検索するクエリである、第2の部分クエリを生成する工程と、
d) 前記第1及び第2の部分クエリの出力結果の和集合を求めるクエリを生成する工程と、
e) 前記生成されたクエリを解析し、前記クエリに係る処理を並列実行する工程と、
を実行する、データ処理システムのデータ検索方法。 - 前記e)において、少なくとも前記第1の部分クエリに係るタスクと前記第2の部分クエリに係るタスクを生成し、前記生成されたタスクを並列実行する、
請求項8に記載のデータ処理システムのデータ検索方法。 - 前記テーブルから所定の条件に該当する1以上のレコードを抽出してアーカイブファイルに移動するアーカイブ処理工程を実行し、
前記アーカイブ処理工程では、抽出された前記レコードの量が所定の上限値を超過する場合、前記抽出されたレコードは複数のアーカイブファイルに分けて格納される、
請求項8に記載のデータ処理システムのデータ検索方法。 - 前記e)において、前記第2の部分クエリを実行することにより、複数の前記アーカイブファイルが特定された場合、
特定された複数の前記アーカイブファイルに並列にアクセスする工程を実行する、
請求項10に記載のデータ処理システムのデータ検索方法。 - 前記データ処理システムがさらに、前記テーブルの定義時に、前記複数の列のうちデータ絞込みに使われる列であるレンジ列の指定を受け付ける工程を実行し、
前記アーカイブ処理工程は、作成されたアーカイブファイルに含まれる前記レコードのレンジ列の最小値及び最大値を記録したファイル管理表を作成する工程を含み、
前記a)において受け付けた前記検索要求にレンジ列の条件が指定されている場合、
前記c)では、前記ファイル管理表を用いて前記レンジ列の条件に該当するレコードを有する前記アーカイブファイルを特定する、第3の部分クエリを生成し、前記第2の部分クエリとして前記第3の部分クエリを含む部分クエリを生成する、
請求項10に記載のデータ処理システムのデータ検索方法。 - 複数の列を含む1以上のテーブルと、前記テーブルから抽出された1以上のレコードを含む複数のアーカイブファイルと、を管理するコンピュータのプロセッサに、
a) 検索要求を受け付ける工程と、
b) 前記検索要求で指定された条件に該当するレコードを前記テーブルから検索する、第1の部分クエリを生成する工程と、
c) 前記検索要求で検索対象とされている前記テーブルから抽出されたレコードを含む前記アーカイブファイルを特定して、特定された前記アーカイブファイルから前記検索要求で指定された条件に該当するレコードを検索するクエリである、第2の部分クエリを生成する工程と、
d) 前記第1及び第2の部分クエリの出力結果の和集合を求めるクエリを生成する工程と、
e) 前記生成されたクエリを解析し、前記クエリに係る処理を並列実行する工程と、
を実行させるプログラムを記録した、コンピュータ読み取り可能な記憶媒体。 - 前記プロセッサに、
前記テーブルから所定の条件に該当する1以上のレコードを抽出してアーカイブファイルに移動するアーカイブ処理工程を実行させ、
前記アーカイブ処理工程では、抽出された前記レコードの量が所定の上限値を超過する場合、前記抽出されたレコードを複数のアーカイブファイルに分けて格納させる、
プログラムを記録した、請求項13に記載のコンピュータ読み取り可能な記憶媒体。 - 前記テーブルの定義時に前記プロセッサに、前記複数の列のうちデータ絞込みに使われる列であるレンジ列の指定を受け付ける工程を実行させ、
前記アーカイブ処理工程は、前記プロセッサに、作成されたアーカイブファイルに含まれる前記レコードのレンジ列の最小値及び最大値を記録したファイル管理表を作成させる工程を含み、
前記a)において、受け付けた前記検索要求にレンジ列の条件が指定されている場合、
前記c)において、前記プロセッサに、前記ファイル管理表を用いて前記レンジ列の条件に該当するレコードを有する前記アーカイブファイルを特定する、第3の部分クエリを生成させ、前記第2の部分クエリとして前記第3の部分クエリを含む部分クエリを生成させる、
プログラムを記録した、請求項14に記載のコンピュータ読み取り可能な記憶媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/059567 WO2017163393A1 (ja) | 2016-03-25 | 2016-03-25 | データ処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017163393A1 true JPWO2017163393A1 (ja) | 2018-06-28 |
JP6471262B2 JP6471262B2 (ja) | 2019-02-13 |
Family
ID=59901223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018506722A Active JP6471262B2 (ja) | 2016-03-25 | 2016-03-25 | データ処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10762037B2 (ja) |
JP (1) | JP6471262B2 (ja) |
WO (1) | WO2017163393A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019218B (zh) * | 2017-12-08 | 2023-08-25 | 阿里巴巴集团控股有限公司 | 数据存储与查询方法及设备 |
KR102374747B1 (ko) | 2017-12-15 | 2022-03-15 | 삼성전자주식회사 | 객체를 인식하는 장치 및 방법 |
US11036735B2 (en) * | 2018-01-16 | 2021-06-15 | Oracle International Corporation | Dimension context propagation techniques for optimizing SQL query plans |
US11138215B2 (en) * | 2018-06-29 | 2021-10-05 | Oracle International Corporation | Method and system for implementing parallel database queries |
US11086828B2 (en) * | 2018-10-12 | 2021-08-10 | Sap Se | Compression of column store tables |
WO2021014324A1 (en) * | 2019-07-19 | 2021-01-28 | JFrog Ltd. | Data archive release in context of data object |
KR102559290B1 (ko) * | 2020-01-06 | 2023-07-26 | 주식회사 아미크 | 하이브리드 클라우드 기반의 실시간 데이터 아카이빙 방법 및 시스템 |
CN117216083A (zh) * | 2022-06-10 | 2023-12-12 | 华为技术有限公司 | 一种数据处理系统及装置 |
JP7300781B1 (ja) | 2022-11-15 | 2023-06-30 | Eaglys株式会社 | データ管理システム、データ管理方法、及びデータ管理プログラム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10154160A (ja) * | 1996-09-25 | 1998-06-09 | Sharp Corp | 並列データ検索処理装置 |
JP2000132442A (ja) * | 1998-10-29 | 2000-05-12 | Hitachi Ltd | 長期蓄積型データベースのデータ管理方式 |
JP2006099542A (ja) * | 2004-09-30 | 2006-04-13 | Hitachi Ltd | データアーカイブシステム、データ検索方法及び管理サーバ |
JP2013239058A (ja) * | 2012-05-16 | 2013-11-28 | Canon Inc | 情報処理装置、方法及びプログラム |
WO2014184857A1 (ja) * | 2013-05-13 | 2014-11-20 | 株式会社日立製作所 | 重複排除システム及びその方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1349081A1 (en) * | 2002-03-28 | 2003-10-01 | LION Bioscience AG | Method and apparatus for querying relational databases |
US20100333116A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Cloud gateway system for managing data storage to cloud storage sites |
EP2780834B1 (en) * | 2011-11-14 | 2020-07-08 | Google LLC | Processing changes to distributed replicated databases |
EP2812820A4 (en) * | 2012-02-06 | 2015-09-23 | Mycare Llc | METHODS OF SEARCHING GENOMIC DATA BASES |
US8972388B1 (en) * | 2012-02-29 | 2015-03-03 | Google Inc. | Demotion of already observed search query completions |
EP2728494A1 (en) * | 2012-11-05 | 2014-05-07 | Software AG | System and method for graphically creating queries on model data |
US9860229B2 (en) * | 2015-01-19 | 2018-01-02 | Sas Institute Inc. | Integrated data extraction and retrieval system |
US10303695B2 (en) * | 2015-10-21 | 2019-05-28 | Oracle International Corporation | Query decomposition for scalability of continuous query processing |
-
2016
- 2016-03-25 WO PCT/JP2016/059567 patent/WO2017163393A1/ja active Application Filing
- 2016-03-25 JP JP2018506722A patent/JP6471262B2/ja active Active
- 2016-03-25 US US15/750,662 patent/US10762037B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10154160A (ja) * | 1996-09-25 | 1998-06-09 | Sharp Corp | 並列データ検索処理装置 |
JP2000132442A (ja) * | 1998-10-29 | 2000-05-12 | Hitachi Ltd | 長期蓄積型データベースのデータ管理方式 |
JP2006099542A (ja) * | 2004-09-30 | 2006-04-13 | Hitachi Ltd | データアーカイブシステム、データ検索方法及び管理サーバ |
JP2013239058A (ja) * | 2012-05-16 | 2013-11-28 | Canon Inc | 情報処理装置、方法及びプログラム |
WO2014184857A1 (ja) * | 2013-05-13 | 2014-11-20 | 株式会社日立製作所 | 重複排除システム及びその方法 |
Also Published As
Publication number | Publication date |
---|---|
JP6471262B2 (ja) | 2019-02-13 |
US20190018851A1 (en) | 2019-01-17 |
US10762037B2 (en) | 2020-09-01 |
WO2017163393A1 (ja) | 2017-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6471262B2 (ja) | データ処理システム | |
US10521427B2 (en) | Managing data queries | |
US9626411B1 (en) | Self-described query execution in a massively parallel SQL execution engine | |
US11899666B2 (en) | System and method for dynamic database split generation in a massively parallel or distributed database environment | |
US10089377B2 (en) | System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment | |
US10380114B2 (en) | System and method for generating rowid range-based splits in a massively parallel or distributed database environment | |
US10528596B2 (en) | System and method for consistent reads between tasks in a massively parallel or distributed database environment | |
US11544268B2 (en) | System and method for generating size-based splits in a massively parallel or distributed database environment | |
US10078684B2 (en) | System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment | |
US10089357B2 (en) | System and method for generating partition-based splits in a massively parallel or distributed database environment | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
US20160092547A1 (en) | System and method for efficient connection management in a massively parallel or distributed database environment | |
US11030196B2 (en) | Method and apparatus for processing join query | |
US10810174B2 (en) | Database management system, database server, and database management method | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
Visheratin et al. | Peregreen–modular database for efficient storage of historical time series in cloud environments | |
WO2015168988A1 (zh) | 一种数据索引创建方法、装置及计算机存储介质 | |
Wang et al. | QMapper for smart grid: Migrating SQL-based application to Hive | |
Kalavri et al. | m2r2: A framework for results materialization and reuse in high-level dataflow systems for big data | |
US10762084B2 (en) | Distribute execution of user-defined function | |
US20200311076A1 (en) | Database partition pruning using dependency graph | |
JP6608544B2 (ja) | データ処理システム | |
JP7211255B2 (ja) | 検索処理プログラム、検索処理方法及び情報処理装置 | |
JP2019028933A (ja) | 多次元データ管理システム及び多次元データ管理方法 | |
Müller et al. | Architecture of a Big Data Platform for a Semiconductor Company |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171110 |
|
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: 20190108 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190121 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6471262 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |