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

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

▶ ファーウェイ クラウド コンピューティング テクノロジーズ カンパニー リミテッドの特許一覧

特許7329518追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法
<>
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図1
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図2
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図3
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図4
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図5
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図6
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図7
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図8
  • 特許-追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-09
(45)【発行日】2023-08-18
(54)【発明の名称】追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20230810BHJP
   G06F 3/06 20060101ALI20230810BHJP
   G06F 3/08 20060101ALI20230810BHJP
   G06F 12/00 20060101ALI20230810BHJP
   G06F 13/10 20060101ALI20230810BHJP
   G06F 13/14 20060101ALI20230810BHJP
【FI】
G06F12/02 570A
G06F3/06 301F
G06F3/06 301K
G06F3/06 304P
G06F3/08 H
G06F12/00 597U
G06F13/10 340A
G06F13/14 320H
【請求項の数】 23
(21)【出願番号】P 2020535996
(86)(22)【出願日】2018-12-20
(65)【公表番号】
(43)【公表日】2021-03-11
(86)【国際出願番号】 CN2018122213
(87)【国際公開番号】W WO2019128820
(87)【国際公開日】2019-07-04
【審査請求日】2020-08-04
【審判番号】
【審判請求日】2022-09-14
(31)【優先権主張番号】15/858,960
(32)【優先日】2017-12-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522104026
【氏名又は名称】ファーウェイ クラウド コンピューティング テクノロジーズ カンパニー リミテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ラーソン,パー‐エーク
(72)【発明者】
【氏名】デプートビッチ,アレクサンドル
【合議体】
【審判長】吉田 美彦
【審判官】須田 勝巳
【審判官】中村 信也
(56)【参考文献】
【文献】特表2016-522942(JP,A)
【文献】特開2010-003150(JP,A)
【文献】特開2017-126334(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
G06F 12/00
G06F 3/06 - 3/08
G06F 13/10
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
1つ以上のプロセッサと、
前記1つ以上のプロセッサにより実行されたとき、前記1つ以上のプロセッサに対して、
ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信させ、前記1つ以上のコンポーネントブロックは、ページに対する修正であるページデルタを含み、
ログディレクトリ内の前記ページに対応する論理識別子を決定させ、
記憶ノードの追加専用記憶ログに追加するために、前記1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを前記記憶ノードに送信させ、前記追加専用記憶ログは、前記ページの完全なイメージを含み、
前記記憶ノードから、前記1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を受信させ、前記ページの前記完全なイメージ及び前記ページデルタは、シーケンシャルブロック内に記憶され、
前記ログディレクトリにおいて、前記1つ以上のコンポーネントブロックのそれぞれの前記物理記憶位置を、前記ページに対応する前記論理識別子に関連付けさせる、
プロセッサ実行可能命令を記憶するメモリと
を含む装置。
【請求項2】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
ページに関するページ読み取り要求を受信させ、
記憶ノード内の前記要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定させ、
前記1つ以上のコンポーネントブロックの前記物理記憶位置に基づいて、前記記憶ノードから、前記要求されたページの前記1つ以上のコンポーネントブロックを取り出させ、
前記要求されたページを返信させる、請求項1に記載の装置。
【請求項3】
前記要求されたページの前記1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、前記要求されたページを返信することは、前記少なくとも2つの取り出されたコンポーネントブロックから、前記要求されたページを再構築することを含む、請求項2に記載の装置。
【請求項4】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記記憶ノードの前記追加専用記憶ログに追加するために、前記再構築されたページを前記記憶ノードに送信させる、請求項3に記載の装置。
【請求項5】
前記少なくとも2つのコンポーネントブロックは、前記記憶ノードから並列に取り出される、請求項3に記載の装置。
【請求項6】
前記記憶ノードはデータベースノードから離れている、請求項1乃至のうちいずれか1項に記載の装置。
【請求項7】
前記記憶ノードはデータベースノードに対してローカルである、請求項1乃至のうちいずれか1項に記載の装置。
【請求項8】
当該装置は、データベースノード及び前記記憶ノードのうち1つに統合される、請求項1乃至のうちいずれか1項に記載の装置。
【請求項9】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集させ、
前記追加専用記憶ログの終端に追加するために、前記少なくとも1つのライブデータブロックを前記記憶ノードに送信させる、請求項1乃至のうちいずれか1項に記載の装置。
【請求項10】
前記少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために前記少なくとも1つのライブデータブロックを前記記憶ノードに送信することは、前記少なくとも2つのライブデータブロックからライブページを再構築し、前記再構築されたライブページを前記記憶ノードに送信することを含む、請求項に記載の装置。
【請求項11】
前記プロセッサ実行可能命令は、更に、前記1つ以上のプロセッサに対して、
前記追加専用記憶ログの前記セグメントをクリアするように前記記憶ノードに命令させる、請求項に記載の装置。
【請求項12】
データベースノードにおいて、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信するステップであり、前記1つ以上のコンポーネントブロックは、ページに対する修正であるページデルタを含む、ステップと、
ログディレクトリ内の前記ページに対応する論理識別子を決定するステップと、
記憶ノードの追加専用記憶ログに追加するために、前記1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを前記記憶ノードに送信するステップであり、前記追加専用記憶ログは、前記ページの完全なイメージを含む、ステップと、
前記記憶ノードから、前記1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を示すデータを受信するステップであり、前記ページの前記完全なイメージ及び前記ページデルタは、シーケンシャルブロック内に記憶される、ステップと、
前記ログディレクトリにおいて、前記1つ以上のコンポーネントブロックのそれぞれの前記物理記憶位置を、前記ページに対応する前記論理識別子に関連付けるステップと
を含む方法。
【請求項13】
前記データベースノードにおいて、ページに関するページ読み取り要求を受信したことに応じて、
前記ログディレクトリにより、記憶ノード内の前記要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定するステップと、
前記1つ以上のコンポーネントブロックの前記物理記憶位置に基づいて、前記記憶ノードから、前記要求されたページの前記1つ以上のコンポーネントブロックを取り出すステップと、
前記要求されたページを返信するステップと
を更に含む、請求項12に記載の方法。
【請求項14】
前記要求されたページの前記1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、前記要求されたページを返信するステップは、前記少なくとも2つの取り出されたコンポーネントブロックから、前記要求されたページを再構築するステップを含む、請求項13に記載の方法。
【請求項15】
前記記憶ノードの前記追加専用記憶ログに追加するために、前記再構築されたページを前記記憶ノードに送信するステップを更に含む、請求項14に記載の方法。
【請求項16】
前記少なくとも2つのコンポーネントブロックは、前記記憶ノードから並列に取り出される、請求項14に記載の方法。
【請求項17】
前記記憶ノードは前記データベースノードから離れている、請求項12乃至16のうちいずれか1項に記載の方法。
【請求項18】
前記記憶ノードは前記データベースノードに対してローカルである、請求項12乃至16のうちいずれか1項に記載の方法。
【請求項19】
前記記憶ノードの前記追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集するステップと、
前記追加専用記憶ログの終端に追加するために、前記少なくとも1つのライブデータブロックを前記記憶ノードに送信するステップと
を更に含む、請求項12乃至18のうちいずれか1項に記載の方法。
【請求項20】
前記少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために前記少なくとも1つのライブデータブロックを前記記憶ノードに送信するステップは、前記少なくとも2つのライブデータブロックからライブページを再構築し、前記再構築されたライブページを前記記憶ノードに送信するステップを含む、請求項19に記載の方法。
【請求項21】
前記記憶ノード上の前記追加専用記憶ログの前記セグメントをクリアするように前記記憶ノードに命令するステップを更に含む、請求項19に記載の方法。
【請求項22】
コンピュータ読み取り可能記憶媒体であって、
コンピュータにより実行されたとき、前記コンピュータに対して、請求項12乃至21のうちいずれか1項に記載の方法を実行させる命令を含むコンピュータ読み取り可能記憶媒体。
【請求項23】
コンピュータプログラムであって、
当該プログラムがコンピュータにより実行されたとき、前記コンピュータに対して、請求項12乃至21のうちいずれか1項に記載の方法を実行させる命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
この特許出願は、2017年12月29日に出願された「SYSTEMS AND METHODS FOR DATABASE MANAGEMENT USING APPEND-ONLY STORAGE DEVICES」という名称の米国特許出願第15/858,960号に対する優先権を主張し、その全内容が複製されているかのように参照により援用する。
【0002】
[技術分野]
本出願は、データベース管理に関し、特に、追加専用記憶システムにおけるデータベース管理に関する。
【背景技術】
【0003】
計算デバイスは、ますます遍在している。したがって、ますます多くの量のデータがユーザにより消費されて記憶されている。データは、一般的にデータベースと呼ばれる、データの整理された集合として、物理的なコンピュータ読み取り可能記憶媒体に記憶される。データベースは、ユーザにとってアクセス可能にされ得るデータを記憶するためにしばしば使用される。1つの一般的なタイプのデータベースは、リレーショナルデータベースであり、複数のテーブルが記憶されたデータエントリの間の関係によりリンクされる。いくつかのデータベースでは、これらのテーブルのいくつかの中で行を識別するために固有のキーが使用される。
【0004】
従来のデータベースは、典型的には、データベース内のレコードを更新するために「アップデート・イン・プレース(update-in-place)」プロセスを使用する。データベース内のレコードが修正されるとき、アップデート・イン・プレースプロセスは、典型的には、前のレコードを保持する記憶デバイスの物理ブロックを、そのレコードの更新されたバージョンで上書きする。アップデート・イン・プレースプロセスは、レガシー記憶デバイス(例えば、ハードディスクドライブ(Hard Disk Drive, HDD))でうまく機能する。追加専用記憶デバイス(例えば、ソリッドステートドライブ(Solid State Drives, SSD))は、レガシーHDDに対して、改善された読み取り及び書き込み速度性能と低減された電力消費とを含む多数の利点を提供する。その結果、現代のデータセンタは、追加専用記憶デバイスをますます組み込んでいる。しかし、追加専用記憶デバイスは、レガシーデータベースシステムでの使用にあまり適さない。
【発明の概要】
【0005】
本発明の一態様によれば、1つ以上のプロセッサと、1つ以上のプロセッサにより実行されたとき、1つ以上のプロセッサに対して、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信させ、ログライタにより、ログディレクトリ内のページに対応する論理識別子を決定させ、ログライタにより、記憶ノードの追加専用記憶ログに追加するために、1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを記憶ノードに送信させ、記憶ノードから、1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を受信させ、ログディレクトリにおいて、1つ以上のコンポーネントブロックのそれぞれの物理記憶位置を、ページに対応する論理識別子に関連付けさせる、プロセッサ実行可能命令を記憶するメモリとを含む装置が提供される。
【0006】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、ページに関するページ読み取り要求を受信させ、ログディレクトリにより、記憶ノード内の要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定させ、ページリーダにより、1つ以上のコンポーネントブロックの物理記憶位置に基づいて、記憶ノードから、要求されたページの1つ以上のコンポーネントブロックを取り出させ、要求されたページを返信させる。
【0007】
上記の実施形態のいずれかにおいて、要求されたページの1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、要求されたページを返信することは、ページリーダにより、少なくとも2つの取り出されたコンポーネントブロックから、要求されたページを再構築することを含む。
【0008】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、ログライタにより、記憶ノードの追加専用記憶ログに追加するために、再構築されたページを記憶ノードに送信させる。
【0009】
上記の実施形態のいずれかにおいて、少なくとも2つのコンポーネントブロックは、記憶ノードから並列に取り出される。
【0010】
上記の実施形態のいずれかにおいて、コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む。
【0011】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードから離れている。
【0012】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードに対してローカルである。
【0013】
上記の実施形態のいずれかにおいて、当該装置は、データベースノード及び記憶ノードのうち1つに統合される。
【0014】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、ログクリーナにより、追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集させ、追加専用記憶ログの終端に追加するために、少なくとも1つのライブデータブロックを記憶ノードに送信させる。
【0015】
上記の実施形態のいずれかにおいて、少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために少なくとも1つのライブデータブロックを記憶ノードに送信することは、少なくとも2つのライブデータブロックからライブページを再構築し、再構築されたライブページを記憶ノードに送信することを含む。
【0016】
上記の実施形態のいずれかにおいて、プロセッサ実行可能命令は、更に、1つ以上のプロセッサに対して、追加専用記憶ログのセグメントをクリアするように記憶ノードに命令させる。
【0017】
本発明の他の態様によれば、データベースノードにおいて、ページの1つ以上のコンポーネントブロックに関するページ書き込み要求を受信するステップと、ログディレクトリ内のページに対応する論理識別子を決定するステップと、記憶ノードの追加専用記憶ログに追加するために、1つ以上のコンポーネントブロックのそれぞれ対応するコンポーネントブロックを記憶ノードに送信するステップと、記憶ノードから、1つ以上のコンポーネントブロックの各コンポーネントブロックの物理記憶位置を示すデータを受信するステップと、ログディレクトリにおいて、1つ以上のコンポーネントブロックのそれぞれの物理記憶位置を、ページに対応する論理識別子に関連付けるステップとを含む方法が提供される。
【0018】
上記の実施形態のいずれかにおいて、当該方法は、データベースノードにおいて、ページに関するページ読み取り要求を受信したことに応じて、ログディレクトリにより、記憶ノード内の要求されたページの1つ以上のコンポーネントブロックの物理記憶位置を決定するステップと、1つ以上のコンポーネントブロックの物理記憶位置に基づいて、記憶ノードから、要求されたページの1つ以上のコンポーネントブロックを取り出すステップと、要求されたページを返信するステップとを更に含む。
【0019】
上記の実施形態のいずれかにおいて、要求されたページの1つ以上のコンポーネントブロックは、少なくとも2つのコンポーネントブロックを含み、要求されたページを返信するステップは、ページリーダにより、少なくとも2つの取り出されたコンポーネントブロックから、要求されたページを再構築するステップを含む。
【0020】
上記の実施形態のいずれかにおいて、当該方法は、記憶ノードの追加専用記憶ログに追加するために、再構築されたページを記憶ノードに送信するステップを更に含む。
【0021】
上記の実施形態のいずれかにおいて、少なくとも2つのコンポーネントブロックは、記憶ノードから並列に取り出される。
【0022】
上記の実施形態のいずれかにおいて、コンポーネントブロックは、完全なページ及びページデルタのうち1つ以上を含む。
【0023】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードから離れている。
【0024】
上記の実施形態のいずれかにおいて、記憶ノードはデータベースノードに対してローカルである。
【0025】
上記の実施形態のいずれかにおいて、当該方法は、記憶ノードの追加専用記憶ログのセグメントから少なくとも1つのライブデータブロックを収集するステップと、追加専用記憶ログの終端に追加するために、少なくとも1つのライブデータブロックを記憶ノードに送信するステップとを更に含む。
【0026】
上記の実施形態のいずれかにおいて、少なくとも1つのライブデータブロックは、少なくとも2つのライブデータブロックを含み、追加のために少なくとも1つのライブデータブロックを記憶ノードに送信するステップは、少なくとも2つのライブデータブロックからライブページを再構築し、再構築されたライブページを記憶ノードに送信するステップを含む。
【0027】
上記の実施形態のいずれかにおいて、当該方法は、記憶ノード上の追加専用記憶ログのセグメントをクリアするように記憶ノードに命令するステップを更に含む。
【図面の簡単な説明】
【0028】
例示的な実施形態を示す図面において、
図1】例示的なデータベースシステムを示すブロック図である。
図2】例示的なクライアントデバイスのコンポーネントを示すブロック図である。
図3】例示的なデータベースノードのコンポーネントを示すブロック図である。
図4】データベースノード及び追加専用記憶ノード上で実行するレイヤの図である。
図5図1のデータベースクラスタのコンポーネントの論理表現を示す展開図である。
図6】ログライタのコンポーネントの動作を示すブロック図である。
図7】ログクリーナのコンポーネントの動作を示すブロック図である。
図8】集中記憶抽象化レイヤを有するサービスを提供する例示的なデータベースクラスタを示すブロック図である。
図9】分散記憶抽象化レイヤを有するサービスを提供する例示的なデータベースクラスタを示すブロック図である。
【0029】
これらの図面は、例示的な目的のための例示的な実施形態の態様を示す。
【発明を実施するための形態】
【0030】
上記のように、HDDは比較的容易にデータブロックを見つけて新たなデータで上書きできるので、HDDでは「アップデート・イン・プレース」プロセスが特にうまく機能する。しかし、SSDのような追加専用記憶デバイスは、HDDと同じように動作しない。追加専用記憶デバイスは、典型的には、新たなデータを書き込む前に最初に同じ物理ブロックを消去するための複数の動作を実行することなしに、その物理ブロック内のデータを上書きできない。
【0031】
追加専用記憶デバイスにおいてデータが修正されるとき、追加専用記憶デバイスは、典型的には、前のデータと同じ物理位置内のデータを上書きせず、その代わりに、修正されたデータを既に空のブロック又はページに書き込む。次いで、データの前のバージョンは削除のためにマークされ、「ガーベジコレクション」として知られるプロセスを通じて最終的に除去される。ガーベジコレクションは、追加専用記憶デバイスの通常動作中に様々な間隔で発生する可能性がある。
【0032】
ガーベジコレクション中に見つかった陳腐化したデータブロックにより占有される空間は、空間が再利用される前に消去(クリア)される。SSDにおいて使用される記憶媒体は、消去サイクルの点で限られた寿命を有するので、アップデート・イン・プレースプロセスの使用は、SSDのような追加専用記憶デバイスの寿命を短くする可能性がある。さらに、アップデート・イン・プレースプロセスは、(SSDのような追加専用記憶デバイスにおいてより高い性能を達成するシーケンシャルライトとは対照的に)頻繁なランダムライトが必要とされるので、追加専用記憶デバイスにおいて非効率的である。
【0033】
上記を考慮して、従来のデータベース管理システムにより使用される従来の「アップデート・イン・プレース」プロセスは、SSDのような現代の追加専用記憶デバイスで使用するのにはあまり適していない。本開示は、データベース管理レイヤと記憶レイヤ内の追加専用物理記憶デバイスとの間で命令をインタフェースするための装置及び方法を提供する。
【0034】
図1は、例示的なデータベースシステム100のコンポーネントを示すブロック図である。例示的なデータベースシステム100では、1つ以上のクライアントデバイス102は、通信ネットワーク104及び通信リンク103を介してデータベースクラスタ106に接続できる。データベースクラスタ106は、データベースサービスを実現し、データリンク109を介して追加専用記憶ノード110からデータを記憶して取り出すように動作可能なデータベースノード108を含む。図1は、追加専用記憶ノード110をデータベースノード108から離れたものとして示すが、いくつかの実施形態では、データベースノード108は、ローカルの追加専用記憶デバイスを含むことが考えられる。通信リンク103は、有線又は無線でもよく、通信ネットワーク104を介してデータをデータベースノード108に送信するためのいずれか許容可能なプロトコルを使用してもよい。図示のように、データベースノードは、3つの追加専用記憶ノード110を含む。3つよりも少ないか或いは3つよりも多い追加専用記憶ノード110が存在する実施形態が考えられることが認識されるべきである。追加専用記憶ノード110は、例えば、SSD記憶デバイスを含んでもよい。
【0035】
図2は、例示的なクライアント102のコンポーネントを示すブロック図である。クライアント102は、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、スマートフォン等のようないずれか適切な計算デバイスでもよい。クライアント102は、クライアント102の全体動作を制御する1つ以上のプロセッサ201を含む。プロセッサ201は、メモリバス203を介してメモリ204と相互作用し、バス209を介してストレージ206、I/Oデバイス208及びネットワークインタフェース210と相互作用する。バス209は、周辺バス、ビデオバス等を含む、いずれかのタイプのいくつかのバスのうち1つ以上でもよい。
【0036】
各プロセッサ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つ以上を含んでもよい。
【0037】
I/Oデバイス208は、例えば、レンダリングされた画像を出力として表示し、タッチの形式で入力を受け取ることが可能なタッチセンシティブ表示デバイスを含む、表示デバイスのようなユーザインタフェースデバイスを含む。いくつかの実施形態では、I/Oデバイス208は、更に或いは代替として、スピーカ、マイクロホン、カメラ、加速度計及び全地球測位システム(global positioning system, GPS)受信機のようなセンサ、キーパッド等のうち1つ以上を含む。いくつかの実施形態では、I/Oデバイス208は、クライアント102を他のクライアントデバイスに接続するためのポートを含む。例示的な実施形態では、I/Oデバイス208は、周辺機器又はホスト計算デバイスに接続するためのユニバーサルシリアルバス(universal serial bus, USB)コントローラを含む。
【0038】
ネットワークインタフェース210は、クライアント102を通信ネットワーク104に接続可能である。いくつかの実施形態では、ネットワークインタフェース210は、有線インタフェース(例えば、有線イーサネット)と、WiFi、ブルートゥース又はセルラー(例えば、GPRS、GSM、EDGE、CDMA、LTE等)のようなワイヤレス無線機とのうち1つ以上を含む。ネットワークインタフェース210は、クライアント102が通信ネットワーク104及び通信リンク103を介してデータベースクラスタ106と通信することを可能にする。ネットワークインタフェース210はまた、仮想プライベートネットワーク(Virtual Private Network, VPN)のような仮想ネットワークインタフェースを確立するために使用できる。
【0039】
図3は、例示的なデータベースノード108のコンポーネントを示すブロック図である。ここで説明するように、データベースノード108は、ハードウェアデバイスと、ハードウェアデバイスのメモリ内で実行するソフトウェアとの組み合わせを含む。データベースノード108のハードウェアデバイスは、1つ以上のプロセッサ181と、メモリ184と、ネットワークインタフェース190とを含む。1つ以上のプロセッサ181は、メモリバス183を介してメモリ184と相互作用し、バス189を介してネットワークインタフェース190と相互作用する。図示のように、データベースノード108のハードウェアデバイスは、いくつかの実施形態では、追加専用ストレージ185を含んでもよい。ローカルの追加専用ストレージ185は、フラッシュベースのSSDのようないずれかの数の適切な追加専用記憶デバイスを含んでもよい。当業者は、データベースノード108が、追加専用ストレージ185の代わりに或いは追加専用ストレージ185に加えて、ハードディスクドライブのような従来の記憶要素を更に含んでもよいことを認識する。
【0040】
図3に示すように、追加専用記憶ノード110は、データベースノード108の外部に位置し、データベースノード108は、ネットワークインタフェース190を介して追加専用記憶ノード110と通信できる。追加専用記憶ノード110は、ハードウェアデバイスと、ハードウェアデバイスのメモリ内で実行するソフトウェアとの組み合わせを含む。追加専用記憶ノード110のハードウェアデバイスは、1つ以上のプロセッサと、メモリと、ネットワークインタフェースと、1つ以上の追加専用記憶デバイス350(一般的に、以下では追加専用記憶デバイス350と呼ばれ、まとめて追加専用記憶デバイス185と呼ばれる)とを含んでもよい。各追加専用記憶デバイス350は、SSDのようないずれか適切な追加専用記憶デバイスでもよい。いくつかの実施形態では、追加専用記憶ノード110は、追加専用記憶デバイス350に加えて、ハードディスクドライブのような従来の記憶要素を含んでもよい。従来の記憶要素の存在は、データベースノード108(又は追加専用記憶ノード110の外部のいずれかのノード)には明らかでなくてもよく、従来の記憶要素の存在は、追加専用記憶デバイス350内にデータを記憶する目的で、どのようにデータベースノード108が追加専用記憶ノード110と相互作用するかを必ずしも変化させるものではないことが理解される。
【0041】
図4は、図1のデータベースクラスタ106のコンポーネントの論理表現を示す展開図である。データベースクラスタ106は、データベースサービスを提供するプラットフォームであり、データベース管理システム(database management system, DBMS)レイヤ305と、記憶抽象化レイヤ310と、記憶レイヤ315とを含む。DMBSレイヤ305は、データベースノード108の1つ以上のプロセッサ181により、プロセッサ実行可能命令のようなソフトウェアの実行を通じて提供されてもよい。ソフトウェアの実行の際、データベースノード108は、DMBSレイヤ305(又はレイヤの構成部分)として機能するように構成される。記憶レイヤ315は、記憶機能の表現である。一実施形態では、これは、追加専用記憶ノード110の1つ以上のプロセッサにより実行されたとき、記憶レイヤ315(又はレイヤの構成部分)として機能するように図1の追加専用記憶ノード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のそれぞれに統合されてもよい。記憶抽象化レイヤが異なるレイヤの機能を提供するノード又はリソースに統合される実施形態では、記憶抽象化レイヤが統合されるレイヤに関連する処理リソースは、記憶抽象化レイヤとして機能するようにリソースを構成するソフトウェアを実行するために使用できる。
【0042】
当業者は、データベースクラスタ106のようなデータセンタでは、ソフトウェアが実行できる仮想ハードウェアプラットフォームを提供するために仮想化が使用されてもよいことを認識する。実行されているソフトウェアの観点から、仮想化されたハードウェアは物理的なハードウェアとは異ならない。仮想化は、多数の異なる方法で実行されてもよく、複数の異なる物理データベースノード及び追加専用記憶ノードのリソース上に作成される単一の仮想化ハードウェアプラットフォームを生じてもよい。同様に、複数の異なる仮想ハードウェアプラットフォームは、単一の物理データベースノード108、追加専用記憶ノード110又はその双方上に作成されてもよい。
【0043】
図4に示すように、DBMSレイヤ305は、「読み取りページ」要求及び「書き込みページデルタ」要求を発行する能力を提供する。いくつかの実施形態では、DBMSレイヤ305は、SQLサーバ、DB2、MySQL、PostgreSQL、Oracle、SQLite等を使用して実現される。DBMSレイヤ305は、バッファプール306(バッファキャッシュとも呼ばれる)を含む。バッファプール306は、データベースページを含む。DBMSレイヤ305は、記憶レイヤ315からページを要求し(「読み取りページ」要求)、新たなページを記憶レイヤ315に書き込むか(「書き込みページ」要求)或いは記憶レイヤ315内の既存のページを修正する(「書き込みページデルタ」要求)ように動作可能である。ここで説明するように、ページデルタは、追加専用ログ316内のページの以前のバージョンからの変更として符号化されるページに対する修正である。ページデルタは、追加専用ログ316に追加できる。
【0044】
図示のように、バッファプール306は、記憶のための第1のページの第1のバージョン(ページ1バージョン1 307として示す)と、第2のページの第8のバージョン(ページ2バージョン8 308として示す)とを含む。
【0045】
記憶レイヤ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内のシーケンシャルブロック上に記憶される。図4に示すように、ブロック318b及び318cは、シーケンシャルブロック内に記憶される。
【0046】
図4に示すように、記憶抽象化レイヤ310は、ログディレクトリ311と、ログライタ312と、ページリーダ313と、ログクリーナ314とを含む。ログクリーナ314は任意選択のコンポーネントであり、いくつかの実施形態では、記憶抽象化レイヤ310はログクリーナ314を含まないことが認識されるべきである。
【0047】
記憶抽象化レイヤ310は、論理識別子をコンポーネントブロックの物理位置に関連付けるためにログディレクトリ311を使用する。ログディレクトリ311は、記憶ノード110内の物理的な追加専用記憶デバイス上の全ページ及びページデルタ(ここでは、まとめてページの「コンポーネントブロック」と呼ばれる)の位置を追跡するデータを含む。いくつかの実施形態では、ログディレクトリは、どの追加専用記憶ノード110がページを記憶するかと、その追加専用記憶ノード110内のどの特定の追加専用記憶デバイスがページを記憶するかとを示すデータを含む。例えば、図4に示すように、ログディレクトリ311は、ページ1及び2の各コンポーネントブロック(ページ1バージョン1 307、ページ2バージョン6 318a、ページ2バージョン7 318b及びページ2バージョン8 318c)の物理位置を追加専用ログ316に記憶する。
【0048】
記憶抽象化レイヤ310は、コンポーネントブロックを追加専用ログ316に追加するために、ログライタ312を使用する。ログライタ312は、「書き込みページ」要求を受信し、新たなコンポーネントブロック(すなわち、ページ又はページデルタ)又はコンポーネントブロックのグループを記憶レイヤ315の追加専用ログ316に追加するように、記憶レイヤ315に命令するように動作可能である。記憶抽象化レイヤ310がDBMSレイヤ305から書き込み要求を受信したとき、記憶抽象化レイヤ310は、論理識別子をコンポーネントブロックに関連付け、論理識別子をログディレクトリ311に記録する。コンポーネントブロックは記憶レイヤ315に送信され、これはコンポーネントブロックを追加専用ログ316に追加する。一旦追加されると、記憶レイヤ315は、追加されたコンポーネントブロックの物理位置の識別子を返信又は送信する。次いで、記憶抽象化レイヤ310は、コンポーネントブロックの物理位置の受信した識別子を、ログディレクトリ311内の論理識別子に関連付ける。いくつかの実施形態では、追加専用ログ316に追加されるコンポーネントブロックは、物理記憶デバイス内のシーケンシャル記憶ブロックに追加される。
【0049】
ページリーダ313は、追加専用ログ316に記憶された完全なページ及びいずれかの以降のページデルタに基づいて、ページの要求されたバージョンを再構築するように動作可能である。いくつかの実施形態では、記憶抽象化レイヤ310は、ログクリーナ314を含む。ログクリーナ314は、コンポーネントブロックに基づいてページの集約バージョンを構築し、次いで、陳腐化したデータを廃棄し、追加専用ログ316を集約するように記憶レイヤ315に命令するように動作可能である。ログクリーナ314はまた、コンポーネントブロックを集約することなく、コンポーネントブロックをログの前面にコピーしてもよい。
【0050】
DBMSレイヤ305は、追加専用記憶ノード110の記憶レイヤ315及び物理記憶デバイス350の実現の詳細を認識しない。記憶抽象化レイヤ310は、ページ読み取り要求及びページ書き込み要求を、1つのコンポーネントブロック又は複数のコンポーネントブロックを追加専用記憶デバイス350に追加する動作と、追加専用物理記憶デバイス350から1つのコンポーネントブロック又は複数のコンポーネントブロックを読み取る動作とを記憶レイヤ315に実行させる命令に変換又は翻訳するために、DMBSレイヤ305と記憶レイヤ315との間のインタフェースとして機能する。
【0051】
図5は、記憶抽象化レイヤ310内のページリーダのコンポーネント313の動作を示すブロック図である。記憶抽象化レイヤ310がDBMSレイヤ305からページ読み取り要求を受信したとき、読み取り動作が開始される。この例では、ページ読み取り要求は、ページ2の最新バージョンについてのものである。ページ読み取り要求が記憶抽象化レイヤ310のページリーダ313により受信されたとき、ページリーダ313は、要求されたページの論理識別子を決定し、ログディレクトリ311内の要求されたページの各コンポーネントブロックの物理位置を検索する。いくつかの実施形態では、各ブロックの物理位置は、要求されたブロックを記憶する追加専用記憶ノード110を示す識別子と、ブロックを記憶する追加専用記憶デバイス350、352を示す識別子とを含む。この例では、要求されたページのコンポーネントブロックは、完全なバージョン6 318aと、デルタ318b及び318cとを含む。ログディレクトリ311から各ページ及びデルタの位置を受信すると、記憶抽象化レイヤ310は、記憶レイヤ315と相互作用し、これは、記憶レイヤ315内の追加専用ログ316からページ及びデルタのそれぞれを取り出し、取り出されたページ及びデルタのそれぞれを記憶抽象化レイヤ310に送信する。いくつかの実施形態では、取り出されたページ及びデルタは、並列に取り出される。
【0052】
一旦受信すると、ページリーダ313は、要求されたページの最新の完全なバージョン(318a)から始まり、次いで、以降のデルタ318b及び318cを処理することにより、ページ2を再構築し、これは、ページ2の再構築された完全なバージョン、バージョン8 318の作成を生じる。次いで、再構築されたページ318は、DBMSレイヤ305のバッファプール306に送信され、ページは、例えば、クライアントデバイス102により読み取られるか或いは修正されるのに利用可能になる。
【0053】
いくつかの実施形態では、記憶抽象化レイヤ310は、ログライタ312を使用してページ2の再構築された完全なバージョン、バージョン8 318を追加専用ログ316に追加するために記憶レイヤ315と相互作用してもよい。完全なページ2、バージョン8 318が追加専用ログ316に追加された場合、ページリーダ313はまた、新たに追加されたページ318の物理記憶位置を含むログディレクトリ311への更新を提供する。当業者は、ページ2の完全なバージョン、バージョン8 318の追加が、以前にログ記録されたコンポーネントブロック318a、318b及び318cが冗長になることを生じることを認識する。
【0054】
したがって、再構築された完全なページ2、バージョン8 318を追加専用ログ316に追加することは、ログクリア機構が追加専用ログ316から冗長なコンポーネントブロック318a、318b及び318cを除去することを可能にし、したがって、ログ316内の空間をクリアする。さらに、ページ2の完全なバージョン、バージョン8 318を書き込むことは、以前のコンポーネントブロック318a、318b、318cを使用してページ2バージョン8を再構築する必要性を無くし、これは、そのページについてのより効率的な以降の読み取り動作を生じ得る点に留意すべきである。
【0055】
上記のように、コンポーネントブロック(完全なページ及びページデルタ)は、記憶レイヤ315内の追加専用ログ316に書き込まれるか或いは追加されてもよい。図6は、書き込み/追加動作を実行するために記憶レイヤ315と相互作用するログライタ312の例示的な動作を示すブロック図である。追加プロセスは、記憶抽象化レイヤ310が、DBMSレイヤ305からページ書き込み要求を受信したときに始まる。ページ書き込み要求は、DBMSレイヤ305により作成されたページデルタを有するログバッファを含んでもよい。この例では、DBMSレイヤ305は、ページ2のデルタ(バージョン9 318d)を含むページ書き込み要求を送信する。図示のように、書き込み要求は、簡潔性の目的のために、1つのページデルタのみを含む。ページ書き込み要求が、記憶レイヤ315の追加専用ログ316へのエントリのために複数のページデルタを含む実施形態が考えられる点に留意すべきである。
【0056】
ログバッファ内のコンポーネントブロック毎に、ログライタ312は、各コンポーネントブロックが適用するログディレクトリ311内の論理識別子を決定するために、コンポーネントブロックの内容を解析する。コンポーネントブロックについてログディレクトリ311内に対応するログエントリが存在しない場合、そのコンポーネントブロックについての論理識別子を使用して、新たなエントリがログディレクトリ311内に作成される。次いで、ログライタ312は、ページ2のデルタ、バージョン9 318dを追加専用ログ316に追加するために、命令を記憶レイヤ315に送信する。複数のデルタが追加されている実施形態では、複数のデルタは、追加専用ログ316に順次書き込まれてもよい点に留意すべきである。
【0057】
デルタ318dを追加専用ログ316に書き込んだ後に、ログライタ312は、ページデルタ318dの物理位置を示す識別子を記憶レイヤ315から受信する。次いで、デルタ318dの物理位置を示す識別子は、ログディレクトリ311内のコンポーネントブロックについての論理識別子に関連付けられる。
【0058】
デルタ318dを追加専用ログ316に正常に書き込み、ログディレクトリ311に位置を記憶すると、記憶抽象化レイヤ310は、書き込み動作が成功したことを示す応答をDBMSレイヤ305に送信又は返信する。
【0059】
いくつかの実施形態では、記憶抽象化レイヤ310は、ログクリーナ314を含む。ログクリーナ314は、記憶レイヤ315の追加専用ログ316の1つ以上のセグメントをクリーニング又は集約するために記憶レイヤ315と相互作用するように動作可能である。いくつかの実施形態では、ログクリーナ314は、追加専用ログ316を周期的に集約する。いくつかの実施形態では、ログクリーナ314は、ポリシーに従って追加専用ログ316を集約する。例えば、1つのポリシーは、追加専用ログ316内の最も古いセグメントが集約のための対象となってもよいことでもよい。他のポリシーは、最小の「ライブ」データを含む追加専用ログ316のセグメントが集約のための対象となってもよいことでもよい。ここで説明するように、ライブデータは、DBMSレイヤ305内のアクティブトランザクションにより関与するか或いは潜在的に必要とされ得るデータを示す。
【0060】
追加専用ログ316のセグメント316aが集約のために選択されると、ログクリーナ314は、ログセグメント316a内のコンポーネントブロック(ページ又はデルタ)が破棄できるか否かを決定するために、ログディレクトリ311を参照する。例えば、図5を参照すると、追加専用ログ316は、ページ2に関するいくつかの陳腐化したコンポーネントブロック(すなわち、ブロック318a、318b及び318c)と、ページ2の再構築された完全なバージョン、バージョン8(すなわち、ブロック318)とを含む。このような状況では、有用なデータが再構築された完全なブロック318に残っているので、冗長なブロック318a、318b及び318cは、何ら有用なデータを失うことなく廃棄できる。
【0061】
図7に示すように、記憶レイヤ315の追加専用ログ316bの終端のセグメントは、追加専用ログ316への直近に書き込まれたブロックを含み、これは、ページ1バージョン1(ブロック307)及び再構築されたページ2バージョン8(ブロック318)である。図7の例では、追加専用ログ316のセグメント316aが、記憶抽象化レイヤ310のログクリーナ314による集約のために選択されている。図示のように、セグメント316aは、セグメント316a内の空間を占有するデッドデータ340の複数のインスタンスを含む。コンポーネントブロックは、いずれかのアクティブなトランザクション又はいずれかの将来のトランザクションによりもはや必要とされない場合、デッドと考えられる。セグメント316aはまた、ページ3(すなわち、ブロック342a及び342b)、ページ4(すなわち、ブロック343a及び343b)及びページ5(すなわち、ブロック344a)に関するブロックを含む。
【0062】
ページ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の物理位置を反映するように更新されることが認識されるべきである。
【0063】
ブロック342、343及び344aのそれぞれが追加専用ログ316の終端に追加されると、追加専用ログ316の選択されたセグメント316aは、セグメント316a内のブロックのそれぞれが追加専用ログ316の終端のセグメント316b内のブロック342、343及び344aにより冗長になったブロック又はデッドデータを表すので、冗長になる。したがって、記憶抽象化レイヤ315は、追加専用ログ316のセグメント316aを破棄し、セグメント316aがもはや必要とされないことを記憶レイヤ315に通知し、これは、記憶レイヤ315が他のデータを記憶するためにセグメント316aを使用することを可能にする。ログクリーナ314は、陳腐化した冗長なデータブロックを除去することにより、追加専用ログ316がコンパクト化されて集約できるという点で有用になり得る。ログの集約は、追加専用記憶ノード110のより効率的な使用と、データベースクラスタ106からのページのより高速な取り出しとを可能にする(追加専用ログ316内の複数ブロックからページを再構築するために必要なオーバーヘッド処理が低減又は回避され得るので)。
【0064】
分散計算システム100の利点のうち1つは、データベースについて可能な実現構成に関して柔軟性があることである。例えば、記憶抽象化レイヤ310は、完全に集中化された方式で実現でき、また、分散方式で実現することもできる。
【0065】
図8は、集中記憶抽象化レイヤ310を有するデータベースサービスを提供するデータベースクラスタ806の例を示すブロック図である。図示のように、記憶抽象化レイヤ310は、データベースノード108に完全に統合される。記憶レイヤ315は、ローカルの追加専用ストレージ、リモートの追加専用記憶ノード110a、110b又はこれらのいずれかの組み合わせに統合されてもよい。図8に示すように、記憶レイヤ315は、データベースノード108から離れた複数の追加専用記憶ノード110a、110bを含む。
【0066】
図8に示す例示的な実施形態は、多数の利点を提供する。例えば、記憶抽象化レイヤ310が様々な追加専用記憶ノード110a、110b及び追加専用記憶デバイス350a、350bから分離されていることによって、データベースクラスタ806と共に使用される追加専用記憶デバイス350a、350bについて比較的少ない要件が存在する。追加専用記憶デバイス350a、350bは、シーケンシャルライト及びランダムリード要求をサービス提供することが可能である。DBMSレイヤ305からのページ読み取り又はページ書き込み要求をログベースの動作に変換する残りの機能は、全てデータベースノード108上の記憶抽象化レイヤ310により処理され、したがって、比較的小さいカスタマイズが追加専用ストレージノード110a、110bに必要とされる。しかし、図8に示す構成では、追加専用記憶ノード110a、110bがデータベースノード108から離れて位置する場合、全ての読み取り及び書き込み動作がネットワーク接続を介して生じ、ページの再構築は、ページの各ブロックがネットワーク接続を介して記憶レイヤ315から記憶抽象化レイヤ310に送信されることを必要とするので、データベースを維持管理することに関与する高いネットワークトラフィックが存在する可能性がある。
【0067】
図9は、記憶抽象化レイヤ310の分散配置を有するデータベースサービスを提供する例示的なデータベースクラスタ906を示すブロック図である。図示のように、データベースクラスタ906は、いくつかの追加専用記憶ノード110a、110bに跨って共有(又は分割)される。I/Oルータ900は、記憶ノード110a、110bが各ページをデータベースに記憶するマッピングを維持管理する。I/Oルータ900は、ページ読み取り又はページ書き込み要求を受信し、要求を適切な記憶ノード110a、110b上の記憶抽象化レイヤ310a又は310bに転送するように動作可能である。図8及び図9の双方において、ログクリーナ314の存在は任意選択である点に留意すべきである。
【0068】
図9に示すように、各記憶ノード110a、110bは、そのそれぞれの追加専用記憶デバイス350a、350bに記憶されたページのみを管理する局所化された記憶抽象化レイヤ310a及び310bを含む。DBMSレイヤ305からのページ読み取り要求を実行するために、バッファプール306は、特定のページについてのページ読み取り要求を発行し、I/Oルータ900は、要求内のページ識別子を検索し、どの追加専用記憶ノード110a、110b(又は破片(shard))が要求されたページを記憶するかを決定する。この例では、要求されたページは、追加専用記憶ノード110aに記憶されている。次いで、I/Oルータ900は、ページ読み取り要求を追加専用記憶ノード110aに発行し、記憶抽象化レイヤ310aは、上記のプロセスに従ってページ読み取り要求を処理する。
【0069】
図9の構成の技術的利点は、拡大縮小が比較的簡単であることである。例えば、システムの複雑性における比較的小さい増加及びネットワークトラフィックへの少ない影響で、更なる追加専用記憶ノード110が図9のシステムに追加できる。要求されたページの再構築は、データベースノード108ではなく、特定の追加専用記憶ノード110内でローカルに生じるので、ネットワーク接続は、図8における構成に対して少ないトラフィックを招く。さらに、図9の構成は、データベースノード108上の処理負荷を低減し、その処理負荷を、より大容量の要求に対応する処理能力を有する可能性がより高い追加専用記憶ノード110にオフロードする。
【0070】
いくつかの実施形態では、記憶抽象化レイヤ310は、記憶ノードの物理的な記憶デバイス上にデータを記憶するためにアップデート・イン・プレースプロセスを使用するレガシーデータベースシステムからの動作を、現代の追加専用記憶ノード(例えば、SSDを含む記憶ノード)のために調整された動作にトランスペアレントに変換する。上記のように、追加専用記憶ノードは、データセンタの記憶ノードでますます使用されている。アップデート・イン・プレースプロセスは、更新されたページを追加専用記憶デバイス上の「クリーンな」記憶ブロックに書き込み、次いで、ガーベジコレクション中にページの古いバージョンをクリアする。追加専用記憶デバイスが限られた数の書き込みサイクルを有することを考えると、アップデート・イン・プレースプロセスを使用することは、記憶ノードの追加専用記憶デバイスの寿命を短くしたり、或いは、記憶ノードの追加専用記憶デバイス内の特定のブロックの寿命を短くしたりする可能性がある。
【0071】
本発明のいくつかの実施形態の追加専用書き込み動作によれば、それぞれの新たなページ又はページデルタは、追加専用ログ316内の次の利用可能なブロックに追加される。したがって、ここで説明するシステムの技術的利点は、それぞれの新たなページ又はページデルタが追加専用ログ316に順次書き込まれることであり、これは、ランダムライトよりも追加専用記憶デバイス350にとってより高速且つより効率的である。さらに、シーケンシャルライトは、アップデート・イン・プレースプロセスからのランダムライトと比較して、追加専用記憶デバイス350の寿命を延ばす可能性があり、それにより、コンポーネントを置換するために必要な時間が延長され得るので、データベースを動作するコストを低減する。さらに、追加専用記憶デバイス350は、HDDに対して非常に迅速に「ランダムリード」動作(すなわち、非シーケンシャル記憶ブロックからの読み取り動作)を実行でき、これは、ページ読み取り動作に必要なデータ取得がHDDを使用することよりも追加専用記憶デバイス350を使用してより高速に行われることを可能にする。
【0072】
さらに、ここで説明する例示的な実施形態により例示されるように、ここで説明するシステムは、異なる記憶レイヤの実現、異なるデータベースシステム、共有されたデータベース又は共有されていないデータベースに比較的容易に適合されてもよく、先行のリソース予約なしに、記憶サイズを比較的容易に拡大縮小できる。
【0073】
DMBSレイヤ305は記憶レイヤ315から分離されるので、ここで説明するシステムは、どのようにデータが物理的に記憶されるかに関して、より大きい柔軟性を可能にする。例えば、ローカルに取り付けられた追加専用記憶デバイス350、クラウドストレージ又はカスタマイズされた記憶ノードのいずれかの組み合わせが使用できる。さらに、データは、複数の追加専用記憶ノード110に跨って分割又は共有できる。さらに、ここで説明する実施形態は、MySQL、PostgreSQL等を含むが、これらに限定されない複数のデータベースシステムをサポートしてもよい。
【0074】
さらに、いくつかの実施形態では、記憶抽象化レイヤ310は、キーバリュー記憶データベースのような他のタイプのデータベースと共に使用される。キーバリュー記憶データベースを使用する実施形態では、記憶抽象化レイヤ310は、DMBS 305から読み取り及び書き込み記録要求を受信してもよく、記憶抽象化レイヤ310は、読み取り及び書き込み記録要求を、記憶レイヤ315に送信される追加及び読み取りコンポーネント命令に変換する。
【0075】
さらに、ここに開示される実施形態は、様々な複製方式と互換性がある。いくつかの実施形態では、記憶抽象化レイヤ310は、複製を制御する。例えば、記憶抽象化レイヤ310は、各ページ書き込み要求を複数の追加専用記憶ノード110に送信することにより複製を処理できる。いくつかの実施形態では、複製は、記憶レイヤ315により実現されてもよい。ここに開示される実施形態は、一貫した(書き込み動作が完了したと考えられるためにコンポーネントブロックの全てのコピーが書き込まれなければならない)コーラム(quorum)ベース(書き込み動作が完了したと考えられるためにコンポーネントブロックの閾値数のコピーが書き込まれなければならない)の複製方式をサポートできる。
【0076】
本出願の範囲は、明細書に記載されるプロセス、機械、製造物、合成物、手段、方法及びステップの特定の実施形態に限定されることを意図するものではない。本発明の開示から当業者が容易に認識するように、ここで説明する対応する実施形態と実質的に同じ機能を実行するか或いは実質的に同じ結果を達成する、現在存在するか或いは後に開発されるプロセス、機械、製造物、合成物、手段、方法又はステップが利用されてもよい。したがって、添付の特許請求の範囲は、このようなプロセス、機械、製造物、合成物、手段、方法又はステップをその範囲内に含むことを意図している。
【0077】
理解できるように、上記及び図示の詳細な実施形態は、例示のみを意図している。これらの例示的な実施形態に対して、変形、代替構成、代替コンポーネント及び修正が行われてもよい。本発明は、特許請求の範囲により規定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9