JP6287441B2 - データベース装置 - Google Patents

データベース装置 Download PDF

Info

Publication number
JP6287441B2
JP6287441B2 JP2014063526A JP2014063526A JP6287441B2 JP 6287441 B2 JP6287441 B2 JP 6287441B2 JP 2014063526 A JP2014063526 A JP 2014063526A JP 2014063526 A JP2014063526 A JP 2014063526A JP 6287441 B2 JP6287441 B2 JP 6287441B2
Authority
JP
Japan
Prior art keywords
data
record
tabular
processing units
update
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.)
Expired - Fee Related
Application number
JP2014063526A
Other languages
English (en)
Other versions
JP2015185104A (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.)
NEC Corp
Original Assignee
NEC 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=54190690&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP6287441(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2014063526A priority Critical patent/JP6287441B2/ja
Priority to US14/666,487 priority patent/US20150278310A1/en
Priority to CN201510133285.0A priority patent/CN105045791A/zh
Publication of JP2015185104A publication Critical patent/JP2015185104A/ja
Application granted granted Critical
Publication of JP6287441B2 publication Critical patent/JP6287441B2/ja
Expired - Fee Related 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

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

Description

本発明は、データベース装置、プログラム、情報処理方法、データベースシステムに関する。
データをカラム(列)毎に分割して保持するカラムストア型のデータベースが知られている。カラムストア型のデータベースでは、上記のように、データをカラム毎に分割して保持している。そのため、カラムストア型データベースでは、例えば特定の列の値を一度に処理するなど、列指向の処理を高速に行うことが可能となる。
このように、カラムストア型のデータベースは、列を抜き出して集計処理を行うなど、列方向のデータの集計、分析などを得意とするデータベースである。そのため、上記のようなカラムストア型のデータベースは、例えば大量のデータを一括で処理する場合のような、高速に集計や結合処理を行いたい場面などで活用されている。
カラムストア型のデータベースの中には、列単位にデータをソートして格納することで、参照・集計・結合の処理をさらに高速化させているシステムがある。このようなデータをソートして格納するシステムでは、更新処理が入るたびに各列のソートを行うことが必要になる。そのため、例えば大量の更新命令が来た場合には、命令の都度ソートを実行する必要が生じることになる。その結果、このようなシステムでは、命令の都度実行するソートにより処理性能が遅くなってしまうという課題があった。
このような課題に対応する技術の一つとして、例えば、特許文献1がある。特許文献1によると、データを追記する際に、追記対象のデータの順列値と追記対象のデータサブセットにおける各シンボル値の識別値とに従前に蓄積されたデータサブセットの識別値を加算する。また、追記対象のデータサブセットの識別値に当該データサブセットに含まれるシンボル値の識別値の最大値を設定する。このような処理によりデータを追加することで、特許文献1によると、高速な読み取り応答性能を大幅に損なうことなく、より高速な追記処理応答を行うことが可能となる。
特開2011−209807号公報
しかしながら、カラムストア型のデータベースの用途によっては、データをきちんとソートして高速な参照・集計・結合処理を実現したい場合がある。このような場合、上記ソートを行うことにより、上述したように、処理性能が遅くなってしまうという問題が再燃することになる。
また、列単位のソートを行うカラムストア型のデータベースにおいては、大量のデータ更新処理が来た場合に、CPUのコア数分に並列処理が出来るよう更新データを分割し、それぞれのスレッドでソートを行うよう構成されているものがある。このようなシステムにおいては、各スレッドのデータ処理が完了した後に各スレッドでのソート結果をマージし、データを指すアドレスの情報を整理する処理などが必要となる。このため、各スレッドでの処理が終了するまでの待ちが発生し、並列化の効果が十分に発揮できない場合があるという問題があった。
このように、カラムストア型のデータベースにおいては、データの更新処理などを行う場合に十分に性能を発揮できない場合がある、という問題が生じていた。
そこで、本発明の目的は、データの更新処理などを行う場合に十分に性能を発揮できない場合がある、という問題を解決するデータベース装置を提供することにある。
かかる目的を達成するため本発明の一形態であるデータベース装置は、
表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を備え、
前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行う、
という構成を採る。
また、本発明の他の形態であるプログラムは、
情報記憶装置に、
表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を実現させ、
前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行う、
プログラムである。
また、本発明の他の形態である情報処理方法は、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部の何れかに分配し、
前記複数のデータ処理部のそれぞれは、表形式のデータを列形式に分割して並び替える処理を行い、当該複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶する、
という構成を採る。
また、本発明の他の形態であるデータベースシステムは、
表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を備え、
前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行うデータベース装置と、
前記データベース装置に対して前記表形式のデータを送信するクライアント装置と、
を備える、
という構成を採る。
本発明は、以上のように構成されることにより、大量のデータ更新を行う場合などにおいても十分に処理性能を発揮することの出来るデータベース装置を提供することが出来る。
本発明の第1の実施形態に係るデータベースシステムの全体の構成を示すブロック図である。 本発明の第1の実施形態に係るカラムストア型データベース管理システムの構成を示すブロック図である。 図2で示すクエリ実行部33の構成の一例を示すブロック図である。 カラムストア型データベース管理システムによる処理を説明するための更新前のデータの一例を示す表である。 図4で示す表形式のデータをカラム型に変換した一例を示す表である。 カラムストア型データベース管理システムによる処理を説明するための更新データの一例を示す表である。 カラムストア型データベース管理システムによる処理を説明するための更新後のデータの一例を示す表である。 カラムストア型データベース管理システムによる処理の概要を説明する図である。 カラムストア型データベース管理システムによる処理を具体的に説明するための図である。 カラムストア型データベース管理システムによる処理を具体的に説明するための図である。 カラムストア型データベース管理システムによる処理を具体的に説明するための図である。 カラムストア型データベース管理システムによる処理を具体的に説明するための図である。 カラムストア型データベース管理システムによる処理を具体的に説明するための図である。 カラムストア型データベース管理システムによる処理を具体的に説明するための図である。 カラムストア型データベース管理システムの動作の一例を示すフローチャートである。 スレッドの動作を説明するフローチャートである。 本発明に関連するカラムストア型データベースの動作の一例を示すフローチャートである。 本発明の第2の実施形態に係るカラムストア型データベース管理システムの構成を示すブロック図である。 本発明の第3の実施形態に係るデータベース装置の構成の概要を示す概略ブロック図である。 本発明の第4の実施形態に係るデータベースシステムの構成の概要を示す概略ブロック図である。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
本発明の第1の実施形態では、表形式のデータを列方向に分割して記憶するカラムストア型のデータベースシステム1について説明する。後述するように、本実施形態におけるデータベースシステム1は、夜間バッチなどによる大量の更新処理を行う場合に、ユーザの指定する期間内の更新処理を一度にまとめて反映させることが出来るよう構成されている。また、本実施形態におけるデータベースシステム1は、データの更新などを行う場合に、複数のCPUによる並列処理を行うことが出来るよう構成されている。さらに、本実施形態におけるデータベースシステム1は、後述するように、上記複数のCPUを用いて並列処理を行う際に、それぞれのCPUで高い独立性を有する処理を行うことが出来るよう構成されている。
図1を参照すると、本実施形態におけるデータベースシステム1は、データベースクライアント2(クライアント装置)と、カラムストア型データベース管理システム3(データベース装置)と、を有している。また、図1で示すように、データベースクライアント2とカラムストア型データベース管理システム3とはネットワークを介して接続されており、互いに通信可能なよう構成されている。
なお、本実施形態においては、カラムストア型データベース管理システム3が1台の情報処理装置を備えて構成されている場合について説明する。しかしながら、本発明の実施は上記場合に限定されない。カラムストア型データベース管理システム3は、分散データベース管理システムのように、複数の情報処理装置を備えて構成されていても構わない。また、データベースクライアント2とカラムストア型データベース管理システム3とは、必ずしもネットワークを介して接続されていなくても構わない。データベースクライアント2とカラムストア型データベース管理システム3とは、例えば、一台の情報処理装置により構成されていても構わない。
データベースクライアント2は、情報処理装置である。データベースクライアント2は、図示しない中央演算装置(CPU、Central Processing Unit)と、記憶装置(メモリ及びハードディスク)と、を備えている。データベースクライアント2は、記憶装置が備えるプログラムをCPUが実行することで、後述する機能を実現するように構成されている。
データベースクライアント2は、カラムストア型データベース管理システム3に対してデータの挿入や更新、削除などのクエリを発行する機能を有している。また、データベースクライアント2は、カラムストア型データベース管理システム3から、上記クエリの結果を受け付ける機能を有している。このように、データベースクライアント2は、カラムストア型データベース管理システム3に対してクエリを発行するための一般的な機能を備えている。
また、データベースクライアント2は、後述する更新モードの開始を指示する更新モード開始指示と更新モードの終了を指示する更新モード終了指示をカラムストア型データベース管理システム3に通知する機能を有している。後述するように、データベースクライアント2がカラムストア型データベース管理システム3に対して更新モード開始指示を通知することで、カラムストア型データベース管理システム3は更新モードを開始することになる。また、データベースクライアント2がカラムストア型データベース管理システム3に対して更新モード終了指示を通知することで、カラムストア型データベース管理システム3は更新モードを終了することになる。
カラムストア型データベース管理システム3は、情報処理装置である。カラムストア型データベース管理システム3は、図示しない中央演算装置(CPU)と、記憶装置(メモリ及びハードディスク)と、を備えている。カラムストア型データベース管理システム3は、記憶装置が備えるプログラムをCPUが実行することで、後述する機能を実現するように構成されている。
図2を参照すると、カラムストア型データベース管理システム3は、クエリ解析部31と、実行計画部32と、クエリ実行部33と、スキーマ管理データ保存領域34(データ記憶部の一部)と、ユーザデータ保存領域35(データ記憶部の一部)と、を有している。また、スキーマ管理データ保存領域34は、表定義領域341と、テーブルデータ統計情報領域342と、を有している。さらに、ユーザデータ保存領域35は、複数の更新部分領域3511(3511、3512、…、351n。以下、区別しない場合は更新部分領域3511とする)を有する一次領域351と、テーブルデータ保存領域352と、を有している。
クエリ解析部31は、データベースクライアント2から発行されたSQL(Structured Query Language)などの問合せ言語の内容を確認し、構文解析を実行するパーサとしての機能を有している。具体的には、クエリ解析部31は、データベースクライアント2から送信されたクエリ(SQL文)を受け取る。続いて、クエリ解析部31は、受け取ったSQL文の構文解析を実行する。そして、クエリ解析部31は、構文解析した結果を実行計画部32へと送信する。
実行計画部32は、クエリ解析部31で解析したクエリをどのような順番や方法で行えば最も効率的であるかを判定し、その実行計画を作成するプランナとしての機能を有している。実行計画部32は、クエリ解析部31から構文解析した結果を受信すると、当該受信した結果を基に実行計画を作成する。そして、実行計画部32は、作成した実行計画をクエリ実行部33へと送信する。
なお、データベースクライアント2からAPI(Application Programming Interface)などで直接クエリ実行部33の動作を指定する場合、上記クエリ解析部31や実行計画部32は通過しないことになる。
クエリ実行部33は、実行計画部32で作成した実行計画によるデータ操作命令を実行する機能を有している。また、クエリ実行部33は、データベースクライアント2から直接受信したデータ操作命令(上記APIで記載されているものなど)を受けて、スキーマ管理データ保存領域34やユーザデータ保存領域35に向けてクエリを実行する機能を有している。このように、クエリ実行部33は、いわゆるデータベースのエグゼキュータと呼ばれる部分に相当する。
図3は、クエリ実行部33が有する機能の一例である。図3を参照すると、クエリ実行部33は、データ処理部331と、分布状況推測部332と、データ分配部333と、更新処理管理部334と、を有している。
データ処理部331は、クエリの実行などのデータ処理を行う機能を有している。本実施形態におけるカラムストア型データベース管理システム3は、複数のCPUコアを有しており、当該複数のCPUコアを用いて複数のスレッドを実行可能なよう構成されている。つまり、データ処理部331は、複数のCPUコアがそれぞれ処理を行うことで、複数のCPUコアを用いて並列処理を行うことが出来るよう構成されている。なお、以降においては、一例として、カラムストア型データベース管理システム3が4つのCPUコアを備えている場合について説明する。但し、カラムストア型データベース管理システム3は、2つや3つのCPUコアを備えていても構わないし、5つ以上のCPUコアを備えていても構わない。
分布状況推測部332は、後述するテーブルデータ統計情報領域342に格納されている統計情報やテーブルデータ保存領域352に格納されているソート済みのデータから、更新などの所定の処理(クエリ)の対象となる表形式のデータ(更新データ)の各レコードに含まれる要素の値の分布状況を推測する機能を有している。ここで、本実施形態における要素の値とは、各レコードを識別するための情報を含まず、更新などの所定の処理の対象となる値のことをいう。分布状況推測部332は、例えば、テーブルデータ統計情報領域342から、クエリの対象となる値のヒストグラム(統計情報)を取得する。そして、分布状況推測部332は、当該取得したヒストグラムを用いて、更新データのデータ分布を推測する。その後、分布状況推測部332は、当該推測した結果をデータ分配部333へと送信する。なお、分布状況推測部332は、後述する更新モード中に動作することになる。
データ分配部333は、分布状況推測部332が推測した結果に基づいて、各CPUコアが処理する更新データの数が均一になるように更新データ(表形式のデータの各レコード)を分配する機能を有している。データ分配部333は、分布状況推測部332が推測した結果に基づいて、例えば、各CPUコアの更新データ件数が均等になると推測されるレンジで並列数分にデータを分割するパーティションのルールを設定する。つまり、データ分配部333は、分布状況推測部332が推測した結果に基づいて、更新データの送信先を変更する送信先閾値(分配閾値)を設定する。そして、データ分配部333は、当該設定した送信先閾値に基づいて、並列処理の数分(CPUコアの数分)分割した後述する更新部分領域3511に更新データを格納する。この結果、データ分配部333は、後述するように、例えば近似する要素の値を備えるレコードが同一のデータ処理部331で処理されるように、更新データを分配することになる。このように、データ分配部333は、更新データの要素の値の分布状況に基づいて、更新データを各更新部分領域3511に分配する機能を有している。また、データ分配部333の分配処理により、CPUコアの数分確保された更新部分領域3511のそれぞれに、均一に、更新データが分配されることになる。なお、データ分配部333は、後述する更新モード中に動作することになる。
更新処理管理部334は、更新モードの開始と終了のタイミングを管理する機能を有している。つまり、更新処理管理部334は、更新モードを利用した更新処理を行うか、通常の更新処理を行うかの管理を行っている。上述したように、更新処理管理部334は、データベースクライアント2から更新モードの開始を通知されると、更新モードを開始する。更新モードが開始すると、以降に取得した更新データは、データ分配部333により更新部分領域3511のそれぞれに分配されることになる。そして、分配された更新データは、更新部分領域3511のそれぞれで更新モードが終了するまでプールされる。また、更新処理管理部334は、データベースクライアント2から更新モードの終了を通知されると、更新モードを終了する。更新モードが終了すると、データ処理部331により更新部分領域3511に格納された更新データに対する処理が開始されることになる。なお、更新データに対する処理の詳細については後述する。
スキーマ管理データ保存領域34は、メモリやハードディスクなどの記憶装置である。スキーマ管理データ保存領域34は、データベースのスキーマの定義情報などを記憶・管理している。上述したように、スキーマ管理データ保存領域34は、表定義領域341と、テーブルデータ統計情報領域342と、を有している。
表定義領域341は、一般的なリレーショナルデータモデルにおいて保持される、表やインデックスなどの定義情報、それらのデータがどのデバイスのどの位置に格納されているかといった情報、などの情報を記憶している。つまり、表定義領域341は、一般的にシステム表やシステムカタログなどと呼ばれている情報を記憶している。
テーブルデータ統計情報領域342は、ユーザのテーブルデータに関する統計情報を記憶している。つまり、テーブルデータ統計情報領域342は、一般的なリレーショナルデータベースでSQLのクエリに対してコストベースの実行計画を作成するために利用する統計情報と同一の情報を記憶している。
ユーザデータ保存領域35は、メモリやハードディスクなどの記憶装置である。ユーザデータ保存領域35は、データベースのデータや、データ処理を行う際に発生する一時データなどのデータを記憶している。上述したように、ユーザデータ保存領域35は、複数の更新部分領域3511を備える一時領域351と、テーブルデータ保存領域352と、を有している。
一時領域351は、データベースのクエリにより発行された中間データなどを記憶している。また、上記のように、一時領域351は更新部分領域3511を有している。更新部分領域3511は、カラムストア型データベース管理システム3に搭載されているCPUコアの数分、一時領域351内に確保されている。
更新部分領域3511は、更新モードを利用したデータ更新中に1つのコアで処理するデータを格納する領域である。そのため、更新部分領域3511は、上記のように、CPUコアの数に応じた数が生成されることになる。つまり、更新部分領域3511は、後述するスレッドの数に応じて生成されている。更新モードが開始されると、更新部分領域3511には、データ分配部333から更新データが分配される。そして、更新モードが終了すると、更新部分領域3511が記憶する更新データを用いて、データ処理部331(CPUコア)による処理が行われる。
テーブルデータ保存領域352は、表定義領域341に格納された定義に基づいたデータベースの実データやインデックスデータなどを記憶している。
以上が、本実施形態におけるデータベースシステム1の構成である。ここで、具体的に図4で示す「商品テーブル」というテーブルを定義して、カラムストア型データベース管理システム3により行われる処理の詳細について説明する。なお、以下において示す商品テーブルは、データベースシステム1が処理可能なテーブルの一例である。
図4を参照すると、商品テーブルは、例えば、「商品ID」、「商品名」、「カテゴリID」、「定価」、「発売開始日」、「発売終了日」、という列を持っているとする。
このような商品テーブルをカラムストア型データベースシステム(例えば、カラムストア型データベース管理システム3)にロードすると、その内部構造は、例えば図5で示すようになる。図5を参照すると、カラムストア型データベース管理システム3においては、テーブル(表形式のデータ)の列ごとに、列番号と値番号と値リストとを備えた構造をしていることが分かる。
列番号は、その列のデータが何行目のデータに当たるのかを示している。また、値番号には、値リストへのインデックス番号が記載されている。また、値リストには、実データの重複が排除され、なおかつソートされた形でデータが配置されている。カラムストア型データベース管理システム3はこれらの構成により論理的な商品テーブルを格納していることになる。なお、図5では、同じ位置に位置する列番号と値番号が対応する列番号と値番号になる(例えば、商品名列のうち列番号の上から2番目に位置する2は、値番号の上から2番目に位置する4と対応する)。
例えば、図5で示すカラムストア型データベースの構造において、商品テーブルの2行目の定価を参照する場合、商品テーブルの定価列にある列番号2と同じ位置にある、値番号の2番目の値である「4」を取得する(図5参照)。そして、この4をもとに定価列の値リストの4番目にある値を確認する。すると、その値が「8800」であることが分かる。
なお、このようなデータがソートされて格納されているカラムストアデータベースのモデルでは、データの検索などにおいて、データを変換することなく2分探索法を利用することが出来る。また、結合する場合も、結合を行う列に対してソートされた値リスト同士を付け合せ、それらの値リスト番号の関連を調査するだけですむ。そのため、このようなデータがソートされて格納されているカラムストアデータベースのモデルでは、集計や検索に対して高速な処理を行うことが可能となる。以降において、このようなカラムストアデータベースのモデルをFAST構造と記載する。
ここで、図4で示す商品テーブルに対して、更新モードを利用して図6で示すデータで更新を行う場合を考える。図6では、追加(INSERT)の場合は新しい列番号が振られており、更新(UPDATE)や削除(DELETE)の場合は処理対象の列番号が記載されている。また、更新の場合は、例えば定価がいくらからいくらへと変更になるかが記載されている。なお、更新モードの最中に同じ列に対して複数の更新命令が来た場合、最終的な更新結果のみが図6で示す表に格納してあるとする。また、図4で示す商品テーブルに図6で示す更新データを反映させると、その結果は図7のようになることになる。
まず、図8を参照して、本実施形態におけるカラムストア型データベース管理システム3が各列のFAST構造の更新処理を並列に行う場合の概要について説明する。
なお、カラムストアであるため、更新処理は列単位で行われることになる。そのため、以下においては、列単位で行われる更新処理のうちの一例として、商品テーブルの価格列に対する更新処理について説明する(他の列についても同様の更新処理が行われる)。また、上述したように、本実施形態におけるカラムストア型データベース管理システム3は、CPUコアを4つ備えている。そのため、並列で4つの処理が行われることになる。
図8を参照すると、更新処理管理部334により更新モードに移行すると、以降に取得した更新データはデータ分配部333により各更新部分領域3511に分配されることになる。また、このときの分配は、分布状況推測部332が推測した分布状況に応じて行われる。
例えば、図8を参照すると、テーブルデータ統計情報領域342が記憶する価格列のヒストグラムから推測した更新データの分布状況に基づいて、データ分配部333は、「6000まで」、「6001〜8000」、「8001〜12000」、「12001〜」の4つに更新データを分配する。つまり、データ分配部333は、更新データの分布状況に基づいて、近似する値を備える更新データが同一のデータ処理部331で処理されるように、更新データを分配する。そして、上記分配された更新データは、更新モードが終了するまで、各更新部分領域3511(例えば、更新部分領域3511〜3514)でプールされる。
その後、更新モードが終了すると、各更新部分領域3511でプールされた更新データがカラムストアデータ(FAST構造)へと変換される。そして、FAST構造に変換された更新データと対応する価格列の値の範囲に位置する更新前定価列のデータ(図4参照)とをマージする。その後、各スレッドでの処理結果が結合されることになる。
以上が、カラムストア型データベース管理システム3が各列のFAST構造の更新処理を並列に行う場合の概要である。次に、上記カラムストア型データベース管理システム3が行う処理について具体的に説明する。図9を参照すると、まず更新モード中に、スレッドA(に対応する、例えば更新部分領域3511)に、「6000まで」の価格列の値を有する定価の値が4000と4500とのレコードが分配される。また、スレッドB(に対応する、例えば更新部分領域3512)に、「6001〜8000」の価格列の値を有する定価の値が7800のレコードが2つと定価が6800のレコードが1つとが分配される。同様に、スレッドC(に対応する、例えば更新部分領域3513)に、「8001〜12000」の価格列の値を有する定価の値が9800のレコードと9000のレコードとが分配される。そして、スレッドD(に対応する、例えば更新部分領域3514)に、「12001〜」の価格列の値を有する定価の値が34800のレコードと12800のレコードとが分配される。
そして、更新モードが終了するまで各更新データは上記各更新部分領域(3511〜3514)にプールされることになる。
その後、更新モードが終了すると、実際のテーブルデータ保存領域352との更新を実施するフェーズに入る。まず、クエリ実行部33のデータ処理部331は、新しく作成される件数分の列番号、値リストの格納領域をテーブルデータ保存領域352に確保する。具体的には、データ処理部331は、論理的な操作列番号の最大数分(今回の例では13)のデータ領域をそれぞれ確保する。同様に、データ処理部331は、各スレッドの値リストのデータを管理するための一時データ領域であるグループ値リスト個数テーブルや値番号調整値テーブルの領域を一時領域351に確保する。なお、グループ値リスト個数テーブルや値番号調整値テーブルの詳細については後述する。
次に、データ処理部331は、最終的な更新データを生成する並列処理に入る。まず、図9で示すように、データ処理部331(のCPUコアの1つ。スレッドA)は、更新部分領域3511に格納された更新データを、FAST構造に変換して当該更新部分領域3511に記憶する。同様に、スレッドB、スレッドC、スレッドDもそれぞれ対応する更新部分領域(3512〜3514)に格納された更新データをFAST構造に変換して対応する更新部分領域(3512〜3514)に記憶する。なお、図9においては、削除を行う場合の操作列番号を負の数字で記載している。また、図9においては、値番号を処理するスレッドとその中での値番号を用いて記載している。例えば、図9で示す操作列9番目の値番号「A−2」は、スレッドA内の値リストの2番目が値になるという意味である。
次に、図10で示すように、各スレッドは、更新データ分のFAST構造と既存のテーブルデータのFAST構造(図5の定価列参照)とをマージする。なお、このとき、既存のテーブルデータについては、更新データと同じデータレンジをとるように分配してマージする。つまり、既存のテーブルデータは、「6000まで」、「6001〜8000」、「8001〜12000」、「12001〜」と、値リストの値に応じて分配されマージされることになる。
具体的には、各スレッドは、まず、更新データ分のFAST構造の値リストと既存のテーブルデータの値リストとをマージソートによってマージする。続いて、各スレッドは、更新データ分について、マージ後の操作列番号の該当箇所にマージ前の操作列番号を転記する。同様に、各スレッドは、マージ後の元値番号の該当箇所にマージ前の元値番号を転記する。このような処理により、図10で示すようなデータが生成されることになる。このデータが対象のレンジの更新処理を行う基礎データになる。
そして、FAST構造のマージ、つまり部分値リストのマージが完了すると、図11で示すように、各スレッドは、その部分値の個数をグループ値リスト個数テーブル(上記のように、一時領域351に確保されている)に記入する。この処理は、スレッドごとに独自に行われる。つまり、部分値リストのマージが完了したスレッドは、他のスレッドの終了を待たずに、部分値の個数をグループ値リスト個数テーブルに記入する。このテーブルは、最終的な値番号の生成の際に用いられることになる。
例えば、スレッドAのマージ結果の部分値の個数は3個である。そのため、スレッドAは、グループ値リスト個数テーブルのAの部分に3を記入する。スレッドB、C、Dも同様の操作を行う。
次に、上記グループ値リスト個数テーブルに個数を記入したスレッドは、出来上がったマージ結果の操作列番号と元値番号と、更新前の定価列を基に、該当する新値番号(上記のように新値番号の格納領域は予めテーブルデータ保存領域352に確保されている)を埋める処理を行う。この処理も、スレッドごとに独自に行われる。以下では、一例として、スレッドAが最初に新値番号を埋める処理を行う場合について説明する。
図12を参照すると、スレッドAはまず、元値番号と新しく記入される新値番号との対応についての処理を行う。図12では、元値番号1、つまり、更新前定価列の値番号1は、列番号の6に該当する。そこで、図12(1)で示すように、新値番号の6番目の値を、元値番号1の部分値番号であるA−1として記載する。同様に、元値番号2、つまり、更新前定価列の値番号2は、列番号の3と5に該当する。そこで、新値番号の3番目と5番目との値を、元値番号2の部分値番号であるA−3として記載する。
次に、操作列番号にデータのある列について処理を行う。図12を参照すると、操作列番号として−6が記載されている。上述したように、操作列番号が−になっている場合は、削除を意味している。そこで、図12(2)で示すように、新値番号の6番目の値を削除する(値を(NULL)に変更する)。また、操作列番号として9が記載されている。そこで、新値番号の9番目の値を、操作列番号9の部分値番号であるA−2として記載する。つまり、新値番号の9番目の値としてA−2を追加する。
スレッドB、スレッドC、スレッドDも同様の処理を行う。つまり、各スレッドは、元値番号に基づく処理を行った後に、操作列番号に基づく処理を行う。なお、図12は、スレッドAが他のスレッドよりも早く新値番号を埋める処理に入った場合のイメージ図である。しかしながら、例えばスレッドBがスレッドAよりも早く上記処理に入る場合もある。この場合には、スレッドAは、スレッドBにより既に処理が行われたデータに、上記処理を行うことになる。
このような処理を各スレッドが行うことになる。その結果、図13(A)で示すように、全ての新値番号が埋まることになる。
なお、このようにスレッドごとに新値番号を埋めていくため、スレッドが新値番号を埋めようとした際に、既に他のスレッドにより新値番号が埋められている場合がある。例えば、更新前後の値の変動が大きいなど、元値番号に対する処理と操作列番号による処理とが他のスレッドで行われる場合などにおいて上記場合が発生する。この場合には、元値番号に対する処理と操作列番号による処理とのどちらが先に処理されるかは、それぞれの処理を行うスレッドの処理に依存することになる。そこで、このような場合には、スレッドは、操作列番号が記入された削除や更新処理であるもののみを上書きし、元値番号がある列から転記する場合は上書きしないよう処理する。このように更新対象のデータを優先し処理を行うことで、整合性を確保することが出来る。
以上のように、更新データを分割して並列に処理を開始したところから、新値番号が生成されるまでの間は、各スレッドは他のスレッドに依存することなく処理することが出来る。つまり、ここまでは、完全にスレッドセーフな状態である。
次に、各スレッドは、グループ番号で記載された新値番号(部分値番号時に記載されたデータ)を、数字のみの値番号(最終的な値番号)に変換する処理を行う。
具体的には、各スレッドは、まず、グループ値リスト個数テーブルから値番号調整値テーブルを生成する。図13(B)を参照すると、本実施形態における例では、更新部分領域3511のスレッドAには値リストが3件存在している。同様に、スレッドBには2件、スレッドCには3件、スレッドDには3件、存在している。そこで、各スレッドは、上記件数に基づいて、調整値を算出する。例えば、スレッドAは、当該スレッドAによる更新部分が新値リストの最初に位置するため、調整値として0を算出する。また、スレッドBは、当該スレッドBによる更新部分がスレッドAの更新部分のつぎから始まることになるため、スレッドAの値リストの件数である3を調整値として算出する。同様に、スレッドCは、スレッドAとスレッドBの値リストの件数を足した5を調整値として算出する。そして、スレッドDは、スレッドAとスレッドBとスレッドCの値リストの件数を足した8を調整値として算出する。
続いて、各スレッドは、当該各スレッドが算出した新値番号を上記算出した調整値を用いて更新する。つまり、各スレッドは、上記算出した調整値に各スレッド内の値リストの値を足すことで、新値番号を算出して変換する。例えば、スレッドCは、新値番号C−1に対して、調整値5と値リストの値である1を足して、6を算出する。これにより、図6で示すように、新値番号C−1は新値番号6に変換されることになる。このような処理を各スレッドで行うことで、図13(C)に示すように、グループ番号で記載された新値番号が数字のみの値番号に変換されることになる。
なお、この処理は、上記のように、グループ値リスト個数テーブルの値に基づいて行うことになる。そのため、この処理は、図13(A)で示すように全てのスレッドが新値番号を埋めていなくても実行可能である。例えば、スレッドBが新値番号を埋めている最中でも、グループ値リスト個数テーブルの値が全て埋まっていれば、新値番号を全て埋めたスレッドAは上記変換処理を行うことが出来る。このように、新値番号を埋める手前の処理であるグループ値リスト個数テーブルに個数を埋める処理が完了していれば、各スレッドは他のスレッドの新値番号を埋める処理の完了を待つことなく変換処理に入ることが出来る。つまり、この処理は、完全なスレッジセーフな状態ではないものの、厳密に各スレッドの同時の処理完了を待つ必要はない処理になる。
また、各スレッドの処理が完了したのち、各スレッドで生成された部分値リストを順番に縦に結合することで、図13(C)で示す新値リストを生成することが出来る。
このような処理の結果、図14で示す最終結果の更新がテーブルデータ保存領域352に記憶されることになる。
なお、本実施形態においては、トランザクションの管理を簡単にするため、最終的な更新結果のみが図6で示す表に格納してあるとした。しかしながら、本発明は、そのような場合に限らず実施可能である。つまり、更新データは、同じ列に対する複数の更新を含んでいても構わない。
ただし、この場合には、通常のデータベースで取られている方式と同様に、更新データについて処理順を示す識別子などを導入することとする。処理順を示す識別子などを導入することで、FAST構造化が終了した更新部分列をテーブルデータ保存領域352に格納する際に、新しいデータ(最後に更新されたデータ)のみを残すよう処理することが出来るようになる。この手順は一般的なトランザクションの方式と同一であるため、詳細な説明については省略する。
以上が、本実施形態におけるデータベースシステム1の構成とカラムストア型データベース管理システム3により行われる処理の詳細である。次に、カラムストア型データベース管理システム3の動作について説明する。まず、カラムストア型データベース管理システム3の更新モードの動作について説明する。
図15を参照すると、カラムストア型データベース管理システム3は、データベースクライアント2から送信された更新モード開始指示を受信する(S001)。これにより、更新処理管理部334は、更新モードの開始を決定する。
更新モードが開始すると、以降に取得した更新データが上記データ分配部333により更新部分領域3511のそれぞれに分配されることになる。つまり、更新モードの最中に更新データを受信すると(S002)、まずクエリ実行部33は、受信した更新データの対象テーブルが更新モード開始後初めての更新であるか否かを確認する(S003)。そして、初めての更新であった場合には(S003、yes)、クエリ実行部33の分布状況推測部332がテーブルデータ統計情報領域342を確認し、対象テーブルの列のヒストグラムを確認する(S004)。また、データ処理部331がCPUコア数分の更新部分領域3511を確保する(S005)。そして、データ分配部62により、各更新部分領域3511に更新データが分配される(S006)。
一方、更新データの対象テーブルが更新モード開始後初めての更新でなかった場合(S003、no)、既にヒストグラムの確認と更新部分領域3511の確認は済んでいることになる。そのため、データ分配部62による各更新部分領域3511に対する更新データの分配処理が行われる(S006)。
なお、データ分配部62により各更新部分領域3511に分配された各更新データは、更新モードの終了まで各更新部分領域3511でプールされることになる。
そして、このような分配処理は、更新モードの最中に更新データを受信するごとに行われる(S007)。
その後、カラムストア型データベース管理システム3は、データベースクライアント2から送信された更新モード終了指示を受信する(S008)。これにより、更新処理管理部334は、更新モードの終了を決定する。
そして、更新モードが終了すると、データ処理部331による更新部分領域3511に格納された更新データに対する更新処理が開始されることになる(S009)。つまり、データ処理部331は、まず、新しく作成される件数分の列番号、値リストの格納領域をテーブルデータ保存領域352に確保する。同様に、データ処理部331は、各スレッドの値リストのデータを管理するための一時データ領域であるグループ値リスト個数テーブルや値番号調整値テーブルの領域を一時領域351に確保する。そして、データ処理部331は、最終的な更新データを生成する並列処理に入ることになる。そして、並列処理の結果、更新データの反映が行われることになる。
以上が、カラムストア型データベース管理システム3の更新モードの動作について説明である。次に、更新モード終了後行われる更新処理の動作について説明する。なお、更新処理は並列で行われることになる。そこで、以下においては、並列の処理のうちの1つのスレッド(データ処理部331のCPUコア)の動作について説明する。
図16を参照すると、スレッドは、更新モードの終了により、対応する更新部分領域3511に記憶されている更新データをFAST構造に変換する(S101)。そして、スレッドは、変換したFAST構造を当該更新部分領域3511に記憶する。
続いて、スレッドは、上記変換した更新データ分のFAST構造と既存のテーブルデータのFAST構造とをマージする(S102)。具体的には、スレッドは、まず、更新データ分のFAST構造の値リストと既存のテーブルデータの値リストとをマージソートによってマージする。続いて、スレッドは、更新データ分について、マージ後の操作列番号の該当箇所にマージ前の操作列番号を転記する。同様に、スレッドは、マージ後の元値番号の該当箇所にマージ前の元値番号を転記する。これにより、スレッドは、更新データ分のFAST構造と既存のテーブルデータのFAST構造とをマージする。
次に、スレッドは、上記更新データ分のFAST構造と既存のテーブルデータのFAST構造とをマージした結果生成される部分値の個数をグループ値リスト個数テーブルに記載する(S103)。なお、上記のように、グループ値リスト個数テーブルは、一時領域351に確保されている。
そして、スレッドは、マージ結果の操作列番号と元値番号と、更新前の定価列を基に、該当する新値番号を埋める処理を行う。つまり、スレッドは、更新データ分のFAST構造と既存のテーブルデータのFAST構造とのマージにより、マージ結果の操作列番号と元値番号とを得る。また、スレッドは、更新前の定価列をテーブルデータ保存領域352から取得する。そして、スレッドは、マージ結果の操作列番号と元値番号と、更新前の定価列を基に、テーブルデータ保存領域352に確保した該当する新値番号の領域を埋める処理を行う。なお、ここでの新値番号は、上記マージ結果の部分値に対応するものになる。
ここまでの動作は、スレッドは他のスレッドの処理に依存することなく処理可能である。つまり、ここまでの処理は、スレッドセーフな状態である。
次に、スレッドは、グループ値リスト個数テーブルに基づいて調整値を算出して、値番号調整値テーブルに当該算出した調整値を記載する(S105)。そして、スレッドは、当該算出した調整値を用いて、上記ステップS104で埋めた新値番号を変換する(S106)。つまり、スレッドは、部分値に対応する新値番号を最終的な新値リストに対応する新値番号に変換する。
以上が、スレッドの動作である。そして、並列処理を行う全てのスレッドが上記処理を行うことにより、テーブルデータ保存領域352には、全ての新値番号が記載されることになる。また、各スレッドの処理が完了したのち、各スレッドで生成された部分値リストを順番に縦に結合することで、新値リストを生成することが出来る。これにより、更新データの反映が終了することになる。
このように、本実施形態におけるカラムストア型データベース管理システム3は、更新処理管理部334と更新部分領域3511とを備えている。このような構成により、カラムストア型データベース管理システム3は、データベースクライアント2からの更新モード開始指示に応じて更新モードを開始することが出来る。そして、更新モード中の更新データを更新部分領域3511に記憶させることが出来る。また、カラムストア型データベース管理システム3は、データベースクライアント2からの更新モード終了指示に応じて更新モードを終了することが出来る。そして、カラムストア型データベース管理システム3は、更新部分領域3511に記憶させた更新データを一度に処理することが出来る。つまり、カラムストア型データベース管理システム3は、更新モード中の更新データを1回でマージ処理することが出来るようになる。その結果、夜間バッチなどにおいて大量の更新データが来る場合に、その都度マージ処理を行うことで起こる非効率的な処理を防止することが出来る。つまり、データの更新処理を行う場合に十分に性能を発揮できない場合がある、という課題を解決することが出来る。
また、本実施形態におけるカラムストア型データベース管理システム3は、複数のCPUコアを備えるデータ処理部331と、分布状況推測部332と、データ分配部333と、更新部分領域3511と、を有している。このような構成により、更新データ分配部333は、分布状況推測部332の推測結果を基にして、更新モード中の更新データを更新部分領域3511に分配することが出来る。つまり、更新データ分配部333は、更新データの要素の値の分布状況に応じて、各CPUコアの更新データ件数が均等になるように更新データを分配する。その結果、データ処理部331のCPUコアは、更新部分領域3511が記憶する更新データを基に、独立性の高い更新処理を行うことが出来る。これにより、CPUコアは他のCPUコアの処理を待たずに処理を進めることが可能となり、スレッドセーフな状態を極力維持したまま更新演算処理を行うことが可能となる。
ここで、本発明と関連するカラムストア型データベースにおいて行われる更新処理の概要について説明する。図17を参照すると、本発明と関連するカラムストア型データベースでは、まず、更新データを到着した順に並列処理をするように件数で分割する。そして、分割したそれぞれを1スレッドでFAST構造に変換し、更新データでソートされたFAST構造を生成する。その後、それぞれのスレッドで作成したFAST構造をマージして全ての更新データについてのFAST構造への変換を完了させる。このとき、各スレッドの完了を待つ必要が生じる。つまり、このときの処理はスレッドセーフな状態になっていないことになる。そして、更新データのFAST構造と更新前のデータのFAST構造とをマージすることで、該当の列の更新処理が完了する。このマージ処理によって、さらに待ちが発生することになる。
このように、本発明と関連するカラムストア型データベースにおいては、複数回の他のスレッドの処理完了待ちが発生しており、トータルでは複数のCPUコアを十分に活用できていないことが分かる。一方で、本願発明は、上記のような構成により、複数のCPUコアをより活用することが可能となっている。
なお、本発明は、大量のデータベースからデータマートを作成する場合や、データウェアハウスなどの分野に利用するカラムストア型データベースに対して、特に夜間バッチによる大量のデータの入れ替えなどの更新処理を一括に行う場合に、特に有効である。もちろん、本発明の実施は上記場合に限定されない。本発明は、一般的なカラムストア型データベース全般に適応することが出来る。
また、本実施形態においては、カラムストア型データベース管理システム3は、データベースクライアント2からの指示に応じて更新モードの開始と終了を行うとした。しかしながら、本発明の実施は上記場合に限定されない。カラムストア型データベース管理システム3は、例えば、図示しない時計部を参照することにより、予め定められた開始時間に更新モードを開始し、同様に予め定められた終了時間に更新モードを終了するように構成しても構わない。
また、本実施形態においては、データ分配部333が、分布状況推測部332が推測した分布状況に基づいて更新データの分配を行うとした。しかしながら、本発明の実施は、上記場合に限定されない。データ分配部333は、例えば、予め定められていた分配ルールに基づいて更新データの分配を行うように構成しても構わない。また、データ分配部333は、例えば、最初に取得した更新データのデータ分布に基づいて最初の更新データの分配を行い、更新データを取得する毎に分配ルールを修正するように構成しても構わない。このように、データ分配部333は、上記説明したルール以外のルールに基づいてデータの分配処理を行っても構わない。
[第2の実施形態]
次に本発明の第2の実施形態について図面を参照して説明する。第2の実施形態では、データ分配部が予め定められた分配ルールに基づいて更新データの分配処理を行う場合について説明する。
図18を参照すると、本実施形態におけるデータベースシステム4は、データベースクライアント2と、カラムストア型データベース管理システム5と、を有している。また、カラムストア型データベース管理システム5は、クエリ解析部31と、実行計画部32と、クエリ実行部33と、スキーマ管理データ保存領域51と、ユーザデータ保存領域35と、を有している。また、スキーマ管理データ保存領域51は、表定義領域341と、テーブルデータ統計情報領域342と、更新データ分布範囲定義領域511と、を有している。さらに、ユーザデータ保存領域35は、複数の更新部分領域3511を有する一次領域351と、テーブルデータ保存領域352と、を有している。なお、第1の実施形態と同様の構成については、同じ符号を付すものとする。
このように、本実施形態におけるデータベースシステム4は、カラムストア型データベース管理システム5が更新データ分布範囲定義領域511を有している点が、第1の実施形態と異なっている。また、カラムストア型データベース管理システム5は、上記更新データ分布範囲定義領域511以外は、第1の実施形態と同様の構成をしている。つまり、クエリ実行部33は、データ処理部331と、分布状況推測部332と、データ分配部333と、更新処理管理部334と、の機能も有している。そこで、以下においては、本実施形態の構成である更新データ分布範囲定義領域511について説明する。
更新データ分布範囲定義領域511は、特定の列に対するスレッドを分割するレンジ範囲を記憶している。つまり、更新データ分布範囲定義領域511は、特定の列に対する分配ルールを記憶している。データ分配部333は、特定の列の更新データを分配する場合、更新データ分布範囲定義領域511が記憶する分配ルールに基づいて更新データを分配することになる。
例えば、図4で示した表の場合、商品テーブルの発売終了日列の値は、ほとんどNULL値になっている。つまり、図4で示す商品テーブルの発売終了日列は、まだほとんどの商品が販売されていることを意味している。このような状態の場合、今後記入されることが想定される値は、現在よりも未来の日時になることが多いと考えられる。一方で、分布状況推測部332は、現在の「NULL」、「2013−2−15」、「2013−6−15」、「2013−8−20」から、更新データの分布状況を推測することになる。そのため、分布状況推測部332が推測する更新データの分布状況と実際の更新データの分布状況とが大きくずれる可能性が非常に高い。つまり、このような場合には、全ての更新データが1つのスレッドに集中し、かえって更新性能が劣化することが考えられる。
そこで、このような特性の列については、例えば、「更新実施日から1か月後まで」、「1か月後から2か月後まで」、「2か月後から半年後まで」、「それ以降」という4つに分配するように更新データ分布範囲定義領域511に予め定義しておく。このように、既存のデータベースの格納状況とは大きく異なるデータの更新が行われると想定される列に対しては、更新データ分布範囲定義領域511を用いることで、処理の並列化による効果を大きく得ることが可能になる。
このように、本実施形態におけるデータベースシステム4のカラムストア型データベース管理システム5は、更新データ分布範囲定義領域511を備えている。このような構成により、既存のデータベースの格納状況とは大きく異なるデータの更新が行われると想定される場合に、更新データ分布範囲定義領域511が記憶する分配ルールに基づいてデータ分配部333が更新データの分配を行うことが出来るようになる。その結果、各スレッドでの更新処理を均一化することが可能となり、処理の並列化による効果を大きく得ることが可能になる。
[第3の実施形態]
次に本発明の第3の実施形態について図面を参照して説明する。なお、第3の実施形態では、複数のデータ処理部で並列して処理を行うデータベース装置6の構成の概要について説明する。
図19を参照すると、本実施形態におけるデータベース装置6は、データ処理部61と、データ分配部62と、データ記憶部63と、を有している。
データ処理部61は、表形式のデータを列形式に分割して並び替える処理を行う機能を有している。後述するように、データ処理部61は、データ分配部62から表形式のデータを取得する。そして、データ処理部61は、表形式のデータの各レコードに含まれる前記要素の値に従って並び替える処理を行う。なお、本実施形態におけるデータベース装置6は、上記データ処理部61を複数有している。
データ分配部62は、取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部61の何れかに分配する機能を有している。データ分配部62は、例えば外部装置や外部のネットワークから、表形式のデータを取得する。そして、データ分配部62は、取得した表形式のデータを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部61の何れかに分配する。
データ記憶部63は、メモリやハードディスクなどの記憶装置である。データ記憶部63は、複数のデータ処理部61のそれぞれから列形式に分割して上記処理をしたデータを取得する。そして、データ処理部61は、複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶する。
このように、本実施形態におけるデータベース装置6は、データ処理部61と、データ分配部62と、データ記憶部63と、を有している。このような構成により、データ分配部62が、表形式のデータの各レコードを当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部61の何れかに分配する。そして、複数のデータ処理部61で並列処理を行った上で、その結果がデータ記憶部63で結合されることになる。このように、複数のデータ処理部61のそれぞれは、表形式のデータの各レコードに含まれる要素の値に応じて分配されたデータを用いて処理を行うことが出来る。つまり、各データ処理部61には、表形式のデータの各レコードに含まれる要素の値に応じたデータが分配されるため、各データ処理部61は、それぞれで独立性の高い処理を行うことが可能となる。これにより、データ処理部61は他のデータ処理部61の処理を待たずに処理を進めることが可能となり、スレッドセーフな状態を極力維持したままデータの処理を行うことが可能となる。
なお、上述したデータベース装置6は、情報記憶装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、情報記憶装置に、表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部の何れかに分配するデータ分配部と、複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を実現させ、複数のデータ処理部は、表形式のデータの各レコードに含まれる要素の値に従って、並び替える処理を行う、プログラムである。
また、上述したデータベース装置6が作動することにより実行される情報処理方法は、取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部の何れかに分配し、複数のデータ処理部のそれぞれは、表形式のデータを列形式に分割して並び替える処理を行い、当該複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶する、というものである。
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記データベース装置6と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
[第4の実施形態]
次に本発明の第4の実施形態について図面を参照して説明する。なお、第4の実施形態では、複数のデータ処理部で並列して処理を行うデータベース装置9とクライアント装置8を備えるデータベースシステム7の構成の概要について説明する。
図20を参照すると、本実施形態におけるデータベースシステム7は、クライアント装置8と、データベース装置9と、を有している。また、図20で示すように、クライアント装置8とデータベース装置9とは有線で接続されており、互いに通信可能なよう構成されている。
クライアント装置8は、データベース装置9に対して表形式のデータを送信する機能を有している。
データベース装置9は、データ処理部91と、データ分配部92と、データ記憶部93と、を有している。
データ処理部91は、表形式のデータを列形式に分割して並び替える処理を行う機能を有している。後述するように、データ処理部91は、データ分配部92から表形式のデータを取得する。そして、データ処理部91は、表形式のデータの各レコードに含まれる前記要素の値に従って並び替える処理を行う。なお、本実施形態におけるデータベース装置9は、上記データ処理部91を複数有している。
データ分配部92は、クライアント装置8から取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部61の何れかに分配する機能を有している。データ分配部92は、クライアント装置8から表形式のデータを取得する。そして、データ分配部92は、取得した表形式のデータを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部91の何れかに分配する。
データ記憶部93は、メモリやハードディスクなどの記憶装置である。データ記憶部93は、複数のデータ処理部91のそれぞれから列形式に分割して上記処理をしたデータを取得する。そして、データ処理部91は、複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶する。
このように、本実施形態におけるデータベースシステム7は、クライアント装置8とデータベース装置9とを有している。また、データベース装置9は、データ処理部91と、データ分配部92と、データ記憶部93と、を有している。このような構成により、データ分配部92が、クライアント装置8から取得した表形式のデータの各レコードを当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部91の何れかに分配する。そして、複数のデータ処理部91で並列処理を行った上で、その結果がデータ記憶部93で結合されることになる。このように、複数のデータ処理部91のそれぞれは、表形式のデータの各レコードに含まれる要素の値に応じて分配されたデータを用いて処理を行うことが出来る。つまり、各データ処理部91には、表形式のデータの各レコードに含まれる要素の値に応じたデータが分配されるため、各データ処理部91は、それぞれで独立性の高い処理を行うことが可能となる。これにより、データ処理部91は他のデータ処理部91の処理を待たずに処理を進めることが可能となり、スレッドセーフな状態を極力維持したままデータの処理を行うことが可能となる。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるデータベース装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を備え、
前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行う、
データベース装置。
(付記2)
付記1に記載のデータベース装置であって、
前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
データベース装置。
(付記3)
付記2に記載のデータベース装置であって、
前記データ分配部は、前記データ記憶部が記憶するデータの分布状況に基づいて前記表形式のデータの各レコードに含まれる要素の値の分布状況を推測し、当該推測した前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
データベース装置。
(付記4)
付記2又は3に記載のデータベース装置であって、
前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況を取得して当該取得した値の分布状況に基づいて前記複数のデータ処理部のそれぞれに分配されるデータのサイズが均等になる分配閾値を算出し、当該算出した分配閾値に基づいて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
データベース装置。
(付記5)
付記2乃至4の何れかに記載のデータベース装置であって、
前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、近似する要素の値を含むレコードが同一のデータ処理部に配分されるよう前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
データベース装置。
(付記6)
付記1乃至5の何れかに記載のデータベース装置であって、
前記複数のデータ処理部のそれぞれは、前記データ記憶部に予め記憶されている元データの各レコードと、取得した前記表形式のデータの各レコードとを併せて前記並び替える更新処理を行い、
前記データ記憶部は、前記複数のデータ処理部のそれぞれで処理された前記更新処理の結果を結合して記憶する、
データベース装置。
(付記7)
付記1乃至6の何れかに記載のデータベース装置であって、
前記複数のデータ処理部のそれぞれに対応した、表形式のデータを一時的に記憶する複数のデータ一時記憶部を備え、
前記データ分配部は、前記表形式のデータの各レコードを、当該表形式のデータの各レコードを取得するごとに前記複数のデータ一時記憶部の何れかに分配し、
前記複数のデータ処理部は、同一のタイミングで前記データ一時記憶部が記憶するデータに対して前記処理を開始する、
データベース装置。
(付記8)
情報記憶装置に、
表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を実現させ、
前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行う、
プログラム。
(付記9)
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部の何れかに分配し、
前記複数のデータ処理部のそれぞれは、表形式のデータを列形式に分割して並び替える処理を行い、当該複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶する、
情報処理方法。
(付記10)
表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を備え、
前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行うデータベース装置と、
前記データベース装置に対して前記表形式のデータを送信するクライアント装置と、
を備える、データベースシステム。
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
1、4 データベースシステム
2 データベースクライアント
3、5 カラムストア型データベース管理システム
31 クエリ解析部
32 実行計画部
33 クエリ実行部
331 データ処理部
332 分布状況推測部
333 データ分配部
334 更新処理管理部
34、51 スキーマ管理データ保存領域
341 表定義領域
342 テーブルデータ統計情報領域
35 ユーザデータ保存領域
351 一次領域
3511 更新部分領域
352 テーブルデータ保存領域
511 更新データ分布範囲定義領域
6、9 データベース装置
61、91 データ処理部
62、92 データ分配部
63、93 データ記憶部
7 データベースシステム
8 クライアント装置

Claims (8)

  1. 表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
    取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
    前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を備え、
    前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行い、
    前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配し、
    前記データ分配部は、前記データ記憶部が記憶するデータの分布状況に基づいて前記表形式のデータの各レコードに含まれる要素の値の分布状況を推測し、当該推測した前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
    データベース装置。
  2. 請求項に記載のデータベース装置であって、
    前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況を取得して当該取得した値の分布状況に基づいて前記複数のデータ処理部のそれぞれに分配されるデータのサイズが均等になる分配閾値を算出し、当該算出した分配閾値に基づいて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
    データベース装置。
  3. 請求項1又は2に記載のデータベース装置であって、
    前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、近似する要素の値を含むレコードが同一のデータ処理部に配分されるよう前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
    データベース装置。
  4. 請求項1乃至の何れかに記載のデータベース装置であって、
    前記複数のデータ処理部のそれぞれは、前記データ記憶部に予め記憶されている元データの各レコードと、取得した前記表形式のデータの各レコードとを併せて前記並び替える更新処理を行い、
    前記データ記憶部は、前記複数のデータ処理部のそれぞれで処理された前記更新処理の結果を結合して記憶する、
    データベース装置。
  5. 請求項1乃至の何れかに記載のデータベース装置であって、
    前記複数のデータ処理部のそれぞれに対応した、表形式のデータを一時的に記憶する複数のデータ一時記憶部を備え、
    前記データ分配部は、前記表形式のデータの各レコードを、当該表形式のデータの各レコードを取得するごとに前記複数のデータ一時記憶部の何れかに分配し、
    前記複数のデータ処理部は、同一のタイミングで前記データ一時記憶部が記憶するデータに対して前記処理を開始する、
    データベース装置。
  6. 情報記憶装置に、
    表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
    取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
    前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を実現させ、
    前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行い
    前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配し、
    前記データ分配部は、前記データ記憶部が記憶するデータの分布状況に基づいて前記表形式のデータの各レコードに含まれる要素の値の分布状況を推測し、当該推測した前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
    プログラム。
  7. 取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて複数のデータ処理部の何れかに分配し、
    前記複数のデータ処理部のそれぞれは、表形式のデータを列形式に分割して並び替える処理を行い、当該複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶し、
    前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配し、
    記憶するデータの分布状況に基づいて前記表形式のデータの各レコードに含まれる要素の値の分布状況を推測し、当該推測した前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
    情報処理方法。
  8. 表形式のデータを列形式に分割して並び替える処理を行う複数のデータ処理部と、
    取得した表形式のデータの各レコードを、当該表形式のデータの各レコードに含まれる要素の値に応じて前記複数のデータ処理部の何れかに分配するデータ分配部と、
    前記複数のデータ処理部のそれぞれで処理された処理結果を結合して記憶するデータ記憶部と、を備え、
    前記複数のデータ処理部は、前記表形式のデータの各レコードに含まれる前記要素の値に従って、前記並び替える処理を行うデータベース装置と、
    前記データベース装置に対して前記表形式のデータを送信するクライアント装置と、
    を備え
    前記データ分配部は、前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配し、
    前記データ分配部は、前記データ記憶部が記憶するデータの分布状況に基づいて前記表形式のデータの各レコードに含まれる要素の値の分布状況を推測し、当該推測した前記表形式のデータの各レコードに含まれる要素の値の分布状況に応じて、前記表形式のデータの各レコードを前記複数のデータ処理部の何れかに分配する、
    データベースシステム。

JP2014063526A 2014-03-26 2014-03-26 データベース装置 Expired - Fee Related JP6287441B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014063526A JP6287441B2 (ja) 2014-03-26 2014-03-26 データベース装置
US14/666,487 US20150278310A1 (en) 2014-03-26 2015-03-24 Database device
CN201510133285.0A CN105045791A (zh) 2014-03-26 2015-03-25 数据库设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014063526A JP6287441B2 (ja) 2014-03-26 2014-03-26 データベース装置

Publications (2)

Publication Number Publication Date
JP2015185104A JP2015185104A (ja) 2015-10-22
JP6287441B2 true JP6287441B2 (ja) 2018-03-07

Family

ID=54190690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014063526A Expired - Fee Related JP6287441B2 (ja) 2014-03-26 2014-03-26 データベース装置

Country Status (3)

Country Link
US (1) US20150278310A1 (ja)
JP (1) JP6287441B2 (ja)
CN (1) CN105045791A (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708620A (zh) * 2015-11-13 2017-05-24 苏宁云商集团股份有限公司 一种处理数据的方法及系统
CN106874272B (zh) * 2015-12-10 2020-02-14 华为技术有限公司 一种分布式连接方法及系统
CN106933836B (zh) * 2015-12-29 2021-07-06 航天信息股份有限公司 一种基于分表的数据存储方法和系统
WO2017179140A1 (ja) * 2016-04-13 2017-10-19 株式会社日立製作所 計算機及びデータベース管理方法
JP6828334B2 (ja) * 2016-09-13 2021-02-10 日本電気株式会社 データベース管理装置、データベース管理システム、データベース管理方法、および、データベース管理プログラム
JP6891533B2 (ja) * 2017-02-23 2021-06-18 日本電気株式会社 データベース装置
JP6480495B2 (ja) * 2017-03-16 2019-03-13 ヤフー株式会社 データ管理装置、データ管理方法、およびプログラム
JP6897248B2 (ja) 2017-04-06 2021-06-30 富士通株式会社 更新反映プログラム、更新反映方法及び更新反映装置
CN109284177B (zh) * 2017-07-20 2021-03-30 北京京东尚科信息技术有限公司 一种数据更新方法和装置
JP7024432B2 (ja) * 2018-01-18 2022-02-24 富士通株式会社 データベース管理システム、データ変換プログラム、データ変換方法及びデータ変換装置
US11100119B2 (en) * 2018-05-04 2021-08-24 Sap Se Determining data structures for spatial data based on spatial data statistics
CN109739903B (zh) * 2018-12-30 2020-12-18 广州华多网络科技有限公司 一种排行榜数据的生成方法及相关装置
CN111259062B (zh) * 2020-01-15 2023-08-01 山东省电子口岸有限公司 一种能够保证分布式数据库全表查询语句结果集顺序的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1144144C (zh) * 1999-10-26 2004-03-31 无敌科技(西安)有限公司 快速文字查找方法
MY127113A (en) * 2000-11-17 2006-11-30 Intel Corp Customizing tabular data for wireless handset units
US7516114B2 (en) * 2004-10-22 2009-04-07 International Business Machines Corporation Visual structuring of multivariable data
US8108361B2 (en) * 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage
JP5499825B2 (ja) * 2010-03-29 2014-05-21 日本電気株式会社 データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造
KR101785959B1 (ko) * 2010-04-05 2017-10-17 구글 인코포레이티드 레코드들의 컬럼형 스토리지 표현
US9449022B2 (en) * 2011-02-04 2016-09-20 Fannie Mae Ranking and displaying appraiser-chosen comparables against model-chosen comparables
CN102521303B (zh) * 2011-11-30 2016-08-10 北京人大金仓信息技术股份有限公司 一种用于列数据库的单表多列序存储方法
JP5999351B2 (ja) * 2012-03-26 2016-09-28 日本電気株式会社 データベース処理装置、方法、プログラム及びデータ構造
US9465844B2 (en) * 2012-04-30 2016-10-11 Sap Se Unified table query processing
US9165010B2 (en) * 2012-04-30 2015-10-20 Sap Se Logless atomic data movement

Also Published As

Publication number Publication date
CN105045791A (zh) 2015-11-11
US20150278310A1 (en) 2015-10-01
JP2015185104A (ja) 2015-10-22

Similar Documents

Publication Publication Date Title
JP6287441B2 (ja) データベース装置
CN104123374B (zh) 分布式数据库中聚合查询的方法及装置
CN103370691B (zh) 管理缓冲器溢出状况
US9411867B2 (en) Method and apparatus for processing database data in distributed database system
EP1736876A1 (en) Parallel generation of bundles of data objects
JP6361223B2 (ja) トランザクションシステム
WO2012026140A1 (ja) データベース処理方法、データベース処理システム及びデータベースサーバ
EP3477508A1 (en) Data stream processing method and system for processing transactions in a data stream
CN107818114A (zh) 一种数据处理方法、装置及数据库
US20190258618A1 (en) Immediately-consistent lock-free indexing for distributed applications
CN115422205A (zh) 数据处理方法、装置、电子设备及存储介质
JP6069503B2 (ja) 系列データ並列分析基盤およびその並列分散処理方法
JP6376947B2 (ja) 仮想データベースシステム管理装置、管理方法及び管理プログラム
WO2018021437A1 (ja) 運用管理装置及び運用管理方法、並びに運用管理システム
JP5907251B2 (ja) データベース管理方法、プログラム、および情報処理装置
US20170132295A1 (en) Top-k projection
US11061720B2 (en) Processing system and method of detecting congestion in processing system
JP6523823B2 (ja) 仮想データベースシステム管理装置、管理方法及び管理プログラム
JP2018180688A (ja) 更新処理プログラム、装置、及び方法
US20170185649A1 (en) Aggregate Projection
CN107924399A (zh) 处理对主机而言数据传输量不明的检索请求的检索处理系统和方法
CN105630635A (zh) 数据容灾系统和方法
JP4951326B2 (ja) I/o要求の処理順序を最適化するためのコンピュータプログラム
US8751205B2 (en) Generating discrete event simulation data
JP2016177347A (ja) データベースシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180122

R150 Certificate of patent or registration of utility model

Ref document number: 6287441

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees