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