JP2016539417A - 列指向データベース処理方法および処理デバイス - Google Patents

列指向データベース処理方法および処理デバイス Download PDF

Info

Publication number
JP2016539417A
JP2016539417A JP2016529436A JP2016529436A JP2016539417A JP 2016539417 A JP2016539417 A JP 2016539417A JP 2016529436 A JP2016529436 A JP 2016529436A JP 2016529436 A JP2016529436 A JP 2016529436A JP 2016539417 A JP2016539417 A JP 2016539417A
Authority
JP
Japan
Prior art keywords
marker
column
query
row
bitmap
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016529436A
Other languages
English (en)
Other versions
JP6244592B2 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016539417A publication Critical patent/JP2016539417A/ja
Application granted granted Critical
Publication of JP6244592B2 publication Critical patent/JP6244592B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Landscapes

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

Abstract

本発明の実施例は列指向データベース処理方法を提供し、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、この方法は、アプリケーションプログラムによって送信される問い合わせ要求を受信するステップであって、問い合わせ要求は問い合わせ条件を含む、ステップと、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップと、問い合わせ結果をアプリケーションプログラムに送信するステップと、を含む。このようにして、列指向の形態で列指向データベース内にデータが記憶され、これは問い合わせの効率を著しく向上させる。

Description

本発明の実施例は、データベース技術、詳細には、列指向データベース処理方法および処理デバイスに関する。
列指向データベースは、列関連記憶アーキテクチャを使用することによってデータを記憶するデータベースである。各列内のデータは直列化され、独立に記憶され、行内のデータは異なる列にわたって広がり、異なるデータ領域内に別個に記憶される。
列指向データベースは2つの記憶領域、行領域および列領域を有する。元のデータは列領域内に記憶され、データ操作言語(Data Manipulation Language、DML)トランザクション操作によって生成された新しいデータは行領域内に記憶される。データは列によって体系化されるが、データの行は一貫したフォーマットであることが実際に要求される。従って、データの変更が行われるとき、異なる列への変更が関与し、このプロセスにおいて、トランザクションのACID属性が行領域内で保証されることが依然として必要である。
例えば、列指向データベースは更新操作要求を受信し、ここでSQL文は次の通り、UPDATE TABLE1 SET F2=10 WHERE F3<20であり、列指向データベースは次の操作を実行する。
1.TABLE1を走査し、更新条件F3 < 20を満たすエントリの行番号を記録する。
2.その行番号に排他的ロックを付加し、それによって、その行番号に対応するエントリは他のsessionによって変更されることが可能でない。
3.その行番号に対応するエントリの全てのフィールドを読み取り、F2の値を10に変え、そして全てのフィールドを一緒にして行エントリを形成する。
4.行領域内の行エントリを記憶し、現在のデータ更新が完了した後に、行番号の排他的ロックを解放する。
列指向データベースにおいて、いくつかのデータが行領域内に記憶される。従って、問い合わせ要求を受信したとき、列指向データベースはsession内の全てのエントリを検索して、問い合わせされた1つまたは複数のエントリがサブミットされたかどうか判定しなければならず、例えば、問い合わせ要求SELECT F2 FROM TABLE1 WHERE F3 < 20を処理するステップは次の通りである。
1.TABLE1の列領域を走査し、問い合わせ条件F3 < 20を満たすエントリの行番号を記録する。
2.上記の記録された行番号が変更されたかどうかを判定し、記録された行番号が変更されていないならば、ステップ3へ進んで列領域内のF2の値を読み取り、記録された行番号が変更されたならば、ステップ3を実行することに加えて、ステップ4へ進んで行領域内の変更後の新しいエントリを読み取る必要がある。
3.行領域において、エントリの最新のバージョンがsessionにおいて変更されたバージョンであるかどうかを判定し、変更されたバージョンであるならば最新のバージョンを返信し、変更されたバージョンでないならば前にサブミットされたバージョンを返信する。
4.列領域を走査することが完了した後に、新しく追加されたデータについて行領域を走査し、いずれかの新しく追加されたデータが問い合わせ条件F3 < 20を満たすかどうかを判定し、問い合わせ条件F3 < 20を満たす新しく追加されたデータがあるならば、F2の値を出力する。
上記の解説から理解できるように、先行技術において、列指向データベースについてのトランザクション処理において行領域および列領域の両方が関与しなければならない。列指向データベースにおいてデータが問い合わせされるとき、列領域と一緒に、行領域が列指向データベースに必須であるので、行ごとに行領域内のデータを走査することが要求される。結果として、列指向データベースにおける問い合わせの効率は減少され、特にデータベースの容量が大きいとき、減少は目立って著しい。
本発明の実施例は列指向データベース処理方法および処理デバイスを提供し、それによって、列指向データベースのトランザクション処理において行領域が関与しなければならないという先行技術における技術的課題を解決する。
第1の態様によれば、本発明は、
アプリケーションプログラムによって送信される問い合わせ要求を受信するように構成されるインタフェースモジュールを含む処理デバイスを提供し、ここで、問い合わせ要求は列指向データベースについての問い合わせ条件を含み、インタフェースモジュールは、問い合わせ要求を問い合わせモジュールに送信するように構成され、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、
処理デバイスは、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得し、問い合わせ結果をインタフェースモジュールに送信するように構成される問い合わせモジュールを含み、
インタフェースモジュールは、問い合わせモジュールによって送信される問い合わせ結果を受信し、問い合わせ結果をアプリケーションプログラムに送信するようにさらに構成される。
第1の態様の第1の可能な実装において、問い合わせモジュールは、第1の生成ユニット、第2の生成ユニット、および獲得ユニットを含み、ここで、第1の生成ユニットは、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するように構成され、ここで、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられ、第2の生成ユニットは、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するように構成され、ここで、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、獲得ユニットは、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
第1の態様の第1の可能な実装を参照して、第2の可能な実装において、問い合わせモジュールは判定ユニットをさらに含み、ここで、判定ユニットは、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在すると判定するように構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、判定ユニットは、一時記憶領域内にマーカー列を記憶し、記憶されたマーカー列を問い合わせ要求のプライベート・マーカー列として使用し、トランザクションがサブミットされるときマーカー列に行われるべき変更に従ってプライベート・マーカー列を更新するように構成され、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、第2の生成ユニットは、具体的には、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するように構成され、ここで、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、獲得ユニットは、具体的には、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
第1の態様の第1の可能な実装を参照して、第3の可能な実装において、判定ユニットは、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在しないと判定するようにさらに構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、判定ユニットは、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立し、または記憶された共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立するようにさらに構成され、第2の生成ユニットは、具体的には、一時記憶領域において、他のまたは記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応に従って、問い合わせ要求に対応する共有されたマーカー列を判定し、条件付きビットマップおよび問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するように構成され、ここで、問い合わせ要求に対応する共有されたマーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、獲得ユニットは、具体的には、問い合わせビットマップに従って、問い合わせ条件および問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
第2の態様によれば、本発明は、インタフェースモジュール、変更モジュール、記録モジュール、およびサブミットモジュールを含む、他の処理デバイスをさらに提供し、ここで、インタフェースモジュールは、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するように構成され、ここで、変更要求は列指向データベースについての変更条件を含み、インタフェースモジュールは、変更要求を変更モジュールに送信するように構成され、ここで、データ列は列記憶の形態で特定のデータを記憶するために使用され、列指向データベースはマーカー列および1つより多くのデータ列を含み、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、変更モジュールは、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用するように構成され、記録モジュールは、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するように構成され、サブミットモジュールは、トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行うように構成され、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す。
第3の態様によれば、本発明は、列指向データベース処理方法を提供し、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、この方法は、アプリケーションプログラムによって送信される問い合わせ要求を受信するステップであって、問い合わせ要求は問い合わせ条件を含む、ステップと、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップと、問い合わせ結果をアプリケーションプログラムに送信するステップと、を含む。
第3の態様の第1の可能な実装において、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップは、具体的には、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するステップであって、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられる、ステップと、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップと、を含む。
第3の態様の第1の可能な実装を参照して、第2の可能な実装において、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査する前に、この方法は、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在すると判定することをさらに含み、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、この方法は、一時記憶領域内にマーカー列を記憶し、記憶されたマーカー列を問い合わせ要求のプライベート・マーカー列として使用し、トランザクションがサブミットされるときマーカー列に行われるべき変更に従ってプライベート・マーカー列を更新することをさらに含み、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである。
第3の態様の第1の可能な実装を参照して、第3の可能な実装において、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査する前に、この方法は、トランザクションのサブミットのときマーカー列に行われるべき変更が存在しないと判定することをさらに含み、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、この方法は、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を設定し、または記憶された共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を設定することをさらに含み、
マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、一時記憶領域において、他のまたは記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応に従って、問い合わせ要求に対応する共有されたマーカー列を判定し、条件付きビットマップおよび問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するステップであって、問い合わせ要求に対応する共有されたマーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件および問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである。
第4の態様によれば、本発明は、列指向データベース処理方法を提供し、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、この方法は、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するステップであって、変更要求は変更条件を含む、ステップと、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するステップと、トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行い、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す、ステップと、を含む。.
第5の態様によれば、本発明は、トランシーバおよびプロセッサを含む処理デバイスをさらに提供し、ここで、トランシーバは、アプリケーションプログラムによって送信される問い合わせ要求を受信するように構成され、ここで、問い合わせ要求は問い合わせ条件を含み、トランシーバは、問い合わせ要求をプロセッサに送信し、プロセッサによって送信される問い合わせ結果を受信するように構成され、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、プロセッサは、トランシーバによって送信される問い合わせ要求を受信し、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得し、問い合わせ結果をトランシーバに送信するように構成される。
第5の態様の第1の可能な実装において、プロセッサが、具体的には、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成されることは、具体的には、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成することであって、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられる、前記データ列を走査し、条件付きビットマップを生成することと、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成することであって、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、前記問い合わせビットマップを生成することと、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得することと、を含む。
第5の態様の第1の可能な実装を参照して、第2の可能な実装において、プロセッサは、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査する前に、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在すると判定するようにさらに構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、プロセッサは、一時記憶領域内にマーカー列を記憶し、記憶されたマーカー列を問い合わせ要求のプライベート・マーカー列として使用し、トランザクションがサブミットされるときマーカー列に行われるべき変更に従ってプライベート・マーカー列を更新するようにさらに構成され、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、プロセッサは、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するようにさらに構成され、ここで、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、プロセッサは、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するようにさらに構成される。
第5の態様の第1の可能な実装を参照して、第3の可能な実装において、プロセッサは、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査する前に、トランザクションのサブミットのときマーカー列に行われるべき変更が存在しないと判定するようにさらに構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、プロセッサは、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立し、または記憶された共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立するようにさらに構成され、プロセッサは、一時記憶領域において、他のまたは記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応に従って、問い合わせ要求に対応する共有されたマーカー列を判定し、条件付きビットマップおよび問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するようにさらに構成され、ここで、問い合わせ要求に対応する共有されたマーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、プロセッサは、問い合わせビットマップに従って、問い合わせ条件および問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するようにさらに構成される。
第6の態様によれば、本発明は、トランシーバおよびプロセッサを含む処理デバイスを提供し、ここで、トランシーバは、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するように構成され、ここで、変更要求は変更条件を含み、トランシーバは、変更要求をプロセッサに送信し、プロセッサによって送信される変更結果を受信するように構成され、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、プロセッサは、トランシーバによって送信される変更要求を受信し、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録し、トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行うように構成され、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す。
本発明の実施例において、データ列内の各行の数値の有効性を示すために特別に使用されるマーカー列が列指向データベース内に追加され、このようにして、マーカー列を使用することによって、全てのデータが列領域内に記憶され、データ変更のときにデータを記憶するために特別な行領域が要求されないことを実現することができる。その結果、データ問い合わせが行われるとき、データ問い合わせは、列領域内で完全に行われることが可能であり、行領域内の問い合わせについての必要性を除去し、データ問い合わせの効率を向上させる。向上はビックデータのシナリオにおいて目立って著しい。
本発明の実施例における技術的解決策をより明確に記載するために、下記は、実施例を記載するために要求される添付図面を簡単に紹介する。明らかに、下記の記載における添付図面は本発明のほんのいくつかの実施例を表わす。
本発明の実施例によるネットワーク環境の概要図である。 本発明の実施例による他のネットワーク環境の概要図である。 本発明の実施例による処理デバイスの概要ブロック図である。 本発明の実施例による他の処理デバイスの概要ブロック図である。 本発明の実施例による他の処理デバイスの概要ブロック図である。 本発明の実施例による他の処理デバイスの概要構成ブロック図である。 本発明の実施例によるさらに他の処理デバイスの概要構成ブロック図である。 本発明の実施例による列指向データベース処理方法のフローチャートである。 本発明の実施例による他の列指向データベース処理方法のフローチャートである。 本発明の実施例による列指向データベース内のデータを問い合わせする方法のフローチャートである。 本発明の実施例による条件付きビットマップおよびマーカー列に行われるAND演算の概要図である。 本発明の実施例による列指向データベースにデータを挿入する方法のフローチャートである。 本発明の実施例による列指向データベース内のデータを更新する方法のフローチャートである。 本発明の実施例による列指向データベースからデータを削除する方法のフローチャートである。
本発明の実施例の目的、技術的解決策、および利点をより明確にするために、下記は、本発明の実施例における添付図面を参照して本発明の実施例における技術的解決策を明確かつ完全に記載する。明らかに、記載された実施例は本発明の実施例の全てではなく一部である。創作的な努力なしで本発明の実施例に基づいてこの技術分野の当業者によって得られる他の全ての実施例は、本発明の保護範囲内にあるものである。
まず、実施例の記載は、本発明の実施例において提案される列指向記憶アーキテクチャの紹介で始まる。列指向データベースにおいて、データおよびテーブルヘッダが別個に記憶される。テーブルヘッダは各列の属性および現在のエントリ・カウントを含む。属性は、列の名前、列内の数値のフィールドタイプ、列の開始アドレス、等を含むことが可能であり、例えば、表1はテーブルヘッダであり、テーブルヘッダは、列の名前、フィールド属性、または列の開始アドレスであることが可能であり、ここで列の名前は、例えば、行番号、マーク、F2、またはF3であることが可能であり、各列内の数値のフィールド属性は、整数型、文字型、長整数型、等であり、列の開始アドレスは、問い合わせ、更新、削除、または他の操作の間にデータ走査が開始するエントリを位置指定するために使用され、走査されたエントリの数が現在のエントリ・カウントに到達するまでデータの走査および読み取りが続く。加えて、マーカー列内に現在のマーカー列のバージョン番号が記録される。マーカー列が更新されるごとに、マーカー列のバージョン番号が更新される。一般に、マーカー列のバージョン番号は、累進的に増加する番号であることが可能であり、または文字に累進的に増加する番号を付加したものであることが可能であり、例えば、現在のマーカー列の現在のバージョン番号はv1であり、マーカー列が更新された後に、マーカー列のバージョン番号はv2に更新される。現在のエントリ・カウントは、値のいくつの行が現在のテーブル内にあるかを示し、例えば、表1に表されているように、データの4個の行があり、この場合、現在のエントリ・カウントは4である。
Figure 2016539417
表2に表わされているように、それは本発明の実施例において提供される列記憶テーブルの概要図である。列指向データベースは3つのタイプの列、すなわち、行番号列、マーカー列、およびデータ列を含み得る。行番号列内の各行の値はデータの行をユニークに識別する。データの行がトランザクションにおいて変更されるとき、その行の行番号にロックが付加される。列指向データベース内にロック付加領域があることが可能であり、ロックが付加される行がロック付加領域内に記録される。トランザクションが列指向データベース内のデータの行を変更する必要があるとき、トランザクションは、ロック付加領域において、行にロックが付加されているかどうかを問い合わせする必要があり、データの行にロックが付加されているならば、トランザクションはデータの行を変更することができず、それにより、異なるトランザクションによって行が同時に変更されることを防止する。このアプローチはデータの衝突を防止することにおいて有用であることを証明する。変更トランザクションがサブミットされることに成功したとき、ロックはロック付加領域において解放され得る。マーカー列内の各行の値は、データの各行が有効であるかどうかを示し、例えば、マーカー列内の各行の値は0または1であることが可能であり、ここで、例えば、行内のデータは変更されている、または削除されているので、0は行内のデータが現在無効であることを示すことが可能であり、1は行内のデータが現在有効であることを示すことが可能であり、すなわち、行内のデータは現在変更されていない。表1内の2番目の列は表2内の2番目の列の属性を示し、ここで属性はマークであり、これはマーカー列が表2内の2番目の列であることを意味する。一般に、マーカー列はビットマップ(bitmap)である。データ列は特定のデータを記憶し、データの各列は別個に記憶される。明らかに、表2は2つのみのデータ列F2およびF3を提示する。実際のデータベースにおいて、複数のデータ列が存在し得る。表1内の3番目の列は表2内の3番目の列の属性を示し、ここで属性はF2であり、表1内の4番目の列は表2内の4番目の列の属性を示し、ここで属性フィールドはF3である。加えて、表1内の1番目の列は表2内の1番目の列の属性を示し、ここで属性は行番号である。
Figure 2016539417
列指向記憶内の記憶領域は、次の部分、データ記憶領域、トランザクション記憶領域、および一時記憶領域を含み得る。データ記憶領域は、特定のデータ、例えば、上記の表1および表2の内容を記憶するために使用される。一時記憶領域は、トランザクション処理が進行中であるとき、データを一時的に記憶するために使用される。この記憶領域は、データ記憶領域の内部にあることが可能であり、または別個の記憶領域であることが可能であり、例えば、本発明の実施例において、データを追加、削除、変更、および問い合わせするプロセスの間に生成された中間データは一時記憶領域内に記憶されることが可能であり、例えば、マーカー列のコピー、および問い合わせの間に生成される条件付きビットマップおよび問い合わせビットマップである。トランザクションがサブミットされることに成功した後に、トランザクションに関係する一時的なデータは一時的に記憶されたデータから削除される。トランザクションログがトランザクション記憶領域内に記憶され、ここで、トランザクションログは現在のトランザクションによって行われた操作およびトランザクションがサブミットされるときマーカー列に行われるべき変更を記録する。そして、トランザクションがサブミットされた後に、マーカー列はトランザクションログに従って変更されることが可能である。1つのトランザクションがサブミットされることに成功した後に、トランザクションのログは削除される。
以下トランザクションと呼ばれるデータベーストランザクション(Database Transaction)は、単一の論理的な作業単位で実行される一連の操作を指し、ここで一連の操作は、完全に実行されるか、または全く実行されないかのいずれかである。トランザクション処理は、トランザクションの単位内の全ての操作が実現されることに成功したときのみデータ指向リソースが恒久的に更新されることを保証することができる。一群の関係する操作は、全ての操作が成功または不成功のいずれかで実現される単位に結合され、それによってエラー回復が簡単にされることが可能であり、アプリケーションプログラムはより信頼できるようになる。論理的な作業単位がトランザクションになる必要があるならば、いわゆるACID(原子性、一貫性、独立性、および耐久性)属性が満たされなければならない。1つのトランザクションは複数の操作を含むことが可能であるが、操作は時間順に配置され、トランザクションに含まれる各操作の結果は、トランザクションがサブミットされることに成功した後にのみ効力を生じる。
図1は、本発明の実施例によるネットワーク環境の概要図である。アプリケーションプログラム102は、限定しないが課金アプリケーション、インターネットブラウザ、マルチメディアプレーヤー、等を含む、様々な指定された機能を提供し得るコンピュータプログラムを指す。アプリケーションプログラムは通信ネットワーク103を通して列指向データベース105にアクセスし得る。列指向データベース(column-oriented database)105はインタフェースモジュール104および問い合わせモジュール106を含む。インタフェースモジュール104は、アプリケーションプログラムによって送信される問い合わせ要求を受信し、問い合わせモジュール106に接続し、アクセスするように構成される。問い合わせモジュール106は、データを管理し、インタフェースモジュール104によって転送される問い合わせ要求を実行するように構成される。さらに、列指向データベース105は記憶エンジン108に接続する。記憶エンジン108は、列指向データベース内にデータを記憶し、構造的なデータセットである。インタフェースモジュール104または問い合わせモジュール106は記憶エンジン108を駆動し、記憶エンジンによって返信されるデータを受信し得る。例えば、記憶エンジン108は問い合わせモジュール106に含まれることが可能であり、または問い合わせモジュール106の外部のメモリ内に存在することが可能である。
図2は、本発明による他のネットワーク環境の概要図である。アプリケーションプログラム202は、限定しないが課金アプリケーション、インターネットブラウザ、マルチメディアプレーヤー、等を含む、様々な指定された機能を提供し得るコンピュータプログラムを指す。アプリケーションプログラムは通信ネットワーク203を通して列指向データベース205にアクセスし得る。列指向データベース205は、インタフェースモジュール204、変更モジュール206、記録モジュール207、およびサブミットモジュール208を含む。インタフェースモジュール204は、アプリケーションプログラムによって送信される変更要求を受信し、変更モジュール206に接続し、アクセスするように構成される。変更モジュール206は、データを管理し、インタフェースモジュール204によって転送される変更要求を実行するように構成され、変更プロセスにおいて、記録モジュール207は、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録し、サブミットモジュール208は、トランザクションをサブミットするときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行うように構成され、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す。さらに、列指向データベース205は記憶エンジン210に接続する。記憶エンジン210は、列指向データベース内にデータを記憶し、構造的なデータセットである。インタフェースモジュール204または変更モジュール206は、記憶エンジン210を駆動し、記憶エンジンによって返信されるデータを受信し得る。
図3は、本発明の実施例による処理デバイスの概要のブロック図である。この実施例において、処理デバイスは、コンピュータホストであることが可能であり、具体的には、汎用パーソナルコンピュータ(PC)のようなプロセッサを基にしたコンピュータ、およびタブレットコンピュータまたはスマートホンのようなポータブルデバイスを含む。図3に表わされているように、処理デバイス300は、バス310、プロセッサ302、メモリ304、入力および出力インタフェース306、および通信インタフェース308を含み得る。バス310は、チャネルを含み、コンピュータの構成要素の間で情報を送信し得る。プロセッサ302は、情報を処理し、命令または操作を実行するように構成され、具体的には、汎用の中央処理ユニット(CPU)、マイクロプロセッサ、特定用途向け集積回路(application-specific integrated circuit、ASIC)、または本発明の解決策におけるプログラムの実行を制御するように構成される1つまたは複数の集積回路であり得る。処理デバイスは、情報および命令を記憶するように構成される1つまたは複数のメモリ304をさらに含む。メモリは、リード・オンリ・メモリ(read-only memory、ROM)または静的な情報および静的な命令を記憶することができる他のタイプの静的な記憶デバイスであることが可能であり、ランダム・アクセス・メモリ(random access memory、RAM)または情報および命令を記憶することができる他のタイプの動的な記憶デバイスであることも可能であり、ディスクメモリであることも可能である。これらのメモリはバス310を使用することによってプロセッサ302に接続する。
入力および出力インタフェース306は入力装置または出力装置を含み得る。入力装置は、ユーザによって入力されるデータおよび情報を受信するように構成され、例えば、入力装置は、キーボード、マウス、カメラ、スキャナ、ライトペン、音声入力装置、またはタッチスクリーンであり得る。出力装置は、情報がユーザに出力または表示されることを可能にするように構成され、ディスプレイスクリーン、プリンタ、スピーカ、等を含む。処理デバイスはネットワークインタフェース308をさらに含み、ここでネットワークインタフェースはトランシーバのようないずれかの装置を使用して他のデバイスまたは通信ネットワーク、例えば、イーサネット(登録商標)、無線アクセスネットワーク(RAN)、および無線ローカル・エリア・ネットワーク(WLAN)と通信する。プロセッサ302はバス310を使用することによって入力および出力インタフェース306およびネットワークインタフェース308に接続することも可能である。
メモリ304は本発明の解決策を実行するためのプログラムを記憶し、ここで、解決策は、アプリケーションプログラムによって送信される問い合わせ要求を受信することを含み、ここで、問い合わせ要求は列指向データベースについての問い合わせ条件を含み、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値は、マーカービットと同じ行内に位置するデータの有効性を示すために使用され、解決策は、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得すること、および問い合わせ結果をアプリケーションプログラムに送信することを含む。メモリ304はオペレーティングシステムおよび他のアプリケーションプログラムをさらに記憶し得る。
本発明の他の実施例において、メモリ304は本発明の解決策を実行するためのプログラムをさらに含み、ここで、解決策は、トランザクションにおいてアプリケーションプログラムによって送信される変更要求を受信することを含み、ここで、変更要求は、列指向データベースについての変更条件を含み、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、解決策は、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録すること、トランザクションをサブミットするときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行うことを含み、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示し、解決策は、アプリケーションプログラムに変更応答を送信することを含む。メモリ304はオペレーティングシステムおよび他のアプリケーションプログラムをさらに記憶し得る。
図4に表わされているように、本発明の実施例において提供される処理デバイスは、
アプリケーションプログラムによって送信される問い合わせ要求を受信し、問い合わせ要求を問い合わせモジュールに送信するように構成されるインタフェースモジュール41であって、問い合わせ要求は列指向データベースについての問い合わせ条件を含み、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用される、インタフェースモジュール41と、
マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得し、問い合わせ結果をインタフェースモジュールに送信するように構成される問い合わせモジュール42と、を含み、
インタフェースモジュール41は、問い合わせモジュールによって送信される問い合わせ結果を受信し、問い合わせ結果をアプリケーションプログラムに送信するようにさらに構成される。
さらに、図5に表わされているように、問い合わせモジュール42は、第1の生成ユニット421、第2の生成ユニット422、および獲得ユニット423を含む。
第1の生成ユニット421は、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するように構成され、ここで、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられる。
第2の生成ユニット422は、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するように構成され、ここで、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられる。
獲得ユニット423は、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
さらに、第2の生成ユニット422は、具体的には、マーカー列がビットマップであるとき、マーカー列および条件付きビットマップにAND演算を行って問い合わせビットマップを生成するように構成され、ここで、マーカー列内のマーカービットの値、条件付きビットマップ内の各行の値、および問い合わせビットマップ内の各行の値は、0または1である。
さらに、図5に表わされているように、問い合わせモジュール42は判定ユニット424をさらに含み、ここで、
判定ユニット424は、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在すると判定するように構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、判定ユニット424は、一時記憶領域内にマーカー列を記憶し、記憶されたマーカー列を問い合わせ要求のプライベート・マーカー列として使用し、トランザクションがサブミットされるときマーカー列に行われるべき変更に従ってプライベート・マーカー列を更新するように構成され、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、
第2の生成ユニット422は、具体的には、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するように構成され、ここで、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、
獲得ユニット423は、具体的には、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
加えて、判定ユニット424は、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在しないと判定するようにさらに構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、判定ユニット424は、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立し、または記憶された共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立するようにさらに構成され、
第2の生成ユニット422は、具体的には、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するように構成され、ここで、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、
獲得ユニット423は、具体的には、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
さらに、図5に表わされているように、問い合わせモジュール42は、マーカー列をコピーする前にマーカー列に排他的ロックを付加し、マーカー列をコピーした後にマーカー列について排他的ロックを解放するように構成されるロック処理ユニット425をさらに含む。
さらに、図5に表わされているように、処理デバイスは、変更モジュール43、記録モジュール44、およびサブミットモジュール45をさらに含み、ここで、
インタフェースモジュール41は、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信し、変更要求を変更モジュールに送信するようにさらに構成され、ここで、変更要求は変更条件を含み、
変更モジュール43は、インタフェースモジュールによって送信される変更要求を受信し、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用するように構成され、
記録モジュール44は、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するように構成され、
サブミットモジュール45は、トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行うように構成され、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す。
インタフェースモジュール41は、変更応答をアプリケーションプログラムに送信するようにさらに構成される。
さらに、図5に表わされているように、処理デバイスの変更モジュール43は、変更要求が具体的には更新要求であり、変更条件が具体的には更新条件であるとき、1つより多くのデータ列において更新条件を満たすデータについて問い合わせするように構成される更新ユニット431を含み、ここで、更新条件を満たすデータが位置する行のマーカービットの値は有効であり、更新ユニット431は、1つより多くのデータ列およびマーカー列に新しい行を追加するように構成され、ここで、新しい行の数量は更新条件において要求される更新されるべき行の数量と同じであり、更新ユニット431は、1つより多くのデータ列内にあり、更新条件を満たすデータを保持する行内のデータを新しい行にコピーし、新しい行のマーカービットの値を無効に設定し、更新条件に従って新しい行内の更新されるべきデータを変更するように構成され、
記録モジュール44は、具体的には、トランザクションがサブミットされるときに更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される。
さらに、図5に表わされているように、処理デバイスの変更モジュール43は、列指向データベースが行番号列をさらに含み、各行の行番号が行番号列内に記憶されるとき、新しい行の行番号を、更新条件を満たすデータが位置する行の行番号として設定するように構成される行番号処理ユニット432を含む。
さらに、図5に表わされているように、処理デバイスの変更モジュール43は、変更要求が具体的には挿入要求であり、変更条件が具体的には挿入条件であるとき、挿入条件に従って1つより多くのデータ列およびマーカー列に新しい行を追加するように構成される挿入ユニット433を含み、ここで、新しい行の数量は挿入条件において要求される挿入されるべき行の数量と同じであり、挿入ユニット433は、データを新しい行に追加し、新しい行のマーカービットを無効に設定するように構成され、
記録モジュール44は、具体的には、トランザクションがサブミットされるときに新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される。
さらに、図5に表わされているように、処理デバイスの変更モジュール43は、変更要求が具体的には削除要求であり、変更条件が具体的には削除条件であるとき、1つより多くのデータ列において削除条件を満たすデータについて問い合わせするように構成される削除ユニット434を含み、
記録モジュール44は、トランザクションがサブミットされるときに削除条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があること、を示す記録を追加するように構成される。
図6に表わされているように、本発明のこの実施例において提供される処理デバイスは、インタフェースモジュール61、変更モジュール62、記録モジュール63、およびサブミットモジュール64を含み、ここで、
インタフェースモジュール61は、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するように構成され、ここで、変更要求は列指向データベースについての変更条件を含み、インタフェースモジュール61は、変更要求を変更モジュールに送信するように構成され、ここで、列指向データベースはマーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値はマーカービットと同じ行内に位置するデータの有効性を示すために使用され、
変更モジュール62は、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用するように構成され、
記録モジュール63は、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するように構成され、
サブミットモジュール64は、トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行うように構成され、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示し、
インタフェースモジュール61は、変更応答をアプリケーションプログラムに送信するようにさらに構成される。
さらに、図7に表わされているように、変更モジュール62は、変更要求が具体的には更新要求であり、変更条件が具体的には更新条件であるとき、1つより多くのデータ列において更新条件を満たすデータについて問い合わせするように構成される更新ユニット621を含み、ここで、更新条件を満たすデータが位置する行のマーカービットの値は有効であり、更新ユニット621は、1つより多くのデータ列およびマーカー列に新しい行を追加するように構成され、ここで、新しい行の数量は更新条件において要求される更新されるべき行の数量と同じであり、更新ユニット621は、1つより多くのデータ列内にあり、更新条件を満たすデータを保持する行内のデータを新しい行にコピーし、新しい行のマーカービットの値を無効に設定し、更新条件に従って新しい行内の更新されるべきデータを変更するように構成され、
記録モジュール63は、具体的には、トランザクションがサブミットされるときに更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される。
さらに、図7に表わされているように、変更モジュール62は、列指向データベースが行番号列をさらに含み、各行の行番号が行番号列内に記憶されるとき、新しい行の行番号を、更新条件を満たすデータが位置する行の行番号として設定するように構成される行番号処理ユニット622を含む。
さらに、図7に表わされているように、変更モジュール62は、変更要求が具体的には挿入要求であり、変更条件が具体的には挿入条件であるとき、挿入条件に従って1つより多くのデータ列およびマーカー列に新しい行を追加するように構成される挿入ユニット623を含み、ここで、新しい行の数量は挿入条件において要求される挿入されるべき行の数量と同じであり、挿入ユニット623は、データを新しい行に追加し、新しい行のマーカービットを無効に設定するように構成され、
記録モジュール63は、具体的には、トランザクションがサブミットされるときに新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される。
さらに、図7に表わされているように、変更モジュール62は、変更要求が具体的には削除要求であり、変更条件が具体的には削除条件であるとき、1つより多くのデータ列において削除条件を満たすデータについて問い合わせするように構成される削除ユニット624を含み、
記録モジュール63は、トランザクションがサブミットされるときに削除条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があること、を示す記録を追加するように構成される。
さらに、図7に表わされているように、処理デバイスは問い合わせモジュール65をさらに含み、ここで、インタフェースモジュール61は、アプリケーションプログラムによって送信される問い合わせ要求を受信するようにさらに構成され、ここで、問い合わせ要求は列指向データベースについての問い合わせ条件を含み、インタフェースモジュール61は、問い合わせ要求を問い合わせモジュールに送信し、問い合わせモジュールによって送信される問い合わせ結果を受信し、問い合わせ結果をアプリケーションプログラムに送信するようにさらに構成される。
問い合わせモジュール65は、マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得し、問い合わせ結果をインタフェースモジュールに送信するように構成される。
さらに、図7に表わされているように、問い合わせモジュール65は、第1の生成ユニット651、第2の生成ユニット652、および獲得ユニット653を含み、ここで、
第1の生成ユニット651は、問い合わせ条件に従って、問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するように構成され、ここで、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられ、
第2の生成ユニット652は、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するように構成され、ここで、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、
獲得ユニット653は、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
さらに、図7に表わされているように、第2の生成ユニット652は、具体的には、マーカー列がビットマップであるとき、マーカー列および条件付きビットマップにAND演算を行って問い合わせビットマップを生成するように構成され、ここで、マーカー列内のマーカービットの値、条件付きビットマップ内の各行の値、および問い合わせビットマップ内の各行の値は、0または1である。
さらに、図7に表わされているように、問い合わせモジュール65は、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在すると判定するように構成される判定ユニット654をさらに含み、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、判定ユニット654は、一時記憶領域内にマーカー列を記憶し、記憶されたマーカー列を問い合わせ要求のプライベート・マーカー列として使用し、トランザクションがサブミットされるときマーカー列に行われるべき変更に従ってプライベート・マーカー列を更新するように構成され、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、
第2の生成ユニット652は、具体的には、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するように構成され、ここで、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、
獲得ユニット653は、具体的には、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
さらに、判定ユニットは、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在しないと判定するようにさらに構成され、ここで、トランザクションは問い合わせ要求が位置するトランザクションであり、判定ユニットは、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立し、または記憶された共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立するようにさらに構成され、
第2の生成ユニットは、具体的には、一時記憶領域において、他のまたは記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応に従って、問い合わせ要求に対応する共有されたマーカー列を判定し、条件付きビットマップおよび問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するように構成され、ここで、問い合わせ要求に対応する共有されたマーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、
獲得ユニットは、具体的には、問い合わせビットマップに従って、問い合わせ条件および問い合わせ要求に対応する共有されたマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される。
さらに、図7に表わされているように、問い合わせモジュール65は、マーカー列をコピーする前にマーカー列に排他的ロックを付加し、マーカー列をコピーした後にマーカー列について排他的ロックを解放するように構成されるロック処理ユニット655をさらに含む。
本発明のこの実施例において、データ列内の各行の数値の有効性を示すために特別に使用されるマーカー列が列指向データベースに追加され、このようにして、列指向データベース内のマーカー列を使用することによって、列指向記憶の形態で、追加、削除、および変更を含む様々なタイプの処理が完全に実現されることが可能である。さらに、特別な行領域において追加、削除、および変更処理を適用する必要はなく、その結果、データ問い合わせが行われるとき、データ問い合わせは列領域において完全に行われることが可能であり、これは行領域における問い合わせについての必要性を除去し、その結果、データ問い合わせの効率を向上させる。この向上はビッグデータのシナリオにおいて目立って著しいであろう。加えて、マーカー列がデータ列内の各行の有効性を示すために使用されるので、データ問い合わせが行われるときデータ列の各行にロックが付加される必要がないことが実現されることも可能である。このようにして、問い合わせが行われるとき、追加、削除、および変更のような操作がデータに行われることも可能である。
本発明の実施例は列指向データベース処理方法を提供し、ここで、本発明のこの実施例における列指向データベースは、マーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行のマーカービットの値は、マーカービットと同じ行内に位置するデータの有効性を示すために使用される。この方法は図8に表わされている。
ステップ801:アプリケーションプログラムによって送信される問い合わせ要求を受信し、ここで、問い合わせ要求は問い合わせ条件を含む。
ステップ802:マーカー列および問い合わせ条件に従って1つより多くのデータ列を問い合わせして、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得する。
具体的には、問い合わせ条件に従って、問い合わせ条件に関与するデータ列を走査し、条件付きビットマップが生成され、ここで、関与するデータ列内のある行が問い合わせ条件を満たし、条件付きビットマップ内の対応する行は有効な値が割り当てられ、関与するデータ列内のある行が問い合わせ条件を満たさず、条件付きビットマップ内の対応する行は無効な値が割り当てられ、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成し、ここで、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効であり、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得する。
ここで、マーカー列はビットマップであり、そして、この場合、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成することは、具体的には、マーカー列および条件付きビットマップにAND演算を行って問い合わせビットマップを生成することを含み、ここで、マーカー列内のマーカービットの値、条件付きビットマップ内の各行の値、および問い合わせビットマップ内の各行の値は、0または1である。
さらに、問い合わせ条件に関与するデータ列が問い合わせ条件に従って走査される前に、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在するかどうかを判定することがさらに要求され、ここでトランザクションは問い合わせ要求が位置するトランザクションであり、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在すると判定され、ここでトランザクションは問い合わせ要求が位置するトランザクションであるならば、マーカー列が一時記憶領域内に記憶され、記憶されたマーカー列は問い合わせ要求のプライベート・マーカー列として使用され、プライベート・マーカー列は、トランザクションがサブミットされるときマーカー列に行われるべき変更に従って更新され、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示す。
この場合、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、更新されたプライベート・マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、更新されたプライベート・マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または更新されたプライベート・マーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件および更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである。
さらに、問い合わせ条件に従って、トランザクションがサブミットされるときマーカー列に行われるべき変更が存在しないと判定され、ここでトランザクションは問い合わせ要求が位置するトランザクションであるとき、この方法は、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立し、または記憶された共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立することをさらに含む。
この場合、マーカー列および条件付きビットマップに従って問い合わせビットマップを生成するステップであって、マーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、またはマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件およびマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、一時記憶領域において、他のまたは記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応に従って、問い合わせ要求に対応する共有されたマーカー列を判定し、条件付きビットマップおよび問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するステップであって、問い合わせ要求に対応する共有されたマーカー列および条件付きビットマップの両方における同じ行の値が有効な値であるとき、問い合わせビットマップ内の同じ行の値は有効であり、または問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、問い合わせビットマップ内の同じ行の値は無効である、ステップと、問い合わせビットマップに従って、問い合わせ条件および問い合わせ要求に対応する共有されたマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである。
さらに、マーカー列をコピーする前に、この方法は、マーカー列に排他的ロックを付加するステップをさらに含み、マーカー列をコピーした後に、この方法は、マーカー列について排他的ロックを解放するステップをさらに含む。
ステップ803:問い合わせ結果をアプリケーションプログラムに送信する。
この方法は、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するステップであって、変更要求は変更条件を含む、ステップをさらに含み、トランザクションおよび上記の問い合わせプロセスは、同じトランザクション内にあることが可能であり、この場合、変更要求は、問い合わせ要求より前であることが可能であり、または問い合わせ要求の後であることが可能であり、またはトランザクションおよび上記の問い合わせプロセスは、異なるトランザクション内にあることが可能であり、この方法は、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するステップと、トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行い、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す、ステップと、アプリケーションプログラムに変更応答を送信するステップと、をさらに含む。
具体的には、変更要求が具体的には更新要求であり、変更条件が具体的には更新条件であるならば、変更条件に従ってマーカー列および1つより多くのデータ列についてマーカー列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するステップは、具体的には、1つより多くのデータ列において更新条件を満たすデータについて問い合わせするステップであって、更新条件を満たすデータが位置する行のマーカービットの値は有効である、ステップと、1つより多くのデータ列およびマーカー列に新しい行を追加するステップであって、新しい行の数量は更新条件において要求される更新されるべき行の数量と同じである、ステップと、1つより多くのデータ列内の、更新条件を満たすデータが位置する行内のデータを新しい行にコピーし、新しい行のマーカービットの値を無効に設定するステップと、更新条件に従って新しい行内の更新されるべきデータを変更するステップと、トランザクションがサブミットされるときに更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに新しい行のマーカービットの値が有効に変更される必要があること、を記録するステップと、を含む。
列指向データベースが行番号列をさらに含むならば、各行の行番号が行番号列内に記憶され、この方法は、新しい行の行番号を、更新条件を満たすデータが位置する行の行番号として設定するステップをさらに含む。
変更要求が具体的には挿入要求であり、変更条件が具体的には挿入条件であるとき、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するステップは、具体的には、挿入条件に従って1つより多くのデータ列およびマーカー列に新しい行を追加するステップであって、新しい行の数量は挿入条件において要求される挿入されるべき行の数量と同じである、ステップと、データを新しい行に追加し、新しい行のマーカービットを無効に設定するステップと、トランザクションがサブミットされるときに新しい行のマーカービットの値が有効に変更される必要があること、を記録するステップと、を含む。
変更要求が具体的には削除要求であり、変更条件が具体的には削除条件であるとき、変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録するステップは、具体的には、1つより多くのデータ列において削除条件を満たすデータについて問い合わせするステップと、トランザクションがサブミットされるときに削除条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があること、を記録するステップと、を含む。
本発明の実施例は列指向データベース処理方法を提供し、ここで、本発明のこの実施例における列指向データベースは、マーカー列および1つより多くのデータ列を含み、データ列は列記憶の形態で特定のデータを記憶するために使用され、マーカー列内の各行の値は、マーカービットと同じ行内に位置するデータの各行の有効性を示すために使用される。この方法は図9に表わされている。
ステップ901:トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信し、ここで、変更要求は変更条件を含む。
変更要求は挿入要求または更新要求であることが可能であり、これに対応して、変更条件は、別個に、挿入条件または更新条件であることが可能である。
ステップ902:変更条件に従ってマーカー列および1つより多くのデータ列に変更処理を適用し、トランザクションがサブミットされるときマーカー列に行われるべき変更を記録する。
変更条件が具体的に更新条件であるとき、このステップは、1つより多くのデータ列において更新条件を満たすデータについて問い合わせするステップであって、更新条件を満たすデータが位置する行のマーカービットの値は有効である、ステップと、1つより多くのデータ列およびマーカー列に新しい行を追加するステップであって、新しい行の数量は更新条件において要求される更新されるべき行の数量と同じである、ステップと、1つより多くのデータ列内にあり、更新条件を満たすデータを保持する行内のデータを新しい行にコピーし、新しい行のマーカービットの値を無効に設定するステップと、更新条件に従って新しい行内の更新されるべきデータを変更するステップと、トランザクションがサブミットされるときに更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するステップと、を含み得る。
上記の更新プロセスは、新しい行の行番号を、更新条件を満たすデータが位置する行の行番号として設定すること、をさらに含む。
変更要求が具体的には挿入要求であるとき、このステップは、挿入条件に従って1つより多くのデータ列およびマーカー列に新しい行を追加するステップであって、新しい行の数量は挿入条件において要求される挿入されるべき行の数量と同じである、ステップと、データを新しい行に追加し、新しい行のマーカービットを無効に設定するステップと、
トランザクションがサブミットされるときに新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するステップと、を含み得る。
ステップ903:トランザクションがサブミットされるときマーカー列に行われるべき記録された変更に従って、トランザクションがサブミットされるとき、マーカー列に、対応する変更を行い、それによって、変更されたマーカー列内の各行のマーカービットの値は、変更処理の後にマーカービットと同じ行内に位置するデータの有効性を示す。
ステップ904:変更応答をアプリケーションプログラムに送信する。
上記の解決策は問い合わせプロセスをさらに含む。問い合わせプロセスは図8に表わされた実施例におけるものと同じであり、詳細は再度ここに記載されない。
本発明のこの実施例において、データ列内の各行の数値の有効性を示すために特別に使用されるマーカー列が列指向データベースに追加され、このようにして、列指向データベース内のマーカー列を使用することによって、列指向記憶の形態で、追加、削除、および変更を含む様々なタイプの処理が完全に実現されることが可能である。さらに、特別な行領域において追加、削除、および変更処理を適用する必要はなく、その結果、データ問い合わせが行われるとき、データ問い合わせは列領域において完全に行われることが可能であり、これは行領域における問い合わせについての必要性を除去し、その結果、データ問い合わせの効率を向上させる。この向上はビッグデータのシナリオにおいて目立って著しい。加えて、マーカー列がデータ列内の各行の有効性を示すために使用されるので、データ問い合わせが行われるときデータ列の各行にロックが付加される必要がないことが実現されることも可能である。このようにして、問い合わせが行われるとき、追加、削除、および変更のような操作がデータに行われることも可能である。
例えば、実際のテストにおいて、4000万行のデータを走査するために2757 usかかり、ここで、各行は3つのフィールドを含み、各フィールドは8バイトを有し、10000行ごとのデータを走査することは0.68925 usかかる。しかし、行記憶の形態で記憶されたデータが行走査の形態で走査され、同じテーブル構造が利用されるとき、1000万行のデータを走査することは3081376 usを必要とし、10000行ごとのデータを走査するために要求される時間の量は308.1376 usに達する。列走査の効率は行走査の効率より447倍高い。列指向データベースの問い合わせ効率は行指向データベースの問い合わせ効率よりずっと高いことがこのテストから十分に証明されることが可能である。さらに、本発明において、マーカー列はデータベースの複数のバージョンを制御するために使用され、これは制御の容易さ、高い利便性、データベースの追加、削除、変更、および問い合わせの効率における向上を明示する。
図10に表わされているように、本発明の実施例は、下記を含む、列指向データベースを問い合わせするための方法を提供する。
ステップ1001:列指向データベースは、トランザクションにおいて、アプリケーションプログラムによって送信される問い合わせ要求を受信し、ここで、問い合わせ要求は問い合わせ条件を含む。
例えば、問い合わせ要求はSQL1、例えば、select F2 from Table1 where F3>15であり、本発明のこの実施例における表1は、ここでのTable1を示すために使用される。
ステップ1002:列指向データベースは、トランザクションログに従って、トランザクションがサブミットされるときマーカー列に行われるべき変更がトランザクションログ内に記録されているかどうかを判定し、トランザクションがサブミットされるときマーカー列に行われるべき変更がトランザクションログ内に記録されていないならば、共有されたマーカー列が一時記憶領域内に記憶されているかどうかを判定し、共有されたマーカー列が一時記憶領域内に記憶されていない、または一時記憶領域内に記憶された共有されたマーカー列のバージョン番号が、テーブルヘッダ内の共有されたマーカー列のバージョン番号と異なるならば、データ記憶領域内にあるマーカー列のバージョン番号およびマーカー列を一時記憶領域内に記憶し、記憶されたマーカー列を他の共有されたマーカー列として使用し、他の共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立し、例えばスライダを使用することによって、共有されたマーカー列のバージョン番号を問い合わせ要求と関連付け、または記憶された共有されたマーカー列のバージョン番号が、テーブルヘッダ内のマーカー列のバージョン番号と同じであるならば、記憶された共有されたマーカー列のバージョン番号と問い合わせ要求の間の対応を確立する。ここでの共有されたマーカー列は、問い合わせを要求するために同じトランザクションにおける他の問い合わせ要求または他のトランザクションにおける問い合わせ要求によって直接に使用されることが可能であるマーカー列を指す。マーカー列はパブリックに設定されることが可能であり、それによって、マーカー列は共有されたマーカー列である。マーカー列をパブリックに設定するために複数のやり方がある。1つのやり方は、マーカー列の属性をパブリック属性に設定することであり、他の代わりのやり方は、一時記憶領域内に2つの領域をセットアップし、ここで、1つの領域はパブリック領域であり、他はプライベート領域であり、そして、パブリック領域内に共有されたマーカー列を記憶することである。トランザクションがサブミットされるときマーカー列に行われるべき変更がトランザクションログ内に記録されているならば、マーカー列はまず一時記憶領域にコピーされ、プライベート・マーカー列として使用されるようにプライベートに設定される。プライベート・マーカー列はこの問い合わせ要求についてのみ効力があり、マーカー列は、同じトランザクションにおける他の問い合わせ要求または他のトランザクションにおける問い合わせ要求による問い合わせのために直接に使用されることが可能でない。プライベート・マーカー列を設定するために複数のやり方がある。1つのやり方は、マーカー列の属性をプライベート属性に設定することであり、代わりのやり方は、一時記憶領域内に2つの領域をセットアップし、ここで、1つの領域はパブリック領域であり、他はプライベート領域であり、そして、プライベート領域内にプライベート・マーカー列を記憶することである。プライベート・マーカー列は、トランザクションがサブミットされるときマーカー列に行われるべき変更に従って更新され、それによって、更新されたプライベート・マーカー列内の変更されたマーカービットの値は、トランザクションにおける現在のマーカービットに対応するデータの有効性を示す。
具体的な例は次の通りであり、現在のトランザクションはサブミットされていない、従って、現在のトランザクションにおいてデータ列内のデータへの変更処理が既に存在するかどうかを判定することが要求される。列指向データベースはトランザクションログを問い合わせする。1つの行のマーカービットの値またはいくつかの行のマーカービットの値が、現在のトランザクションがサブミットされるべきときに変更される必要があることを示す記録を、現在のトランザクションログが含まないならば、現在のトランザクションのコンテキスト内でデータ列内のデータに変更処理が行われないことが推論され、これは、このSQL1について現在のマーカー列が正確であることを意味する。従って、現在のエントリ・カウントが読み取られ、データ記憶領域内のマーカー列が現在のエントリ・カウントに従って走査され、現在のマーカー列は一時記憶領域内にコピーされ、現在のマーカー列はプライベート・マーカー列として使用される。本発明のこの実施例における上記の具体的なSQL1の例に戻り参照すると、列指向データベースはマーカー列の1つのコピーを作成し、プライベート・マーカー列は表3に表わされている。
Figure 2016539417
マーカー列内の1つの行のマーカービットの値またはいくつかの行のマーカービットの値が、現在のトランザクションがサブミットされるべきとき変更される必要があることを示す記録を、トランザクションログが含むならば、現在のトランザクションにおいてデータ列内のデータへの変更処理が既に存在することが推論され、これは、現在のトランザクションがサブミットされていないことを意味する。この場合、プライベート・マーカー列によって示されるデータの有効性はSQL1について不正確である。従って、列指向データベースはまず現在のエントリ・カウントを読み取り、現在のエントリ・カウントに従って現在のマーカー列を走査し、現在のマーカー列を一時記憶領域にコピーし、現在のマーカー列をプライベート・マーカー列として使用し、現在のマーカー列の1つのコピーを作成し、一時記憶領域内のマーカー列内の1つの行のマーカービットの値またはいくつかの行のマーカービットの値を変更し、すなわち、トランザクションログ内の記録に従ってプライベート・マーカー列を更新する。
マーカー列がコピーされる前に、マーカー列にロックが付加されることがさらに必要であり、それによって、コピープロセスにおいて他のトランザクションがマーカー列を更新することを防止し、その結果、正しくない問い合わせ結果を避ける。マーカー列がコピーされた後に、遅れずにロックが解放されることがさらに必要であり、それによって、他のトランザクションによるマーカー列への更新処理は影響されず、トランザクションは同時に処理されることが可能である。
現在のトランザクションは処理されたが次の操作delete from Table1 where F2=bがサブミットされていないと仮定する。この場合、トランザクションログは次の記録、トランザクションがサブミットされるとき、行番号2を有するマーカービットは0に変更されるべきである、を含む。明らかに、記録は様々なフォーマットを採用することが可能であり、例えば、記録は、テキスト記述、XML記述、または表記述であり得る。本発明のこの実施例における上記の具体的なSQL1の例に戻り参照すると、表3に表わされているように列指向データベースがマーカー列の1つのコピーを作成した後に、行番号2を有するマーカー列はトランザクションログ内の記録に従って0に変更されることがさらに必要であり、更新されたプライベート・マーカー列は、表4に表わされているように、コピーされたマーカー列として記憶される。
Figure 2016539417
マーカー列が共有可能であるならば、一時記憶領域内に一時的に記憶されたバージョン番号が現在のテーブル・ヘッダ内のバージョン番号と異なり、バージョン番号が問い合わせ要求によって使用されていないと判定されたとき、一時記憶領域内のマーカー列は削除されることが可能であるが、記憶されたマーカー列がプライベートであるとき、かつマーカー列を使用して問い合わせ要求が処理された後に、一時記憶領域内のマーカー列は直接に削除される。
ステップ1003:1つより多くのデータ列において、コピーされたマーカー列および問い合わせ条件に従って、問い合わせ条件およびコピーされたマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得する。
具体的には、列指向データベースは、受信された問い合わせ条件に従って、問い合わせ条件において関与する列を走査して条件付きビットマップ(bitmap)を取得し、ここで、ビットマップにおいて、条件を満たす行の値は1であり、条件を満たさない行の値は0である。本発明のこの実施例における上記の具体的なSQL1の例に戻り参照すると、2つの行は条件F3=30を満たし、表5に表わされた条件付きビットマップが取得される。
Figure 2016539417
表4に表わされたコピーされたマーカー列はビットマップでもある。この場合、列指向データベースは一時的に記憶されたマーカー列のビットマップおよび条件付きビットマップにAND演算を行い、それによって、問い合わせビットマップを取得し、ここで、問い合わせビットマップはどの行が問い合わせ条件を満たすかを示し得る。AND演算プロセスは図11に表わされている。この例において、表4に表わされた一時的に記憶されたマーカー列のビットマップおよび表5に表わされた条件付きビットマップにAND演算が行われた後に、表6に表わされた問い合わせビットマップが取得される。
Figure 2016539417
問い合わせビットマップおよび問い合わせ条件に従って最終的な問い合わせ結果が取得され得る。この例において、問い合わせ結果は3番目の行内のデータであり、すなわち、取得された問い合わせ結果はcである。
問い合わせ要求が履行された後に、一時記憶領域内にコピーされ記憶されたマーカー列が削除され得る。
ステップ1004:トランザクションをサブミットし、問い合わせ結果をアプリケーションプログラムに送信する。このようにして、問い合わせ要求プロセスが完了する。
マーカー列内の全ての値が0である、すなわち、各行内のデータが現在無効であるならば、問い合わせを行う必要性なしで、合致が見出されないことを示す問い合わせ結果が直接に出力されることが可能である。マーカー列内の全ての値が1である、すなわち、各行内のデータが現在有効であるならば、条件付きビットマップおよびマーカー列にAND演算が行われる必要がなく、条件付きビットマップは問い合わせビットマップである。
上記の問い合わせプロセスの後に、かつトランザクションのサブミットの前に、トランザクションにおいて他の問い合わせ要求プロセスが存在することも可能であり、このプロセスは下記を含む。
ステップ1005:列指向データベースは、アプリケーションプログラムによって送信される他の問い合わせ要求をさらに受信し、ここで、問い合わせ要求は問い合わせ条件を含む。
例えば、問い合わせ要求はSQL2、例えば、select F3 from Table1 where (F2=b or F2=d)である。
ステップ1006:ステップ1002において、トランザクションがサブミットされるときにマーカー列に行われるべき変更がトランザクションログ内に記録されていると判定され、従って、列指向データベースは現在のマーカー列および現在のマーカー列のバージョン番号を一時記憶領域にコピーし、トランザクションログに従って一時記憶領域内のコピーされたマーカー列を更新する。
このとき他のトランザクションにおいてマーカー列が変更され、変更されたマーカー列のバージョン番号はv4であると仮定し、変更されたマーカー列は表7に表わされている。
Figure 2016539417
ステップ1002における仮定に従って、このときのトランザクションログは、トランザクションがサブミットされるとき、行番号2を有するマーカービットは0に変更されるべきである、と記録する。従って、トランザクションログに従って、表7に表わされているように、行番号2を有するマーカー列の値が0に変更され、更新されたマーカー列は、表8に表わされているように、コピーされたマーカー列として記録される。
Figure 2016539417
ステップ1007:1つより多くのデータ列において、コピーされたマーカー列および問い合わせ条件に従って、問い合わせ条件およびコピーされたマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得する。
具体的には、列指向データベースは、受信された問い合わせ条件に従って、問い合わせ条件において関与する列を走査して条件付きビットマップ(bitmap)を取得し、ここで、ビットマップにおいて、条件を満たす行の値は1であり、条件を満たさない行の値は0である。本発明のこの実施例における上記の具体的なSQL2の例に戻り参照すると、2つの行は条件F2=bまたはdを満たし、表9に表わされた条件付きビットマップが取得される。
Figure 2016539417
表8に表わされたコピーされたマーカー列はビットマップでもある。この場合、列指向データベースはコピーされたマーカー列のビットマップおよび条件付きビットマップにAND演算を行い、それによって、問い合わせビットマップを取得し、ここで、問い合わせビットマップはどの行が問い合わせ条件を満たすかを示し得る。表8に表わされた一時的に記憶されたマーカー列のビットマップおよび表9に表わされた条件付きビットマップにAND演算が行われた後に、表10に表わされた問い合わせビットマップが取得される。
Figure 2016539417
問い合わせビットマップおよび問い合わせ条件に従って最終的な問い合わせ結果が取得され得る。この例において、問い合わせ結果は4番目の行内のデータであり、すなわち、取得された問い合わせ結果は10である。
本発明のこの実施例における技術的解決策において、データ問い合わせが行われるとき、マーカー列は、データ列内の各行のデータが有効であるかどうかを示すために使用され、このようにして、列指向の問い合わせが迅速で正確に行われることが可能である。
図12に表わされているように、本発明は、下記を含む列指向データベース挿入処理解決策をさらに提供する。
ステップ1201:列指向データベースは、トランザクションにおいて、アプリケーションプログラムによって送信される挿入要求を受信し、ここで、挿入要求は挿入条件を含む。
ステップ1202:列指向データベースは現在のエントリ・カウントを読み出し、現在のエントリ・カウントおよび挿入条件に従って、各列内の最後の行の下にデータの新しい行を追加し、ここで、最後の行の行番号は現在のエントリ・カウントに等しく、マーカー列内の新しく追加された対応する行のマーカービットを無効に設定し、例えば、マーカービットの数値は0であり、トランザクションログ内に、トランザクションがサブミットされるときに新しく追加された対応する行のマーカービットが有効に変更されるべきであること、を示す記録を追加する。実装プロセスにおいて、マーカービットが変更される必要がある行は、新しく追加された対応する行のアドレスを記録することによってトランザクションログ内に記録されることが可能であり、新しく追加された対応する行のアドレスは位置番号であることが可能であり、ここで、位置番号は列指向データベース内の行の位置の順序を指す。例えば、10行のデータが列指向の形態で記憶され、1番目の行から10番目の行の位置の順序は順に0から9であることが可能である。どの行の位置も計算されることが可能であり、1番目の行の開始位置および各行によって占められる位置のサイズは知られていると仮定する。このようにして、特定の位置を位置指定するために位置番号が使用され得る。
トランザクションがサブミットされることに成功したとき、マーカービットの値はトランザクションログ内の記録に従って1に変更される。この場合、それは挿入要求が処理されることに成功したことを示す。ここでの挿入要求がいくつかの挿入されるべきデータ、例えば、N個の挿入されるべきデータを含むならば、列指向データベースは各データ列内の最後の行の下にN行のデータを順に挿入することが可能であり、ここで、最後の行の行番号は現在のエントリ・カウントに等しい。各々の新しく追加された行のマーカービットの数値は0であり、行が追加されるごとに、現在のエントリ・カウントは1だけ増加する。挿入結果、すなわち、挿入が成功したことの応答メッセージはアプリケーションプログラムに返信される。
例えば、挿入要求は具体的にはSQL2、例えば、insert into Table1 (F2, F3) values (e, 15)であり、現在のエントリ・カウントは4であることがまず分かり、表1における各列の4番目の行の下に新しい行が追加され、マーカー列内の新しい行のマーカービットの値は無効であり、データ列F2およびF3の値はそれぞれeおよび15であり、新しい行の行番号は5に設定される。一般に、新しい行の行番号は加算の前の最大の行番号に1を加えたものであり、それによって、新しい行の行番号がユニークであることを保証する。加えて、現在のエントリ・カウントは1だけ増加して5になり、これは表11に表わされている。
Figure 2016539417
トランザクションがサブミットされるとき変更がマーカー列に行われる必要があることが、トランザクションログ内に記録される。
トランザクションがサブミットされることに成功した後に、トランザクションログ内の記録に従って新しい行のマーカービットの値は1に変更される。このようにして、表12に表わされているように、挿入操作の処理は完了する。
Figure 2016539417
図13に表わされているように、本発明は、下記を含む列指向データベース更新処理解決策をさらに提供する。
ステップ1301:列指向データベースは、トランザクションにおいて、アプリケーションプログラムによって送信される更新要求を受信し、ここで、更新要求は更新条件を含む。
ステップ1302:列指向データベースは、現在のエントリ・カウントを読み出し、現在のエントリ・カウントおよび更新条件に従って、各列内の行において更新条件を満たすデータについて問い合わせし、ここで、問い合わせされる行の数量は現在のエントリ・カウントに等しく、更新条件を満たすデータが位置する行のマーカービットの値は有効であり、1つより多くのデータ列およびマーカー列に新しい行を追加し、ここで、新しい行の数量は更新条件において要求される更新されるべき行の数量と同じであり、更新条件を満たすデータが位置する行の各データ列内にあるデータを新しい行に順にコピーし、新しい行のマーカービットの値を無効に設定し、新しい行の行番号を、更新条件を満たすデータが位置する行の行番号として設定する。
具体的には、例えば、更新要求は具体的にはSQL3、update table1 set F3=20 where F2=cである。列指向データベースはテーブルtable1を走査し、列F2内の値がcであるエントリについて問い合わせする。エントリが位置する行内の各データ列の値はテーブルtable1の終わりにおいて各データ列にコピーされて新しい行を形成し、新しい行が位置するマーカー列内のマーカービットの値は0に設定され、新しい行の行番号は3に設定され、ここで、この行内の各データ列の値は、表13に表わされているように、列F2内の値がcである問い合わせされた行内の値である。
Figure 2016539417
ここで、更新条件に従って、更新条件を満たすデータを読み取るプロセスは実際には問い合わせプロセスであり、問い合わせプロセスの原理は図10における実施例におけるものと同じである。
ステップ1303:更新条件に従って新しい行内の更新されるべきデータを変更し、トランザクションがサブミットされるときに更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに新しい行のマーカービットの値が有効に変更される必要があること、を示すためにトランザクションログに記録を追加する。
具体的には、例えば、列指向データベースは、更新条件set F3=20 where F2=cに従って、新しい行内のデータ列F3の値を30から20に更新し、最大の現在のエントリ・カウントを1だけ増加させて5にする。更新の後の各列は表14に表わされている。
Figure 2016539417
ステップ1304:トランザクションログ内の記録に従ってトランザクションをサブミットし、この場合、更新条件を満たすデータが位置する行のマーカービットの値を無効に変更し、新しい行のマーカービットの値を有効に変更し、更新結果、すなわち、更新が成功したことを示す応答メッセージをアプリケーションプログラムに返信する。
例えば、列指向データベースは現在のトランザクションをサブミットし、トランザクションがサブミットされるとき、排他的ロックをマーカー列に付加し、トランザクションログ内に記録された行のマーカービットを変更し、すなわち、F2 = cかつF3 = 30である行のマーカービットを0に変更し、F2 = cかつF3 = 20である行のマーカービットを1に変更する。サブミットが成功した後に、新しいデータは効力を生じ、古いデータは無効になる。サブミットの後に、マーカー列について排他的ロックは解放される。サブミットの後のデータは表15に表わされている。
Figure 2016539417
図14に表わされているように、本発明は、下記を含む列指向データベース削除処理解決策をさらに提供する。
ステップ1401:列指向データベースは、トランザクションにおいて、アプリケーションプログラムによって送信される削除要求を受信し、ここで、削除要求は削除条件を含む。
ステップ1402:現在のエントリ・カウントを読み出し、数量が現在のエントリ・カウントに等しい行の各データ列において、削除条件を満たす行の行番号を読み出し、トランザクションがサブミットされるときマーカー列に行われるべき変更をトランザクションログ内に記録する。
ここで、削除条件に従って削除されるべき行を読み出すプロセスは実際には問い合わせプロセスであり、問い合わせプロセスの原理は図10における実施例におけるものと同じである。
ステップ1403:トランザクションログ内の記録に従ってトランザクションをサブミットし、この場合、削除条件に対応するデータが位置する行のマーカービットの値を無効に変更し、削除結果、すなわち、削除が成功したことを示す応答メッセージをアプリケーションプログラムに返信する。
例えば、削除要求は具体的にはSQL4、delete from table1 where F2=cである。そして、上記の削除プロセスは次の通りである。削除条件に従って、トランザクションがサブミットされることに成功したときに表1におけるデータ列F2の値がcである行のマーカービットを無効に変更すべきであること、を示すためにトランザクションログに記録が追加される。そして、トランザクションがサブミットされるとき、トランザクションログ内の記録に従って削除処理が行われる。削除の後の結果は表16に表わされている。データの新しい行は追加されていないので、現在のエントリ・カウントは不変のままである。
Figure 2016539417
列指向データベースが、問い合わせ、削除、または更新処理を行うとき、削除条件または更新条件を満たすデータ列を問い合わせするプロセスを実行することが要求され、データベース内のマーカー列は絶えず変化し得るので、マーカー列およびマーカー列のバージョン番号は各問い合わせの間に一時的なキャッシュ領域にコピーされる必要がある。具体的な問い合わせプロセスは図10に対応する実施例に表わされている。
この技術分野の当業者は、方法の実施例のステップの全部または一部が関連するハードウェアに命令するプログラムによって実現され得ることを理解し得る。プログラムはコンピュータ読み取り可能な記憶媒体内に記憶され得る。プログラムが動作するとき、方法の実施例のステップが行われる。上記の記憶媒体は、ROM、RAM、磁気ディスク、または光ディスクのようなプログラムコードを記憶することが可能であるいずれの媒体も含む。
最後に、上記の実施例は本発明の技術的解決策を記載するために単に意図されるが、本発明を限定するために意図されないことに留意すべきである。本発明が上記の実施例を参照して詳細に記載されたが、この技術分野の当業者は、彼らが、本発明の実施例の技術的解決策の範囲から逸脱することなく、上記の実施例において記載された技術的解決策に依然として変更を行い、またはそれらのいくつかまたは全ての技術的特徴に等価な代替を行い得ることを理解すべきである。
102 アプリケーションプログラム
103 通信ネットワーク
104 インタフェースモジュール
105 列指向データベース
106 問い合わせモジュール
108 記憶エンジン
202 アプリケーションプログラム
204 インタフェースモジュール
205 列指向データベース
206 変更モジュール
207 記録モジュール
208 サブミットモジュール
210 記憶エンジン
300 処理デバイス
302 プロセッサ
304 メモリ
306 入力および出力インタフェース
308 通信インタフェース
310 バス
41 インタフェースモジュール
42 問い合わせモジュール
421 第1の生成ユニット
422 第2の生成ユニット
423 獲得ユニット
424 判定ユニット
425 ロック処理ユニット
43 変更モジュール
431 更新ユニット
432 行番号処理ユニット
433 挿入ユニット
434 削除ユニット
44 記録モジュール
45 サブミットモジュール
61 インタフェースモジュール
62 変更モジュール
621 更新ユニット
622 行番号処理ユニット
623 挿入ユニット
624 削除ユニット
63 記録モジュール
64 サブミットモジュール
65 問い合わせモジュール
651 第1の生成ユニット
652 第2の生成ユニット
653 獲得ユニット
654 判定ユニット
655 ロック処理ユニット

Claims (41)

  1. 処理デバイスであって、
    アプリケーションプログラムによって送信される問い合わせ要求を受信するように構成されるインタフェースモジュールを含み、前記問い合わせ要求は列指向データベースについての問い合わせ条件を含み、前記インタフェースモジュールは、前記問い合わせ要求を問い合わせモジュールに送信するように構成され、前記列指向データベースはマーカー列および1つより多くのデータ列を含み、前記データ列は列記憶の形態で特定のデータを記憶するために使用され、前記マーカー列内の各行のマーカービットの値は前記マーカービットと同じ行内に位置するデータの有効性を示すために使用され、
    前記処理デバイスは、前記マーカー列および前記問い合わせ条件に従って前記1つより多くのデータ列を問い合わせして、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得し、前記問い合わせ結果を前記インタフェースモジュールに送信するように構成される前記問い合わせモジュールを含み、
    前記インタフェースモジュールは、前記問い合わせモジュールによって送信される問い合わせ結果を受信し、前記問い合わせ結果を前記アプリケーションプログラムに送信するようにさらに構成される、処理デバイス。
  2. 前記問い合わせモジュールは、第1の生成ユニット、第2の生成ユニット、および獲得ユニットを含み、
    前記第1の生成ユニットは、前記問い合わせ条件に従って前記問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するように構成され、前記関与するデータ列内のある行が前記問い合わせ条件を満たすならば、前記条件付きビットマップ内の対応する行は有効な値が割り当てられ、前記関与するデータ列内のある行が前記問い合わせ条件を満たさないならば、前記条件付きビットマップ内の対応する行は無効な値が割り当てられ、
    前記第2の生成ユニットは、前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するように構成され、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効であり、
    前記獲得ユニットは、前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される、請求項1に記載の処理デバイス。
  3. 前記第2の生成ユニットは、具体的には、前記マーカー列がビットマップであるとき、前記マーカー列および前記条件付きビットマップにAND演算を行って前記問い合わせビットマップを生成するように構成され、前記マーカー列内のマーカービットの値、前記条件付きビットマップ内の各行の値、および前記問い合わせビットマップ内の各行の値は、0または1である、請求項2に記載の処理デバイス。
  4. 前記問い合わせモジュールは判定ユニットをさらに含み、
    前記判定ユニットは、トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在すると判定するように構成され、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記判定ユニットは、一時記憶領域内に前記マーカー列を記憶し、前記記憶されたマーカー列を前記問い合わせ要求のプライベート・マーカー列として使用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更に従って前記プライベート・マーカー列を更新するように構成され、それによって、前記更新されたプライベート・マーカー列内の変更されたマーカービットの値は、前記トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、
    前記第2の生成ユニットは、具体的には、前記更新されたプライベート・マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するように構成され、前記更新されたプライベート・マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記更新されたプライベート・マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効であり、
    前記獲得ユニットは、具体的には、前記問い合わせビットマップに従って、前記問い合わせ条件および前記更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される、請求項2に記載の処理デバイス。
  5. 前記問い合わせモジュールは判定ユニットをさらに含み、前記判定ユニットは、トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在しないと判定するようにさらに構成され、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記判定ユニットは、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または前記一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にある前記マーカー列のバージョン番号および前記マーカー列を前記一時記憶領域内に記憶し、前記一時記憶領域内に記憶されたマーカー列を他の共有されたマーカー列として使用し、前記他の共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を確立し、または前記記憶された共有されたマーカー列のバージョン番号が前記テーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、前記記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を確立するようにさらに構成され、
    前記第2の生成ユニットは、具体的には、前記一時記憶領域において、前記他のまたは記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応に従って、前記問い合わせ要求に対応する共有されたマーカー列を判定し、前記条件付きビットマップおよび前記問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するように構成され、前記問い合わせ要求に対応する共有されたマーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記問い合わせ要求に対応するマーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効であり、
    前記獲得ユニットは、具体的には、前記問い合わせビットマップに従って、前記問い合わせ条件および前記問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される、請求項2に記載の処理デバイス。
  6. 前記問い合わせモジュールは、前記マーカー列をコピーする前に前記マーカー列に排他的ロックを付加し、前記マーカー列をコピーした後に前記マーカー列について前記排他的ロックを解放するように構成されるロック処理ユニットをさらに含む、請求項4または5に記載の処理デバイス。
  7. 変更モジュール、記録モジュール、およびサブミットモジュールをさらに含み、
    前記インタフェースモジュールは、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するようにさらに構成され、前記変更要求は変更条件を含み、前記インタフェースモジュールは、前記変更要求を前記変更モジュールに送信するようにさらに構成され、
    前記変更モジュールは、前記インタフェースモジュールによって送信される変更要求を受信し、前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用するように構成され、
    前記記録モジュールは、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するように構成され、
    前記サブミットモジュールは、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき前記記録された変更に従って、前記トランザクションがサブミットされるとき、前記マーカー列に、対応する変更を行うように構成され、それによって、前記変更されたマーカー列内の各行のマーカービットの値は、前記変更処理の後に前記マーカービットと同じ行内に位置するデータの有効性を示し、
    前記インタフェースモジュールは、変更応答を前記アプリケーションプログラムに送信するようにさらに構成される、請求項1に記載の処理デバイス。
  8. 前記変更モジュールは、前記変更要求が具体的には更新要求であり、前記変更条件が具体的には更新条件であるとき、前記1つより多くのデータ列において前記更新条件を満たすデータについて問い合わせするように構成される更新ユニットを含み、前記更新条件を満たすデータが位置する行のマーカービットの値は有効であり、前記更新ユニットは、前記1つより多くのデータ列および前記マーカー列に新しい行を追加するように構成され、新しい行の数量は前記更新条件において要求される更新されるべき行の数量と同じであり、前記更新ユニットは、前記1つより多くのデータ列内にあり、前記更新条件を満たすデータを保持する行内のデータを前記新しい行にコピーし、前記新しい行のマーカービットの値を無効に設定し、前記更新条件に従って前記新しい行内の更新されるべきデータを変更するように構成され、
    前記記録モジュールは、具体的には、前記トランザクションがサブミットされるときに前記更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに前記新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される、請求項7に記載の処理デバイス。
  9. 前記変更モジュールは、前記列指向データベースが行番号列をさらに含み、各行の行番号が前記行番号列内に記憶されるとき、前記新しい行の行番号を、前記更新条件を満たすデータが位置する行の行番号として設定するように構成される行番号処理ユニットを含む、請求項8に記載の処理デバイス。
  10. 前記変更モジュールは、前記変更要求が具体的には挿入要求であり、前記変更条件が具体的には挿入条件であるとき、前記挿入条件に従って前記1つより多くのデータ列および前記マーカー列に新しい行を追加するように構成される挿入モジュールを含み、新しい行の数量は前記挿入条件において要求される挿入されるべき行の数量と同じであり、前記挿入モジュールは、データを前記新しい行に追加し、前記新しい行のマーカービットを無効に設定するように構成され、
    前記記録モジュールは、具体的には、前記トランザクションがサブミットされるときに前記新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される、請求項7に記載の処理デバイス。
  11. 前記変更モジュールは、前記変更要求が具体的には削除要求であり、前記変更条件が具体的には削除条件であるとき、前記1つより多くのデータ列において前記削除条件を満たすデータについて問い合わせするように構成される削除ユニットを含み、
    前記記録モジュールは、前記トランザクションがサブミットされるときに前記削除条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があること、を示す記録を追加するように構成される、請求項7に記載の処理デバイス。
  12. 処理デバイスであって、インタフェースモジュール、変更モジュール、記録モジュール、およびサブミットモジュールを含み、
    前記インタフェースモジュールは、トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するように構成され、前記変更要求は列指向データベースについての変更条件を含み、前記インタフェースモジュールは、前記変更要求を前記変更モジュールに送信するように構成され、前記列指向データベースはマーカー列および1つより多くのデータ列を含み、前記データ列は列記憶の形態で特定のデータを記憶するために使用され、前記マーカー列内の各行のマーカービットの値は前記マーカービットと同じ行内に位置するデータの有効性を示すために使用され、
    前記変更モジュールは、前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用するように構成され、
    前記記録モジュールは、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するように構成され、
    前記サブミットモジュールは、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき前記記録された変更に従って、前記トランザクションがサブミットされるとき、前記マーカー列に、対応する変更を行うように構成され、それによって、前記変更されたマーカー列内の各行のマーカービットの値は、前記変更処理の後に前記マーカービットと同じ行内に位置するデータの有効性を示す、処理デバイス。
  13. 前記変更モジュールは、前記変更要求が具体的には更新要求であり、前記変更条件が具体的には更新条件であるとき、前記1つより多くのデータ列において前記更新条件を満たすデータについて問い合わせするように構成される更新ユニットを含み、前記更新条件を満たすデータが位置する行のマーカービットの値は有効であり、前記更新ユニットは、前記1つより多くのデータ列および前記マーカー列に新しい行を追加するように構成され、新しい行の数量は前記更新条件において要求される更新されるべき行の数量と同じであり、前記更新ユニットは、前記1つより多くのデータ列内にあり、前記更新条件を満たすデータを保持する行内のデータを前記新しい行にコピーし、前記新しい行のマーカービットの値を無効に設定し、前記更新条件に従って前記新しい行内の更新されるべきデータを変更するように構成され、
    前記記録モジュールは、具体的には、前記トランザクションがサブミットされるときに前記更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに前記新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される、請求項12に記載の処理デバイス。
  14. 前記変更モジュールは、前記列指向データベースが行番号列をさらに含み、各行の行番号が前記行番号列内に記憶されるとき、前記新しい行の行番号を、前記更新条件を満たすデータが位置する行の行番号として設定するように構成される行番号処理ユニットを含む、請求項13に記載の処理デバイス。
  15. 前記変更モジュールは、前記変更要求が具体的には挿入要求であり、前記変更条件が具体的には挿入条件であるとき、前記挿入条件に従って前記1つより多くのデータ列および前記マーカー列に新しい行を追加するように構成される挿入ユニットを含み、新しい行の数量は前記挿入条件において要求される挿入されるべき行の数量と同じであり、前記挿入ユニットは、データを前記新しい行に追加し、前記新しい行のマーカービットを無効に設定するように構成され、
    前記記録モジュールは、具体的には、前記トランザクションがサブミットされるときに前記新しい行のマーカービットの値が有効に変更される必要があること、を示す記録を追加するように構成される、請求項12に記載の処理デバイス。
  16. 前記変更モジュールは、前記変更要求が具体的には削除要求であり、前記変更条件が具体的には削除条件であるとき、前記1つより多くのデータ列において前記削除条件を満たすデータについて問い合わせするように構成される削除ユニットを含み、
    前記記録モジュールは、前記トランザクションがサブミットされるときに前記削除条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があること、を示す記録を追加するように構成される、請求項11に記載の処理デバイス。
  17. 問い合わせモジュールをさらに含み、
    前記インタフェースモジュールは、アプリケーションプログラムによって送信される問い合わせ要求を受信するようにさらに構成され、前記問い合わせ要求は前記列指向データベースについての問い合わせ条件を含み、前記インタフェースモジュールは、前記問い合わせ要求を前記問い合わせモジュールに送信するようにさらに構成され、
    前記問い合わせモジュールは、前記マーカー列および前記問い合わせ条件に従って前記1つより多くのデータ列を問い合わせして、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得し、前記問い合わせ結果を前記インタフェースモジュールに送信するように構成され、
    前記インタフェースモジュールは、前記問い合わせモジュールによって送信される問い合わせ結果を受信し、前記問い合わせ結果を前記アプリケーションプログラムに送信するようにさらに構成される、請求項12に記載の処理デバイス。
  18. 前記問い合わせモジュールは、第1の生成ユニット、第2の生成ユニット、および獲得ユニットを含み、
    前記第1の生成ユニットは、前記問い合わせ条件に従って前記問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するように構成され、前記関与するデータ列内のある行が前記問い合わせ条件を満たすならば、前記条件付きビットマップ内の対応する行は有効な値が割り当てられ、前記関与するデータ列内のある行が前記問い合わせ条件を満たさないならば、前記条件付きビットマップ内の対応する行は無効な値が割り当てられ、
    前記第2の生成ユニットは、前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するように構成され、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効であり、
    前記獲得ユニットは、前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される、請求項17に記載の処理デバイス。
  19. 前記第2の生成ユニットは、具体的には、前記マーカー列がビットマップであるとき、前記マーカー列および前記条件付きビットマップにAND演算を行って前記問い合わせビットマップを生成するように構成され、前記マーカー列内のマーカービットの値、前記条件付きビットマップ内の各行の値、および前記問い合わせビットマップ内の各行の値は、0または1である、請求項18に記載の処理デバイス。
  20. 前記問い合わせモジュールは判定ユニットをさらに含み、
    前記判定ユニットは、トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在すると判定するように構成され、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記判定ユニットは、一時記憶領域内に前記マーカー列を記憶し、前記記憶されたマーカー列を前記問い合わせ要求のプライベート・マーカー列として使用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更に従って前記プライベート・マーカー列を更新するように構成され、それによって、前記更新されたプライベート・マーカー列内の変更されたマーカービットの値は、前記トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、
    前記第2の生成ユニットは、具体的には、前記更新されたプライベート・マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するように構成され、前記更新されたプライベート・マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記更新されたプライベート・マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効であり、
    前記獲得ユニットは、具体的には、前記問い合わせビットマップに従って、前記問い合わせ条件および前記更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される、請求項18に記載の処理デバイス。
  21. 前記問い合わせモジュールは判定ユニットをさらに含み、
    前記判定ユニットは、トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在しないと判定するようにさらに構成され、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記判定ユニットは、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または前記一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号および前記マーカー列を前記一時記憶領域内に記憶し、前記一時記憶領域内に記憶されたマーカー列を他の共有されたマーカー列として使用し、前記他の共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を確立し、または前記記憶された共有されたマーカー列のバージョン番号が前記テーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、前記記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を確立するようにさらに構成され、
    前記第2の生成ユニットは、具体的には、前記一時記憶領域において、前記他のまたは記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応に従って、前記問い合わせ要求に対応する共有されたマーカー列を判定し、前記条件付きビットマップおよび前記問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するように構成され、前記問い合わせ要求に対応する共有されたマーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効であり、
    前記獲得ユニットは、具体的には、前記問い合わせビットマップに従って、前記問い合わせ条件および前記問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するように構成される、請求項18に記載の処理デバイス。
  22. 列指向データベース処理方法であって、前記列指向データベースはマーカー列および1つより多くのデータ列を含み、前記データ列は列記憶の形態で特定のデータを記憶するために使用され、前記マーカー列内の各行のマーカービットの値は前記マーカービットと同じ行内に位置するデータの有効性を示すために使用され、前記方法は、
    アプリケーションプログラムによって送信される問い合わせ要求を受信するステップであって、前記問い合わせ要求は問い合わせ条件を含む、ステップと、
    前記マーカー列および前記問い合わせ条件に従って前記1つより多くのデータ列を問い合わせして、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップと、
    前記問い合わせ結果を前記アプリケーションプログラムに送信するステップと、
    を含む、方法。
  23. 前記マーカー列および前記問い合わせ条件に従って前記1つより多くのデータ列を問い合わせして、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップは、具体的には、
    前記問い合わせ条件に従って、前記問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するステップであって、前記関与するデータ列内のある行が前記問い合わせ条件を満たすならば、前記条件付きビットマップ内の対応する行は有効な値が割り当てられ、前記関与するデータ列内のある行が前記問い合わせ条件を満たさないならば、前記条件付きビットマップ内の対応する行は無効な値が割り当てられる、ステップと、
    前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、
    前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップと、
    を含む、請求項22に記載の方法。
  24. 前記マーカー列はビットマップであり、前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップは、具体的には、
    前記マーカー列および前記条件付きビットマップにAND演算を行って前記問い合わせビットマップを生成するステップを含み、前記マーカー列内のマーカービットの値、前記条件付きビットマップ内の各行の値、および前記問い合わせビットマップ内の各行の値は、0または1である、請求項23に記載の方法。
  25. 前記問い合わせ条件に従って、前記問い合わせ条件において関与するデータ列を走査する前に、前記方法は、
    トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在すると判定することをさらに含み、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記方法は、一時記憶領域内に前記マーカー列を記憶し、前記記憶されたマーカー列を前記問い合わせ要求のプライベート・マーカー列として使用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更に従って前記プライベート・マーカー列を更新することをさらに含み、それによって、前記更新されたプライベート・マーカー列内の変更されたマーカービットの値は、前記トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、
    前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、
    前記更新されたプライベート・マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記更新されたプライベート・マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記更新されたプライベート・マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである、請求項23に記載の方法。
  26. 前記問い合わせ条件に従って、前記問い合わせ条件において関与するデータ列を走査する前に、前記方法は、
    トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在しないと判定することをさらに含み、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記方法は、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または前記一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号および前記マーカー列を前記一時記憶領域内に記憶し、前記一時記憶領域内に記憶されたマーカー列を他の共有されたマーカー列として使用し、前記他の共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を設定し、または前記記憶された共有されたマーカー列のバージョン番号が前記テーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、前記記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を設定することをさらに含み、
    前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、
    前記一時記憶領域において、前記他のまたは記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応に従って、前記問い合わせ要求に対応する共有されたマーカー列を判定し、前記条件付きビットマップおよび前記問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するステップであって、前記問い合わせ要求に対応する共有されたマーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである、請求項23に記載の方法。
  27. マーカー列をコピーする前に、前記マーカー列に排他的ロックを付加するステップをさらに含み、マーカー列をコピーした後に、前記マーカー列について前記排他的ロックを解放するステップをさらに含む、請求項25に記載の方法。
  28. 前記方法は、
    トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するステップであって、前記変更要求は変更条件を含む、ステップと、
    前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するステップと、
    前記トランザクションがサブミットされるとき前記マーカー列に行われるべき前記記録された変更に従って、前記トランザクションがサブミットされるとき、前記マーカー列に、対応する変更を行い、それによって、前記変更されたマーカー列内の各行のマーカービットの値は、前記変更処理の後に前記マーカービットと同じ行内に位置するデータの有効性を示す、ステップと、
    前記アプリケーションプログラムに変更応答を送信するステップと、
    をさらに含む、請求項22に記載の方法。
  29. 前記変更要求は具体的には更新要求であり、前記変更条件は具体的には更新条件であり、
    前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するステップは、具体的には、
    前記1つより多くのデータ列において前記更新条件を満たすデータについて問い合わせするステップであって、前記更新条件を満たすデータが位置する行のマーカービットの値は有効である、ステップと、
    前記1つより多くのデータ列および前記マーカー列に新しい行を追加するステップであって、新しい行の数量は前記更新条件において要求される更新されるべき行の数量と同じである、ステップと、
    前記1つより多くのデータ列内の前記更新条件を満たすデータが位置する行内のデータを前記新しい行にコピーし、前記新しい行のマーカービットの値を無効に設定するステップと、
    前記更新条件に従って前記新しい行内の更新されるべきデータを変更するステップと、
    前記トランザクションがサブミットされるときに前記更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに前記新しい行のマーカービットの値が有効に変更される必要があること、を記録するステップと、
    を含む、請求項28に記載の方法。
  30. 前記列指向データベースは行番号列をさらに含み、各行の行番号が前記行番号列内に記憶され、
    前記方法は、前記新しい行の行番号を、前記更新条件を満たすデータが位置する行の行番号として設定するステップをさらに含む、請求項28に記載の方法。
  31. 前記変更要求は具体的には挿入要求であり、前記変更条件は具体的には挿入条件であり、
    前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するステップは、具体的には、
    前記挿入条件に従って前記1つより多くのデータ列および前記マーカー列に新しい行を追加するステップであって、新しい行の数量は前記挿入条件において要求される挿入されるべき行の数量と同じである、ステップと、データを前記新しい行に追加し、前記新しい行のマーカービットを無効に設定するステップと、
    前記トランザクションがサブミットされるときに前記新しい行のマーカービットの値が有効に変更される必要があること、を記録するステップと、
    を含む、請求項28に記載の方法。
  32. 列指向データベース処理方法であって、前記列指向データベースはマーカー列および1つより多くのデータ列を含み、前記データ列は列記憶の形態で特定のデータを記憶するために使用され、前記マーカー列内の各行のマーカービットの値は前記マーカービットと同じ行内に位置するデータの有効性を示すために使用され、前記方法は、
    トランザクションにおいて、アプリケーションプログラムによって送信される変更要求を受信するステップであって、前記変更要求は変更条件を含む、ステップと、
    前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するステップと、
    前記トランザクションがサブミットされるとき前記マーカー列に行われるべき前記記録された変更に従って、前記トランザクションがサブミットされるとき、前記マーカー列に、対応する変更を行い、それによって、前記変更されたマーカー列内の各行のマーカービットの値は、前記変更処理の後に前記マーカービットと同じ行内に位置するデータの有効性を示す、ステップと、
    を含む、方法。
  33. 前記変更要求は具体的には更新要求であり、前記変更条件は具体的には更新条件であり、
    前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するステップは、具体的には、
    前記1つより多くのデータ列において前記更新条件を満たすデータについて問い合わせするステップであって、前記更新条件を満たすデータが位置する行のマーカービットの値は有効である、ステップと、
    前記1つより多くのデータ列および前記マーカー列に新しい行を追加するステップであって、新しい行の数量は前記更新条件において要求される更新されるべき行の数量と同じである、ステップと、
    前記1つより多くのデータ列内の前記更新条件を満たすデータが位置する行内のデータを前記新しい行にコピーし、前記新しい行のマーカービットの値を無効に設定するステップと、
    前記更新条件に従って前記新しい行内の更新されるべきデータを変更するステップと、
    前記トランザクションがサブミットされるときに前記更新条件を満たすデータが位置する行のマーカービットの値が無効に変更される必要があるとともに前記新しい行のマーカービットの値が有効に変更される必要があること、を記録するステップと、
    を含む、請求項32に記載の方法。
  34. 前記列指向データベースは行番号列をさらに含み、各行の行番号が前記行番号列内に記憶され、
    前記方法は、前記新しい行の行番号を、前記更新条件を満たすデータが位置する行の行番号として設定するステップをさらに含む、請求項33に記載の方法。
  35. 前記変更要求は具体的には挿入要求であり、前記変更条件は具体的には挿入条件であり、
    前記変更条件に従って前記マーカー列および前記1つより多くのデータ列に変更処理を適用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更を記録するステップは、具体的には、
    前記挿入条件に従って前記1つより多くのデータ列および前記マーカー列に新しい行を追加するステップであって、新しい行の数量は前記挿入条件において要求される挿入されるべき行の数量と同じである、ステップと、データを前記新しい行に追加し、前記新しい行のマーカービットを無効に設定するステップと、
    前記トランザクションがサブミットされるときに前記新しい行のマーカービットの値が有効に変更される必要があること、を記録するステップと、
    を含む、請求項32に記載の方法。
  36. 前記方法は、
    アプリケーションプログラムによって送信される問い合わせ要求を受信するステップであって、前記問い合わせ要求は問い合わせ条件を含む、ステップと、
    前記マーカー列および前記問い合わせ条件に従って前記1つより多くのデータ列を問い合わせして、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップと、
    前記問い合わせ結果を前記アプリケーションプログラムに送信するステップと、
    をさらに含む、請求項32に記載の方法。
  37. 前記マーカー列および前記問い合わせ条件に従って前記1つより多くのデータ列を問い合わせして、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップは、具体的には、
    前記問い合わせ条件に従って、前記問い合わせ条件において関与するデータ列を走査し、条件付きビットマップを生成するステップであって、前記関与するデータ列内のある行が前記問い合わせ条件を満たし、前記条件付きビットマップ内の対応する行は有効な値が割り当てられ、前記関与するデータ列内のある行が前記問い合わせ条件を満たさず、前記条件付きビットマップ内の対応する行は無効な値が割り当てられる、ステップと、
    前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、
    前記問い合わせビットマップに従って、前記問い合わせ条件を満たす問い合わせ結果を取得するステップと、
    を含む、請求項36に記載の方法。
  38. 前記マーカー列はビットマップであり、前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップは、具体的には、
    前記マーカー列および前記条件付きビットマップにAND演算を行って前記問い合わせビットマップを生成するステップを含み、前記マーカー列内のマーカービットの値、前記条件付きビットマップ内の各行の値、および前記問い合わせビットマップ内の各行の値は、0または1である、請求項37に記載の方法。
  39. 前記問い合わせ条件に従って、前記問い合わせ条件において関与するデータ列を走査する前に、前記方法は、
    トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在すると判定することをさらに含み、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、前記方法は、一時記憶領域内に前記マーカー列を記憶し、前記記憶されたマーカー列を前記問い合わせ要求のプライベート・マーカー列として使用し、前記トランザクションがサブミットされるとき前記マーカー列に行われるべき変更に従って前記プライベート・マーカー列を更新することをさらに含み、それによって、前記更新されたプライベート・マーカー列内の変更されたマーカービットの値は、前記トランザクションにおける現在のマーカービットに対応するデータの有効性を示し、
    前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、
    前記更新されたプライベート・マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記更新されたプライベート・マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記更新されたプライベート・マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記更新されたプライベート・マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである、請求項36から38に記載の方法。
  40. 前記問い合わせ条件に従って、前記問い合わせ条件において関与するデータ列を走査する前に、
    トランザクションがサブミットされるとき前記マーカー列に行われるべき変更が存在しないと判定することをさらに含み、前記トランザクションは前記問い合わせ要求が位置するトランザクションであり、一時記憶領域内に共有されたマーカー列が記憶されていないとき、または前記一時記憶領域内に記憶されている共有されたマーカー列のバージョン番号がテーブルヘッダ内のマーカー列のバージョン番号と異なるとき、データ記憶領域内にあるマーカー列のバージョン番号および前記マーカー列を前記一時記憶領域内に記憶し、前記一時記憶領域内に記憶されたマーカー列を他の共有されたマーカー列として使用し、前記他の共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を設定し、または前記記憶された共有されたマーカー列のバージョン番号が前記テーブルヘッダ内のマーカー列のバージョン番号と同じであるとき、前記記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応を設定することをさらに含み、
    前記マーカー列および前記条件付きビットマップに従って問い合わせビットマップを生成するステップであって、前記マーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記マーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記マーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとは、具体的には、
    前記一時記憶領域において、前記他のまたは記憶された共有されたマーカー列のバージョン番号と前記問い合わせ要求の間の対応に従って、前記問い合わせ要求に対応する共有されたマーカー列を判定し、前記条件付きビットマップおよび前記問い合わせ要求に対応する共有されたマーカー列に従って問い合わせビットマップを生成するステップであって、前記問い合わせ要求に対応する共有されたマーカー列および前記条件付きビットマップの両方における同じ行の値が有効な値であるとき、前記問い合わせビットマップ内の同じ行の値は有効であり、または前記問い合わせ要求に対応する共有されたマーカー列内の同じ行の値および前記条件付きビットマップ内の同じ行の値が両方とも有効な値であるわけではないとき、前記問い合わせビットマップ内の同じ行の値は無効である、ステップと、前記問い合わせビットマップに従って、前記問い合わせ条件および前記問い合わせ要求に対応するマーカー列内の問い合わせ結果のマーカービットが有効であるという要求条件の両方を満たす問い合わせ結果を取得するステップとである、請求項36から38に記載の方法。
  41. 前記マーカー列をコピーする前に、前記マーカー列に排他的ロックを付加するステップをさらに含み、
    前記マーカー列をコピーした後に、前記マーカー列について前記排他的ロックを解放するステップをさらに含む、ことをさらに含む、請求項39または40に記載の方法。
JP2016529436A 2013-12-06 2014-11-05 列指向データベース処理方法および処理デバイス Active JP6244592B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310656482.1 2013-12-06
CN201310656482.1A CN103678556B (zh) 2013-12-06 2013-12-06 列式数据库处理的方法和处理设备
PCT/CN2014/090337 WO2015081780A1 (zh) 2013-12-06 2014-11-05 列式数据库处理的方法和处理设备

Publications (2)

Publication Number Publication Date
JP2016539417A true JP2016539417A (ja) 2016-12-15
JP6244592B2 JP6244592B2 (ja) 2017-12-13

Family

ID=50316101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016529436A Active JP6244592B2 (ja) 2013-12-06 2014-11-05 列指向データベース処理方法および処理デバイス

Country Status (5)

Country Link
US (1) US10303691B2 (ja)
EP (1) EP3007085A4 (ja)
JP (1) JP6244592B2 (ja)
CN (1) CN103678556B (ja)
WO (1) WO2015081780A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678556B (zh) * 2013-12-06 2017-10-10 华为技术有限公司 列式数据库处理的方法和处理设备
CN103970870A (zh) * 2014-05-12 2014-08-06 华为技术有限公司 数据库查询方法和服务器
CN103995676A (zh) * 2014-06-16 2014-08-20 国家电网公司 数据存储方法及装置和数据处理方法及装置
CN104216955B (zh) * 2014-08-20 2017-12-26 百度在线网络技术(北京)有限公司 一种操作数据及管理事务的方法、装置及分布式系统
CN104572933B (zh) * 2014-12-30 2018-02-23 北京像素软件科技股份有限公司 一种处理数据的方法
CN106682042B (zh) * 2015-11-11 2019-11-22 杭州海康威视数字技术股份有限公司 一种关系数据缓存及查询方法及装置
CN105589969A (zh) * 2015-12-23 2016-05-18 浙江大华技术股份有限公司 一种数据处理方法及装置
WO2017107130A1 (zh) * 2015-12-24 2017-06-29 华为技术有限公司 数据查询方法和数据库系统
US10268636B2 (en) * 2016-09-16 2019-04-23 Oracle International Corporation Column level invalidation for in-memory database
CN106844541B (zh) * 2016-12-30 2020-05-29 晶赞广告(上海)有限公司 一种联机分析处理方法及装置
CN109947980A (zh) * 2017-10-30 2019-06-28 北京国双科技有限公司 一种视频收视数据的统计方法及装置
CN108563923B (zh) * 2017-12-05 2020-08-18 华南理工大学 一种基因变异数据分布式存储方法及系统
CN108389027B (zh) * 2017-12-30 2020-06-16 北京航天智造科技发展有限公司 一种面向工业的app应用开发系统
CN108345648B (zh) * 2018-01-18 2021-01-26 奇安信科技集团股份有限公司 一种基于列式存储的获取日志信息的方法及装置
CN108958894B (zh) * 2018-06-14 2022-05-10 创新先进技术有限公司 一种分布式事务处理方法、系统、事务管理器及终端设备
US11328081B2 (en) * 2018-10-16 2022-05-10 Sap Se Consent-based data privacy management system
CN109471893B (zh) * 2018-10-24 2022-05-20 上海连尚网络科技有限公司 网络数据的查询方法、设备及计算机可读存储介质
CN109782658A (zh) * 2018-12-27 2019-05-21 北京航天智造科技发展有限公司 工业现场远程监控方法及装置
US10909101B2 (en) 2019-04-19 2021-02-02 Advanced New Technologies Co., Ltd. Updating and querying a bitmap index
CN110059090B (zh) * 2019-04-19 2020-11-03 创新先进技术有限公司 一种位图索引的写入/转储/合并/查询方法和装置
CN112948413A (zh) * 2019-12-10 2021-06-11 阿里巴巴集团控股有限公司 数据处理方法、装置、设备及存储介质
WO2021133982A1 (en) * 2019-12-24 2021-07-01 Consilient Labs Inc. Episodic memory stores, data ingestion and query systems for same, including examples of autonomous smart agents
US11386089B2 (en) * 2020-01-13 2022-07-12 The Toronto-Dominion Bank Scan optimization of column oriented storage
CN113282578B (zh) * 2020-02-20 2024-07-09 腾讯科技(深圳)有限公司 消息处理方法、装置、消息处理设备及存储介质
US11914589B2 (en) * 2020-02-28 2024-02-27 Sap Se Efficient computation of order by, order by with limit, min, and max in column-oriented databases
CN111552715B (zh) * 2020-05-06 2023-11-17 北京易数科技有限公司 用户查询方法和装置
CN111859445B (zh) * 2020-06-14 2022-08-02 苏州浪潮智能科技有限公司 一种基于k-db数据库的数据安全实现方法及系统
CN112214521A (zh) * 2020-11-20 2021-01-12 深圳前海微众银行股份有限公司 规则查询方法、装置、设备及计算机存储介质
CN115827653B (zh) * 2022-11-25 2023-09-05 深圳计算科学研究院 一种用于htap和海量数据的纯列式更新方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02501604A (ja) * 1986-08-22 1990-05-31 コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼイション 連想記憶メモリシステム
JPH09305622A (ja) * 1996-05-13 1997-11-28 Hitachi Ltd 文書検索機能を有するデータベース管理方法およびシステム
JP2000020385A (ja) * 1998-07-07 2000-01-21 Hitachi Ltd データ検索システムにおけるデータキャッシュ方法
US20070112736A1 (en) * 2005-11-15 2007-05-17 Russell Okamoto Multi-query optimization
JP2007531115A (ja) * 2004-03-26 2007-11-01 オラクル インターナショナル コーポレーション 永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0321493A4 (en) 1986-08-22 1991-11-21 Commonwealth Scientific And Industrial Research Organisation A content-addressable memory system
US5794229A (en) * 1993-04-16 1998-08-11 Sybase, Inc. Database system with methodology for storing a database table by vertically partitioning all columns of the table
US6009432A (en) * 1998-07-08 1999-12-28 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
JP2006508434A (ja) * 2002-11-15 2006-03-09 フォン・シュヴェーバー,エリック 情報サーベイのための方法及び装置
US9626421B2 (en) * 2007-09-21 2017-04-18 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh ETL-less zero-redundancy system and method for reporting OLTP data
CN101727465B (zh) 2008-11-03 2011-12-21 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
US8214352B2 (en) * 2008-11-26 2012-07-03 Hewlett-Packard Development Company Modular query optimizer
US10152504B2 (en) * 2009-03-11 2018-12-11 Actian Netherlands B.V. Column-store database architecture utilizing positional delta tree update system and methods
US8626770B2 (en) * 2010-05-03 2014-01-07 International Business Machines Corporation Iceberg query evaluation implementing a compressed bitmap index
US8676834B2 (en) * 2011-02-16 2014-03-18 International Business Machines Corporation Set-level comparisons in dynamically formed groups
US20130198168A1 (en) * 2011-08-01 2013-08-01 Wei Huang Data storage combining row-oriented and column-oriented tables
US8660985B2 (en) * 2012-04-11 2014-02-25 Renmin University Of China Multi-dimensional OLAP query processing method oriented to column store data warehouse
CN102682108B (zh) * 2012-05-08 2015-02-18 同方知网数字出版技术股份有限公司 一种行列混合的数据库存储方法
CN102890721B (zh) * 2012-10-16 2016-03-30 苏州迈科网络安全技术股份有限公司 基于列存储技术的数据库建立方法及系统
CN103324765B (zh) * 2013-07-19 2016-08-17 西安电子科技大学 一种基于列存储的多核并行数据查询优化方法
CN103678556B (zh) * 2013-12-06 2017-10-10 华为技术有限公司 列式数据库处理的方法和处理设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02501604A (ja) * 1986-08-22 1990-05-31 コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼイション 連想記憶メモリシステム
JPH09305622A (ja) * 1996-05-13 1997-11-28 Hitachi Ltd 文書検索機能を有するデータベース管理方法およびシステム
JP2000020385A (ja) * 1998-07-07 2000-01-21 Hitachi Ltd データ検索システムにおけるデータキャッシュ方法
JP2007531115A (ja) * 2004-03-26 2007-11-01 オラクル インターナショナル コーポレーション 永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム
US20070112736A1 (en) * 2005-11-15 2007-05-17 Russell Okamoto Multi-query optimization

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
イーデルステイン ハーブ: "テクニカルフォーラムfrom U.S.A.", 日経コンピュータ, JPN6017006567, 5 February 1996 (1996-02-05), JP, pages 139 - 144, ISSN: 0003594777 *
吉田琢也: "検索専用の高速DBソフト登場意思決定支援システムに威力", 日経コンピュータ, vol. 第396号, JPN6008021332, 22 July 1996 (1996-07-22), JP, pages 105 - 108, ISSN: 0003594776 *
谷川 耕一: "Orfacle7.3の機能強化ポイント", ネットワークコンピューティング, vol. 第8巻,第7号, JPN6017025011, 1 July 1996 (1996-07-01), JP, pages 73 - 80, ISSN: 0003594779 *
高橋 秀和: "Part4 大規模化 スケーラビリティでRDBに一日の長", NIKKEI BYTE, vol. 第251号, JPN6009027163, 22 March 2004 (2004-03-22), pages 38 - 43, ISSN: 0003594780 *
鵜木 昌行: "Sybase IQ「独自データ構造による、データウエアハウスへのアプローチ」", 電子情報通信学会技術研究報告 VOL.97 NO.415, vol. 第97巻 第415号, JPN6010016891, 2 December 1997 (1997-12-02), JP, pages 51 - 56, ISSN: 0003594778 *

Also Published As

Publication number Publication date
WO2015081780A1 (zh) 2015-06-11
US10303691B2 (en) 2019-05-28
EP3007085A1 (en) 2016-04-13
JP6244592B2 (ja) 2017-12-13
EP3007085A4 (en) 2016-09-14
CN103678556B (zh) 2017-10-10
CN103678556A (zh) 2014-03-26
US20160283558A1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
JP6244592B2 (ja) 列指向データベース処理方法および処理デバイス
TWI262406B (en) System, method and program storage device for dynamic caching of data based on queries performed by a local application
CN106462592B (zh) 优化对索引的多版本支持的系统和方法
US20200117733A1 (en) Blockchain integration layer
EP3079078B1 (en) Multi-version concurrency control method in database, and database system
US9430539B2 (en) Universal data storage system that maintains data across one or more specialized data stores
US8185546B2 (en) Enhanced control to users to populate a cache in a database system
US20120203745A1 (en) System and method for range search over distributive storage systems
JP2005532615A (ja) データ項目の使用可能バージョンの提供
CN105740383A (zh) 一种大数据平台下数据库与缓存的数据一致性方法及系统
WO2020041950A1 (zh) 一种基于b+树索引的数据更新方法、装置及存储装置
CN113495872A (zh) 分布式数据库中的事务处理方法及系统
CN106354732A (zh) 一种支持并发协同的离线数据版本冲突解决方法
US11514074B2 (en) Method and system for optimizing data replication for large scale archives
CN114185991A (zh) 基于分布式数据库实现数据同步的方法及相关装置
CN111639087B (zh) 数据库中数据更新方法、装置和电子设备
CN110502535B (zh) 数据访问方法、装置、设备和存储介质
WO2020192663A1 (zh) 一种数据管理方法及相关设备
WO2012106922A1 (zh) 主题属性信息生成方法及装置
CN115374133A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
JP6834715B2 (ja) 更新処理プログラム、装置、及び方法
US11256679B2 (en) Systems and methods for storing object state on hash chains
CN112527900A (zh) 一种数据库读多副本一致性的方法、装置、设备及介质
AU2022203732B2 (en) System and method for reference validation of spreadsheets
US11822485B1 (en) Systems and methods for coupled cache management

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171025

R150 Certificate of patent or registration of utility model

Ref document number: 6244592

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