(57)【要約】  本開示の実施形態はデータベース処理方法、データベース処理機器、及び電子装置を提供する。データベース処理方法は、トランザクション待ち行列に複数のトランザクションを提供することであって、複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、トランザクション待ち行列内のトランザクションの順序に従って複数のトランザクションに対応するデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及びトランザクション内のデータのデータ行に割り当てられる自動インクリメントＩＤに従ってデータベース内にデータを書き込むことを含み得る。
2019537773.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション待ち行列に複数のトランザクションを提供することであって、前記複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、
前記トランザクション待ち行列内の前記トランザクションの順序に従って前記複数のトランザクションに対応する前記データのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及び
前記複数のトランザクションに対応する前記データの前記データ行に割り当てられる前記自動インクリメントＩＤに従って前記データベース内に前記データを書き込むこと
を含む、データベース処理方法。
【請求項２】
前記トランザクション待ち行列内の前のトランザクションのデータ行ごとの自動インクリメントＩＤが、前記トランザクション待ち行列内の後のトランザクションのデータ行ごとの自動インクリメントＩＤ未満であり、
１つのトランザクションが前記データの複数のデータ行を含む場合、前記トランザクション内の前のデータ行の前記自動インクリメントＩＤは後のデータ行の前記自動インクリメントＩＤ未満である、
請求項１に記載のデータベース処理方法。
【請求項３】
前記データベース内に前記データを書き込むことが、
前記トランザクション待ち行列内の前記複数のトランザクションに対応するログデータをログ内に書き込むことであって、前記ログデータは前記対応する複数のトランザクション内の前記データ行の前記自動インクリメントＩＤを含む、書き込むこと、及び
前記ログ内の前記ログデータに対応する前記複数のトランザクションを提出し、前記複数のトランザクション内の前記データの前記データ行に、前記データの前記データ行の前記自動インクリメントＩＤを割り当てながら、前記データベース内に前記データを書き込むこと
を更に含む、請求項１又は２に記載のデータベース処理方法。
【請求項４】
前記データベースが複数のパーティションを含み、前記複数のパーティションの各パーティションは他のパーティションの自動インクリメントＩＤから独立した自動インクリメントＩＤを保ち、
前記データベース処理方法が、
前記複数のトランザクションが属するパーティションに対応するトランザクション待ち行列に前記複数のトランザクションを提供すること
を更に含む、請求項１乃至３の何れか一項に記載のデータベース処理方法。
【請求項５】
自動インクリメント識別情報を生成することが、
前記トランザクション待ち行列内のトランザクションごとに、システム時間及び前記トランザクション内に含まれるデータ行の数に従って前記トランザクション内の前記データの前記データ行の自動インクリメントＩＤのバッチを生成すること
を更に含む、請求項１乃至４の何れか一項に記載のデータベース処理方法。
【請求項６】
前記トランザクション待ち行列内の各トランザクション内の前記データ行について、前記生成される自動インクリメントＩＤの範囲が、１から前記トランザクション内に含まれる前記データ行の数に、最後に生成された前記自動インクリメントＩＤの値及びシステム時間の２つの数値のうちの大きい方を加えた数値である、
請求項５に記載のデータベース処理方法。
【請求項７】
トランザクション待ち行列に複数のトランザクションを提供するように構成されるカプセル化モジュールであって、前記複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、カプセル化モジュールと、
前記トランザクション待ち行列内の前記トランザクションの順序に従って前記複数のトランザクションに対応する前記データのデータ行の自動インクリメント識別情報（ＩＤ）を生成するように構成される生成モジュールと、
前記複数のトランザクションに対応する前記データの前記データ行に割り当てられる前記自動インクリメントＩＤに従って前記データベース内に前記データを書き込むように構成される書込みモジュールと
を含む、データベース処理機器。
【請求項８】
前記トランザクション待ち行列内の前のトランザクションのデータ行ごとの自動インクリメントＩＤが、前記トランザクション待ち行列内の後のトランザクションの前記データのデータ行ごとの自動インクリメントＩＤ未満であり、
１つのトランザクションが前記データの複数のデータ行を含む場合、前記トランザクション内の前のデータ行の前記自動インクリメントＩＤは後のデータ行の前記自動インクリメントＩＤ未満である、
請求項７に記載のデータベース処理機器。
【請求項９】
前記書込みモジュールが、
前記トランザクション待ち行列内の前記複数のトランザクションに対応するログデータをログ内に書き込むように構成されるログ書込みユニットであって、前記ログデータは前記対応する複数のトランザクション内の前記データの前記データ行の前記自動インクリメントＩＤを含む、ログ書込みユニットと、
前記ログ内の前記ログデータに対応する前記複数のトランザクションを提出し、前記複数のトランザクション内の前記データの前記データ行に、前記データの前記データ行の前記自動インクリメントＩＤを割り当てながら、前記データベース内に前記データを書き込むように構成されるデータベース書込みユニットと
を更に含む、請求項７又は８に記載のデータベース処理機器。
【請求項１０】
前記データベースが複数のパーティションを含み、前記複数のパーティションの各パーティションは他のパーティションの自動インクリメントＩＤから独立した自動インクリメントＩＤを保ち、
前記カプセル化モジュールが、前記複数のトランザクションの前記トランザクションが属するパーティションに対応するトランザクション待ち行列内に前記複数のトランザクションを提供するように更に構成される、
請求項７乃至９の何れか一項に記載のデータベース処理機器。
【請求項１１】
前記生成モジュールが、
前記トランザクション待ち行列内のトランザクションごとに、システム時間及び前記トランザクション内に含まれるデータ行の数に従って前記トランザクション内の前記データの前記データ行の自動インクリメントＩＤのバッチを生成する
ように更に構成される、請求項７乃至１０の何れか一項に記載のデータベース処理機器。
【請求項１２】
前記トランザクション待ち行列内の各トランザクション内の前記データ行について、前記生成モジュールによって生成される前記自動インクリメントＩＤの範囲が、１から前記トランザクション内に含まれる前記データ行の数に、最後に生成された前記自動インクリメントＩＤの値及びシステム時間の２つの数値のうちの大きい方を加えた数値である、請求項１１に記載のデータベース処理機器。
【請求項１３】
メモリ及びプロセッサを含む、データベースを処理するための電子装置であって、
前記メモリは命令を記憶するように構成され、前記プロセッサによって読み出され実行されるとき、前記命令は
トランザクション待ち行列に複数のトランザクションを提供することであって、前記複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、
前記トランザクション待ち行列内の前記トランザクションの順序に従って前記複数のトランザクションに対応する前記データのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及び
前記複数のトランザクションに対応する前記データの前記データ行に割り当てられる前記自動インクリメントＩＤに従って前記データベース内に前記データを書き込むこと
を前記プロセッサに実行させる、
電子装置。
【請求項１４】
データベース処理方法を電子装置に実行させるために前記電子装置の少なくとも１個のプロセッサによって実行可能な１組の命令を記憶する非一時的コンピュータ可読媒体であって、前記方法は
トランザクション待ち行列に複数のトランザクションを提供することであって、前記複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、
前記トランザクション待ち行列内の前記トランザクションの順序に従って前記複数のトランザクションに対応する前記データのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及び
前記複数のトランザクションに対応する前記データの前記データ行に割り当てられる前記自動インクリメントＩＤに従って前記データベース内に前記データを書き込むこと
を含む、非一時的コンピュータ可読媒体。
【請求項１５】
前記トランザクション待ち行列内の前のトランザクションのデータ行ごとの自動インクリメントＩＤが、前記トランザクション待ち行列内の後のトランザクションのデータ行ごとの自動インクリメントＩＤ未満であり、
１つのトランザクションが前記データの複数のデータ行を含む場合、前記トランザクション内の前のデータ行の前記自動インクリメントＩＤは後のデータ行の前記自動インクリメントＩＤ未満である、
請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記トランザクション待ち行列内の前記複数のトランザクションに対応するログデータをログ内に書き込むことであって、前記ログデータは前記対応する複数のトランザクション内の前記データ行の前記自動インクリメントＩＤを含む、書き込むこと、及び
前記ログ内の前記ログデータに対応する前記複数のトランザクションを提出し、前記複数のトランザクション内の前記データの前記データ行に、前記データの前記データ行の前記自動インクリメントＩＤを割り当てながら、前記データベース内に前記データを書き込むこと
を前記電子装置に更に実行させるために、前記電子装置の前記少なくとも１個のプロセッサによって前記１組の命令が実行可能である、請求項１４又は１５に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記データベースが複数のパーティションを含み、前記複数のパーティションの各パーティションは他のパーティションの自動インクリメントＩＤから独立した自動インクリメントＩＤを保ち、
前記複数のトランザクションの前記トランザクションが属するパーティションに対応するトランザクション待ち行列に前記複数のトランザクションを提供すること
を前記電子装置に更に実行させるために、前記電子装置の前記少なくとも１個のプロセッサによって前記１組の命令が実行可能である、
請求項１４乃至１６の何れか一項に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記トランザクション待ち行列内のトランザクションごとに、システム時間及び前記トランザクション内に含まれるデータ行の数に従って前記トランザクション内の前記データの前記データ行の自動インクリメントＩＤのバッチを生成すること
を前記電子装置に更に実行させるために、前記電子装置の前記少なくとも１個のプロセッサによって前記１組の命令が実行可能である、請求項１４乃至１７の何れか一項に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記トランザクション待ち行列内の各トランザクション内の前記データ行について、前記生成される自動インクリメントＩＤの範囲が、１から前記トランザクション内に含まれる前記データ行の数に、最後に生成された前記自動インクリメントＩＤの値及びシステム時間の２つの数値のうちの大きい方を加えた数値である、
請求項１８に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[1]  本開示は、その全体を本明細書に援用する、２０１６年１０月１０日に出願された中国特許出願第２０１６１０８８４６０５．０号の優先権の利益を主張する。
【背景技術】
【０００２】
背景
[2]  データベースはテーブル内の自動インクリメント列を概して実装することができる。自動インクリメント列内のデータは自動でインクリメントされ得る。例えば自動インクリメント列の最初の行では、最初の行に対応する値が１であり、２番目の行では、２番目の行に対応する値が２であり、その後も同様に続く。
【０００３】
[3]  一部のデータベース（例えばＭｙＳＱＬ）では自動インクリメント列が２種類のロック、つまりテーブルレベル自動インクリメントロック及び軽量自動インクリメントロックを含み得る。テーブルレベル自動インクリメントロックは操作前に使用し、操作完了後に解除することができる。テーブルレベル自動インクリメントロックはシリアルインクリメントを保証することができるが、同時処理性能に重く影響する可能性があり、実際には滅多に使用されない。軽量ロックは自動インクリメントが適用される場合にのみ機能し、高度な同時処理を可能にする。しかし、軽量ロックは自動インクリメントの「前の要求」（an earlier request）を最初に書き込めることを保証できず、従ってシリアル自動インクリメントの要件を満たすことができない。
【０００４】
[4]  従来の独立型データベース内で提供される基本キーに関する列の自動インクリメント関数は、テーブル内に新たなレコードが挿入されるとき一意の数字を生成することができ、その数字はインクリメンタル自然数である。列の自動インクリメント関数は基本キーの一意性の要件を満たすことができるが、シリアル自動インクリメントの要件を満たすことはできない。シリアル自動インクリメントが必要な場合、全ての操作がシリアル実行される必要がある。但し、シリアル自動インクリメントはデータベースの同時処理性能を下げ、高度に同時処理性がある応用においてデータベースが実質的に利用できなくなる可能性がある。
【０００５】
[5]  しかし、高度に同時処理性がある特定の応用では厳密なシリアル自動インクリメントが要求される一方、高度に同時処理性がある性能が保証される必要がある。例えば通信サービスでは、複数の利用者が利用者Ａにメッセージを送信している。つまり、データベースの同じパーティション内に複数のスレッドが同時にデータを挿入し、利用者Ａ向けの新たに到着するメッセージをバックグラウンドが継続的に読み出す。バックグラウンドがメッセージを失わないことを保証するために、自動インクリメント列関数が使用されない場合、利用者に送信されるメッセージが順番に従う（in serial）ことが必要である。上記のプロセスは複雑であり、プロセスの同時処理性能も良くない。データベース内で提供される自動インクリメント関数が使用される場合、２つの要件（例えばシリアル自動インクリメントを保証すること及び高度に同時処理性がある性能を保証すること）を同時に満たすことができない。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
[6]  本開示の実施形態はデータベース処理方法を提供する。データベース処理方法は、トランザクション待ち行列に複数のトランザクションを提供することであって、複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、トランザクション待ち行列内のトランザクションの順序に従って複数のトランザクションに対応するデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及び複数のトランザクションに対応するデータのデータ行に割り当てられる自動インクリメントＩＤに従ってデータベース内にデータを書き込むことを含み得る。
【０００７】
[7]  一部の実施形態では、トランザクション待ち行列内の前のトランザクションのデータのデータ行ごとの自動インクリメントＩＤが、トランザクション待ち行列内の後のトランザクションのデータのデータ行ごとの自動インクリメントＩＤ未満である。
【０００８】
[8]  １つのトランザクションがデータの複数のデータ行を含む場合、トランザクション内の前のデータ行の自動インクリメントＩＤは後のデータ行の自動インクリメントＩＤ未満である。
【０００９】
[9]  このデータベース処理方法は、トランザクション待ち行列内の複数のトランザクションに対応するログデータをログ内に書き込むことであって、ログデータは対応する複数のトランザクション内のデータのデータ行の自動インクリメントＩＤを含む、書き込むこと、及びログ内のログデータに対応する複数のトランザクションを提出し、複数のトランザクション内のデータのデータ行に、データのデータ行の自動インクリメントＩＤを割り当てながら、データベース内にデータを書き込むことを更に含み得る。
【００１０】
[10]  データベースは複数のパーティションを含むことができ、複数のパーティションの各パーティションは他のパーティションの自動インクリメントＩＤから独立した自動インクリメントＩＤを保つ。
【００１１】
[11]  このデータベース処理方法は、複数のトランザクションの当該トランザクションが属するパーティションに対応するトランザクション待ち行列に複数のトランザクションを提供することを更に含み得る。
【００１２】
[12]  任意選択的に、自動インクリメント識別情報を生成することが、トランザクション待ち行列内のトランザクションごとに、システム時間及びトランザクション内に含まれるデータ行の数に従ってトランザクション内のデータのデータ行の自動インクリメントＩＤのバッチを生成することを更に含み得る。
【００１３】
[13]  一部の実施形態では、トランザクション待ち行列内の各トランザクション内のデータ行について、生成される自動インクリメントＩＤの範囲が、１からトランザクション内に含まれるデータ行の数に、最後に生成された自動インクリメントＩＤの値及びシステム時間の２つの数値のうちの大きい方を加えた数値である。
【００１４】
[14]  本開示の実施形態はデータベース処理機器を更に提供する。データベース処理機器は以下を含み得る：
[15]  トランザクション待ち行列に複数のトランザクションを提供するように構成されるカプセル化モジュールであって、複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、カプセル化モジュール、
[16]  トランザクション待ち行列内のトランザクションの順序に従って複数のトランザクションに対応するデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成するように構成される生成モジュール、及び
[17]  複数のトランザクションに対応するデータのデータ行に割り当てられる自動インクリメントＩＤに従ってデータベース内にデータを書き込むように構成される書込みモジュール。
【００１５】
[18]  一部の実施形態では、トランザクション待ち行列内の前のトランザクションのデータのデータ行ごとの自動インクリメントＩＤが、トランザクション待ち行列内の後のトランザクションのデータのデータ行ごとの自動インクリメントＩＤ未満である。
【００１６】
[19]  １つのトランザクションがデータの複数のデータ行を含む場合、トランザクション内の前のデータ行の自動インクリメントＩＤは後のデータ行の自動インクリメントＩＤ未満である。
【００１７】
[20]  この書込みモジュールは以下を更に含み得る：
[21]  トランザクション待ち行列内の複数のトランザクションに対応するログデータをログ内に書き込むように構成されるログ書込みユニットであって、ログデータは対応する複数のトランザクション内のデータのデータ行の自動インクリメントＩＤを含む、ログ書込みユニット、及び
[22]  ログ内のログデータに対応する複数のトランザクションを提出し、複数のトランザクション内のデータのデータ行に、データのデータ行の自動インクリメントＩＤを割り当てながら、データベース内にデータを書き込むように構成されるデータベース書込みユニット。
【００１８】
[23]  データベースは複数のパーティションを含むことができ、複数のパーティションの各パーティションは他のパーティションの自動インクリメントＩＤから独立した自動インクリメントＩＤを保つ。
【００１９】
[24]  カプセル化モジュールは、複数のトランザクションの当該トランザクションが属するパーティションに対応するトランザクション待ち行列に複数のトランザクションを提供するように更に構成され得る。
【００２０】
[25]  任意選択的に、生成モジュールが、トランザクション待ち行列内のトランザクションごとに、システム時間及びトランザクション内に含まれるデータ行の数に従ってトランザクション内のデータのデータ行の自動インクリメントＩＤのバッチを生成するように更に構成され得る。
【００２１】
[26]  一部の実施形態では、トランザクション待ち行列内の各トランザクション内のデータ行について、生成される自動インクリメントＩＤの範囲が、１からトランザクション内に含まれるデータ行の数に、最後に生成された自動インクリメントＩＤの値及びシステム時間の２つの数値のうちの大きい方を加えた数値である。
【００２２】
[27]  メモリ及びプロセッサを含む、データベースを処理するための電子装置であって、
[28]  メモリはデータベースを処理するための命令を記憶するように構成され、プロセッサによって読み出され実行されるとき、その命令は
[29]  トランザクション待ち行列に複数のトランザクションを提供することであって、複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、トランザクション待ち行列内のトランザクションの順序に従って複数のトランザクションに対応するデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及び複数のトランザクションに対応するデータのデータ行に割り当てられる自動インクリメントＩＤに従ってデータベース内にデータを書き込むことをプロセッサに実行させる。
【図面の簡単な説明】
【００２３】
図面の簡単な説明
【図１Ａ】[30]本開示と一致する実施形態を実装するために使用可能な例示的コンピュータシステムを示すブロック図である。
【図１Ｂ】[30]本開示と一致する実施形態を実装するために使用可能な例示的コンピュータシステムを示すブロック図である。
【図２】[31]本開示の実施形態と一致するデータベース処理方法の流れ図である。
【図３】[32]本開示の実施形態と一致するトランザクションの処理の概略図である。
【図４】[33]本開示の実施形態と一致する書込要求の処理の流れ図である。
【図５】[34]本開示の実施形態と一致するデータベース処理機器の概略図である。
【発明を実施するための形態】
【００２４】
詳細な説明
[35]  添付図面及び以下の実施形態に関連して本開示の技術的解決策をより詳細に説明する。本開示は、厳密なシリアル自動インクリメントを保証することができ且つ高度な同時処理において処理性能を保証することができるデータベース処理方法、機器、及び電子装置を提供する。
【００２５】
[36]  本開示の実施形態は幾つかの利点を提供することができる。例えば本開示の実施形態は、自動インクリメントＩＤが位置する列を基本キー列が含む場合、データベース内の基本キー列の厳密なシリアル自動インクリメントを可能にする。データ行をそれ以上ロックする必要がなく、そのことは高度に同時処理性がある応用において性能を保証することができる。
【００２６】
[37]  一部の実施形態では、トランザクションがデータベース内に書き込まれる前にログ内に書き込まれる場合、生成される最大自動インクリメントＩＤはシステム障害時にログに従って単調増加し続けることができ、それによりその後生成される自動インクリメントＩＤが単調増加することを保証する。
【００２７】
[38]  一部の実施形態では、分散データベース内の異なるパーティションについて自動インクリメントＩＤ生成器及びログ書込待ち行列を提供することができ、その全てがパーティション内の基本キー列のシリアル自動インクリメントの実装を可能にすることができる。
【００２８】
[39]  一部の実施形態では、システム時間に従って生成される自動インクリメントＩＤに基づき、たとえシステム障害によってシステム時間のフォールバックが起きても、ログ先行書き込み（Write-Ahead-Logging）と連携して自動インクリメント列のシリアル自動インクリメントを依然として保証することができる。
【００２９】
[40]  本願の実施形態及び実施形態の様々な特徴は、競合がない場合は互いに組み合わせることができ、それらは全て本願の保護範囲に含まれると考えられる。加えて、流れ図の中では論理順序を示すが、図示の又は説明するステップは場合によっては本明細書の順序と異なる順序で実行することができる。
【００３０】
[41]  図１Ａ〜図１Ｂは、本明細書に記載の例示的システム及び方法を含む、本開示と一致する実施形態を実装するために使用可能な例示的コンピュータシステム１００を示すブロック図である。コンピュータシステム１００は、仮想マシンのメモリデータを修正するために使用することができる。コンピュータシステム１００内のコンポーネントの構成及び数は例示目的で示してある。本開示と一致して追加の構成、コンポーネントの数、又は他の修正を加えることができる。
【００３１】
[42]  図１Ａ〜図１Ｂに示すように、コンピュータシステム１００は命令を実行するための１個又は複数個の中央処理装置（ＣＰＵ）１２１を含み得る。ＣＰＵ１２１は、１つ又は複数のメモリ１２２及び／又は記憶装置１２８から受信される命令に応答し、かかる命令を処理する任意の論理回路を含み得る。ＣＰＵ１２１は、１つ又は複数のメモリ１２２、記憶装置１２８、及び／又はキャッシュ（例えばキャッシュ１４０）内に記憶される特定の命令セットを実行可能な単一の又は複数のマイクロプロセッサ、書換可能ゲートアレイ（ＦＰＧＡ）、又はデジタル信号プロセッサ（ＤＳＰ）を含み得る。
【００３２】
[43]  コンピュータシステム１００は、開示する実施形態と一致する操作を実行するためにＣＰＵ１２１によって使用されるデータ及び／又はソフトウェア命令を記憶するように構成される１つ又は複数のメモリ１２２、記憶装置１２８、及び／又はキャッシュ１４０を含み得る。例えばコンピュータシステム１００は、ＣＰＵ１２１によって実行されるとき、開示する実施形態と一致する機能及び／又は操作をＣＰＵ１２１に実行させる１つ又は複数のソフトウェアプログラムを記憶するように構成される１つ又は複数のメモリ１２２及び／又は記憶装置１２８を含み得る。例として、メモリ１２２及び／又は記憶装置１２８はＮＯＲフラッシュメモリデバイス、ＮＡＮＤフラッシュメモリデバイス、フレキシブルディスク、ハードディスク、読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、コンパクトディスク読取専用メモリ（ＣＤ  ＲＯＭ）、光磁気（ＭＯ）ドライブ、デジタル多用途ディスク読取専用メモリ（ＤＶＤ−ＲＯＭ）、デジタル多用途ディスクランダムアクセスメモリ（ＤＶＤ−ＲＡＭ）、半導体メモリ、テープドライブ、ＲＡＩＤ（redundant array of independent disks）アレイ、レジスタ、キャッシュ等の１つ又は複数の有形の及び／又は非一時的なコンピュータ可読媒体を含み得る。メモリ１２２及び／又は記憶装置１２８は、データを記憶することができる及び／又は記憶位置がＣＰＵ１２１によって直接アクセスされることを可能にする１つ又は複数のメモリチップを含み得る。一部の実施形態では、ＣＰＵがシステムバス１５０を介して１つ又は複数のメモリ１２２及び／又は記憶装置１２８と通信することができる。コンピュータシステム１００は、任意の数のメモリ１２２及び／又は記憶装置１２８を含むことができる。メモリ１２２及び／又は記憶装置１２８は遠隔設置することができ、コンピュータシステム１００は私設網及び／又は公衆網等のネットワークを介して他のメモリ１２２及び／又は記憶装置１２８にアクセス可能であり得る。１つ又は複数のメモリ１２２及び／又は記憶装置１２８はデータを記憶するように構成することができ、１つ又は複数のサーバ、バックエンドシステム、及び／又はクライアント装置から受信されるデータを記憶することができる。１つ又は複数のメモリ１２２及び／又は記憶装置１２８は、１つ又は複数のオペレーティングシステム、アプリケーションソフトウェアプログラム、及び／又は他のソフトウェアを記憶することもできる。
【００３３】
[44]  コンピュータシステム１００は、１個又は複数個のグラフィック処理ユニット（ＧＰＵ）１２５も含むことができる。ＧＰＵ１２５は、１つ又は複数の物理モニタ（例えば物理モニタ１２４）に出力するためにフレームバッファ（例えば図１Ｂに示すフレームバッファ２１６）内に記憶された画像を提供し及び／又はかかる画像の作成を加速するためにメモリ（例えばグラフィックメモリ１２６）を操作し変更することができる任意の種類の専用回路とすることができる。ＧＰＵは高度に並列な構造を有することができ、かかる構造はグラフィカルデータの大きいブロックの処理を並列に実行可能なアルゴリズムでＧＰＵをＣＰＵ１２１よりも効率的にする。更に、１個又は複数個のＧＰＵ１２５の機能を他の何らかの種類の専用処理ユニット又はコプロセッサ内のチップセット内に含めることもできる。
【００３４】
[45]  ＣＰＵ１２１はシステムインタフェース１５０に接続することができ、システムインタフェース１５０上で１つ又は複数のメモリ１２２及び／又は記憶装置１２８と接続することができる。ＣＰＵ１２１は、シリアル通信バス上で及び／又は二地点間通信を使用して１つ又は複数のメモリ１２２及び／又は記憶装置１２８と通信することもできる。同様に、ＧＰＵ１２５はシステムインタフェース１５０を使用して及び／又は他の種類のバスを使用して１つ又は複数のグラフィックメモリ１２６、メモリ１２２、及び／又は記憶装置１２８と通信することができる。ＣＰＵ１２１は、１つ又は複数のメモリ１２２内に記憶されるプログラミング命令を実行し、１つ又は複数のメモリ１２２内に記憶されるデータに対して操作を行い、及び／又はＣＰＵ１２１とＧＰＵ１２５との間の通信をブリッジするシステムインタフェース１５０を介してＧＰＵ１２５と通信することができる。一部の実施形態では、ＣＰＵ１２１、ＧＰＵ１２５、システムインタフェース１５０、又はその任意の組合せを単一の処理ユニットへと統合することができる。ＧＰＵ１２５は、１つ又は複数のメモリ１２２及び／又は１つ又は複数のグラフィックメモリ１２６内に記憶されるグラフィカルデータを操作するために、１つ又は複数のメモリ１２２内に記憶される特定の命令セットを実行可能であり得る。例えばＧＰＵ１２５は、１つ又は複数のグラフィックメモリ１２６内に記憶されるグラフィックスデータをレンダリングするために、ＣＰＵ１２１によって伝送される命令を受信し、その命令を処理することができる。グラフィックメモリ１２６は、ローカルメモリ、システムメモリ、オンチップメモリ、ハードディスク、及び／又は他の任意の種類のメモリ１２２若しくは記憶装置１２８を含む、ＧＰＵ１２５によってアクセス可能な任意のメモリとすることができる。ＧＰＵ１２５は、１つ又は複数のグラフィックメモリ１２６内に記憶されるグラフィカルデータを物理モニタ１２４上に表示可能にし得る。
【００３５】
[46]  コンピュータシステム１００は、データ及び情報を表示するための１つ又は複数の物理モニタ１２４も含み得る。物理モニタ１２４は、例えば１つ又は複数のブラウン管（ＣＲＴ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、発光ダイオード（ＬＥＤ）ディスプレイ、タッチスクリーン型ディスプレイ、プロジェクタディスプレイ（例えばスクリーンや面上に投影される像、ホログラフィー像等）、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、電界放出ディスプレイ（ＦＥＤ）、アクティブマトリクスディスプレイ、真空蛍光（ＶＦＲ）ディスプレイ、３次元（３−Ｄ）ディスプレイ、電子ペーパー（e-ink）ディスプレイ、マイクロディスプレイ、又は上記の種類のディスプレイの任意の組合せを含み得る１つ又は複数のディスプレイパネルを使用して実装することができる。
【００３６】
[47]  コンピュータシステム１００は、入出力（Ｉ／Ｏ）コントローラ１２３によって接続される１つ又は複数のＩ／Ｏ装置１３０を更に含むことができ、その両方がシステムインタフェース１５０を介して通信することができる。Ｉ／Ｏ装置１３０は、例えば１つ又は複数のキー、ボタン、キーボード、マウス、ジョイスティック、スタイラス、ジェスチャセンサ（例えばビデオカメラ）、及び／又は音声センサ（例えばマイクロフォン）を含み得る。キー、キーボード、及び／又はボタンは物理的及び／又は仮想的であり得る（例えばタッチスクリーンインタフェース上に設けられる）。Ｉ／Ｏ装置１３０は、クライアント装置の１つ又は複数のための記憶装置及び／又はインストレーション媒体も含み得る。
【００３７】
[48]  コンピュータシステム１００は、フロッピディスク（例えば３．５インチ、５．２５インチ、又はジップディスク）を受け入れるためのフロッピディスクドライブ、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒ／ＲＷ（読取／書換可能コンパクトディスク）ドライブ、ＤＶＤ−ＲＯＭドライブ、テープドライブ、ユニバーサルシリアルバス（ＵＳＢ）装置、ハードドライブ、及び／又はクライアントエージェント１２０又はその一部等のソフトウェア及びプログラムをインストールするのに適した他の任意の装置等、１つ又は複数のインストレーション装置１１６をサポートすることができる。インストレーション装置１１６は記憶装置１２８としても使用することができる。
【００３８】
[49]  コンピュータシステム１００は、これだけに限定されないが標準電話回線、ＬＡＮリンク又はＷＡＮリンク（例えば８０２．１１、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（例えば総合デジタル通信網（ＩＳＤＮ）、フレームリレー、非同期転送モード（ＡＴＭ））、無線接続、又は上記の何れか又は全ての何らかの組合せを含む様々な接続によってＰＡＮ、ＬＡＮ、ＭＡＮ、ＷＡＮ、及び／又はインターネット等のネットワークにインタフェースするための１つ又は複数のネットワークインタフェース１１８を更に含み得る。ネットワークインタフェース１１８は、組込みネットワークアダプタ、ネットワークインタフェースカード、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ）ネットワークカード、カードバスネットワークアダプタ、無線ネットワークアダプタ、ＵＳＢネットワークアダプタ、モデム、及び／又は任意の種類のネットワークにコンピュータシステム１００をインタフェースするのに適した他の任意の装置を含み得る。
【００３９】
[50]  図１Ｂに示すように、コンピュータシステム１００のＣＰＵ１２１は１つ又は複数のメモリポート１０３を介して１つ又は複数のメモリ１２２と直接通信することができ、同様に、ＧＰＵ１２５は１つ又は複数のグラフィックメモリ１２６と直接通信することができる。ＣＰＵ１２１は、バックサイドバスと呼ばれることもある１つ又は複数の二次バスを介してキャッシュ１４０と通信することもできる。一部の実施形態では、ＣＰＵ１２１がシステムインタフェース１５０を介してキャッシュ１４０と通信することができる。キャッシュ１４０はメモリ１２２よりも速い応答時間を有し得る。図１Ｂに示す実施形態等の一部の実施形態では、ＣＰＵ１２１が１つ又は複数のＩ／Ｏポートを介してＩ／Ｏ装置１３０と直接通信することができる。更なる実施形態では、Ｉ／Ｏ装置１３０が、システムインタフェース１５０とＵＳＢバス、アップルデスクトップバス、RS-232シリアル接続、小型コンピュータシステムインタフェース（ＳＣＳＩ）バス、ファイヤワイヤバス、イーサネット（登録商標）バス、ＡＴＭバス、高性能並列インタフェース（ＨＩＰＰＩ）バス、Ｓｕｐｅｒ  ＨＩＰＰＩバス、SerialPlusバス、ＳＣＩ／ＬＡＭＰバス、FibreChannelバス、及び／又はシリアル接続小型コンピュータシステムインタフェースバス等の１つ又は複数の外部通信バスとの間の１つ又は複数のブリッジ１７０を含み得る。
【００４０】
[51]  図１Ｂに示すように、ＧＰＵ１２５は１つ又は複数のグラフィックメモリ１２６、メモリ１２２、記憶装置１２８、及び／又はモニタ１２４と直接通信することもできる。ＧＰＵ１２５はシステムインタフェース１５０を介してＣＰＵ１２１及び／又は他の装置と通信することができる。１つ又は複数のグラフィックメモリ１２６は、１つ又は複数のフレームバッファ２１６も含み得る。フレームバッファ２１６は、グラフィカルデータの完全なフレームを含む１つ又は複数のグラフィックメモリ１２６の１つ又は複数のメモリバッファから１つ又は複数の物理モニタ（例えば物理モニタ１２４）を駆動するグラフィック出力装置であり得る。フレームバッファ２１６は、物理モニタ１２４上で表示される１つ又は複数の最終的なグラフィカルフレームを記憶することができる。
【００４１】
[52]  本開示の一態様はデータベース処理方法を対象とする。
【００４２】
[53]  テーブル内にデータを記憶することによってデータベース内にデータを書き込むことができ、そのため関連データを構造化フォーマットで保持することができる。テーブルは列及び行を含むことができる。テーブル１はデータを記憶するための例示的なテーブルである。
【００４３】
[54]  例えばテーブル１では、テーブルが６つの列と幾つかの行とを含む。最初の行の各列は、パーティションキー、自動インクリメントＩＤ、ソースユーザ、ターゲットユーザ、メッセージコンテンツ、及びメッセージタイプを含む同一列内のデータの性質を示す。
【００４４】
【表１】
2019537773.tif 000003
【００４５】
[55]  データはテーブルのパーティション内に記憶することができる。パーティションは、テーブル内にデータを記憶するための平衡負荷を有する基本スケジューリング単位を指す。パーティションにより、データ記憶域の水平拡張性を実現することができる。
【００４６】
[56]  パーティションキー（例えばテーブル１内の最初の列）は、パーティションキーが属するパーティションの値を示し得る。パーティションキーの範囲はパーティションに対して１対１の対応関係にある。例えばパーティションキー１〜１００は第１のパーティションに対応することができ、パーティションキー１０１〜２００は第２のパーティションに対応することができる。
【００４７】
[57]  パーティションキーはテーブル１の基本キーである。基本キーは１つ又は複数の列を含み得るテーブル内のデータ行ごとの一意の識別情報であり得る。基本キーのコンポーネントはテーブルの作成時に指定される必要がある。例えば基本キーは、基本キー内の各列の名前及びデータの種類並びに基本キー内の列の順序を含むことができる。
【００４８】
[58]  基本キー列は基本キーによって含まれる列とすることができる。
【００４９】
[59]  自動インクリメント識別情報（ＩＤ）は、自動インクリメントＩＤが列に割り当てられるとき、列の行ごとに自動でインクリメントされ得る値とすることができる。
【００５０】
[60]  従って、自らのコンテンツ（又は値）として自動インクリメントＩＤを有する列は自動インクリメント列である（例えばテーブル１の２番目の列）。データベースは１つ又は複数の自動インクリメント列を含み得る。自動インクリメント列は、データ行内のコンテンツの順序がテーブル内のコンテンツの書込み順序と一致することを保証することができる。一部の実施形態では自動インクリメントＩＤが基本キーでも良く、従って自動インクリメントＩＤに対応する列は基本キー列であり得る。
【００５１】
[61]  基本キー列が自動インクリメント列を含む場合、基本キー列も自動インクリメントであり得る。
【００５２】
[62]  テーブル１に示すように、最初の２列は基本キー列と見なすことができる。パーティションキーの列は列の順序内の最初の列であり、自動インクリメントＩＤの列は順序内の２番目の列である。自動インクリメントＩＤの列は行ごとにインクリメントする自動インクリメントＩＤを含み得る。例えば自動インクリメントＩＤ列の最初の行、２番目の行、及び３番目の行に「１０５」、「１０６」、及び「１０７」がそれぞれ割り当てられる。更に基本キー列として、パーティションキー列は行ごとにインクリメントする自動インクリメントＩＤを含むことができる。例えばパーティションキー列の最初の行、２番目の行、及び３番目の行に「８」、「９」、及び「１０」がそれぞれ割り当てられる。従って、テーブルの最初の行において（８、１０５）がその行の基本キーの役割を果たし得る。テーブル１内の基本キー列は自動インクリメントである。
【００５３】
[63]  テーブルの更新はトランザクションによって行われ得る。トランザクション（Ｔｘｎ）はデータベースシステムの実行プロセス中の論理単位である。例えばトランザクションはデータベース内の任意の変更を表し得る。トランザクションは、不可分性、一貫性、独立性、永続性等の特性を含み得る。
【００５４】
[64]  不可分性とは、トランザクションがデータベース内のデータを変えるとき、データに対する全ての変更が実行され得ること又は全く行われないことを指す。一貫性は、データベースがトランザクションの実行前後で一貫した状態になければならないことを指す。例えば、一貫性は、如何なるトランザクションもデータベースを或る有効な状態から別の有効な状態にすることを保証する。独立性は、トランザクションがデータを確認するときのデータの状態を指し、その状態は、別の同時のトランザクションが同データを修正する前の又は修正した後の状態でなければならず、トランザクションは中間状態においてデータを確認しない。例えば独立性は、トランザクションの同時実行がトランザクションを連続して、即ち順々に実行した場合に得られるシステム状態をもたらすことを保証する。永続性は、トランザクションの完了後にトランザクションがシステムに対して永続的効果を有し、たとえシステム障害があってもトランザクションが常に維持されることを指す。例えば永続性は、トランザクションが完遂されたらたとえ電力損失、クラッシュ、又はエラーが発生してもトランザクションの完遂がそのままであることを保証する。
【００５５】
[65]  同時に実行されるデータベーストランザクション（Ｔｘｎｓ）では、成功裏に提出される各トランザクションについて、その基本キー列が、前に成功裏に提出されている全てのトランザクションの基本キー列を上回る。従って基本キー列は番号順に自動インクリメントしている。基本キー列が自動インクリメント列を含む場合、基本キー列のシリアル自動インクリメントは、成功裏に提出される各トランザクションに関して、自動インクリメント列の値が、前に成功裏に提出されている全てのトランザクションの自動インクリメント列の値を上回ることを指し得る。
【００５６】
[66]   ログ先行書き込み（ＷＡＬ）はデータベースにおける効率的なログ記録モードである。一部の実施形態では、トランザクションが提出されるときに生じる全ての修正が最初にログファイル内に書き込まれるので、データベースを再始動した後、ログファイルを再現することによって、データベースを再始動する前の状態に、データベースを再インストールすることができる。
【００５７】
[67]  図２は、本開示の実施形態と一致するデータベース処理方法２００の流れ図である。方法２００は例えばコンピュータシステム１００によって実装することができ、ステップＳ２１０〜Ｓ２３０を含む。
【００５８】
[68]  ステップＳ２１０で、トランザクション待ち行列に複数のトランザクションを提供することができ、複数のトランザクションの各トランザクションはデータベース内にデータ（例えば新たなデータ）を書き込むためのカプセル化された書込み要求を含む。例えば、トランザクションはトランザクション待ち行列内に連続して入れることができる。
【００５９】
[69]  ステップＳ２２０で、トランザクション待ち行列内のトランザクションの順序に従ってトランザクション内のデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成することができる。
【００６０】
[70]  ステップＳ２３０で、自動インクリメント識別情報（ＩＤ）に従ってデータベース内にデータを書き込むことができる。自動インクリメントＩＤは、トランザクション内のデータのデータ行に割り当てることができる。
【００６１】
[71]  一部の実施形態では、データベース内にデータを書き込むための各書込み要求からカプセル化されたトランザクションがトランザクション待ち行列内に入れられた後、単調増加する自動インクリメントＩＤを統一されたやり方で割り当てることができる。従ってデータ行はロックされることなく自動でインクリメントすることができ、そのことは高度に同時処理性がある応用において性能を保証することができる。データベース内に書き込まれるデータは、生成された自動インクリメントＩＤを含む。自動インクリメントＩＤの順序はトランザクションの提出順序（即ちトランザクション待ち行列内のトランザクションの順序）と一致するので、自動インクリメントＩＤが位置する列を基本キー列が含む場合、データベース内の基本キー列の厳密なシリアル自動インクリメントを保証することができる。方法２００はシリアル自動インクリメント及び高度な同時処理性を満たすことができるだけでなく、容易且つ便利な解決策も提供することができる。
【００６２】
[72]  一部の実施形態では、１つのトランザクションが１つ又は複数のデータ行を含み得る。生成される自動インクリメントＩＤはデータ行に対して１対１の対応関係にある。例えばトランザクションが３つのデータ行を含む場合、トランザクション内のデータ行について合計３つの自動インクリメントＩＤが生成される。１つのトランザクションが複数のデータ行を含む場合、トランザクション内の前のデータ行の自動インクリメントＩＤは後のデータ行の自動インクリメントＩＤ未満であり得る。例えば、上記の３つのデータ行を含むトランザクション内の３つの自動インクリメントＩＤの順序はトランザクション内の３つのデータ行の順序と一致する。例えばトランザクション内のデータ行について生成される自動インクリメントＩＤが１０、１１、及び１２である場合、トランザクション内の最初のデータ行、２番目のデータ行、及び３番目のデータ行の自動インクリメントＩＤはそれぞれ１０、１１、及び１２である。トランザクションが提出された後、トランザクション内に含まれる３つのデータ行に自動インクリメントＩＤがそれぞれ割り当てられ、その後データベース内に書き込まれる。つまり、データベース内に書き込まれる３つのデータ行では自動インクリメント列の値がそれぞれ１０、１１、及び１２である。
【００６３】
[73]  一部の実施形態では、トランザクション待ち行列内のトランザクションの順序がトランザクションをカプセル化するための順序と一致し得る。例えば、前にカプセル化されたトランザクション待ち行列内のトランザクションの位置は、後でカプセル化されるトランザクションの位置よりも前になる。様々なトランザクション内のデータ行の自動インクリメントＩＤの順序が、トランザクション待ち行列内のトランザクションの順序と一致しても良い。例えば、トランザクション待ち行列内の前の位置における（トランザクション待ち行列内に前に入れられた）トランザクション内のデータ行の自動インクリメントＩＤ（１、２、．．．、１００等）は、後の位置における（トランザクション待ち行列内に後で入れられた）トランザクション内のデータ行の自動インクリメントＩＤ（１０１、１０２、．．．等）未満である。又は前の位置におけるトランザクション内の最後のデータ行の自動インクリメントＩＤは、後の位置におけるトランザクション内の最初のデータ行の自動インクリメントＩＤ未満である。概して、前に受信される書込み要求の方が先にトランザクション内にカプセル化される。従って、様々なトランザクション内のデータ行の自動インクリメントＩＤの順序は、トランザクション内にカプセル化される書込み要求を受信する順序にも一致する。例えばデータベース内にデータを書き込むための書込み要求に関して、前に受信される書込み要求からカプセル化されるトランザクション内のデータ行の自動インクリメントＩＤは、後で受信される書込み要求からカプセル化されるトランザクション内のデータ行の自動インクリメントＩＤ未満である。
【００６４】
[74]  一部の実施形態では、トランザクションが提出されるとき、トランザクションに関連するデータがデータベース内に書き込まれる。従ってデータベース内への書込みが行われる場合、かかる書込みはトランザクション待ち行列内のトランザクションの順序に従って行うこともできる。トランザクションの提出後、提出済みのトランザクションをトランザクション待ち行列から削除することができる。つまりトランザクション待ち行列は先入れ先出し（ＦＩＦＯ）待ち行列であり得る。データベース内にデータを書き込むための書込み要求からカプセル化されたトランザクションが提出された後、１つ又は複数のデータ行がデータベースのテーブルに加えられ、トランザクション内のデータ行の自動インクリメントＩＤが、データ行内の自動インクリメント列内に格納される。従って、テーブル内のデータ行の自動インクリメント列内の自動インクリメントＩＤの順序は、書込み要求を受信する順序に関連する。例えば、自動インクリメントＩＤの順序は、書込み要求を受信する順序と一致する。
【００６５】
[75]  例えば複数の利用者が全員、利用者Ａにメッセージを送信する場合、利用者Ａに送信されるメッセージはサーバによってデータベース内にまず書き込まれ、その後バックグラウンドプロセスによって利用者Ａのために読み出される必要がある。一部の実施形態では、全てのメッセージが、データベース内にデータを書き込むための書込み要求と見なされ得る。サーバに到着するそれらのメッセージの順序は、データベース内の対応するデータ行の自動インクリメントＩＤの順序に関連する。例えば、サーバに到着するそれらのメッセージの順序は、自動インクリメントＩＤの順序と一致する。このようにして、自動インクリメントＩＤの昇順に従ってデータ（例えばメッセージ）が読み出されるので、バックグラウンドプロセスがデータベース内のデータを読み出すとき、サーバが前に受信したメッセージを先に利用者Ａに送信することができる。従って、利用者Ａに送信されるメッセージは順番に従っており、メッセージが失われることはない。
【００６６】
[76]  一部の実施形態では、データベース内に書き込まれているデータを利用者が修正したい場合、データを更新するための書込み要求を送信することができる。データを更新するための書込み要求は、修正されるデータ行を指示するための自動インクリメントＩＤを含み得る。書込み要求内の自動インクリメントＩＤは、利用者が修正したいデータ行内の自動インクリメントＩＤであり得る。しかし、データベース内にデータを書き込むための書込み要求では、自動インクリメントＩＤが存在しない可能性があり、又は自動インクリメントＩＤを利用できない場合がある（例えば「ヌル」）。
【００６７】
[77]  上記の実施形態はデータベースの種類を限定することは意図せず、例えば分散データベースや独立型データベース、及びリレーショナルデータベースや非リレーショナルデータベースに適用され得る。
【００６８】
[78]  一部の実施形態では、上記のステップＳ２１０〜Ｓ２３０がサーバ内で概して実行され、データベース内にデータを書き込むための書込み要求がクライアント端末から受信されても良く、データベース内への書込みが書込み要求に従って実行され得る。上記のステップＳ２１０〜Ｓ２３０は１つの装置内で実行することができ、また実行のための様々な装置に分散されても良い。上記のステップＳ２１０〜Ｓ２３０を実行するための装置はデータベースが位置する装置とすることができ、別個の装置とすることもできる。
【００６９】
[79]  一部の実施形態では、ステップＳ２３０のトランザクション内のデータのデータ行に自動インクリメントＩＤを割り当て、データベース内にデータを書き込むこと（例えばトランザクション待ち行列内のトランザクションを連続して提出し、トランザクション内の各データ行の自動インクリメントＩＤをデータ行内に格納し、同内容をデータベース内に書き込むこと）が、トランザクション待ち行列内のトランザクションに対応するログデータをログ内に連続して書き込むことであって、ログデータは対応するトランザクション内のデータ行の自動インクリメントＩＤを含むこと、及びログ内のログデータに対応するトランザクションを提出し、トランザクション内のデータのデータ行に、データのデータ行の自動インクリメントＩＤをそれぞれ割り当てるときに、データベース内にデータを書き込むことを含み得る。
【００７０】
[80]  上記の実施形態はログ先行書き込み（ＷＡＬ）のモードを利用し、このモードを利用することは、生成された自動インクリメントＩＤの中の最大の自動インクリメントＩＤをシステム（例えばコンピュータシステム１００）の障害時にログから突き止めることができることを保証し、それにより生成される自動インクリメントＩＤが単調増加できることを保証し得る。
【００７１】
[81]  最新の自動インクリメントＩＤ（例えば最大ＩＤ）を記憶しバックアップ最大ＩＤを作成するために、ＷＡＬ法以外の幾つかの方法を使用できることが考慮される。生成される自動インクリメントＩＤの中の最大の自動インクリメントＩＤは、システム（例えばコンピュータシステム１００）の障害時にバックアップ済みの自動インクリメントＩＤを読み出すことによって突き止めることもできる。
【００７２】
[82]  一部の実施形態では、データベースが複数のパーティションを含む場合、各パーティションが１つのトランザクション待ち行列に対応し得る。各パーティションのトランザクションは、パーティションに対応するトランザクション待ち行列内にそれぞれ入れられる。従って、ステップＳ２１０のデータベース内にデータを書き込むための書込み要求をトランザクション内にカプセル化し、それをトランザクション待ち行列内に入れることは以下を更に含み得る：
【００７３】
[83]  データベース内にデータを書き込むための書込み要求をトランザクション内にカプセル化し、トランザクションが属するパーティションに対応するトランザクション待ち行列内に、カプセル化したトランザクションを入れること。従って、パーティションは幾つかのカプセル化されたトランザクションを含み得る。
【００７４】
[84]  更に、各パーティションは自動インクリメントＩＤを別々に且つ独立に維持することができる。従って、複数のパーティションの各パーティションは他のパーティションの自動インクリメントＩＤから独立した自動インクリメントＩＤを保つことができる。換言すれば、生成される自動インクリメントＩＤは、生成される自動インクリメントＩＤが属するパーティション内でシリアル自動インクリメントする。しかし、異なるパーティション間の自動インクリメントＩＤは互いに関連しない。
【００７５】
[85]  一部の実施形態では、自動インクリメントＩＤ生成器及びトランザクション待ち行列が、データベース内のパーティションに関してそれぞれ提供され得る。同じパーティション内のトランザクションはトランザクション待ち行列に入った後で自動インクリメントＩＤを番号順に求め、そのためパーティション内の基本キー列のシリアル自動インクリメントを実装することができる。基本キー列は、パーティションキーが位置する列及び少なくとも１つの自動インクリメント列を含むことができ、異なるパーティションの自動インクリメントＩＤ生成器は異なるオブジェクトであり得る。
【００７６】
[86]  上記の実施形態では、パーティションキーに従い、トランザクションが属するパーティションに対応するトランザクション待ち行列内にトランザクションを与えることができる。トランザクション内のデータ行の自動インクリメントＩＤを生成するために、トランザクションが属するパーティションに対応する自動インクリメントＩＤ生成器が呼び出される。
【００７７】
[87]  一部の実施形態では、自動インクリメントＩＤを生成するために全てのパーティションのトランザクションを混ぜることもできる。加えてパーティションを有さないデータベースに関して、１つのトランザクション待ち行列及び１つの自動インクリメントＩＤ生成器を使用することができる。
【００７８】
[88]  一部の実施形態では、ステップＳ２２０が以下を更に含み得る：
【００７９】
[89]  トランザクション待ち行列内のトランザクションごとに、システム時間及びトランザクション内に含まれるデータ行の数に従ってトランザクション内のデータのデータ行の自動インクリメントＩＤのバッチを生成すること。
【００８０】
[90]  一部の実施形態では、１つのトランザクション内のデータ行について生成される自動インクリメントＩＤのバッチにおいて、自動インクリメントＩＤの数がトランザクション内のデータ行の数と同じである。例えばトランザクションが３つのデータ行を有する場合、トランザクションに関する１つのバッチにおいて３つの自動インクリメントＩＤを生成することができ、トランザクションが１つのデータ行しか有さない場合、生成される自動インクリメントＩＤの１つのバッチでは、自動インクリメントＩＤは１つしかない。
【００８１】
[91]  更に、自動インクリメントＩＤがシステム時間に従って得られる場合、得られる自動インクリメント列は連続的でない場合があるが、厳密なシリアル自動インクリメントは保証することができる。システム時間に従って得られる自動インクリメントＩＤは、利用者により多くの情報を提供することができる。例えばデータ行を書き込む時間が自動インクリメントＩＤに従って決定され得る。
【００８２】
[92]  一部の実施形態では、システム時間は、自動インクリメントＩＤが生成されるときの現在のシステム時間を指す。システム時間は時刻形式（例えば年−月−日−分−秒）とすることができ、数値形式（例えば現在の瞬間と所定の開始の瞬間との間の時間の長さ）とすることもできる。時間の長さは単位としてマイクロ秒（ｕｓ）の尺度であり得る。
【００８３】
[93]  一部の実施形態では、トランザクション待ち行列内のトランザクションの順序に従って自動インクリメントＩＤが連続して生成される。従って、トランザクション待ち行列に先に入るトランザクションでは、自動インクリメントＩＤが先に生成され、それにより自動インクリメントＩＤに関するより早いシステム時間を生成する。従ってこのトランザクション待ち行列では、トランザクション待ち行列に先に入るトランザクション内のデータ行の自動インクリメントＩＤの方が小さくなる。
【００８４】
[94]  一部の実施形態では、自動インクリメントＩＤが他の方法に従って生成されても良い。例えばインクリメントする変数を自動インクリメントＩＤとして解釈することができる。別の例では、トランザクション待ち行列内のトランザクション内のデータ行に関して、１つのトランザクション内の１つのデータ行ごとに自動インクリメントＩＤが一つずつ生成される。換言すれば、或るデータ行の第１の自動インクリメントＩＤを第１の時点において生成することができ、次のデータ行の第２の自動インクリメントＩＤを第２の時点において生成することができる。従って、自動インクリメントＩＤとしてシステム時間を直接使用することができる。つまり自動インクリメントＩＤはシステム時間に直接関連することができる。
【００８５】
[95]  一部の実施形態では、ステップＳ２２０で、トランザクション待ち行列内の各トランザクション内のデータ行について、生成される自動インクリメントＩＤの範囲は、１からトランザクション内に含まれるデータ行の数に、最後に生成された自動インクリメントＩＤの値及びシステム時間のうちの大きい方を加えた数値とすることができる。
【００８６】
[96]  例えばトランザクション内にデータ行が１つしかない場合、トランザクション内のデータ行について生成される自動インクリメントＩＤも１つしかない。自動インクリメントＩＤの値は、１に、システム時間及び最後に生成された自動インクリメントＩＤの値のうちの大きい方を加えた数値とすることができる。トランザクション内に複数のデータ行がある場合、トランザクション内のデータ行について生成される自動インクリメントＩＤのバッチにおける最小の自動インクリメントＩＤは、１に、システム時間及び最後に生成された自動インクリメントＩＤの値のうちの大きい方を加えた数値である。最大自動インクリメントＩＤは、トランザクション内に含まれるデータ行の数に、システム時間及び最後に生成された自動インクリメントＩＤの値のうちの大きい方を加えた数値である。
【００８７】
[97]  例えば３つの連続したトランザクションＡ、Ｂ、及びＣがトランザクション待ち行列内にあり、トランザクションＡが１つのデータ行を有し、トランザクションＢが１００のデータ行を有し、トランザクションＣが１０のデータ行を有する状況では、トランザクションＡ、Ｂ、及びＣ内のデータ行について自動インクリメントＩＤが生成される場合、システム時間はそれぞれＴａ、Ｔｂ、及びＴｃとすることができ、Ｔａ＜Ｔｂ＜Ｔｃが成立する。最後に生成された自動インクリメントＩＤよりもＴａの方が大きい場合、トランザクションＡ内のデータ行について生成される自動インクリメントＩＤはＴａ＋１である。ＴｂがＴａ＋１よりも大きい場合、トランザクションＢ内のデータ行について生成される自動インクリメントＩＤはＴｂ＋１からＴｂ＋１００である。ＴｃがＴｂ＋１００よりも大きい場合、トランザクションＣ内のデータ行について生成される自動インクリメントＩＤはＴｃ＋１からＴｃ＋１０である。ＴｃがＴｂ＋１００未満の場合、トランザクションＣ内のデータ行について生成される自動インクリメントＩＤはＴｂ＋１０１からＴｂ＋１１０である。
【００８８】
[98]  生成される自動インクリメントＩＤの範囲を生成するために、１からトランザクション内に含まれるデータ行の数までの範囲に、システム時間及び最後に生成された自動インクリメントＩＤの値のうちの大きい方を更に加えることができることが考慮される。最新の自動インクリメントＩＤは例えばメモリ（例えばメモリ１２２）内に記憶することができる。新たな自動インクリメントＩＤを生成すると、新たに生成した自動インクリメントＩＤを用いてメモリ内に記憶されている自動インクリメントＩＤを置換することができる。自動インクリメントＩＤを生成するためのプロセスが初期設定される場合、最新の自動インクリメントＩＤはメモリ内に記憶されており且つ最後に生成された自動インクリメントＩＤであり得る。
【００８９】
[99]  一部の実施形態では、自動インクリメントＩＤを初めて生成する場合、自動インクリメントＩＤの初期値を０又は現在のシステム時間とすることができる。例えばシステム（例えばコンピュータシステム１００）の開始後に最初のトランザクション内のデータ行について自動インクリメントＩＤを生成する場合、生成される自動インクリメントＩＤの範囲は、１からトランザクション内のデータ行の数までの範囲に現在のシステム時間を加えたものであり得る。
【００９０】
[100]  上記のプロセスをＷＡＬと連携して実装した場合、システム障害によるシステム時間のフォールバックが発生しても自動インクリメント列のシリアル自動インクリメントを依然として保証することができる。障害後にシステムがリロードされると、最後に生成された自動インクリメントＩＤとして、最後のログデータ片内の自動インクリメントＩＤを、ログから構文解析することができる。従って、たとえシステム時間がフォールバックしても自動インクリメントＩＤはフォールバックしないことを保証することができる。
【００９１】
[101]  一部の実施形態では、提出されるトランザクション内のデータ行の自動インクリメントＩＤが生成されるときのシステム時間が、現在のシステム時間よりも小さい場合がある。つまり、過去に提出済みであり且つトランザクション待ち行列から削除されているトランザクションに関して、データ行の自動インクリメントＩＤ内の「システム時間」が、トランザクション待ち行列内に現在あるトランザクション内のデータ行の自動インクリメントＩＤ内の「システム時間」よりも小さい。
【００９２】
[102]  トランザクション内にデータ行があり過ぎる場合、「システム時間＋行数」が単調に自動インクリメントしない可能性がある。例えば或るトランザクション内のデータ行の数が１００であり、自動インクリメントＩＤが生成されるときのシステム時間が８０である場合、トランザクション内の最後のデータ行の自動インクリメントＩＤは１８０である。１００のシステム時間（つまり８０のシステム時間よりも後の期間）においてトランザクション内の最初のデータ行について自動インクリメントＩＤを生成する必要がある場合、自動インクリメントＩＤは、システム時間に最初のデータ行の行数を加えた値、つまり１０１である。従って、後にくる順序のトランザクション内のデータ行の自動インクリメントＩＤが減少する。しかし本開示の実施形態によれば、自動インクリメントＩＤを得るための基礎として「最後に生成された自動インクリメントＩＤ」及び「システム時間」のうちの大きい方が選択されるので、新たに生成される自動インクリメントＩＤは、前の自動インクリメントＩＤよりも必ず大きくすることができ、厳密なシリアル自動インクリメントが保証される。
【００９３】
[103]  従って、異なるパーティションの自動インクリメントＩＤが別々に且つ独立に維持される場合、「最後に生成された自動インクリメントＩＤ」もパーティションごとに互いに独立している。自動インクリメントＩＤが生成されるときに使用される「最後に生成された自動インクリメントＩＤ」は、現パーティションの最新の自動インクリメントＩＤを指す。
【００９４】
[104]  一部の更なる実施形態では、１からトランザクション内に含まれるデータ行の数までの範囲に、最後に生成された自動インクリメントＩＤを加えた結果を、自動インクリメントＩＤのバッチとして直接使用することもできる。
【００９５】
[105]  上記の実施形態を以下の一例を用いて説明する。
【００９６】
[106]  この例では、データベースはAlicloud Apsara分散システムに基づく非リレーショナルデータベースTableStoreである。TableStoreは、データフラグメンテーション及び負荷平衡技法によってスケールに関してシームレスな拡張性を実現することができる。TableStoreではＷＡＬが使用される。各書込み要求について、メモリの書込み（即ちデータベース内の書込み）の前にログの書込みが実行される。TableStore内の各テーブルの基本キー列の最初の列はパーティションキーであり、同じ範囲内のパーティションキーのデータは同じパーティション内にある。TableStoreは、テーブル内のパーティションキーの各行の値の範囲に従い、対応するパーティションにこの行のデータを自動で割り当てることができる。この例では、或るパーティション内のトランザクション内のデータ行の自動インクリメントＩＤが、パーティションの自動インクリメントＩＤ生成器によって割り当てられる。
【００９７】
[107]  実際には本発明は上記の例に限定されない。本開示の実施形態による処理方法は上記の実施形態の何れにも限定されない。
【００９８】
[108]  図３は、本開示の実施形態と一致する、トランザクションを処理するための概略図である。このプロセスは、書込み要求を、標準のトランザクション内にまずカプセル化する。例えば図３に示すように、複数の書込み要求が（例えばトランザクション１、トランザクション２、．．．、トランザクション１００を含む）トランザクション３０１内にそれぞれカプセル化されている。トランザクション１からトランザクション１００まで連続してカプセル化され、１００のトランザクション内のデータ行の自動インクリメントＩＤが全て有効でない（例えば「ヌル」）と仮定する。つまり、トランザクション１ではＰＫ０が１でありＰＫ１がＸであり、トランザクション２ではＰＫ０が２でありＰＫ１がＸであり、トランザクション１００ではＰＫ０が１００でありＰＫ１がＸであり、但しＰＫ０はパーティションキーであり、この例の中のパーティションキーの値０〜１００は同じ範囲内にある。つまりトランザクション１〜１００は全て同じパーティションに属する。ＰＫ１は自動インクリメントＩＤであり、Ｘは「ヌル」を表す。
【００９９】
[109]  カプセル化が完了した順序に従い、トランザクションが位置するパーティションに対応するトランザクション待ち行列３０３内に、これらのトランザクションを連続して入れる。つまりトランザクション待ち行列３０３内では、トランザクションは連続的にトランザクション１、トランザクション２、トランザクション３等である。対応するパーティションの自動インクリメントＩＤ生成器がトランザクション待ち行列内のトランザクションに自動インクリメントＩＤを連続して割り当てる。この例では各トランザクションがデータ行を１つしか含まず、１つのトランザクション内のデータ行に割り当てられる自動インクリメントＩＤがｍａｘ（最後に生成された自動インクリメントＩＤ＋１、システム時間＋１）だと仮定し、ｍａｘは大きい方の値を取ることを表す。
【０１００】
[110]  この例では、パーティションの最後に生成された自動インクリメントＩＤ又はシステム時間が９８だと仮定すると、トランザクション１、トランザクション２、及びトランザクション３に割り当てられる自動インクリメントＩＤはそれぞれ９９、１００、及び１０１である。
【０１０１】
[111]  上記のトランザクション待ち行列は先入れ先出し（ＦＩＦＯ）待ち行列である。トランザクション待ち行列内のトランザクションの順序に応じて、トランザクションに対応するログデータがログファイル３０５内に連続して書き込まれ、対応するログデータがログファイル３０５内に書き込まれているトランザクションは、トランザクション待ち行列から削除される。この例の各パーティションの全ての書込み要求がログの書込みにおいて番号順に従うことが見て取れ、そのことは書込み要求の逐次的な順序を保証することができる。
【０１０２】
[112]  ログの書込みにおいて、ログデータはトランザクションの識別情報ＰＫ０及びＰＫ１を含む。ＰＫ１は、トランザクション内のデータ行に割り当てられる自動インクリメントＩＤであるように更新される。上記のトランザクション１及びトランザクション２に対応するログデータがログ内に書き込まれた後、ログは以下のようにログデータを連続的に含む。
Ｔｘｎ１：ＰＫ０：１；ＰＫ１：９９
Ｔｘｎ２：ＰＫ０：２；ＰＫ１：１００．．．
【０１０３】
[113]  ログの書込みが実行された後、ログ内のトランザクションに対応するログデータの順序に従ってトランザクションが連続して提出される。つまり、トランザクションに関連するデータがメモリ（例えばメモリ１２２）内に書き込まれる。例えばデータベース内にデータ行が追加され、１つのトランザクションが１つのデータ行に対応し、トランザクション内のデータ行の自動インクリメントＩＤが、データベースの対応するデータ行の列内に入れられ、その列は自動インクリメント列であり、基本キー列のうちの１つでもある。トランザクションのパーティションキーも、テーブル内の最初の列として１つの列の中に入れられる。この例では、データベース内のテーブルはテーブル１を指すことができ、パーティションキー及び自動インクリメントＩＤが位置する列はそれぞれ第１の列及び第２の列であり、そのどちらも基本キー列である。同じ範囲内のパーティションキー内の異なるデータ行の自動インクリメント値（即ち自動インクリメントＩＤの値）の値の順序は、データベース内にデータ行を書き込む順序と一致することができ、自動インクリメント値が属するトランザクションがトランザクション待ち行列に入る順序と一致し得ることが見て取れる。つまりトランザクション内に書込み要求をカプセル化する順序は、データベース内にデータを書き込む順序と一致し得る。
【０１０４】
[114]  図４は、本開示の実施形態と一致する書込要求を処理するための方法４００の流れ図である。方法４００は例えばコンピュータシステム１００によって実装することができ、ステップＳ４０２〜Ｓ４１４を含み得る。
【０１０５】
[115]  ステップＳ４０２で、コンピュータシステム１００によって書込み要求を受信することができる。
【０１０６】
[116]  ステップＳ４０４で、書込み要求を標準のトランザクション内にカプセル化することができる。図３に示すように、例えばカプセル化に基づいてトランザクション１からトランザクション１００を生成することができる。
【０１０７】
[117]  ステップＳ４０６で、トランザクション内の自動インクリメント列がヌルかどうか（例えば自動インクリメントＩＤがヌルかどうか）を判定することができる。
【０１０８】
[118]  自動インクリメント列がヌルの場合（例えば上記の例ではＰＫ１がＸである）、それはトランザクションに対応する書込み要求がデータベース内にデータを書き込むことができることを示し、システム（例えばコンピュータシステム１００）が自動インクリメントＩＤを生成することを要求し、方法４００はステップＳ４１０に進む。ステップＳ４１０で、トランザクションが属するパーティションのトランザクション待ち行列内にトランザクションを直接入れる。
【０１０９】
[119]  しかし自動インクリメント列がヌルではない場合、それはトランザクションに対応する書込み要求が、データベース内に書き込まれているデータ行を更新できることを示し、方法４００はステップＳ４０８に進む。更新すべきデータ行を識別するために自動インクリメントＩＤを使用することができる。従って自動インクリメントＩＤがヌルではない場合、ステップＳ４０８で、データベース内のテーブル内の自動インクリメントＩＤに対応するデータ行をロックするためにトランザクションロックを適用し、それにより書込み中に同行内のデータを更新し又はクエリするための他の書込み要求を防ぐ。トランザクションロックを成功裏に適用した後、ステップＳ４１０で、トランザクションが属するパーティションのトランザクション待ち行列内にトランザクションを入れる。
【０１１０】
[120]  ステップＳ４１２で、トランザクションがトランザクション待ち行列内に入った後、トランザクション内のヌルの自動インクリメントＩＤをそれぞれ有するデータ行の自動インクリメントＩＤを連続して生成することができる。生成中、トランザクション内に含まれるデータ行の数に従って、トランザクションが属するパーティションの自動インクリメントＩＤ生成器から自動インクリメントＩＤのバッチを取得することができる。例えばトランザクションが３つのデータ行を含む場合、３つの自動インクリメントＩＤを取得することができる。自動インクリメントＩＤがヌルではないトランザクションについては、新たな自動インクリメントＩＤはもはや生成されない。トランザクション待ち行列内の自動インクリメントＩＤが取得されているトランザクションに対応するログデータが、トランザクション待ち行列内のトランザクションの順序に従ってログ内に連続して書き込まれ、トランザクション内のデータ行の自動インクリメントＩＤがトランザクションに対応するログデータと共にログ内に書き込まれる。
【０１１１】
[121]  ログの書込みが実行された後、ステップＳ４１４で、ログ内の順序に従ってトランザクションを連続して提出することができ、データベース内にデータを書き込むことができる。データベース内にデータを書き込むための書込み要求に対応するトランザクションに関して、トランザクションの提出後に１つ又は複数のデータ行をデータベースに追加することができる。データベース内にデータを書き込む間、データ行の自動インクリメントＩＤを、対応するデータ行内にそれぞれ格納することができる。データベース内にデータを書き込むことができ、データ行の自動インクリメントＩＤが自動インクリメント列を生成することができる。書込みの完了後、対応する書込み要求が完了する。データを更新するための書込み要求に対応するトランザクションに関して、データベース内の対応するデータ行がトランザクションの提出後に修正される。修正の完了後、対応する書込み要求が完了し、トランザクションロックが解除される。
【０１１２】
[122]  図５は、本開示の実施形態と一致するデータベース処理機器５００の概略図である。データベース処理機器５００は、カプセル化モジュール５１、生成モジュール５２、及び書込モジュール５３を含むことができる。
【０１１３】
[123]  カプセル化モジュール５１は、トランザクション待ち行列に複数のトランザクションを提供するように構成することができ、複数のトランザクションの各トランザクションは、データベース内にデータを書き込むためのカプセル化された書込み要求を含む。
【０１１４】
[124]  カプセル化モジュール５１は、トランザクションが属するパーティションに対応するトランザクション待ち行列内に、カプセル化されたトランザクションを提供するように更に構成することができる。
【０１１５】
[125]  生成モジュール５２は、トランザクション待ち行列内のトランザクションの順序に従って複数のトランザクションに対応するデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成するように構成することができる。
【０１１６】
[126]  生成モジュール５２は、トランザクション待ち行列内のトランザクションごとに、システム時間及びトランザクション内に含まれるデータ行の数に従ってトランザクション内のデータのデータ行の自動インクリメントＩＤのバッチを生成するように更に構成することができる。
【０１１７】
[127]  生成モジュール５２は、トランザクション待ち行列内の各トランザクション内のデータ行について、１からトランザクション内に含まれるデータ行の数に、最後に生成された自動インクリメントＩＤの値及びシステム時間のうちの大きい方を加えた数値の自動インクリメントＩＤの範囲を生成するように更に構成することができる。
【０１１８】
[128]  割当モジュール５３は、トランザクション内のデータのデータ行に割り当てられる自動インクリメントＩＤに従ってデータベース内にデータを書き込むように構成することができる。一部の実施形態では、割当モジュール５３がログ書込みユニット及びデータ書込みユニットを更に含み得る。ログ書込みユニットは、トランザクション待ち行列内のトランザクションに対応するログデータをログ内に連続して書き込むように構成することができる。ログデータは、対応するトランザクション内のデータのデータ行の自動インクリメントＩＤを含むことができる。データベース書込みユニットは、ログ内のログデータに対応するトランザクションを連続して提出し、トランザクション内のデータのデータ行に、データのデータ行の自動インクリメントＩＤをそれぞれ割り当てるときに、データベース内にデータを書き込むように構成することができる。
【０１１９】
[129]  一部の実施形態では、トランザクション内の前のデータ行のデータの、データ行の自動インクリメントＩＤが、後のデータ行の自動インクリメントＩＤ未満である。一部の実施形態では、１つのトランザクションが複数のデータ行を含む場合、トランザクション内の前のデータ行の自動インクリメントＩＤは、後のデータ行の自動インクリメントＩＤ未満である。一部の実施形態では、データベースが複数のパーティションを含む場合、各パーティションが自動インクリメントＩＤを別々に且つ独立に維持することができる。
【０１２０】
[130]  一部の実施形態では、カプセル化モジュール５１、生成モジュール５２、及び割当モジュール５３が、ソフトウェア、ハードウェア、又はその組合せであり得る。概して、モジュール／ユニット（及び対応する任意のサブモジュール又はサブユニット）は、他のコンポーネント（例えば集積回路の一部）と共に使用するように設計されるパッケージ化された機能ハードウェアユニット、又は関連機能のうちの特定の機能を実行する（コンピュータ可読媒体上に記憶される）プログラムの一部であり得る。モジュールは入口点及び出口点を有することができ、例えばJava（登録商標）、Lua、C、C++等のプログラミング言語で書くことができる。ソフトウェアモジュールは、コンパイルし、実行可能プログラム内にリンクし、ダイナミックリンクライブラリ内にインストールし、又は例えばBASIC、Perl、Python（登録商標）等のインタプリタ型プログラミング言語で書くことができる。ソフトウェアモジュールは他のモジュールから又はそれ自体から呼出可能であり得ること、及び／又は検出されるイベント若しくは割込みに応答して起動され得ることが理解されよう。計算装置上で実行されるように構成されるソフトウェアモジュールは、コンパクトディスク、デジタルビデオディスク、フラッシュドライブ、磁気ディスク、又は他の任意の非一時的媒体等のコンピュータ可読媒体上に、又はデジタルダウンロードとして提供され得る（更に実行前にインストール、復元、又は復号を必要とする圧縮形式又はインストール可能形式で最初は記憶され得る）。かかるソフトウェアコードは、計算装置によって実行するために実行中の計算装置のメモリ装置上に部分的に又は完全に記憶することができる。ＥＰＲＯＭ等、ソフトウェア命令はファームウェア内に埋め込むことができる。ハードウェアモジュールは、ゲート及びフリップフロップ等の接続された論理ユニットで構成できること、及び／又はプログラム可能なゲートアレイ又はプロセッサ等のプログラム可能ユニットで構成できることが更に理解されよう。概して本明細書に記載のモジュールは、その物理編成又は記憶にかかわらず他のモジュールと組み合わせることができる論理モジュール、又はサブモジュールに分割することができる論理モジュールを指す。
【０１２１】
[131]  データベース処理機器５００の様々なモジュールの操作は上記のステップＳ２１０〜Ｓ２３０に対応することができ、明瞭にするためにその説明は本明細書では省略する。
【０１２２】
[132]  本開示の実施形態は、メモリ及びプロセッサを含む、データベースを書き込むための電子装置を更に提供する。
【０１２３】
[133]  メモリは、データベースに書き込むための命令を記憶するように構成することができ、プロセッサによって読み出され実行されるとき、その命令は、トランザクション待ち行列に複数のトランザクションを提供することであって、複数のトランザクションの各トランザクションはデータベース内にデータを書き込むためのカプセル化された書込み要求を含む、提供すること、トランザクション待ち行列内のトランザクションの順序に従って複数のトランザクションに対応するデータのデータ行の自動インクリメント識別情報（ＩＤ）を生成すること、及びトランザクション内のデータのデータ行に割り当てられる自動インクリメントＩＤに従ってデータベース内にデータを書き込むことを電子装置に実行させる。
【０１２４】
[134]  この実施形態では、データベース内にデータを書き込むための命令がプロセッサによって読み出され実行されるとき、プロセッサは上記で論じたステップＳ２１０〜Ｓ２３０に対応する操作を実行することができ、明瞭にするためにその説明は本明細書で省略することができる。
【０１２５】
[135]  上記の方法のステップの全て又は一部が関連するハードウェアに指示するためのプログラムによって実装され得ることを当業者なら理解することができる。プログラムはコンピュータ可読記憶媒体、例えば読取専用メモリ、磁気ディスク、又は光ディスク等の中に記憶することができる。任意選択的に、上記の実施形態の中のステップの全て又は一部は１つ又は複数の集積回路を使用して実装することもできる。それに対応して、上記の実施形態の様々なモジュール／ユニットはハードウェア形式で実装することができ、ソフトウェア機能モジュール形式で実装することもできる。本願はハードウェアとソフトウェアとの組合せの或る特定の形式に限定されない。
【０１２６】
[136]  本願の多岐にわたる他の実施形態も間違いなくあり得る。当業者は本願の趣旨及び本質から逸脱することなしに本願に従って対応する様々な変更及び改変を加えることができるが、それらの対応する変更及び改変は全て本願の特許請求の範囲の保護範囲に含まれるものとする。
【図１Ａ】
2019537773.tif 000004
【図１Ｂ】
2019537773.tif 000005
【図２】
2019537773.tif 000006
【図３】
2019537773.tif 000007
【図４】
2019537773.tif 000008
【図５】
2019537773.tif 000009
【国際調査報告】
2019537773.tif 000010
2019537773.tif 000011