(57)【要約】装置が開示される。当該装置は、データベースノード又は記憶ノードにおいて実現されてもよく、1つ以上のプロセッサと、プロセッサに対して多数の動作を実行させるための命令を記憶するメモリとを含む。ページ書き込み要求に応じて、当該装置は、要求されたページに対応する識別子を決定し、記憶ノードの追加専用記憶ログに追加するために、ページに対応するコンポーネントブロックを記憶ノードに送信し、記憶されたコンポーネントブロックの物理位置を受信し、記憶されたコンポーネントブロックの物理記憶位置を、ページに対応する論理識別子に関連付ける。
2021508879.tif 000002
【特許請求の範囲】
【請求項１】
1つ以上のプロセッサと、
前記1つ以上のプロセッサにより実行されたとき、前記1つ以上のプロセッサに対して、
ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信させ、
ログライタにより、ログディレクトリ内の前記ページに対応する論理識別子を決定させ、
前記ログライタにより、記憶ノードの追加専用記憶ログに追加するために、前記1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを前記記憶ノードに送信させ、
前記記憶ノードから、前記1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を受信させ、
前記ログディレクトリにおいて、前記1つ以上のコンポーネントブロックのそれぞれの前記物理記憶位置を、前記ページに対応する前記論理識別子に関連付けさせる、
プロセッサ実行可能命令を記憶するメモリと
を含む装置。
【請求項２】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
ページに関するページ読み取り要求を受信させ、
前記ログディレクトリにより、記憶ノード内の前記要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定させ、
ページリーダにより、前記1つ以上のコンポーネントブロックの前記物理記憶位置に基づいて、前記記憶ノードから、前記要求されたページの前記1つ以上のコンポーネントブロックを取り出させ、
前記要求されたページを返信させる、請求項１に記載の装置。
【請求項３】
前記要求されたページの前記1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、前記要求されたページを返信することは、前記ページリーダにより、前記少なくとも2つの取り出されたコンポーネントブロックから、前記要求されたページを再構築することを含む、請求項２に記載の装置。
【請求項４】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記ログライタにより、前記記憶ノードの前記追加専用記憶ログに追加するために、前記再構築されたページを前記記憶ノードに送信させる、請求項３に記載の装置。
【請求項５】
前記少なくとも2つのコンポーネントブロックは、前記記憶ノードから並列に取り出される、請求項３に記載の装置。
【請求項６】
前記コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む、請求項１乃至５のうちいずれか１項に記載の装置。
【請求項７】
前記記憶ノードは前記データベースノードから離れている、請求項１乃至６のうちいずれか１項に記載の装置。
【請求項８】
前記記憶ノードは前記データベースノードに対してローカルである、請求項１乃至６のうちいずれか１項に記載の装置。
【請求項９】
当該装置は、前記データベースノード及び前記記憶ノードのうち1つに統合される、請求項１乃至８のうちいずれか１項に記載の装置。
【請求項１０】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
ログクリーナにより、前記追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集させ、
前記追加専用記憶ログの終端に追加するために、前記少なくとも1つのライブデータブロックを前記記憶ノードに送信させる、請求項１乃至９のうちいずれか１項に記載の装置。
【請求項１１】
前記少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために前記少なくとも1つのライブデータブロックを前記記憶ノードに送信することは、前記少なくとも2つのライブデータブロックからライブページを再構築し、前記再構築されたライブページを前記記憶ノードに送信することを含む、請求項１０に記載の装置。
【請求項１２】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記追加専用記憶ログの前記セグメントをクリアするように前記記憶ノードに命令させる、請求項１０に記載の装置。
【請求項１３】
データベースノードにおいて、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信するステップと、
ログディレクトリ内の前記ページに対応する論理識別子を決定するステップと、
記憶ノードの追加専用記憶ログに追加するために、前記1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを前記記憶ノードに送信するステップと、
前記記憶ノードから、前記1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を示すデータを受信するステップと、
前記ログディレクトリにおいて、前記1つ以上のコンポーネントブロックのそれぞれの前記物理記憶位置を、前記ページに対応する前記論理識別子に関連付けるステップと
を含む方法。
【請求項１４】
前記データベースノードにおいて、ページに関するページ読み取り要求を受信したことに応じて、
前記ログディレクトリにより、記憶ノード内の前記要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定するステップと、
前記1つ以上のコンポーネントブロックの前記物理記憶位置に基づいて、前記記憶ノードから、前記要求されたページの前記1つ以上のコンポーネントブロックを取り出すステップと、
前記要求されたページを返信するステップと
を更に含む、請求項１３に記載の方法。
【請求項１５】
前記要求されたページの前記1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、前記要求されたページを返信するステップは、前記ページリーダにより、前記少なくとも2つの取り出されたコンポーネントブロックから、前記要求されたページを再構築するステップを含む、請求項１４に記載の方法。
【請求項１６】
前記記憶ノードの前記追加専用記憶ログに追加するために、前記再構築されたページを前記記憶ノードに送信するステップを更に含む、請求項１５に記載の方法。
【請求項１７】
前記少なくとも2つのコンポーネントブロックは、前記記憶ノードから並列に取り出される、請求項１５に記載の方法。
【請求項１８】
前記コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む、請求項１３乃至１７のうちいずれか１項に記載の方法。
【請求項１９】
前記記憶ノードは前記データベースノードから離れている、請求項１３乃至１８のうちいずれか１項に記載の方法。
【請求項２０】
前記記憶ノードは前記データベースノードに対してローカルである、請求項１３乃至１８のうちいずれか１項に記載の方法。
【請求項２１】
前記記憶ノードの前記追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集するステップと、
前記追加専用記憶ログの終端に追加するために、前記少なくとも1つのライブデータブロックを前記記憶ノードに送信するステップと
を更に含む、請求項１３乃至２０のうちいずれか１項に記載の方法。
【請求項２２】
前記少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために前記少なくとも1つのライブデータブロックを前記記憶ノードに送信するステップは、前記少なくとも2つのライブデータブロックからライブページを再構築し、前記再構築されたライブページを前記記憶ノードに送信するステップを含む、請求項２１に記載の方法。
【請求項２３】
前記記憶ノード上の前記追加専用記憶ログの前記セグメントをクリアするように前記記憶ノードに命令するステップを更に含む、請求項２１に記載の方法。
【請求項２４】
コンピュータ読み取り可能媒体であって、
コンピュータにより実行されたとき、前記コンピュータに対して、請求項１３乃至２２のうちいずれか１項に記載の方法を実行させる命令を含むコンピュータ読み取り可能媒体。
【請求項２５】
コンピュータプログラムであって、
当該プログラムがコンピュータにより実行されたとき、前記コンピュータに対して、請求項１３乃至２２のうちいずれか１項に記載の方法を実行させる命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
この特許出願は、2017年12月29日に出願された「SYSTEMS  AND  METHODS  FOR  DATABASE  MANAGEMENT  USING  APPEND-ONLY  STORAGE  DEVICES」という名称の米国特許出願第15/858,960号に対する優先権を主張し、その全内容が複製されているかのように参照により援用する。
【０００２】
［技術分野］
本出願は、データベース管理に関し、特に、追加専用記憶システムにおけるデータベース管理に関する。
【背景技術】
【０００３】
計算デバイスは、ますます遍在している。したがって、ますます多くの量のデータがユーザにより消費されて記憶されている。データは、一般的にデータベースと呼ばれる、データの整理された集合として、物理的なコンピュータ読み取り可能記憶媒体に記憶される。データベースは、ユーザにとってアクセス可能にされ得るデータを記憶するためにしばしば使用される。1つの一般的なタイプのデータベースは、リレーショナルデータベースであり、複数のテーブルが記憶されたデータエントリの間の関係によりリンクされる。いくつかのデータベースでは、これらのテーブルのいくつかの中で行を識別するために固有のキーが使用される。
【０００４】
従来のデータベースは、典型的には、データベース内のレコードを更新するために「アップデート・イン・プレース(update-in-place)」プロセスを使用する。データベース内のレコードが修正されるとき、アップデート・イン・プレースプロセスは、典型的には、前のレコードを保持する記憶デバイスの物理ブロックを、そのレコードの更新されたバージョンで上書きする。アップデート・イン・プレースプロセスは、レガシー記憶デバイス(例えば、ハードディスクドライブ(Hard  Disk  Drive,  HDD))でうまく機能する。追加専用記憶デバイス(例えば、ソリッドステートドライブ(Solid  State  Drives,  SSD))は、レガシーHDDに対して、改善された読み取り及び書き込み速度性能と低減された電力消費とを含む多数の利点を提供する。その結果、現代のデータセンタは、追加専用記憶デバイスをますます組み込んでいる。しかし、追加専用記憶デバイスは、レガシーデータベースシステムでの使用にあまり適さない。
【発明の概要】
【０００５】
本発明の一態様によれば、1つ以上のプロセッサと、1つ以上のプロセッサにより実行されたとき、1つ以上のプロセッサに対して、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信させ、ログライタにより、ログディレクトリ内のページに対応する論理識別子を決定させ、ログライタにより、記憶ノードの追加専用記憶ログに追加するために、1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを記憶ノードに送信させ、記憶ノードから、1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を受信させ、ログディレクトリにおいて、1つ以上のコンポーネントブロックのそれぞれの物理記憶位置を、ページに対応する論理識別子に関連付けさせる、プロセッサ実行可能命令を記憶するメモリとを含む装置が提供される。
【０００６】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、ページに関するページ読み取り要求を受信させ、ログディレクトリにより、記憶ノード内の要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定させ、ページリーダにより、1つ以上のコンポーネントブロックの物理記憶位置に基づいて、記憶ノードから、要求されたページの1つ以上のコンポーネントブロックを取り出させ、要求されたページを返信させる。
【０００７】
上記の実施形態のいずれかにおいて、要求されたページの1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、要求されたページを返信することは、ページリーダにより、少なくとも2つの取り出されたコンポーネントブロックから、要求されたページを再構築することを含む。
【０００８】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、ログライタにより、記憶ノードの追加専用記憶ログに追加するために、再構築されたページを記憶ノードに送信させる。
【０００９】
上記の実施形態のいずれかにおいて、少なくとも2つのコンポーネントブロックは、記憶ノードから並列に取り出される。
【００１０】
上記の実施形態のいずれかにおいて、コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む。
【００１１】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードから離れている。
【００１２】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードに対してローカルである。
【００１３】
上記の実施形態のいずれかにおいて、当該装置は、データベースノード及び記憶ノードのうち1つに統合される。
【００１４】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、ログクリーナにより、追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集させ、追加専用記憶ログの終端に追加するために、少なくとも1つのライブデータブロックを記憶ノードに送信させる。
【００１５】
上記の実施形態のいずれかにおいて、少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために少なくとも1つのライブデータブロックを記憶ノードに送信することは、少なくとも2つのライブデータブロックからライブページを再構築し、再構築されたライブページを記憶ノードに送信することを含む。
【００１６】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、追加専用記憶ログのセグメントをクリアするように記憶ノードに命令させる。
【００１７】
本発明の他の態様によれば、データベースノードにおいて、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信するステップと、ログディレクトリ内のページに対応する論理識別子を決定するステップと、記憶ノードの追加専用記憶ログに追加するために、1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを記憶ノードに送信するステップと、記憶ノードから、1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を示すデータを受信するステップと、ログディレクトリにおいて、1つ以上のコンポーネントブロックのそれぞれの物理記憶位置を、ページに対応する論理識別子に関連付けるステップとを含む方法が提供される。
【００１８】
上記の実施形態のいずれかにおいて、当該方法は、データベースノードにおいて、ページに関するページ読み取り要求を受信したことに応じて、ログディレクトリにより、記憶ノード内の要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定するステップと、1つ以上のコンポーネントブロックの物理記憶位置に基づいて、記憶ノードから、要求されたページの1つ以上のコンポーネントブロックを取り出すステップと、要求されたページを返信するステップとを更に含む。
【００１９】
上記の実施形態のいずれかにおいて、要求されたページの1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、要求されたページを返信するステップは、ページリーダにより、少なくとも2つの取り出されたコンポーネントブロックから、要求されたページを再構築するステップを含む。
【００２０】
上記の実施形態のいずれかにおいて、当該方法は、記憶ノードの追加専用記憶ログに追加するために、再構築されたページを記憶ノードに送信するステップを更に含む。
【００２１】
上記の実施形態のいずれかにおいて、少なくとも2つのコンポーネントブロックは、記憶ノードから並列に取り出される。
【００２２】
上記の実施形態のいずれかにおいて、コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む。
【００２３】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードから離れている。
【００２４】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードに対してローカルである。
【００２５】
上記の実施形態のいずれかにおいて、当該方法は、記憶ノードの追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集するステップと、追加専用記憶ログの終端に追加するために、少なくとも1つのライブデータブロックを記憶ノードに送信するステップとを更に含む。
【００２６】
上記の実施形態のいずれかにおいて、少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために少なくとも1つのライブデータブロックを記憶ノードに送信するステップは、少なくとも2つのライブデータブロックからライブページを再構築し、再構築されたライブページを記憶ノードに送信するステップを含む。
【００２７】
上記の実施形態のいずれかにおいて、当該方法は、記憶ノード上の追加専用記憶ログのセグメントをクリアするように記憶ノードに命令するステップを更に含む。
【図面の簡単な説明】
【００２８】
例示的な実施形態を示す図面において、
【図１】例示的なデータベースシステムを示すブロック図である。
【図２】例示的なクライアントデバイスのコンポーネントを示すブロック図である。
【図３】例示的なデータベースノードのコンポーネントを示すブロック図である。
【図４】データベースノード及び追加専用記憶ノード上で実行するレイヤの図である。
【図５】図１のデータベースクラスタのコンポーネントの論理表現を示す展開図である。
【図６】ログライタのコンポーネントの動作を示すブロック図である。
【図７】ログクリーナのコンポーネントの動作を示すブロック図である。
【図８】集中記憶抽象化レイヤを有するサービスを提供する例示的なデータベースクラスタを示すブロック図である。
【図９】分散記憶抽象化レイヤを有するサービスを提供する例示的なデータベースクラスタを示すブロック図である。
【００２９】
これらの図面は、例示的な目的のための例示的な実施形態の態様を示す。
【発明を実施するための形態】
【００３０】
上記のように、HDDは比較的容易にデータブロックを見つけて新たなデータで上書きできるので、HDDでは「アップデート・イン・プレース」プロセスが特にうまく機能する。しかし、SSDのような追加専用記憶デバイスは、HDDと同じように動作しない。追加専用記憶デバイスは、典型的には、新たなデータを書き込む前に最初に同じ物理ブロックを消去するための複数の動作を実行することなしに、その物理ブロック内のデータを上書きできない。
【００３１】
追加専用記憶デバイスにおいてデータが修正されるとき、追加専用記憶デバイスは、典型的には、前のデータと同じ物理位置内のデータを上書きせず、その代わりに、修正されたデータを既に空のブロック又はページに書き込む。次いで、データの前のバージョンは削除のためにマークされ、「ガーベジコレクション」として知られるプロセスを通じて最終的に除去される。ガーベジコレクションは、追加専用記憶デバイスの通常動作中に様々な間隔で発生する可能性がある。
【００３２】
ガーベジコレクション中に見つかった陳腐化したデータブロックにより占有される空間は、空間が再利用される前に消去(クリア)される。SSDにおいて使用される記憶媒体は、消去サイクルの点で限られた寿命を有するので、アップデート・イン・プレースプロセスの使用は、SSDのような追加専用記憶デバイスの寿命を短くする可能性がある。さらに、アップデート・イン・プレースプロセスは、(SSDのような追加専用記憶デバイスにおいてより高い性能を達成するシーケンシャルライトとは対照的に)頻繁なランダムライトが必要とされるので、追加専用記憶デバイスにおいて非効率的である。
【００３３】
上記を考慮して、従来のデータベース管理システムにより使用される従来の「アップデート・イン・プレース」プロセスは、SSDのような現代の追加専用記憶デバイスで使用するのにはあまり適していない。本開示は、データベース管理レイヤと記憶レイヤ内の追加専用物理記憶デバイスとの間で命令をインタフェースするための装置及び方法を提供する。
【００３４】
図１は、例示的なデータベースシステム100のコンポーネントを示すブロック図である。例示的なデータベースシステム100では、1つ以上のクライアントデバイス102は、通信ネットワーク104及び通信リンク103を介してデータベースクラスタ106に接続できる。データベースクラスタ106は、データベースサービスを実現し、データリンク109を介して追加専用記憶ノード110からデータを記憶して取り出すように動作可能なデータベースノード108を含む。図１は、追加専用記憶ノード110をデータベースノード108から離れたものとして示すが、いくつかの実施形態では、データベースノード108は、ローカルの追加専用記憶デバイスを含むことが考えられる。通信リンク103は、有線又は無線でもよく、通信ネットワーク104を介してデータをデータベースノード108に送信するためのいずれか許容可能なプロトコルを使用してもよい。図示のように、データベースノードは、3つの追加専用記憶ノード110を含む。3つよりも少ないか或いは3つよりも多い追加専用記憶ノード110が存在する実施形態が考えられることが認識されるべきである。追加専用記憶ノード110は、例えば、SSD記憶デバイスを含んでもよい。
【００３５】
図２は、例示的なクライアント102のコンポーネントを示すブロック図である。クライアント102は、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、スマートフォン等のようないずれか適切な計算デバイスでもよい。クライアント102は、クライアント102の全体動作を制御する1つ以上のプロセッサ201を含む。プロセッサ201は、メモリバス203を介してメモリ204と相互作用し、バス209を介してストレージ206、I/Oデバイス208及びネットワークインタフェース210と相互作用する。バス209は、周辺バス、ビデオバス等を含む、いずれかのタイプのいくつかのバスのうち1つ以上でもよい。
【００３６】
各プロセッサ201は、例えば、ARM又はx86命令セットを実現する中央処理装置(central  processing  unit,  CPU)のようないずれか適切なタイプのプロセッサでもよく、グラフィック処理装置(Graphics  Processing  Unit,  GPU)又は他のこのようなプロセッサのような専門のプロセッサを更に含んでもよい。メモリ204は、スタティックランダムアクセスメモリ(static  random  access  memory,  SRAM)、ダイナミックランダムアクセスメモリ(dynamic  random  access  memory,  DRAM)、シンクロナスDRAM(synchronous  DRAM,  SDRAM)、読み取り専用メモリ(read-only  memory,  ROM)又はこれらの組み合わせのような、プロセッサ201により読み取り可能ないずれか適切なタイプのシステムメモリを含む。実施形態では、メモリ201は、ブートアップ時に使用するためのROM並びにプログラムを実行する間に使用するためのプログラム及びデータ記憶のためのDRAMのような1つより多くのタイプのメモリを含んでもよい。ストレージ206は、データ、プログラム及び他の情報を記憶し、バス209を介してデータ、プログラム及び他の情報をアクセス可能にするように構成されたいずれか適切な非一時的な記憶デバイスを含んでもよい。ストレージ206は、例えば、ソリッドステートドライブ、ハードディスクドライブ、磁気ディスクドライブ、光ディスクドライブ、セキュアディジタル(secure  digital,  SD)メモリカード等のうち1つ以上を含んでもよい。
【００３７】
I/Oデバイス208は、例えば、レンダリングされた画像を出力として表示し、タッチの形式で入力を受け取ることが可能なタッチセンシティブ表示デバイスを含む、表示デバイスのようなユーザインタフェースデバイスを含む。いくつかの実施形態では、I/Oデバイス208は、更に或いは代替として、スピーカ、マイクロホン、カメラ、加速度計及び全地球測位システム(global  positioning  system,  GPS)受信機のようなセンサ、キーパッド等のうち1つ以上を含む。いくつかの実施形態では、I/Oデバイス208は、クライアント102を他のクライアントデバイスに接続するためのポートを含む。例示的な実施形態では、I/Oデバイス208は、周辺機器又はホスト計算デバイスに接続するためのユニバーサルシリアルバス(universal  serial  bus,  USB)コントローラを含む。
【００３８】
ネットワークインタフェース210は、クライアント102を通信ネットワーク104に接続可能である。いくつかの実施形態では、ネットワークインタフェース210は、有線インタフェース(例えば、有線イーサネット)と、WiFi、ブルートゥース又はセルラー(例えば、GPRS、GSM、EDGE、CDMA、LTE等)のようなワイヤレス無線機とのうち1つ以上を含む。ネットワークインタフェース210は、クライアント102が通信ネットワーク104及び通信リンク103を介してデータベースクラスタ106と通信することを可能にする。ネットワークインタフェース210はまた、仮想プライベートネットワーク(Virtual  Private  Network,  VPN)のような仮想ネットワークインタフェースを確立するために使用できる。
【００３９】
図３は、例示的なデータベースノード108のコンポーネントを示すブロック図である。ここで説明するように、データベースノード108は、ハードウェアデバイスと、ハードウェアデバイスのメモリ内で実行するソフトウェアとの組み合わせを含む。データベースノード108のハードウェアデバイスは、1つ以上のプロセッサ181と、メモリ184と、ネットワークインタフェース190とを含む。1つ以上のプロセッサ181は、メモリバス183を介してメモリ184と相互作用し、バス189を介してネットワークインタフェース190と相互作用する。図示のように、データベースノード108のハードウェアデバイスは、いくつかの実施形態では、追加専用ストレージ185を含んでもよい。ローカルの追加専用ストレージ185は、フラッシュベースのSSDのようないずれかの数の適切な追加専用記憶デバイスを含んでもよい。当業者は、データベースノード108が、追加専用ストレージ185の代わりに或いは追加専用ストレージ185に加えて、ハードディスクドライブのような従来の記憶要素を更に含んでもよいことを認識する。
【００４０】
図３に示すように、追加専用記憶ノード110は、データベースノード108の外部に位置し、データベースノード108は、ネットワークインタフェース190を介して追加専用記憶ノード110と通信できる。追加専用記憶ノード110は、ハードウェアデバイスと、ハードウェアデバイスのメモリ内で実行するソフトウェアとの組み合わせを含む。追加専用記憶ノード110のハードウェアデバイスは、1つ以上のプロセッサと、メモリと、ネットワークインタフェースと、1つ以上の追加専用記憶デバイス350(一般的に、以下では追加専用記憶デバイス350と呼ばれ、まとめて追加専用記憶デバイス185と呼ばれる)とを含んでもよい。各追加専用記憶デバイス350は、SSDのようないずれか適切な追加専用記憶デバイスでもよい。いくつかの実施形態では、追加専用記憶ノード110は、追加専用記憶デバイス350に加えて、ハードディスクドライブのような従来の記憶要素を含んでもよい。従来の記憶要素の存在は、データベースノード108(又は追加専用記憶ノード110の外部のいずれかのノード)には明らかでなくてもよく、従来の記憶要素の存在は、追加専用記憶デバイス350内にデータを記憶する目的で、どのようにデータベースノード108が追加専用記憶ノード110と相互作用するかを必ずしも変化させるものではないことが理解される。
【００４１】
図４は、図１のデータベースクラスタ106のコンポーネントの論理表現を示す展開図である。データベースクラスタ106は、データベースサービスを提供するプラットフォームであり、データベース管理システム(database  management  system,  DBMS)レイヤ305と、記憶抽象化レイヤ310と、記憶レイヤ315とを含む。DMBSレイヤ305は、データベースノード108の1つ以上のプロセッサ181により、プロセッサ実行可能命令のようなソフトウェアの実行を通じて提供されてもよい。ソフトウェアの実行の際、データベースノード108は、DMBSレイヤ305(又はレイヤの構成部分)として機能するように構成される。記憶レイヤ315は、記憶機能の表現である。一実施形態では、これは、追加専用記憶ノード110の1つ以上のプロセッサにより実行されたとき、記憶レイヤ315(又はレイヤの構成部分)として機能するように図１の追加専用記憶ノード110を構成する、プロセッサ実行可能命令のようなソフトウェアとして提供される。いくつかの実施形態では、データベースノード108がローカルの追加専用ストレージ185を含むとき、記憶レイヤ315はまた、ローカルの追加専用記憶デバイス185の動作を制御する。記憶抽象化レイヤ310は、DMBSレイヤ305と記憶レイヤ315との間のインタフェースである。いくつかの実施形態では、記憶抽象化レイヤ310は、計算プラットフォーム内のプロセッサにより実行されたとき、DBMSレイヤ305から読み取りページ要求、書き込みページ要求及び書き込みページデルタ要求を含む要求を受信し、記憶レイヤ315が追加専用記憶ノード110の物理的な追加専用記憶デバイス350上にデータを記憶すること、追加専用記憶ノード110の物理的な記憶デバイスからデータを取り出すこと、又は追加専用記憶ノード110の物理的な記憶デバイス上のデータを修正することを可能にする命令にこれらの要求を変換又は翻訳するようにプラットフォームのリソースを構成する、プロセッサ実行可能命令のようなソフトウェアとして実現できる。記憶抽象化レイヤ310は、以下に詳細に更に説明するように、記憶レイヤ315の追加専用物理記憶デバイス上に記憶されたデータの永続性を確保しつつ、DBMSレイヤ305から受信した要求にサービス提供するように構成できる。いくつかの実施形態では、記憶抽象化レイヤ310のプロセッサ実行可能命令は、メモリにロードされ、装置の1つ以上のプロセッサにより実行される。いくつかの実施形態では、記憶抽象化レイヤ310は、以下に詳細に更に説明するように、データベースノード108に統合されてもよい。いくつかの実施形態では、記憶抽象化レイヤ310は、以下に詳細に更に説明するように、追加専用記憶ノード110に統合できる。起こり得る冗長性を導入し得るが、記憶抽象化レイヤ310は、DBMSレイヤ305及び記憶レイヤ315のそれぞれに統合されてもよい。記憶抽象化レイヤが異なるレイヤの機能を提供するノード又はリソースに統合される実施形態では、記憶抽象化レイヤが統合されるレイヤに関連する処理リソースは、記憶抽象化レイヤとして機能するようにリソースを構成するソフトウェアを実行するために使用できる。
【００４２】
当業者は、データベースクラスタ106のようなデータセンタでは、ソフトウェアが実行できる仮想ハードウェアプラットフォームを提供するために仮想化が使用されてもよいことを認識する。実行されているソフトウェアの観点から、仮想化されたハードウェアは物理的なハードウェアとは異ならない。仮想化は、多数の異なる方法で実行されてもよく、複数の異なる物理データベースノード及び追加専用記憶ノードのリソース上に作成される単一の仮想化ハードウェアプラットフォームを生じてもよい。同様に、複数の異なる仮想ハードウェアプラットフォームは、単一の物理データベースノード108、追加専用記憶ノード110又はその双方上に作成されてもよい。
【００４３】
図４に示すように、DBMSレイヤ305は、「読み取りページ」要求及び「書き込みページデルタ」要求を発行する能力を提供する。いくつかの実施形態では、DBMSレイヤ305は、SQLサーバ、DB2、MySQL、PostgreSQL、Oracle、SQLite等を使用して実現される。DBMSレイヤ305は、バッファプール306(バッファキャッシュとも呼ばれる)を含む。バッファプール306は、データベースページを含む。DBMSレイヤ305は、記憶レイヤ315からページを要求し(「読み取りページ」要求)、新たなページを記憶レイヤ315に書き込むか(「書き込みページ」要求)或いは記憶レイヤ315内の既存のページを修正する(「書き込みページデルタ」要求)ように動作可能である。ここで説明するように、ページデルタは、追加専用ログ316内のページの以前のバージョンからの変更として符号化されるページに対する修正である。ページデルタは、追加専用ログ316に追加できる。
【００４４】
図示のように、バッファプール306は、記憶のための第1のページの第1のバージョン(ページ1バージョン1  307として示す)と、第2のページの第8のバージョン(ページ2バージョン8  308として示す)とを含む。
【００４５】
記憶レイヤ315は、ページのコンポーネントブロックの完全なイメージ(典型的には、ページの最近のバージョン)を含む追加専用ログ316を含み、また、そのページのための以降のデルタも含んでもよい。図示のように、追加専用ログ316は、第1のページの完全なイメージ(ページ1バージョン1  307として示す)と、第2のページの第6のバージョンの完全なイメージ(ページ2バージョン6  318aとして示す)、第2のページの第6のバージョンに対する以降の変更を含むデルタ(ページ2バージョン7  318bとして示す)、及び第2のページの第7のバージョンに対する以降の変更を含むデルタ(ページ2バージョン8  318cとして示す)とを含む。いくつかの実施形態では、ブロック318a、318b及び318cは、追加専用記憶ノード110上の追加専用記憶デバイス350内のシーケンシャルブロック上に記憶される。図４に示すように、ブロック318b及び318cは、シーケンシャルブロック内に記憶される。
【００４６】
図４に示すように、記憶抽象化レイヤ310は、ログディレクトリ311と、ログライタ312と、ページリーダ313と、ログクリーナ314とを含む。ログクリーナ314は任意選択のコンポーネントであり、いくつかの実施形態では、記憶抽象化レイヤ310はログクリーナ314を含まないことが認識されるべきである。
【００４７】
記憶抽象化レイヤ310は、論理識別子をコンポーネントブロックの物理位置に関連付けるためにログディレクトリ311を使用する。ログディレクトリ311は、記憶ノード110内の物理的な追加専用記憶デバイス上の全ページ及びページデルタ(ここでは、まとめてページの「コンポーネントブロック」と呼ばれる)の位置を追跡するデータを含む。いくつかの実施形態では、ログディレクトリは、どの追加専用記憶ノード110がページを記憶するかと、その追加専用記憶ノード110内のどの特定の追加専用記憶デバイスがページを記憶するかとを示すデータを含む。例えば、図４に示すように、ログディレクトリ311は、ページ1及び2の各コンポーネントブロック(ページ1バージョン1  307、ページ2バージョン6  318a、ページ2バージョン7  318b及びページ2バージョン8  318c)の物理位置を追加専用ログ316に記憶する。
【００４８】
記憶抽象化レイヤ310は、コンポーネントブロックを追加専用ログ316に追加するために、ログライタ312を使用する。ログライタ312は、「書き込みページ」要求を受信し、新たなコンポーネントブロック(すなわち、ページ又はページデルタ)又はコンポーネントブロックのグループを記憶レイヤ315の追加専用ログ316に追加するように、記憶レイヤ315に命令するように動作可能である。記憶抽象化レイヤ310がDBMSレイヤ305から書き込み要求を受信したとき、記憶抽象化レイヤ310は、論理識別子をコンポーネントブロックに関連付け、論理識別子をログディレクトリ311に記録する。コンポーネントブロックは記憶レイヤ315に送信され、これはコンポーネントブロックを追加専用ログ316に追加する。一旦追加されると、記憶レイヤ315は、追加されたコンポーネントブロックの物理位置の識別子を返信又は送信する。次いで、記憶抽象化レイヤ310は、コンポーネントブロックの物理位置の受信した識別子を、ログディレクトリ311内の論理識別子に関連付ける。いくつかの実施形態では、追加専用ログ316に追加されるコンポーネントブロックは、物理記憶デバイス内のシーケンシャル記憶ブロックに追加される。
【００４９】
ページリーダ313は、追加専用ログ316に記憶された完全なページ及びいずれかの以降のページデルタに基づいて、ページの要求されたバージョンを再構築するように動作可能である。いくつかの実施形態では、記憶抽象化レイヤ310は、ログクリーナ314を含む。ログクリーナ314は、コンポーネントブロックに基づいてページの集約バージョンを構築し、次いで、陳腐化したデータを廃棄し、追加専用ログ316を集約するように記憶レイヤ315に命令するように動作可能である。ログクリーナ314はまた、コンポーネントブロックを集約することなく、コンポーネントブロックをログの前面にコピーしてもよい。
【００５０】
DBMSレイヤ305は、追加専用記憶ノード110の記憶レイヤ315及び物理記憶デバイス350の実現の詳細を認識しない。記憶抽象化レイヤ310は、ページ読み取り要求及びページ書き込み要求を、1つのコンポーネントブロック又は複数のコンポーネントブロックを追加専用記憶デバイス350に追加する動作と、追加専用物理記憶デバイス350から1つのコンポーネントブロック又は複数のコンポーネントブロックを読み取る動作とを記憶レイヤ315に実行させる命令に変換又は翻訳するために、DMBSレイヤ305と記憶レイヤ315との間のインタフェースとして機能する。
【００５１】
図５は、記憶抽象化レイヤ310内のページリーダのコンポーネント313の動作を示すブロック図である。記憶抽象化レイヤ310がDBMSレイヤ305からページ読み取り要求を受信したとき、読み取り動作が開始される。この例では、ページ読み取り要求は、ページ2の最新バージョンについてのものである。ページ読み取り要求が記憶抽象化レイヤ310のページリーダ313により受信されたとき、ページリーダ313は、要求されたページの論理識別子を決定し、ログディレクトリ311内の要求されたページの各コンポーネントブロックの物理位置を検索する。いくつかの実施形態では、各ブロックの物理位置は、要求されたブロックを記憶する追加専用記憶ノード110を示す識別子と、ブロックを記憶する追加専用記憶デバイス350、352を示す識別子とを含む。この例では、要求されたページのコンポーネントブロックは、完全なバージョン6  318aと、デルタ318b及び318cとを含む。ログディレクトリ311から各ページ及びデルタの位置を受信すると、記憶抽象化レイヤ310は、記憶レイヤ315と相互作用し、これは、記憶レイヤ315内の追加専用ログ316からページ及びデルタのそれぞれを取り出し、取り出されたページ及びデルタのそれぞれを記憶抽象化レイヤ310に送信する。いくつかの実施形態では、取り出されたページ及びデルタは、並列に取り出される。
【００５２】
一旦受信すると、ページリーダ313は、要求されたページの最新の完全なバージョン(318a)から始まり、次いで、以降のデルタ318b及び318cを処理することにより、ページ2を再構築し、これは、ページ2の再構築された完全なバージョン、バージョン8  318の作成を生じる。次いで、再構築されたページ318は、DBMSレイヤ305のバッファプール306に送信され、ページは、例えば、クライアントデバイス102により読み取られるか或いは修正されるのに利用可能になる。
【００５３】
いくつかの実施形態では、記憶抽象化レイヤ310は、ログライタ312を使用してページ2の再構築された完全なバージョン、バージョン8  318を追加専用ログ316に追加するために記憶レイヤ315と相互作用してもよい。完全なページ2、バージョン8  318が追加専用ログ316に追加された場合、ページリーダ313はまた、新たに追加されたページ318の物理記憶位置を含むログディレクトリ311への更新を提供する。当業者は、ページ2の完全なバージョン、バージョン8  318の追加が、以前にログ記録されたコンポーネントブロック318a、318b及び318cが冗長になることを生じることを認識する。
【００５４】
したがって、再構築された完全なページ2、バージョン8  318を追加専用ログ316に追加することは、ログクリア機構が追加専用ログ316から冗長なコンポーネントブロック318a、318b及び318cを除去することを可能にし、したがって、ログ316内の空間をクリアする。さらに、ページ2の完全なバージョン、バージョン8  318を書き込むことは、以前のコンポーネントブロック318a、318b、318cを使用してページ2バージョン8を再構築する必要性を無くし、これは、そのページについてのより効率的な以降の読み取り動作を生じ得る点に留意すべきである。
【００５５】
上記のように、コンポーネントブロック(完全なページ及びページデルタ)は、記憶レイヤ315内の追加専用ログ316に書き込まれるか或いは追加されてもよい。図６は、書き込み/追加動作を実行するために記憶レイヤ315と相互作用するログライタ312の例示的な動作を示すブロック図である。追加プロセスは、記憶抽象化レイヤ310が、DBMSレイヤ305からページ書き込み要求を受信したときに始まる。ページ書き込み要求は、DBMSレイヤ305により作成されたページデルタを有するログバッファを含んでもよい。この例では、DBMSレイヤ305は、ページ2のデルタ(バージョン9  318d)を含むページ書き込み要求を送信する。図示のように、書き込み要求は、簡潔性の目的のために、1つのページデルタのみを含む。ページ書き込み要求が、記憶レイヤ315の追加専用ログ316へのエントリのために複数のページデルタを含む実施形態が考えられる点に留意すべきである。
【００５６】
ログバッファ内のコンポーネントブロック毎に、ログライタ312は、各コンポーネントブロックが適用するログディレクトリ311内の論理識別子を決定するために、コンポーネントブロックの内容を解析する。コンポーネントブロックについてログディレクトリ311内に対応するログエントリが存在しない場合、そのコンポーネントブロックについての論理識別子を使用して、新たなエントリがログディレクトリ311内に作成される。次いで、ログライタ312は、ページ2のデルタ、バージョン9  318dを追加専用ログ316に追加するために、命令を記憶レイヤ315に送信する。複数のデルタが追加されている実施形態では、複数のデルタは、追加専用ログ316に順次書き込まれてもよい点に留意すべきである。
【００５７】
デルタ318dを追加専用ログ316に書き込んだ後に、ログライタ312は、ページデルタ318dの物理位置を示す識別子を記憶レイヤ315から受信する。次いで、デルタ318dの物理位置を示す識別子は、ログディレクトリ311内のコンポーネントブロックについての論理識別子に関連付けられる。
【００５８】
デルタ318dを追加専用ログ316に正常に書き込み、ログディレクトリ311に位置を記憶すると、記憶抽象化レイヤ310は、書き込み動作が成功したことを示す応答をDBMSレイヤ305に送信又は返信する。
【００５９】
いくつかの実施形態では、記憶抽象化レイヤ310は、ログクリーナ314を含む。ログクリーナ314は、記憶レイヤ315の追加専用ログ316の1つ以上のセグメントをクリーニング又は集約するために記憶レイヤ315と相互作用するように動作可能である。いくつかの実施形態では、ログクリーナ314は、追加専用ログ316を周期的に集約する。いくつかの実施形態では、ログクリーナ314は、ポリシーに従って追加専用ログ316を集約する。例えば、1つのポリシーは、追加専用ログ316内の最も古いセグメントが集約のための対象となってもよいことでもよい。他のポリシーは、最小の「ライブ」データを含む追加専用ログ316のセグメントが集約のための対象となってもよいことでもよい。ここで説明するように、ライブデータは、DBMSレイヤ305内のアクティブトランザクションにより関与するか或いは潜在的に必要とされ得るデータを示す。
【００６０】
追加専用ログ316のセグメント316aが集約のために選択されると、ログクリーナ314は、ログセグメント316a内のコンポーネントブロック(ページ又はデルタ)が破棄できるか否かを決定するために、ログディレクトリ311を参照する。例えば、図５を参照すると、追加専用ログ316は、ページ2に関するいくつかの陳腐化したコンポーネントブロック(すなわち、ブロック318a、318b及び318c)と、ページ2の再構築された完全なバージョン、バージョン8(すなわち、ブロック318)とを含む。このような状況では、有用なデータが再構築された完全なブロック318に残っているので、冗長なブロック318a、318b及び318cは、何ら有用なデータを失うことなく廃棄できる。
【００６１】
図７に示すように、記憶レイヤ315の追加専用ログ316bの終端のセグメントは、追加専用ログ316への直近に書き込まれたブロックを含み、これは、ページ1バージョン1(ブロック307)及び再構築されたページ2バージョン8(ブロック318)である。図７の例では、追加専用ログ316のセグメント316aが、記憶抽象化レイヤ310のログクリーナ314による集約のために選択されている。図示のように、セグメント316aは、セグメント316a内の空間を占有するデッドデータ340の複数のインスタンスを含む。コンポーネントブロックは、いずれかのアクティブなトランザクション又はいずれかの将来のトランザクションによりもはや必要とされない場合、デッドと考えられる。セグメント316aはまた、ページ3(すなわち、ブロック342a及び342b)、ページ4(すなわち、ブロック343a及び343b)及びページ5(すなわち、ブロック344a)に関するブロックを含む。
【００６２】
ページ3について、ブロック342a及び342bは、ページ3の現在のバージョン(完全なページ3、バージョン2  342として示す)を再構築するために使用でき、これは、次いで、追加専用ログ316の終端のセグメント316bに追加される。ページ4について、ページ4の再構築された完全なバージョン、バージョン2  343を追加専用ログ316の終端のセグメント316bに追加するために、同様のプロセスが行われる。ページ5について、1つのブロック344aのみが存在するので、ブロック344aは、追加専用ログ316の終端のセグメント316bに追加できる。ログディレクトリ311は、上記のように、ページ3、4及び5のそれぞれについて、新たに書き込まれたブロック342、343及び344aの物理位置を反映するように更新されることが認識されるべきである。
【００６３】
ブロック342、343及び344aのそれぞれが追加専用ログ316の終端に追加されると、追加専用ログ316の選択されたセグメント316aは、セグメント316a内のブロックのそれぞれが追加専用ログ316の終端のセグメント316b内のブロック342、343及び344aにより冗長になったブロック又はデッドデータを表すので、冗長になる。したがって、記憶抽象化レイヤ315は、追加専用ログ316のセグメント316aを破棄し、セグメント316aがもはや必要とされないことを記憶レイヤ315に通知し、これは、記憶レイヤ315が他のデータを記憶するためにセグメント316aを使用することを可能にする。ログクリーナ314は、陳腐化した冗長なデータブロックを除去することにより、追加専用ログ316がコンパクト化されて集約できるという点で有用になり得る。ログの集約は、追加専用記憶ノード110のより効率的な使用と、データベースクラスタ106からのページのより高速な取り出しとを可能にする(追加専用ログ316内の複数ブロックからページを再構築するために必要なオーバーヘッド処理が低減又は回避され得るので)。
【００６４】
分散計算システム100の利点のうち1つは、データベースについて可能な実現構成に関して柔軟性があることである。例えば、記憶抽象化レイヤ310は、完全に集中化された方式で実現でき、また、分散方式で実現することもできる。
【００６５】
図８は、集中記憶抽象化レイヤ310を有するデータベースサービスを提供するデータベースクラスタ806の例を示すブロック図である。図示のように、記憶抽象化レイヤ310は、データベースノード108に完全に統合される。記憶レイヤ315は、ローカルの追加専用ストレージ、リモートの追加専用記憶ノード110a、110b又はこれらのいずれかの組み合わせに統合されてもよい。図８に示すように、記憶レイヤ315は、データベースノード108から離れた複数の追加専用記憶ノード110a、110bを含む。
【００６６】
図８に示す例示的な実施形態は、多数の利点を提供する。例えば、記憶抽象化レイヤ310が様々な追加専用記憶ノード110a、110b及び追加専用記憶デバイス350a、350bから分離されていることによって、データベースクラスタ806と共に使用される追加専用記憶デバイス350a、350bについて比較的少ない要件が存在する。追加専用記憶デバイス350a、350bは、シーケンシャルライト及びランダムリード要求をサービス提供することが可能である。DBMSレイヤ305からのページ読み取り又はページ書き込み要求をログベースの動作に変換する残りの機能は、全てデータベースノード108上の記憶抽象化レイヤ310により処理され、したがって、比較的小さいカスタマイズが追加専用ストレージノード110a、110bに必要とされる。しかし、図８に示す構成では、追加専用記憶ノード110a、110bがデータベースノード108から離れて位置する場合、全ての読み取り及び書き込み動作がネットワーク接続を介して生じ、ページの再構築は、ページの各ブロックがネットワーク接続を介して記憶レイヤ315から記憶抽象化レイヤ310に送信されることを必要とするので、データベースを維持管理することに関与する高いネットワークトラフィックが存在する可能性がある。
【００６７】
図９は、記憶抽象化レイヤ310の分散配置を有するデータベースサービスを提供する例示的なデータベースクラスタ906を示すブロック図である。図示のように、データベースクラスタ906は、いくつかの追加専用記憶ノード110a、110bに跨って共有(又は分割)される。I/Oルータ900は、記憶ノード110a、110bが各ページをデータベースに記憶するマッピングを維持管理する。I/Oルータ900は、ページ読み取り又はページ書き込み要求を受信し、要求を適切な記憶ノード110a、110b上の記憶抽象化レイヤ310a又は310bに転送するように動作可能である。図８及び図９の双方において、ログクリーナ314の存在は任意選択である点に留意すべきである。
【００６８】
図９に示すように、各記憶ノード110a、110bは、そのそれぞれの追加専用記憶デバイス350a、350bに記憶されたページのみを管理する局所化された記憶抽象化レイヤ310a及び310bを含む。DBMSレイヤ305からのページ読み取り要求を実行するために、バッファプール306は、特定のページについてのページ読み取り要求を発行し、I/Oルータ900は、要求内のページ識別子を検索し、どの追加専用記憶ノード110a、110b(又は破片(shard))が要求されたページを記憶するかを決定する。この例では、要求されたページは、追加専用記憶ノード110aに記憶されている。次いで、I/Oルータ900は、ページ読み取り要求を追加専用記憶ノード110aに発行し、記憶抽象化レイヤ310aは、上記のプロセスに従ってページ読み取り要求を処理する。
【００６９】
図９の構成の技術的利点は、拡大縮小が比較的簡単であることである。例えば、システムの複雑性における比較的小さい増加及びネットワークトラフィックへの少ない影響で、更なる追加専用記憶ノード110が図９のシステムに追加できる。要求されたページの再構築は、データベースノード108ではなく、特定の追加専用記憶ノード110内でローカルに生じるので、ネットワーク接続は、図８における構成に対して少ないトラフィックを招く。さらに、図９の構成は、データベースノード108上の処理負荷を低減し、その処理負荷を、より大容量の要求に対応する処理能力を有する可能性がより高い追加専用記憶ノード110にオフロードする。
【００７０】
いくつかの実施形態では、記憶抽象化レイヤ310は、記憶ノードの物理的な記憶デバイス上にデータを記憶するためにアップデート・イン・プレースプロセスを使用するレガシーデータベースシステムからの動作を、現代の追加専用記憶ノード(例えば、SSDを含む記憶ノード)のために調整された動作にトランスペアレントに変換する。上記のように、追加専用記憶ノードは、データセンタの記憶ノードでますます使用されている。アップデート・イン・プレースプロセスは、更新されたページを追加専用記憶デバイス上の「クリーンな」記憶ブロックに書き込み、次いで、ガーベジコレクション中にページの古いバージョンをクリアする。追加専用記憶デバイスが限られた数の書き込みサイクルを有することを考えると、アップデート・イン・プレースプロセスを使用することは、記憶ノードの追加専用記憶デバイスの寿命を短くしたり、或いは、記憶ノードの追加専用記憶デバイス内の特定のブロックの寿命を短くしたりする可能性がある。
【００７１】
本発明のいくつかの実施形態の追加専用書き込み動作によれば、それぞれの新たなページ又はページデルタは、追加専用ログ316内の次の利用可能なブロックに追加される。したがって、ここで説明するシステムの技術的利点は、それぞれの新たなページ又はページデルタが追加専用ログ316に順次書き込まれることであり、これは、ランダムライトよりも追加専用記憶デバイス350にとってより高速且つより効率的である。さらに、シーケンシャルライトは、アップデート・イン・プレースプロセスからのランダムライトと比較して、追加専用記憶デバイス350の寿命を延ばす可能性があり、それにより、コンポーネントを置換するために必要な時間が延長され得るので、データベースを動作するコストを低減する。さらに、追加専用記憶デバイス350は、HDDに対して非常に迅速に「ランダムリード」動作(すなわち、非シーケンシャル記憶ブロックからの読み取り動作)を実行でき、これは、ページ読み取り動作に必要なデータ取得がHDDを使用することよりも追加専用記憶デバイス350を使用してより高速に行われることを可能にする。
【００７２】
さらに、ここで説明する例示的な実施形態により例示されるように、ここで説明するシステムは、異なる記憶レイヤの実現、異なるデータベースシステム、共有されたデータベース又は共有されていないデータベースに比較的容易に適合されてもよく、先行のリソース予約なしに、記憶サイズを比較的容易に拡大縮小できる。
【００７３】
DMBSレイヤ305は記憶レイヤ315から分離されるので、ここで説明するシステムは、どのようにデータが物理的に記憶されるかに関して、より大きい柔軟性を可能にする。例えば、ローカルに取り付けられた追加専用記憶デバイス350、クラウドストレージ又はカスタマイズされた記憶ノードのいずれかの組み合わせが使用できる。さらに、データは、複数の追加専用記憶ノード110に跨って分割又は共有できる。さらに、ここで説明する実施形態は、MySQL、PostgreSQL等を含むが、これらに限定されない複数のデータベースシステムをサポートしてもよい。
【００７４】
さらに、いくつかの実施形態では、記憶抽象化レイヤ310は、キーバリュー記憶データベースのような他のタイプのデータベースと共に使用される。キーバリュー記憶データベースを使用する実施形態では、記憶抽象化レイヤ310は、DMBS  305から読み取り及び書き込み記録要求を受信してもよく、記憶抽象化レイヤ310は、読み取り及び書き込み記録要求を、記憶レイヤ315に送信される追加及び読み取りコンポーネント命令に変換する。
【００７５】
さらに、ここに開示される実施形態は、様々な複製方式と互換性がある。いくつかの実施形態では、記憶抽象化レイヤ310は、複製を制御する。例えば、記憶抽象化レイヤ310は、各ページ書き込み要求を複数の追加専用記憶ノード110に送信することにより複製を処理できる。いくつかの実施形態では、複製は、記憶レイヤ315により実現されてもよい。ここに開示される実施形態は、一貫した(書き込み動作が完了したと考えられるためにコンポーネントブロックの全てのコピーが書き込まれなければならない)コーラム(quorum)ベース(書き込み動作が完了したと考えられるためにコンポーネントブロックの閾値数のコピーが書き込まれなければならない)の複製方式をサポートできる。
【００７６】
本出願の範囲は、明細書に記載されるプロセス、機械、製造物、合成物、手段、方法及びステップの特定の実施形態に限定されることを意図するものではない。本発明の開示から当業者が容易に認識するように、ここで説明する対応する実施形態と実質的に同じ機能を実行するか或いは実質的に同じ結果を達成する、現在存在するか或いは後に開発されるプロセス、機械、製造物、合成物、手段、方法又はステップが利用されてもよい。したがって、添付の特許請求の範囲は、このようなプロセス、機械、製造物、合成物、手段、方法又はステップをその範囲内に含むことを意図している。
【００７７】
理解できるように、上記及び図示の詳細な実施形態は、例示のみを意図している。これらの例示的な実施形態に対して、変形、代替構成、代替コンポーネント及び修正が行われてもよい。本発明は、特許請求の範囲により規定される。
【図１】
2021508879.tif 000003
【図２】
2021508879.tif 000004
【図３】
2021508879.tif 000005
【図４】
2021508879.tif 000006
【図５】
2021508879.tif 000007
【図６】
2021508879.tif 000008
【図７】
2021508879.tif 000009
【図８】
2021508879.tif 000010
【図９】
2021508879.tif 000011
【手続補正書】
【提出日】令和2年8月4日(2020.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
1つ以上のプロセッサと、
前記1つ以上のプロセッサにより実行されたとき、前記1つ以上のプロセッサに対して、
ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信させ、
ログディレクトリ内の前記ページに対応する論理識別子を決定させ、
記憶ノードの追加専用記憶ログに追加するために、前記1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを前記記憶ノードに送信させ、
前記記憶ノードから、前記1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を受信させ、
前記ログディレクトリにおいて、前記1つ以上のコンポーネントブロックのそれぞれの前記物理記憶位置を、前記ページに対応する前記論理識別子に関連付けさせる、
プロセッサ実行可能命令を記憶するメモリと
を含む装置。
【請求項２】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
ページに関するページ読み取り要求を受信させ、
記憶ノード内の前記要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定させ、
前記1つ以上のコンポーネントブロックの前記物理記憶位置に基づいて、前記記憶ノードから、前記要求されたページの前記1つ以上のコンポーネントブロックを取り出させ、
前記要求されたページを返信させる、請求項１に記載の装置。
【請求項３】
前記要求されたページの前記1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、前記要求されたページを返信することは、前記少なくとも2つの取り出されたコンポーネントブロックから、前記要求されたページを再構築することを含む、請求項２に記載の装置。
【請求項４】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記記憶ノードの前記追加専用記憶ログに追加するために、前記再構築されたページを前記記憶ノードに送信させる、請求項３に記載の装置。
【請求項５】
前記少なくとも2つのコンポーネントブロックは、前記記憶ノードから並列に取り出される、請求項３に記載の装置。
【請求項６】
前記コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む、請求項１乃至５のうちいずれか１項に記載の装置。
【請求項７】
前記記憶ノードはデータベースノードから離れている、請求項１乃至６のうちいずれか１項に記載の装置。
【請求項８】
前記記憶ノードはデータベースノードに対してローカルである、請求項１乃至６のうちいずれか１項に記載の装置。
【請求項９】
当該装置は、データベースノード及び前記記憶ノードのうち1つに統合される、請求項１乃至８のうちいずれか１項に記載の装置。
【請求項１０】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集させ、
前記追加専用記憶ログの終端に追加するために、前記少なくとも1つのライブデータブロックを前記記憶ノードに送信させる、請求項１乃至９のうちいずれか１項に記載の装置。
【請求項１１】
前記少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために前記少なくとも1つのライブデータブロックを前記記憶ノードに送信することは、前記少なくとも2つのライブデータブロックからライブページを再構築し、前記再構築されたライブページを前記記憶ノードに送信することを含む、請求項１０に記載の装置。
【請求項１２】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記追加専用記憶ログの前記セグメントをクリアするように前記記憶ノードに命令させる、請求項１０に記載の装置。
【請求項１３】
データベースノードにおいて、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信するステップと、
ログディレクトリ内の前記ページに対応する論理識別子を決定するステップと、
記憶ノードの追加専用記憶ログに追加するために、前記1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを前記記憶ノードに送信するステップと、
前記記憶ノードから、前記1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を示すデータを受信するステップと、
前記ログディレクトリにおいて、前記1つ以上のコンポーネントブロックのそれぞれの前記物理記憶位置を、前記ページに対応する前記論理識別子に関連付けるステップと
を含む方法。
【請求項１４】
前記データベースノードにおいて、ページに関するページ読み取り要求を受信したことに応じて、
前記ログディレクトリにより、記憶ノード内の前記要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定するステップと、
前記1つ以上のコンポーネントブロックの前記物理記憶位置に基づいて、前記記憶ノードから、前記要求されたページの前記1つ以上のコンポーネントブロックを取り出すステップと、
前記要求されたページを返信するステップと
を更に含む、請求項１３に記載の方法。
【請求項１５】
前記要求されたページの前記1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、前記要求されたページを返信するステップは、前記少なくとも2つの取り出されたコンポーネントブロックから、前記要求されたページを再構築するステップを含む、請求項１４に記載の方法。
【請求項１６】
前記記憶ノードの前記追加専用記憶ログに追加するために、前記再構築されたページを前記記憶ノードに送信するステップを更に含む、請求項１５に記載の方法。
【請求項１７】
前記少なくとも2つのコンポーネントブロックは、前記記憶ノードから並列に取り出される、請求項１５に記載の方法。
【請求項１８】
前記コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む、請求項１３乃至１７のうちいずれか１項に記載の方法。
【請求項１９】
前記記憶ノードは前記データベースノードから離れている、請求項１３乃至１８のうちいずれか１項に記載の方法。
【請求項２０】
前記記憶ノードは前記データベースノードに対してローカルである、請求項１３乃至１８のうちいずれか１項に記載の方法。
【請求項２１】
前記記憶ノードの前記追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集するステップと、
前記追加専用記憶ログの終端に追加するために、前記少なくとも1つのライブデータブロックを前記記憶ノードに送信するステップと
を更に含む、請求項１３乃至２０のうちいずれか１項に記載の方法。
【請求項２２】
前記少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために前記少なくとも1つのライブデータブロックを前記記憶ノードに送信するステップは、前記少なくとも2つのライブデータブロックからライブページを再構築し、前記再構築されたライブページを前記記憶ノードに送信するステップを含む、請求項２１に記載の方法。
【請求項２３】
前記記憶ノード上の前記追加専用記憶ログの前記セグメントをクリアするように前記記憶ノードに命令するステップを更に含む、請求項２１に記載の方法。
【請求項２４】
コンピュータ読み取り可能記憶媒体であって、
コンピュータにより実行されたとき、前記コンピュータに対して、請求項１３乃至２２のうちいずれか１項に記載の方法を実行させる命令を含むコンピュータ読み取り可能記憶媒体。
【請求項２５】
コンピュータプログラムであって、
当該プログラムがコンピュータにより実行されたとき、前記コンピュータに対して、請求項１３乃至２２のうちいずれか１項に記載の方法を実行させる命令を含むコンピュータプログラム。
【国際調査報告】
2021508879.tif 000012
2021508879.tif 000013