IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

特許7507143データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法
<>
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図1
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図2
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図3
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図4A
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図4B
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図5A
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図5B
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図6
  • 特許-データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-19
(45)【発行日】2024-06-27
(54)【発明の名称】データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法
(51)【国際特許分類】
   G06F 16/22 20190101AFI20240620BHJP
【FI】
G06F16/22
【請求項の数】 17
(21)【出願番号】P 2021505411
(86)(22)【出願日】2019-09-24
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019052731
(87)【国際公開番号】W WO2020068855
(87)【国際公開日】2020-04-02
【審査請求日】2022-09-13
(31)【優先権主張番号】16/139,717
(32)【優先日】2018-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ファンガネェル,トーマス
(72)【発明者】
【氏名】チョン,テリー
(72)【発明者】
【氏名】マーティン,ジェイミソン ベアー
【審査官】早川 学
(56)【参考文献】
【文献】米国特許出願公開第2018/0225321(US,A1)
【文献】米国特許出願公開第2018/0225322(US,A1)
【文献】米国特許出願公開第2016/0142249(US,A1)
【文献】中国特許出願公開第106599247(CN,A)
【文献】特開2013-214201(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
マージオペレーションの最中に、ログ構造化マージ(LSM)ツリーベースのストレージシステムから1つ以上のレコードを削除する、コンピュータに実装された方法であって、
前記ストレージシステム内の第1レコードに初期フラグを設定するステップであり、前記初期フラグは、前記第1レコードが、あらゆる他のアクティブレコードと関連付けられていない第1キーと関連付けられていることを示している、ステップと、
前記ストレージシステム内の第2レコードに削除フラグを設定するステップであり、前記第2レコードは、前記第1キーと関連付けられており、かつ、前記削除フラグは、前記第1キーと関連付けられた値が前記ストレージシステムから削除されるように指定されていることを示している、ステップと、
マージオペレーションにおいて前記ストレージシステムのエクステントへ書き込まれるストレージシステム内の1つ以上のレコードのセットを選択するステップであり、前記1つ以上のレコードそれぞれは、前記第1キーと関連付けられている、ステップと、
前記マージオペレーションを実行するステップであり、前記初期フラグを有している前記第1レコードが前記セットにおいて最古のレコードであり、かつ、前記削除フラグを有している前記第2レコードが前記セットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、前記第2レコードが、前記マージオペレーションの最中に前記エクステントへ書き込まれない、ステップと、
を含む、方法。
【請求項2】
前記第1レコードおよび前記第2レコードは、同一のレコードであり、前記セットにおける唯一のレコードである、
請求項1に記載の方法。
【請求項3】
前記1つ以上のレコードのセットは、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有することに基づいて、全てが選択されている、
請求項1に記載の方法。
【請求項4】
前記方法は、さらに、
第3レコードが前記セット内の最古のレコードであり、かつ、前記マージオペレーションが前記ストレージシステム内の最低のエクステントへとレコードを書き込むときに、前記第3レコードに初期フラグを設定するステップ、
を含む、請求項1に記載の方法。
【請求項5】
前記方法は、さらに、
前記第1レコードに前記初期フラグを設定するステップの以前に、
前記ストレージシステム内の前記第1レコードと同一のキーを有するアクティブレコードについてサーチを実行するステップと、
前記サーチが、前記ストレージシステム内に保管された、前記第1レコードと同一のキーを有するレコードをもたらさない場合に、前記第1レコードの初期フラグを設定するステップと、
を含む、請求項1に記載の方法。
【請求項6】
前記サーチ、および、前記第1レコード内の前記初期フラグの設定に係る決定は、前記第1レコードが前記ストレージシステムの中へ挿入されるときに発生する、
請求項に記載の方法。
【請求項7】
ターゲットエクステントへのマージオペレーションの最中に、ログ構造化マージ(LSM)ツリーベースのストレージシステムにおける1つ以上のレコードを管理する、コンピュータに実装された方法であって、
時間的な範囲内にある1つ以上のレコードを選択するステップと、
1つ以上のレコードの前記範囲内から、同一のキーを持つ1つ以上のレコードを選択するステップであり、時間的な順序で編成された重複セットを形成する、ステップと、
前記重複セットから最新のレコードRを分離するステップであり、残りの重複セットのレコードからプルーンセットを形成する、ステップと、
前記プルーンセットを前記ターゲットエクステントへ書き込まないことによって、前記プルーンセットを破棄するステップと、
Rがツームストーンであり、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを破棄するステップと、を含み、
前記ツームストーンは、ツームストーンと関連するキーに対応している値が削除されたことを示すレコードであり、かつ、
前記初期レコードは、初期レコードが挿入されたときに、システム内の他のアクティブレコードが該初期レコードと関連する同一のキーと関連していないことを示す指定を含むレコードである、
方法。
【請求項8】
前記方法は、さらに、
Rがツームストーンであり、かつ、前記ターゲットエクステントが前記システム内で最低レベルのエクステントである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを廃棄するステップ、を含む、
請求項7に記載の方法。
【請求項9】
前記方法は、さらに、
前記プルーンセットが空であり、かつ、Rが、ツームストーンおよび初期レコードの両方である場合に、Rを廃棄するステップ、を含む、
請求項7に記載の方法。
【請求項10】
前記方法は、さらに、
Rが廃棄されず、かつ、Rがツームストーンではなく、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、初期レコードとして指定された前記ターゲットエクステントへRを書き込むステップ、を含む、
請求項7に記載の方法。
【請求項11】
前記方法は、さらに、
Rが廃棄されず、かつ、Rがツームストーンである場合に、ツームストーンレコードとして指定された前記ターゲットエクステントへRを書き込むステップ、を含む、
請求項7に記載の方法。
【請求項12】
ストレージシステムであって、
コンピュータ実行可能命令を保管する少なくとも1つのメモリと、
複数のレコードを保管するデータベースと、
前記少なくとも1つのメモリにアクセスし、かつ、前記コンピュータ実行可能命令を実行するように構成されている、少なくとも1つのプロセッサと、を含み、
前記コンピュータ実行可能命令が実行されると、前記少なくとも1つのプロセッサは、
前記ストレージシステム内の第1レコードに初期フラグを設定し、前記初期フラグは、前記第1レコードが、あらゆる他のアクティブレコードと関連付けられていない第1キーと関連付けられていることを示しており、
前記ストレージシステム内の第2レコードに削除フラグを設定し、前記第2レコードは、前記第1キーと関連付けられており、かつ、前記削除フラグは、前記第1キーと関連付けられた値が前記ストレージシステムから削除されるように指定されていることを示しており、
マージオペレーションにおいて前記ストレージシステムのエクステントへ書き込まれるストレージシステム内の1つ以上のレコードのセットを選択し、前記1つ以上のレコードそれぞれは、前記第1キーと関連付けられており、かつ、
前記マージオペレーションを実行し、前記第2レコードは、前記初期フラグを有している前記第1レコードが前記セットにおいて最古のレコードであり、かつ、前記削除フラグを有している前記第2レコードが前記セットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、前記マージオペレーションの最中に前記エクステントへ書き込まれない、
ように構成されている、
ストレージシステム。
【請求項13】
前記第1レコードおよび前記第2レコードは、同一のレコードであり、前記セットにおける唯一のレコードである、
請求項12に記載のストレージシステム。
【請求項14】
前記1つ以上のレコードのセットは、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有することに基づいて、全てが選択されている、
請求項12に記載のストレージシステム。
【請求項15】
前記プロセッサは、さらに、
第3レコードが前記セット内の最古のレコードであり、かつ、前記マージオペレーションが前記ストレージシステム内の最低のエクステントへとレコードを書き込むときに、前記第3レコードに初期フラグを設定する、
ように構成されている、
請求項12に記載のストレージシステム。
【請求項16】
前記プロセッサは、さらに、
前記第1レコードに前記初期フラグを設定する以前に、
前記ストレージシステム内の前記第1レコードと同一のキーを有するアクティブレコードについてサーチし、かつ、
前記サーチが、前記ストレージシステム内に保管された、前記第1レコードと同一のキーを有するレコードをもたらさない場合に、前記第1レコードの初期フラグを設定する、
ように構成されている、
請求項12に記載のストレージシステム。
【請求項17】
前記サーチ、および、前記第1レコード内の前記初期フラグの設定に係る決定は、前記第1レコードが前記ストレージシステムの中へ挿入されるときに発生する、
請求項16に記載のストレージシステム。
【発明の詳細な説明】
【背景技術】
【0001】
データ構造は、そこに保管されているデータとインタラクション(interact)するための様々な方法を提供するデータの構成(organizations)である。データ構造は、様々な目的のために設計され得る。例えば、バイナリ探索ツリー(search tree)などで、データの効率的な検索を容易にするため、リンクされたリストなどを用いて、疎(sparse)データの効率的な保管を可能にするため、または、Bツリー(B-tree)などを用いて、検索可能なデータの効率的な保管を提供するためである。
【0002】
キー値パラダイムを利用するデータ構造は、キー値ペアを受け入れ、そして、キーに対するクエリ(queries)に応答するように構成されている。キー値データ構造は、辞書(例えば、マップ、ハッシュマップ、等)として、そうした構造を含み得る。そこでは、キーが、それぞれの値をリンクし(または、含み)、リスト内に保管されている。これらの構造はメモリ内で(例えば、ストレージとは異なり、メインまたはシステム状態メモリにおいて)役に立つが、一方で、持続性ストレージにおける(たとえば、ディスク上の)これらの構造のストレージ表現は、非効率的であり得る。従って、ログベース(log-based)ストレージ構造のクラスが導入されてきた。一例は、ログ構造化マージツリー(log structured merge tree、LSM tree)である。
【0003】
LSMツリー・データベースは、1つ以上のディスク常駐不変レイヤ(immutable layer)と、可変(mutable)メモリ常駐メモリレイヤとから構成され得る。LSMツリーから読み出すときに、リーダは、全てのレイヤからの結果を読み出し、そして、マージ(merge)することができる。新たなレコードがインデックス付けされると、対応するインデックスエントリが、可変メモリ常駐レイヤに対して追加される。
【0004】
LSMツリー・データベース内のトランザクションは、所与のレコードの不変バージョン(immutable version)として保管されている。システム上に既に保管されているレコードのコンテンツの不変バージョンは、コンテンツがシステムから(たとえ)削除されるまで変更されないままであり得る。つまり、受け取ったトランザクションは、レコードのコンテンツを変更する代わりに、システム内に保管されるレコードのコンテンツの新たなバージョンを作成することができる。従って、レコードの複数のバージョン(例えば、異なるコンテンツを有するレコード)が、トランザクション識別子を除いて同一のキーを有することが可能である(例えば、トランザクション番号を含み得る)。
【図面の簡単な説明】
【0005】
添付の図面は、開示される技術的事項(subject matter)のさらなる理解を提供するために含まれており、この本明細書の中に組み込まれ、かつ、一部分を構成している。図面は、また、開示される技術的事項の実施形態を説明するものであり、そして、詳細な説明と共に、開示される技術的事項の実施形態の原理を説明するのに役立つ。開示される技術的事項、および、それが実施され得る様々な方法の基本的な理解のために必要とされ得るものよりも詳細に構造の詳細を示すための試みは行われていない。
図1図1は、開示される技術的事項の実装に従った、データベースシステムの一例を示している。
図2図2は、従来のツームストーン(tombstone)除去プロセスにおける一連のトランザクションを示している。
図3図3は、開示される技術的事項の実装に従った、ツームストーン除去プロセスにおける一連のトランザクションを示している。
図4A図4Aは、開示される技術的事項の実装に従った、解決されるべき一つの例示的な複製セット(duplicate set)を示している。
図4B図4Bは、開示される技術的事項の実装に従った、解決されるべき別の例示的な複製セットを示している。
図5A図5Aは、開示される技術的事項の実装に従った、解決されるべき別の例示的な複製セットを示している。
図5B図5Bは、開示される技術的事項の実装に従った、解決されるべき別の例示的な複製セットを示している。
図6図6は、開示される技術的事項の実装に従った、コンピュータを示している。
図7図7は、開示される技術的事項の実装に従った、ネットワーク構成を示している。
【発明を実施するための形態】
【0006】
この開示の様々な態様または特徴は、図面を参照して説明される。ここで、同様の参照番号は、全体を通して同様な要素を参照するために使用されている。この明細書においては、この開示の完全な理解を提供するために、多くの詳細が明らかにされている。しかしながら、開示に係る所定の態様は、これらの特定の詳細なしで、もしくは、他の方法、コンポーネント、材料、等を用いて、実施され得ることが理解されるべきである。他のインスタンスにおいては、よく知られた構造およびデバイスが、開示の技術的事項の説明を促進するために、ブロックダイヤグラムの形態で示されている。
【0007】
開示される方法および技術は、様々な異なるデータベース構造に対して適用され得る。開示される技術的事項は、単一のタイプのアーキテクチャに限定されるものではないが、例示的な目的のためであり、以下の説明は、キー範囲マルチテナンシ(key-range multi-tenancy)を有するログ構造化マージ(LSM)ツリーを使用する実装を説明する。LSMツリーは、不変データバージョンを用いてデータ変更を記述することができる。キー範囲マルチテナンシにより、サーバへの動的なバインディング(binding)が可能になり、そして、各テナントのデータを個別に保持するために使用され得る。
【0008】
LSMツリーベースのストレージ内の不変レコードは、「ツームストーン(“tombstone”)」をストレージの中へ挿入することによって効果的に削除され得る。ツームストーンは、キーに対応する値が削除されたことを示すデータマーカである。ツームストーンは、例えば、レコード内に指定されたフラグ値を設定することによって、実装され得る。ツームストーンの目的は、関連する値の削除をマーク付けするだけではなく、ツリーから値をプルーニング(pruning)する潜在的に費用のかかるオペレーションを回避(または、遅延)することでもある。従って、時間的に順序付けられたサーチの最中にツームストーンに遭遇すると、ツリー内の古いロケーションにキー値ペアの期限切れバージョンが存在する場合でさえも、対応する値は削除されるものと理解される。
【0009】
LSMツリーベースのストレージ内の物理レコードの各バージョンは不変であるため、削除のためにマーク付けされたレコードは、数日、数ヶ月、または数年に及ぶ任意の長期間にわたり、実際には削除されないことがある。データベースの構造、維持、および管理の技術分野において、この遅延は特に問題となる可能性がある。多数の短命(short-lived)レコードを有するテーブル(例えば、メッセージキューテーブル)を利用するデータベースシステムにおいては、特にそうであり、そこでは、ツームストーンが短期間で蓄積し得る。そうしたテーブルにおけるキー順(key-ordered)サーチは、多数のツームストーンが蓄積する場合にはチャレンジングである。キー順サーチは、所与のキー範囲内で全てのツームストーンを読み出す必要があるためであり、そうして、それら全てが無視され得る。
【0010】
開示される実施形態は、パラメータを変更し、かつ、満足されたときに、データベース構造からのツームストーンを早期に除去することを可能にするルール(rule)を実施することによって、データベース構造におけるツームストーン蓄積の技術的問題に対処する。早期の除去は、多くの改善を提供する。システム全体において廃止されるデータ(obsolete data)のストレージを削減すること、システムの速度向上、および、シーケンシャルスキャンの速度向上、といったものである。
【0011】
図1は、開示されるツームストーン除去プロセスを実装することによって改善され得る例示的なシステム100を示している。データの不変バージョンは、システム100において「エクステント(“extent”)」に保管されている。「エクステント」は、ストレージ領域を参照するものであり、典型的には、ストレージ媒体の中で連続しており、データを保管するために使用され得る。以下に説明されるように、「エクステント参照(“extent reference”)」は、物理的ストレージ内に保管される物理的エクステントに対する論理的な参照として使用され、そして、物理的ストレージに対するアクセスをストレージ内の1つ以上の「レベル(“level”)」へと仮想化するために使用され得る。それを通じて、データベースは、データベース保守および最適化プロセスの一部として、経時的に移行(migrate)する。
【0012】
システム100は、単一のコンピューティング装置、または、複数の接続されたコンピューティング装置上で動作することができる。例えば、システム100は、ラップトップ、デスクトップ、個々のサーバ、サーバクラスタ、サーバファーム、または、分散サーバシステムにおいて実装され、もしくは、仮想コンピューティングデバイス又はシステムとして、または、物理的システムと仮想システムの任意の適切な組合わせとして実装され得る。簡潔のために、プロセッサ、オペレーティングシステム、および、データベース管理システムの他のコンポーネント、といった、様々な部分は示されていない。
【0013】
システム100は、コンピューティングシステムおよびネットワークインフラストラクチャの一部であってよく、もしくは、そうでなければ、システム100と同様の他のサーバシステムを含み得る、より大きなサーバネットワークを含んでいる、別個のコンピューティングシステムおよびネットワークインフラストラクチャに対して接続されてよい。いくつかの実施において、システム100は、図6に示されるコンピュータ600、セントラルコンポーネント700、及び/又は、第2コンピュータ800であり、かつ/代替的に、図7に示されるデータベースシステム1200aから1200dのうち1つ以上であってよい。
【0014】
システム100は、アクセスレイヤ105、仮想化レイヤ115、および、物理的ストレージレイヤ127を含んでいる。アクセスレイヤ105は、1つ以上のサーバ111、112、113を含むことができ、テナントがアプリケーションおよびデータベースをホスティングするためのプラットフォームを提供し、そして、ユーザがシステム100とインタラクションするためのプライマリインターフェイスとして機能する。アクセスレイヤ105は、また、サーバ111、112、113にわたる負荷分散(load balancing)を処理することができ、かつ、コンピューティングデバイス(例えば、図6に示されるコンピュータ600及び/又は第2コンピュータ800)からのシステム100に対するクエリを受け入れて、処理することができる、データベース・ストレージエンジン110も含み得る。例えば、データベース・ストレージエンジン110は、テナント組織からクエリを受け取り、そして、仮想化レイヤ115に対してコマンドを送信するためにクエリを処理することができる。データベース・ストレージエンジン110は、データベースシステムについてクエリを受け取り、そして、受け取ったクエリと関連するデータを検索する(retrieving)ための、サーバシステム100におけるハードウェアおよびソフトウェアの任意の適切な組み合わせであり得る。
【0015】
仮想化レイヤ115は、カスタマイズされたデータベースといった、システムサービスを各テナントに提供するために、テナントデータを仮想化し、テナントデータは、たとえ複数のテナントからのデータがシステム100内に保管され得るとしても、テナント自身のデータだけにアクセスすることが可能である。仮想化レイヤは、エクステント参照セット120およびメモリストレージ125を含み得る。いくつかの実装において、エクステント参照セット120およびメモリストレージ125は、図6に示されるセントラルコンポーネント700及び/又は図7に示されるデータベースシステム1200a-1200dに保管され得る。
【0016】
メモリストレージ125は、データが、物理的ストレージレイヤ127内のエクステントに対してレコードされる前に、データの初期バージョン(initial version)を保管する。つまり、新たなレコードの挿入またはツームストーンの挿入といった、データトランザクションは、メモリストレージ125レベルで発生する。経時的に、メモリストレージ125の使用を最適化するために、フラッシュ(flush)オペレーションは、データを、メモリストレージ125レベルから物理的ストレージレベル127における最上位レベルのエクステント130まで移送し、そして、マージ(merge)オペレーションは、データベース保守オペレーションの一部として、エクステント130間でデータを移送する。仮想化という用語においては、このように、より新たなデータがツリーの「最上位(“top”)」またはデータベースの「上位レベル(“upper levels”)」に存在し、一方で、より古いデータがツリーの「最下位(“bottom”)」またはデータベースの下位レベル(“lower levels”)」に存在すること、が言える。この用語は、しかしながら、概念化の助けとして単に使用されているだけであり、そして、データベース内で相互に関するデータの実際の物理的ロケーションについて必ずしも関係がないことが、理解されるべきである。
【0017】
エクステント参照セット120は、エクステント130が物理的ストレージ127内でどこに配置されているか(例えば、テナントデータがエクステント130の一部として保管され得るところ)を定義するために、テナントデータからのメタデータを使用することができる。メタデータは、例えば、エクステント内でどのキーが可視であるかを定義するキー範囲、エクステント130内のレコード/ツームストーンのトランザクション順序を示すトランザクション番号(ここにおいては「XCN」として参照される)、および、エクステントを所与のテナントと関連付けるテナント識別子(ID)データ、を含み得る。エクステント参照セット120は、物理的ストレージ127内に保管された物理的エクステントに対する論理的参照の機能性を提供するように動作できる、サーバシステム100におけるハードウェアおよびソフトウェアの任意の適切な組み合わせを使用して実装され得る。
【0018】
仮想化レイヤ115は、データベース・ストレージエンジン110からクエリを受け取り、そして、データの最新のバージョンがメモリストレージ125内にあるか否かをチェックすることにより、または、エクステント参照セット120を参照して、データの最新のバージョンが物理的ストレージレイヤ127内のエクステント130まで既にフラッシュされたか否かをチェックすることによって、要求されたデータを見つけることができる。
クエリは、例えば、少なくとも1つのテナントと関連付けられたデータベースシステムの許可されたユーザから受け取ることができる。データが、既に物理的ストレージ127までフラッシュされている場合に、仮想化レイヤ115は、メタデータに基づいて、エクステント参照セット120内に要求されたデータを見つけることができる。つまり、仮想化レイヤ115は、クエリによって要求されたデータをエクステント130から引き出す(retrieve)ことができ、そして、例えば、データベースシステムに対してクエリを送信したコンピューティングデバイスへ、データベースを提供することができる、データベース・ストレージエンジン110に対してデータを返す(return)ことができる。
【0019】
物理的ストレージレイヤ127は、不変データストレージを含み、そして、例えば、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光メモリ、光ストレージ装置、または、任意の他の適切な物理的データストレージ、もしくは、それらの組み合わせとして、実装され得る。物理的ストレージレイヤ127は、テナントデータの不変バージョンを含んでいる、エクステント130を実装することができる。物理的ストレージレイヤ127は、また、エクステント130のアイデンティティおよび寿命を管理し、かつ、エクステントを保管することができるストレージおよびサーバといった、ハードウェアを管理するようにデータ容量を追跡するためのカタログ135も含むことができる。
【0020】
物理的ストレージ127内のデータは不変であるため、保管されたデータを変更するためのデータトランザクションをシステム100が実行するとき、システム100は、既に保管されているデータのコンテンツを変更/削除する代わりに、データの新たなバージョンを作成し、そして、メモリストレージ125の中へ挿入する。従って、ここにおいて開示されるように複数のバージョンのデータ(例えば、各々が異なるコンテンツを有しているもの)について、同一のキー(identical keys)を有することが可能である。各トランザクションをマーク付けするために、増分シーケンシャルトランザクション識別子(incremental sequential transactional identifier、XCN)を使用することによって、システム100は、保管されたデータの変更を実行するために、データのバージョンについて同一のキーを使用する。例えば、レコードに係る後のバージョンは、レコードに係る前のバージョンよりも高いXCNを有しており、そして、両方のレコードは、同一のキーを有するが、潜在的には異なるコンテンツ値を有することになる。
【0021】
システム100が、データの読み出しを必要とするオペレーションを実行するとき、システム100は、XCNによって時間的に順序付けられたサーチを実行することができる。サーチの最中に、ツームストーンに遭遇したとき、システム100は、ツームストーンと同一のキー、および、ツームストーンよりも低いXCNを有しているあらゆる以前のレコードを無視することができる。つまり、本システムは、たとえキー値ペアのうち1つ以上の有効期限切れバージョンがエクステント130内の古いロケーションに存在していても、対応する値が削除されているかのように機能する。
【0022】
開示される実施形態を説明するためには、開示される早期のツームストーン除去プロセスを従来のツームストーン除去プロセスに対して比較することが有益である。図2は、LSMツリーベースのストレージシステムからツームストーンを段階的に除去するための従来のプロセスを示している。上述のように、フラッシュおよびマージオペレーションを介して、システム内のデータ(例えば、レコードおよびツームストーン)は、仮想レベルを介して、メモリストレージ(新たなデータ)から物理的ストレージ(古いデータ)内のエクステントへ、「ダウン(“down”)」して移行する。従来のLSMツリーベースのストレージシステムにおいて、ツームストーンは、最古のレコードが保管されている、物理的ストレージの最低レベルに到達するまで、除去されない。
【0023】
図2は、メモリストレージ225内の一連のトランザクション、および、後続の物理的ストレージエクステントに対するマージオペレーションを示している。キーKAおよびトランザクション番号xc10を有しているレコード230がベーステーブルの行210に挿入され、そして、キーKBおよび増分的に(incrementally)より高いトランザクション番号xc11を有している対応するレコード235がセカンダリ・インデックス内に記入される(entered)。レコード230がアップデートされると(つまり、新たなトランザクションにおいて)、新たなレコード240がベーステーブルの行210内に記入される。新たなレコード240は、以前のレコード230と同一のキーKAを有しているが、また、アップデートされた値(図示なし)および次の増分的なトランザクション番号xc12も有する。アップデートは、セカンダリ・インデックスレコード235の削除をマーク付けするためにツームストーン237の挿入、および、新たなセカンダリ・インデックスレコード245の挿入を促す。
【0024】
経時的に、複数のアップデート250が発生し、追加のツームストーンおよびアップデートされたセカンダリ・インデックスレコード255を結果として生じ得る。最後に、アップデートレコードは、削除のためにツームストーン260を用いてマーク付けされ、そして、対応するツームストーン265が、対応するセカンダリ・インデックスレコードのために追加される。システムが、メモリストレージ225から物理的ストレージエクステント227までデータをプッシュするためのフラッシュオペレーションを実行するとき、廃止されるアップデートレコード270は物理的ストレージエクステント227まで繰り越される(carried forward)必要はない。それらは廃棄され、そして、先へ(forward)書き込まれない。しかしながら、最新のレコードそれぞれは、この場合にはツームストーン(例えば、260、237、265)が、繰り越される。かくして、ツームストーン280は、エクステント227内に保管される。
【0025】
図2に示されるフラッシュオペレーションにおいては、たとえレコード280それぞれがツームストーンであっても、従来のシステムにおいて、それらは廃棄することができない。ツームストーンは、本質的に、ツームストーンと同一のキーを用いて、あらゆる以前のレコードをシステムによって読み出されることをブロックし、または、阻止する。ツームストーン280は、ツームストーン280のうち1つと同一のキーを有する追加のレコードが、未だに、ストレージの仮想レベルでさらに下のどこかに保管されている可能性が存在する限りは、廃棄することができない。例えば、エクステント227からエクステント229までの以前のマージオペレーションが、エクステント229へ書き込まれているキーKAのためのレコード290を結果として生じたか否かは不明である。レコード290がエクステント229内に存在する場合には、次いで、ツームストーン280を廃棄することで、レコード290を読み出し(readout)においてアクセス可能にさせるだろう。このような理由で、従来のシステムにおいて、ツームストーンは、物理的ストレージ内で最低レベルの(つまり、最後の)エクステントに到達するまで、システムに侵入する。その時点においてだけ、ツームストーンによってブロックされる必要がある以前のレコードが存在しないことが保証され得る。
【0026】
従って、ターゲットエクステントに対する従来のマージオペレーションは、以下のとおりである。
1)(例えば、XCNといった、時間パラメータに基づいて)レコードの範囲を選択する。
2)範囲内の同一のキーを有しているレコードを、時間的な順番で複製セット(バッファ)に追加する。
3)複製セットから最新のレコードRを保持し、残りの複製セットレコードをプルーンセット(prune set)として保持する。
4)それらのレコードをターゲットエクステントへ書き込まないことによって、プルーンセットを破棄する。
5)Rがツームストーンであり、かつ、ターゲットエクステントがシステム内で最低レベルのエクステントである場合には、Rを廃棄し、そうでなければ、ターゲットエクステントへRを書き込む。
【0027】
図2に示されるように、このマージプロセスは、ツームストーンが、安全に廃棄され得る、最低レベルのエクステントへ最終的に到達するまで、物理的ストレージ全体にわたりツームストーンの蓄積を結果として生じ得る。多くのデータベースアプリケーションでは、この結果は有害であり、システムの動作速度について悪影響を及ぼし得るものであり、そして、そうでなければ、コンテンツデータを保管するために使用され得るであろうストレージ空間を取り上げる。さらに、いくつかのデータベースサービスは、多数のレコードの挿入と削除との間の時間が比較的に短いメッセージクエサービスといった、過剰な数の不要なツームストーンを迅速に生成し得る。
【0028】
図3は、ストレージシステムからツームストーンを早期に除去することを可能にするために、まもなく開示される技術的事項に従ったコンピュータで実装されるプロセスを示している。レコード330がメモリストレージ225のベース行テーブル310の中へに最初に挿入されると、システムは、最初に、キーKAと関連する他のアクティブレコード(つまり、削除のためにマーク付けされていないレコード)がシステム内に存在しないことを確認する。他のレコードが見つからない場合に、レコード330は「初期フラグ(“initial flag”)」を用いてマーク付けされ、それがキーKAと関連する現在の最初で、かつ、最も早いアクティブレコードであることを示している。
【0029】
従って、この例において、キーKAおよびトランザクション番号xc10を有している初期レコード330が、ベーステーブル行310の中へ挿入され、そして、キーKB、および、増分的により高いトランザクション番号xc11を有している対応する初期レコード335が、セカンダリ・インデックス内に記入される。レコード330がアップデートされると(つまり、新たなトランザクション内に異なる値が与えられる)、新たなレコード340がベーステーブル行210に内に記入される。新たなレコード340は、アップデートであって、初期レコードではない。なぜなら、初期レコード330は、既にキーKAと関連付けられているからである。従って、アップデートレコード340について「初期フラグ」は、値0のままである。
【0030】
アップデートレコード340は、初期レコード330と同一のキーKAを有しているが、調整値(図示なし)、および、次の増分的なトランザクション番号xc12を保管している。アップデートは、セカンダリ・インデックスレコード335の削除をマーク付けするためにツームストーン337の挿入を促す。ツームストーン337は、初期のセカンダリ・インデックスレコード335を非アクティブにする(つまり、実際上は削除される)。新たなセカンダリ・インデックスレコード345の挿入は、「初期フラグ」によってマーク付けされる。
【0031】
経時的に、複数のアップデート350が発生し、追加のツームストーンおよび新たな初期セカンダリ・インデックスレコード355を結果として生じ得る。最後に、アップデートレコードが削除のためにツームストーン360を用いてマーク付けされ、そして、対応するツームストーン365が、対応するセカンダリ・インデックスレコードのために追加される。
【0032】
この状況では、システムがフラッシュ/マージオペレーションを実行するとき、廃止されるアップデートレコード270の全てが物理的ストレージエクステント227まで繰り越される必要はなく、そうして、それらは廃棄されて、かつ、先へ書き込まれない。しかしながら、従来のシステムとは異なり、開示されるシステムは、残りのツームストーンが繰り越される必要があるか否かを決定することができ、もしくは、また、廃棄することもできる。ツームストーンを早期に廃棄することができるか否かを自動的に決定する、開示されるマージオペレーションの実施例は、以下のとおりである。
1)(例えば、XCNといった、時間パラメータに基づいて)レコードの範囲を選択する。
2)範囲内の同一のキーを有しているレコードを、時間順に複製セット(バッファ)に追加する。
3)複製セットから最新のレコードRを保持し、残りの複製セットレコードをプルーンセットとして保持する。
4)Rがツームストーンであり、かつ、ターゲットエクステントがシステム内の最低レベルのエクステントである場合に、Rを廃棄する。
5)Rがツームストーンであり、かつ、プルーンセット内の最古のレコードが初期レコードである場合に、Rを破棄する。
6)プルーンセットが空であり、かつ、Rがツームストーンおよび初期レコードの両方である場合に、Rを破棄する。
7)プルーンセットレコードを、ターゲットエクステントへ書き込まないことによって、廃棄する。
8)Rが破棄されず、かつ、Rがツームストーンでない場合は、ターゲットエクステントにRを書き込み、プルーンセット内の最古のレコードの初期フラグ設定を継承する。
9)Rが廃棄されず、かつ、Rがツームストーンである場合は、ツームストーンとしてマーク付けされたターゲットエクステントへRを書き込む。
【0033】
上記の運用プロセスを図3に示された状況に対して適用すると、選択されるレコードの範囲が、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有するレコードに基づいて決定され得る。例えば、この場合、範囲は、トランザクション番号(XCN) xc10-xc25を含み得る。キーKAについて、複製セット内の最新のレコードRはxc24 TS KAである。プルーンセット内の最古のレコードは、xc10 Initial KAである。従って、このインスタンスにおいて、上記のオペレーション番号5がトリガされ、そして、Rは破棄される。指定されたXCN範囲の全体に対してオペレーションを適用すると、レコード370、380の全てが破棄され、そして、エクステント227に何も書き込まれない。
【0034】
従来のシステムとは対照的に、この状況において、ツームストーンは、現在開示されたシステムによって安全に廃棄され得る。なぜなら、開示されたシステムは、もはやツームストーンが必要とされないことを正確に判断することができるからである。キーKA、KBを使用する追加レコードに対するスキャンは、初期フラグが設定された時点で既に実行されている(つまり、レコード330、335、345、等について)。初期フラグは、キーKA-KFについて古いアクティブレコードが存在しないことを示している。従って、アクセスをブロックするためにツームストーン360、337が必要とされるレコードだけが、全て複製セットの範囲内にあり、そして、それらは現在のマージにおいて全て破棄される。
【0035】
従って、開示されたコンピュータ実装プロセスの実施形態は、ツームストーンが最低レベルのエクステントに到達する以前に、安全かつ自動的に、ツームストーンを廃棄することができ、それによって、追加のストレージ空間を解放し、かつ、システムの動作速度を改善することにより、システムを改善している。
【0036】
図4A図4B図5A、および図5Bは、開示されたコンピュータ実装プロセスの実施形態が、マージオペレーションにおいて解決することができる、複製セットのシナリオを示している。図4Aにおいて、複製セット400内の最新のレコードRは、ツームストーン410である。プルーンセット420は、複製セット400からの残りのレコードを含んでいる。プルーンセット420内の最古のレコードは、アップデートレコード430である。この場合には、最古のレコードが初期レコードとしてマーク付けされておらず、かつ、Rがツームストーンおよび初期レコードの両方としてマーク付けされていないので、システムは、ターゲットエクステントが最低レベルでない限り、キーKAについてツームストーンレコードを保存し、そして、残りのレコードを破棄する。この場合には、Rおよびプルーンセットの両方が破棄され得る。
【0037】
図4Bにおいて、複製セット401内の最新のレコードRは、アップデートレコード440である。プルーンセット450は、複製セット401からの残りのレコードを含んでいる。この場合には、プルーンセット450内の最古のレコードは初期レコード460であるが、Rがツームストーンレコードではないので、プルーンセット450は廃棄され、そして、Rは初期レコードとしてマーク付けされたターゲットエクステントへ書き込まれる。
【0038】
図5Aにおいて、複製セット500内の最新のレコードRは、レコード510であり、初期レコードおよびツームストーンの両方としてマーク付けされている。このことは、レコードが挿入され、そして、次いで、同一のトランザクション内で削除のためにマークが付けられたときに発生し得る。プルーンセット520内の最古のレコードは、アップデートレコード530である。レコード530が初期レコードとしてマーク付けされていないので、キーKAについてツームストーンレコードはターゲットエクステントに対して先へ書き込まれる。つまり、この場合には、Rも、また、初期レコードであるが、どのフラグを繰り越すかを決定する際には、ツームストーンフラグが優先される。
【0039】
図5Bにおいて、複製セット500内の最新のレコードRは、初期レコードおよびツームストーンの両方として、再び、マーク付けされている。しかしながら、この場合には、プルーンセット550内の最古のレコードが、初期レコード560としてマーク付けされている。従って、Rおよびプルーンセット550の両方が破棄され得る。
【0040】
本開示の技術的事項の実装は、様々なコンポーネントおよびネットワークアーキテクチャにおいて実装され、そして、それらと共に使用され得る。図6は、本開示の技術的事項を実装するために適した例示的なコンピュータ600である。コンピュータ600は、複数のコンピュータのネットワーク内の単一のコンピュータであってよい。図6に示されるように、コンピュータ600は、セントラルコンポーネントまたは分散コンポーネント700(例えば、サーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバ、等)と通信することができる。セントラルコンポーネント700は、ストレージデバイス810を含み得る、第2コンピュータ800といった1つ以上のコンピュータと通信することができる。第2コンピュータ800は、サーバ、クラウドサーバ、等であってよい。ストレージ810は、任意の適切な揮発性および不揮発性の物理的ストレージ媒体の任意の適切な組み合わせを使用することができ、例えば、ハードディスクドライブ、ソリッドステートドライブ、光媒体、フラッシュメモリ、テープドライブ、レジスタ、および、ランダムアクセスメモリ、等、または、それらの任意の組み合わせ、を含んでいる。
【0041】
上述のレコードといった、データは、任意の適切なファイルシステム、もしくは、ストレージスキームまたは階層を使用して、例えば、ストレージ810内に任意の適切なフォーマットで保管され得る。例えば、ストレージ810は、上述のように、複数のレベルを有するログ構造化マージ(LSM)ツリーを使用してデータを保管することができる。さらに、図6図7に示されるシステムがマルチテナントシステムである場合に、ストレージは、テナントのためのデータベースの各インスタンスについて、別々のログ構造化マージツリーへと編成され得る。代替的に、特定のサーバまたはシステム上の全てのレコードのコンテンツが、単一のログ構造化マージツリー内に保管されてよく、その場合には、各テナントのデータを区別するために、レコードのバージョンと関連する固有のテナント識別子が使用され得る。より最近のトランザクションが、ツリーの最上位または上部レベルに保管され、そして、より古いトランザクションが、ツリーの最下位レベルに保管され得る。代替的に、各レコードについて最新のトランザクションまたはバージョンが、ツリーの最上位レベルに保管され、そして、以前のバージョンまたは以前のトランザクションが、ツリーの最下位レベルに保管され得る。
【0042】
セントラルコンポーネント700へ、かつ/あるいは、セントラルコンポーネントから獲得された情報は、コンピュータ600がコンピュータ800と情報を共有しないように、各コンピュータについて分離されてよい。代替的または追加的に、コンピュータ600は、第2コンピュータ800と直接的に通信することができる。
【0043】
コンピュータ(例えば、ユーザコンピュータ、エンタープライズコンピュータ等)600は、中央処理装置640といったコンピュータ600の主要コンポーネントと相互接続するバス610、メモリ670(典型的にはRAMだが、また、ROM、フラッシュRAM等も含み得る)、入力/出力コントローラ680、ディスプレイアダプタを介するディスプレイまたはタッチスクリーンといった、ユーザディスプレイ620、ユーザ入力インターフェイス660を含んでいる。ユーザ入力インターフェイスは、1つ以上のコントローラ、および、キーボード、マウス、Wi-Fi/セルラ無線、タッチスクリーン、マイクロフォン/スピーカ、等といった、関連するユーザ入力またはデバイスを含んでよく、そして、I/Oコントローラ680、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイス、等といった、固定ストレージ630、および、光ディスク、フラッシュドライブ、等を制御および受信するように動作するリムーバブルメディアコンポーネント650に対して接近して接続されてよい。
【0044】
バス610は、上述のように、中央処理装置640とメモリ670との間のデータ通信を可能にし、これは、読み出し専用メモリ(ROM)またはフラッシュメモリ(いずれも図示なし)、および、ランダムアクセスメモリ(RAM)(図示なし)を含み得る。RAMは、その中へオペレーティングシステムおよびアプリケーションプログラムがロードされるメインメモリを含み得る。ROMまたはフラッシュメモリは、とりわけ、コード、ペリフェラルコンポーネントとのインタラクションといった基本的なハードウェアオペレーションを制御する基本入出力システム(BIOS)を含み得る。コンピュータ600に常駐するアプリケーションは、ハードディスクドライブ(例えば、固定ストレージ630)、光学ドライブ、フロッピー(登録商標)ディスク、または、他の記憶媒体650といった、コンピュータで読取り可能な媒体上に保管され、そして、これを介してアクセスされ得る。
【0045】
固定ストレージ630は、コンピュータ600と一体化されてよく、または、他のインターフェイスを介して分離されて、アクセスされてよい。ネットワークインターフェイス690は、電話リンクを介してリモートサーバに対する直接的な接続、インターネットサービスプロバイダ(ISP)を介してインターネットへの直接的な接続、もしくは、POP(point of presence)または他の技術を介するインターネットへの直接的なネットワークリンクを介してリモートサーバへの直接的な接続を提供することができる。ネットワークインターフェイス690は、デジタルセルラ電話接続、セルラ・デジタル・パケット・データ(CDPD)接続、デジタル衛星データ接続、等を含む、無線技術を使用して、そうした接続を提供することができる。例えば、ネットワークインターフェイス690は、図7に示されるように、1つ以上のローカル、ワイドエリア、または、他のネットワークを介して、コンピュータが他のコンピュータと通信するのを可能にし得る。
【0046】
多くの他の装置またはコンポーネント(図示なし)は、同様な方法(例えば、データキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び/又は許可サーバ、コンピュータ及び/又はネットワークセキュリティシステム、等)で接続され得る。逆に、本開示を実施するために、図6に示されている全てのコンポーネントが存在する必要はない。これらのコンポーネントは、示されたものとは異なる方法で相互接続され得る。本開示を実装するためのコードは、メモリ670、固定ストレージ630、リムーバブルメディア650のうちの1つ以上といった、コンピュータで読取り可能な記憶媒体、または、リモートストレージロケーションにおいて保管され得る。
【0047】
図7は、開示される技術的事項の実装に従った、ネットワーク構成の例を示している。クラウド1202によって表されるネットワーク内の異なるノードにおける4つの別々のデータベースシステム1200a-1200dは、ネットワークリンク1204を通じて相互に、および、ユーザ(図示せず)と通信する。データベースシステム1200それぞれは、データベースの複数のインスタンスをホストするように動作可能であり、ここで、各インスタンスは、特定のテナントと関連するユーザだけにアクセス可能である。データベースシステムそれぞれは、ストレージエリアネットワーク(図示なし)と一緒にコンピュータのクラスタ、ファイアウォールと一緒にロードバランサおよびバックアップサーバ、他のセキュリティシステム、および、認証システムを構成することができる。システム1200のいずれかにおけるインスタンスのいくつかは、インスタンス内のストレージのためデータを取り込み、かつ、提供するために、ユーザから、または、計算要素(図示なし)から受け取ったトランザクションを処理し、そして、コミットするライブまたはプロダクション・インスタンスであってよい。
【0048】
データベースシステム、例えば1200c、は、図6におけるような、少なくとも1つのストレージデバイスを含み得る。例えば、ストレージは、メモリ670、固定ストレージ630、リムーバブルメディア650、セントラルコンポーネント700及び/又は第2コンピュータ800に含まれるストレージデバイス、及び/又は、データベースシステム1200a-1200dのうち1つ以上と関連付けられた1つ以上のストレージ、を含み得る。
【0049】
いくつかの実装において、図6図7に示される1つ以上のサーバは、ログ構造化マージツリーデータ構造を使用して、少なくとも1つのストレージ(例えば、セントラルコンポーネント700、第2コンピュータ800、及び/又は、データベースシステム1200a-1200dと関連付けられたストレージ)の不変ストレージ内にデータを保管し得る。
【0050】
開示された技術的事項のシステムおよび方法は、シングルテナントシステム、及び/又は、マルチテナントシステム用であってよい。マルチテナントシステムにより、種々のテナント、例えば、ユーザ、ユーザのグループ、または、組織であり得るものは、種々のテナント間で共有され得るサーバシステム上のソフトウェアツールまたはインスタンスを通じて、サーバシステム上でそれら自身のレコードにアクセスすることができる。各テナントに対するレコードのコンテンツは、そのテナントのためのデータベースの一部分であってよい。複数のテナントに対するレコードのコンテンツは、全てが同一のサーバシステム内に一緒に保管され得るが、各テナントは、そのテナントに属するか、または、そのテナントによって作成されたレコードのコンテンツだけにアクセスすることができる。このことにより、サーバシステムは、例えば、別々のサーバまたはサーバシステム上に、各テナントのレコードのコンテンツを別々に保管する必要なく、マルチテナントを可能にし得る。テナントのためのデータベースは、例えば、リレーショナルデータベース、階層的データベース、または、あらゆる他の適切なデータベースタイプであり得る。サーバシステム上に保管される全てのレコードは、例えば、LSMツリーを含む、任意の適切な構造において保管され得る。
【0051】
さらに、マルチテナントシステムは、各ノードにコンピューティングシステムを有するネットワーク全体にわたり分散されたサーバシステム上に様々なテナントインスタンスを有し得る。各テナントのライブまたはプロダクション・データベースインスタンスは、1つの特定のコンピュータシステムで処理されたトランザクションを有し得る。そのインスタンスのトランザクションを処理するためのコンピューティングシステムは、また、他のテナントのための他のインスタンスのトランザクションも処理することができる。
【0052】
詳細な説明のうちいくつかの部分は、コンピュータメモリ内のデータ上のオペレーションに係るダイヤグラムまたは記号的な表現の見地から提示されている。これらのダイヤグラム、説明、および表現は、自身の作業のサブスタンスを他の当業者に対して最も効果的に伝達するために、データ処理技術の当業者によって一般的に使用されている。コンピュータに実装されたプロセスは、ここにあり、そして、一般的に、所望の結果へ導く自己矛盾のない一連のステップであると考えられている。ステップは、物理量の物理的なオペレーションを必要とするものである。たいてい、必ずしもそうとは限らないが、こうした量は、保管、移送、結合、比較、そして、操作されることが可能な電気的または磁気的な信号の形態をとる。主として共通利用の理由のために、これらの信号を、ビット、値、要素、記号、文字、用語、数字、等として参照することが、時には便利なことが判明している。
【0053】
しかし、これらの用語および類似の用語の全てが、適切な物理量と関連付けられ、そして、これらの量に適用される単に便利なラベルに過ぎないことを心に留めておくべきである。上述の説明から明らかであるとして別途具体的に示されない限り、説明全体を通じて、「書き込み(“writing”)」、「読み出し(“reading”)」、「受信(“receiving”)」、「送信(“transmitting”)」、「変更(“modifying”)」、「アップデート(“updating”)」、「送付(“sending”)」、等といった用語を使用する議論は、コンピュータシステムのレジスタおよびメモリ内の物理的(例えば、電子的)量として表されるデータを、コンピュータシステムのメモリまたはレジスタ内の物理的量として同様に表される他のデータ、もしくは、情報のストレージ、送信、または表示装置といった他のものへと操作して、かつ、変換する、コンピュータシステム、または、同様な電子コンピューティングデバイスの動作およびプロセスを参照することが理解される。
【0054】
さらに、より一般的には、本開示の技術的事項に係る様々な実施は、これらのプロセスを実施するためのコンピュータで実施されるプロセスおよび装置の態様を含み、または、その形態で実施され得る。実装は、また、フロッピー(登録商標)ディスケット、CD-ROM、ハードドライブ、USB(universal serial bus)ドライブ、または、あらゆる他のマシンで読取り可能な記憶媒体といった、非一時的、かつ/あるいは、有形な媒体に実装された命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態でも実装され得る。ここで、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは、開示される技術的事項の実装を行うための装置になる。実装は、また、コンピュータプログラムコードの形態でも実施されてよく、例えば、ストレージ媒体内に保管されるか、コンピュータにロードされ、かつ/あるいは、コンピュータによって実行されるか、もしくは、電気配線またはケーブルを介し、光ファイバを通じ、または、電磁放射線を介して、といった、ある伝送媒体を介して送信されるにしても、ここで、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは、開示される技術的事項の実装を行うための装置になる。――汎用マイクロプロセッサ上で実施されるとき、コンピュータプログラムコードセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータで読取り可能な記憶媒体上に保管された一式のコンピュータで読取り可能な命令は、汎用プロセッサによって実装され、それは、汎用プロセッサ、または、汎用プロセッサを含む装置を、命令を実装または実行するように構成された専用装置へと変換し得る。実装は、汎用マイクロプロセッサ、及び/又は、開示される技術的事項のハードウェア及び/又はファームウェアにおける実装に従って、技術の全部または一部を実装する特定用途向け集積回路(ASIC)といった、プロセッサを含み得るハードウェアを使用して実装され得る。プロセッサは、RAM、ROM、フラッシュメモリ、ハードディスク、または、電子情報を保管することができる、あらゆる他のデバイスといった、メモリに結合され得る。メモリは、開示される技術的事項の実装に従って技術を実行するために、プロセッサによって実行されるように適合された命令を保管し得る。
【0055】
上記の記載は、説明目的のために、特定の実装を参照して説明されている。しかしながら、上記の例示的な説明は、網羅的(exhaustive)であること、または、開示される技術的事項の実施を、開示される正確な形態に限定するように意図されたものではない。多くの変更および変形が、上記の教示を考慮すると可能である。実装は、開示される技術的事項の実施に係る原理、および、それらの実際的なアプリケーションを説明するために選択され、かつ、説明されており、それによって、他の当業者は、考えられる特定の使用に適した様々な変更を伴う様々な実装と同様に、それらの実装を利用することができる。
図1
図2
図3
図4A
図4B
図5A
図5B
図6
図7