JP6198992B2 - 計算機システム、及び、データベース管理方法 - Google Patents
計算機システム、及び、データベース管理方法 Download PDFInfo
- Publication number
- JP6198992B2 JP6198992B2 JP2017511402A JP2017511402A JP6198992B2 JP 6198992 B2 JP6198992 B2 JP 6198992B2 JP 2017511402 A JP2017511402 A JP 2017511402A JP 2017511402 A JP2017511402 A JP 2017511402A JP 6198992 B2 JP6198992 B2 JP 6198992B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- write
- physical
- time stamp
- logical address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000007726 management method Methods 0.000 title claims description 32
- 230000015654 memory Effects 0.000 claims description 34
- 238000006243 chemical reaction Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 description 53
- 230000008569 process Effects 0.000 description 29
- 238000001514 detection method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 101500000959 Bacillus anthracis Protective antigen PA-20 Proteins 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、概して、データベース管理技術に関する。
データベース管理に関して、例えば、ビッグデータ処理が知られている。ビッグデータ処理では、更新処理と分析処理の両立が望まれる。具体的には、例えば、スマートフォン経由の大量の小口決済データの取り込みと、取り込んだ大量の決済データの即時分析が望まれる。また、例えば、大量のセンサデータの取り込みと、取り込んだ大量のセンサデータの即時分析が望まれる。
このような大量のデータの更新処理と分析処理を両立するためのデータベース一貫性制御方式として、MVCC(MultiVersion Concurrency Control)方式、特に、追記型MVCC方式が知られる。追記型MVCC方式によれば、データベース内のデータが更新される場合、更新前のデータが記憶されている領域とは別の新たな空き領域が確保され、更新後のデータは、確保された空き領域に書き込まれる。参照されることの無い旧いバージョンのデータは削除されてよい。
このように、追記型MVCC方式では、バージョン管理と空き領域管理の両方を、データベース管理システム(以下、DBMS)が行う必要がある。すなわち、DBMSが、或るバージョンにおいて、或る論理アドレス(例えばDBMSが認識している論理空間(例えば論理ボリューム)の論理アドレス)が属する領域内のデータを書き換える場合、空き領域を探し、見つかった空き領域に属する論理アドレスを指定した書込み要求を発行する。このため、DBMSを実行するプロセッサの負荷が高い。例えば、空き領域管理では、空き領域のロックの取得及び解除といった処理が必要になる。このような処理が発生すると、シリアライズ処理(例えばシーケンシャルライト)において、処理が適宜待たされる。
一方、データベースの格納先として採用され得る記憶デバイスとして、いわゆる追記型の記憶デバイス(更新前データを記憶している領域と別の領域に更新後データを書き込む記憶デバイス)、例えば、NANDフラッシュメモリ(NAND−FM)を有する記憶デバイス(以下、FMデバイス)がある。FMデバイスでは、データは、ブロック単位で消去され、ページ単位で入出力される。FMデバイスは、一般に、FMの書込み寿命延長のためのウェアレベリング機能を有している。ウェアレベリング機能によれば、比較的消去回数(書込み回数)の多い1以上のブロックに格納されている有効データが、比較的消去回数の少ない1つのブロックにコピーされ、コピー元の1以上のブロックの各々について消去処理が行われる。
追記型MVCCのプロセッサ負荷を下げるための方法として、DBMSの処理の少なくとも一部を、FMデバイスにオフロードする方法が考えられる。しかし、その方法は知られていない。なお、スナップショット管理のためのプロセッサ負荷を軽減するための技術については、特許文献1の技術が知られている。特許文献1によれば、スナップショット管理の少なくとも一部がFMパッケージにオフロードされる。具体的には、スナップショットの世代番号を、FMパッケージ(FMデバイス)が管理する。ストレージコントローラが、世代番号を指定した読出し要求をホスト装置から受け、世代番号を指定したスナップショット取得要求をFMデバイスに送信する。
スナップショット管理のオフロードによれば、スナップショットデータ(スナップショットイメージを構成するデータ)を記憶しているページに世代番号が関連付けられてさえいれば、そのページ内のデータをスナップショットデータとして管理できる。
しかし、スナップショット管理の少なくとも一部をFMデバイスにオフロードする技術を利用しても、追記型MVCC方式に従うバージョン管理及び空き領域管理のうちの少なくとも1つをFMデバイスにオフロードすることはできない。例えば、理由は以下の通りである。
一般に、スナップショットは、バックアップの一例であり、スナップショットとして保存されているデータは、明示的な削除指示があるまで、削除されてはならない。一方、追記型MVCCでは、データ更新によって旧いバージョンのデータが参照されなくなり得るるが、参照されなくなったデータは削除されてよい。スナップショット管理のオフロード技術を単純に適用しても、削除指示のような明示的な指示無しに、参照されなくなり削除されてよいデータを特定することができない。
また、データベースでは、コミット処理及びアボート処理といったデータベース特有の処理もある。
なお、上述の課題は、追記型不揮発記憶デバイスとしてFMデバイス以外の不揮発記憶デバイスが採用されても、有り得る。
データベース管理システムを含んだホストシステムが、トランザクションの開始から終了までの間に、記データベースのデータの更新が生じる場合に、更新前データが格納されている領域に属する論理アドレスと同一の論理アドレスとタイムスタンプとを指定した書込み要求を追記型不揮発記憶デバイスに送信するようになっている。追記型不揮発記憶デバイスは、タイムスタンプ、物理アドレス及び参照カウンタが論理アドレス毎に関連付けられるアドレス変換情報である拡張論物変換情報を有する。各参照カウンタは、その参照カウンタに対応した論理アドレス及びタイムスタンプに対応したデータを参照する参照元の数を表す。追記型不揮発記憶デバイスは、論理アドレスに新たに割り当てられた物理アドレスの物理領域を消去不可の物理領域(有効物理領域)として管理するようになっている。追記型不揮発記憶デバイスは、対象の論理アドレスについて、拡張論物変換情報を基に、最新のタイムスタンプより旧いタイムスタンプが関連付けられており、且つ、対象の論理アドレスと旧いタイムスタンプとに対応した参照カウンタが、参照元が存在しないことを表しているか否かを判断する。追記型不揮発記憶デバイスは、その判断結果が肯定の場合、対象の論理アドレスと前記旧いタイムスタンプとに対応した物理アドレスの物理領域を、消去可能な物理領域(無効物理領域)として管理する。なお、「追記型不揮発記憶デバイス」は、データが格納されている物理領域が割り当てられている論理アドレスを指定した書込み要求をホストシステムから受けた場合、その書込み要求に従うデータを空き物理領域に書き込み、その空き物理領域の物理アドレスを、指定された論理アドレスに割り当てるようになっている不揮発記憶デバイスである。つまり、追記型不揮発記憶デバイスは、同一物理領域内のデータを上書きできない不揮発記憶デバイスである。
追記型MVCC方式に従うバージョン管理及び空き領域管理のうちの少なくとも1つをFMデバイスのような追記型記憶デバイスにオフロードすることができる。
以下、図面を参照しながら、幾つかの実施例を説明する。なお、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置又はシステムが行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶部(例えばメモリ)を含み、記憶部はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
図1は、実施例1に係る計算機システムの構成を示す。
データベースサーバ401は、計算機であって、例えば、パーソナルコンピュータ、ワークステーションまたはメインフレームであってよく、若しくは、これらの計算機において仮想化プログラムによって構成された仮想的な計算機であってよい。データベースサーバ401は、ネットワークアダプタ413、メモリ416、記憶デバイス415及びそれらに接続されたプロセッサ414を有する。プロセッサ414は、例えば、マイクロプロセッサであり、コンピュータプログラムを実行する。プロセッサ414により実行されるコンピュータプログラムは、例えば、オペレーティングシステム417及びDBMS412である。メモリ416は、例えば、揮発性のDRAM(Dynamic Random-Access Memory)等であり、プロセッサ414によって実行されるプログラムと、プログラムが使用するデータを一時的に記憶する。記憶デバイス415は、例えば、不揮発性の磁気ディスク、フラッシュメモリ等であり、プログラム及びプログラムが使用するデータを格納する。ネットワークアダプタ413は、通信ネットワーク403とデータベースサーバ401を接続する。データベースサーバ401は、ネットワークアダプタ413を通じて、外部ストレージ装置402及びクライアント計算機406と通信する。クライアント計算機406で、アプリケーションプログラム411が実行される。クライアント計算機406が、クエリをDBMS412に発行する。アプリケーションプログラム411は、クライアント計算機406に代えて、データベースサーバ401で実行されてもよい。プロセッサ414は、データの暗号化や復号を行う回路等の専用のハードウェア回路を含んでもよい。
データベースサーバ401は、性能や冗長性を高めるために、プロセッサ414、メモリ416、記憶デバイス415及びネットワークアダプタ413のいずれか1つの要素を複数有してもよい。データベースサーバ401は、キーボードやポインティングデバイス等の入力デバイス(図示しない)と液晶ディスプレイ等の出力デバイス(図示しない)を有してもよい。入力デバイス及び出力デバイスは、プロセッサ414に接続されていてよい。入力デバイスと出力デバイスは一体であってもよい。
データベースサーバ401では、DBMS412がアプリケーションプログラム411から発行されたクエリを実行し、そのクエリの実行において、データベース851からデータを読み出すために、若しくは、データベース851にデータを書き込むために、そのデータベース851を記憶する外部ストレージ装置402に対するI/O(Input/Output)要求をオペレーティングシステム417に発行する。オペレーティングシステム417は、そのI/O要求を受け付け、外部ストレージ装置402へI/O要求を発行する。
外部ストレージ装置402は、複数の追記型記憶デバイスを含む記憶デバイス群443を有する装置であり、例えば、ディスクアレイ装置であるが、それに代えて、単一の追記型記憶デバイスであってもよい。外部ストレージ装置402は、データベースサーバ401が有するDBMS412が管理するデータベース851を記憶するが、データベース851のデータに加えて、プログラムを記憶してもよい。外部ストレージ装置402は、データベースサーバ401からI/O要求を受け付け、そのI/O要求に従いデータの読み書きを行い、その結果をデータベースサーバ401に返す。
外部ストレージ装置402は、記憶デバイス群443に加えて、ネットワークアダプタ441及びこれらに接続されたストレージコントローラ842を有する。
ネットワークアダプタ441は、外部ストレージ装置402を通信ネットワーク403に接続し、これを介して、データベースサーバ401と接続される。通信ネットワーク403を介した通信プロトコルとしては、例えば、ファイバチャネル(FC)、SCSI(Small Computer System Interface)、PCIe(PCI-Express)、又は、TCP/IP(Transmission Control Protocol/Internet Protocol)が採用されてよい。例えば、ファイバチャネル若しくはSCSIが採用される場合、データベースサーバ401のネットワークアダプタ413及び外部ストレージ装置402のネットワークアダプタ441は、ホストバスアダプタと呼ばれることがある。
記憶デバイス群443が有する追記型記憶デバイスは、FMデバイスである。記憶デバイス群443は、RAID(Redundant Array of Independent Disks)機構を有し、所定のRAIDレベルでデータを記憶してもよい。記憶デバイス群443の記憶空間に基づく論理的な記憶デバイス(例えば、論理ユニット、論理ボリューム、ファイルシステムボリューム)が、データベースサーバ401に提供され、その論理的な記憶デバイス上にデータベース851が格納されてもよい。
ストレージコントローラ842は、例えば、メモリ及びプロセッサを含み、データベースサーバ401からのI/O要求に応じて、データベース851を格納した記憶デバイス群443との間でデータの読出し、若しくは、書込みを行う。例えば、ストレージコントローラ842は、データベースサーバ401から、データの読出し要求を受け付けると、その要求に従って記憶デバイス群443からデータを読み出し、読み出したデータをデータベースサーバ401に返す。
外部ストレージ装置402は、性能や冗長性を高めるために、ストレージコントローラ842等の構成要素を複数有してもよい。
DBMS412は、データベース851を管理する。データベース851は、1以上の表462を含み、更に1以上の索引461を含んでよい。表462は、1以上のレコードの集合であり、レコードは1以上のカラムから構成される。索引461は、表462の1以上のカラム等を対象として作成されるデータ構造であり、その索引461が対象とするカラム等を含む選択条件による表462へのアクセスを高速化するためのものである。例えば、表462は、対象とするカラムの値の毎に、表462の中でその値を含むレコードを特定するための情報を保持するデータ構造である。データ構造としては、例えばB木等が用いられる。レコードを特定するための情報としては、物理アドレスや論理的な行ID等が用いられることがある。
DBMS412は、クエリ受付部421、クエリ実行プラン生成部422及びクエリ実行部424を有する。
クエリ受付部421は、アプリケーションプログラム411が発行するクエリを受け付ける。クエリは、例えば、構造化問合せ言語(SQL、Structured Query Language)によって記述される。
クエリ実行プラン生成部422は、クエリ受付部421が受け付けたクエリから、そのクエリを実行するために必要な1以上のデータベースオペレーションを含むクエリ実行プランを生成する。クエリ実行プランは、例えば、1以上のデータベースオペレーションと、データベースオペレーションの実行順序の関係を含む情報であり、クエリ実行プラン情報423に格納される。クエリ実行プランは、データベースオペレーションをノード、データベースオペレーションの実行順序の関係をエッジとする木構造で表されることがある。
クエリ実行部424は、クエリ実行プラン生成部422が生成したクエリ実行プランに従って、クエリ受付部421が受け付けたクエリを実行し、その実行結果をアプリケーションプログラム411に返す。この際、クエリ実行部424は、データベースオペレーションの実行に必要なデータのI/O要求(書込み要求又は読出し要求)を発行することがある。発行されたI/O要求は、オペレーティングシステム417を介して外部ストレージ装置402に送信される。
図1に示すDBMS412の構成は一例に過ぎない。例えば、ある構成要素は複数の構成要素に分割されていてもよく、複数の構成要素が1つの構成要素に統合されていてもよい。
また、本実施例では、データベースを記憶する1以上の追記型記憶デバイスの一例として、1以上のFM(フラッシュメモリ)デバイスが採用される。
図2は、FMデバイスの構成例を示す。
1つのFMデバイス30には、データベース851の少なくとも一部が格納される。FMデバイス30は、FM33、及び、FM33に接続されたFMコントローラ32を有する。FMコントローラ32は、ストレージコントローラ842からのI/O要求に従い、I/O要求をFM33に送信する。DBMS412を実行するプロセッサ414とストレージコントローラとを含んだシステムが、FMデバイス30のホストシステムの一例である。ホストシステムは、DBMS412を実行するプロセッサ414とストレージコントローラ842との一方を含み他方を含まないシステムであってもよい。
FM33は、例えばNAND−FMであり、1以上のFMチップを含む。FMチップは、複数のブロックを含む。複数のブロックの各々は、複数のページを含む。ページ単位でデータが入出力され、ブロック単位でデータが消去される。FM33は、いわゆる追記型メモリであり、ページにデータを上書きすることができない。ページに書き込まれているデータの更新後データは、別の空きページに書き込まれる。各ブロックでは、データの書込み先は、先頭の空きページから末尾の空きページにかけて順にシフトする。末尾に空きページがあるブロックは、いわゆる途中書きブロック(オープンブロック)である。ページとしては、空きページの他に、有効ページと無効ページがある。有効ページは、有効データを格納しているページであり、無効ページは、無効データを格納しており有効データを格納していないページである。有効データは、対応する論理アドレスについて最新のデータである。無効データは、有効データにより更新された旧いデータ(更新前データ)である。
FMコントローラ32は、プロセッサ42、FE−I/F(フロントエンドのインターフェースデバイス)41、バススイッチ43、メモリI/F47、低速メモリ45、高速メモリ44、及び、BE−I/F(バックエンドのインターフェースデバイス)46を有する。
FE−I/F41は、ストレージコントローラ842に接続されるインターフェースデバイスであり、ストレージコントローラ842とバススイッチ43側の部位との間のデータ通信を仲介する。
バススイッチ43は、プロセッサ42、FE−I/F41、メモリI/F47、及びBE−I/F46に接続され、これら部位の間のデータを中継する。
メモリI/F47は、低速メモリ45と接続されるインターフェースデバイスであり、低速メモリ45に対するデータの入出力を制御する。
低速メモリ45は、例えば、DRAM(Dynamic Random Access Memory)又は不揮発メモリであり、プロセッサ42による処理に使用するデータ等を記憶する。低速メモリ45は、拡張論物変換情報451及びブロック管理情報453を記憶する。
拡張論物変換情報451は、FMデバイス30の論理アドレスと物理アドレスとの対応関係を表すアドレス変換情報が拡張された情報である。具体的には、拡張論物変換情報451は、論理アドレス及び物理アドレスの他に、TS(タイムスタンプ)及び参照カウンタを含む。詳細は後述する。
ブロック管理情報453は、FM33の各ブロックに関する情報、例えば、ブロック毎に、ブロック番号、書込み開始時刻(先頭ページにデータが書き込まれた時刻)、書込み終了時刻(末尾ページにデータが書き込まれた時刻)、ブロック状態(空き、不良等)、及び消去回数を含む。
高速メモリ44は、例えば、SRAM(Static Random Access Memory)であり、プロセッサ42と直接接続されている。高速メモリ44は、プロセッサ42により実行されるプログラム等を記憶する。本実施例では、高速メモリ44は、フラッシュメモリ制御プログラム(以下、FM制御プログラム)442を記憶する。FM制御プログラム442は、ストレージコントローラ842からのI/O要求に応答してFM33に対してデータを入出力したり、ブロック間でデータを移動したりする。
BE−I/F46は、FM33と接続されるインターフェースデバイスであり、FM33に対するデータの入出力を制御する。
FMデバイス30の構成は、図2の構成に限られない。例えば、高速メモリ44及び低速メモリ45のように性能の異なる複数のメモリに代えて、性能が同じ1以上のメモリが採用されてよい。
以上のように、本実施例では、データベースを記憶する1以上の追記型記憶デバイスの一例として、1以上のFMデバイスが採用される。FMデバイスは、外部ストレージ装置402が有するが、外部ストレージ装置402に代えてデータベースサーバ401が有してもよい。例えば、記憶デバイス415が、データベースが格納される1以上のFMデバイスであってもよい。また、追記型記憶デバイスが有する記憶メディアとしては、NAND−FMに代えて、他種の記憶メディア、例えば、PRAM(Phase Change Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistance Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)が採用されてもよい。
本実施例では、追記型MVCC方式に従いデータベースサーバ401から外部ストレージ装置402にデータが書き込まれる。
図3は、実施例1に係る追記型MVCC方式での書込みの論理的なイメージの一例の模式図である。図4は、追記型MVCC方式に従う書込みの物理的なイメージの一例の模式図である。図3と図4は対応している。以下の説明において、「論理アドレス」及び「物理アドレス」は、FMデバイス30にとっての論理アドレス及び物理アドレスである。すなわち、FMコントローラ32(FM制御プログラム442)は、論理空間(論理アドレス空間)を提供し、その論理空間についての論理アドレスが指定されたI/O要求を受け付ける。I/O要求が書込み要求の場合、FMコントローラ32は、論理アドレスに対して物理アドレス(空きページの物理アドレス)を割り当て、割り当てられた物理アドレスが属する空きページに、書込み対象のデータを書き込む。
本実施例に係る追記型MVCC方式によれば、少なくとも空き領域管理がFMデバイス30にオフロードされているため、データの書き変え前後において、論理アドレスが同一である。すなわち、DBMS412(クエリ実行部424)が、データの書き換えの際に、空き領域を探す必要が無い。具体的には、例えば以下の(A)〜(D)が行われる。
(A)トランザクション毎に、トランザクションに関連付けられるタイムスタンプが異なる。
(B)トランザクションにおいて書込みが発生した論理アドレスについては、以下の通りである。すなわち、書込み先論理アドレスに、そのトランザクションに関連付いているタイムスタンプが関連付けられる。書込み先論理アドレスに、いずれのページの物理アドレスも割り当てられていなければ、その書込み先論理アドレスに、空きページの物理アドレスが割り当てられ、その空きページにデータが書き込まれる。一方、書込み先論理アドレスに、更新前データが書き込まれているページの物理アドレスが割り当てられていれば、その書込み先論理アドレスには、割当て済の物理アドレスに代えて、空きページの物理アドレスが割り当てられ、その空きページに更新後データが格納される。
(C)トランザクションにおいて書込みが発生しない論理アドレスについては、以下の通りである。すなわち、その論理アドレスとそのトランザクションに対応したタイムスタンプとを指定した読出し要求をFMコントローラ32が受信した場合、その論理アドレスについての最新のタイムスタンプに対応したデータが読み出される。
(D)複数のトランザクションが並列に実行されてよい。すなわち、トランザクションがコミットする前に、別のトランザクションについてデータベースへのデータの書込みが行われてもよい。
以上の(A)〜(D)によれば、図3及び図4を参照して、例えば以下の(a)〜(c)のことが言える。
(a)トランザクション「T0」での書込み対象は、データ「A0」〜「H0」である。データ「A0」〜「H0」の書込み先は、それぞれ、論理アドレス「LA0」〜「LA7」である。論理アドレス「LA0」〜「LA7」の各々に、トランザクション「T0」に関連付いているタイムスタンプ「TS0」が関連付けられる。データ「A0」〜「H0」が、物理アドレスが連続した異なる8つのページにそれぞれ書き込まれる。その8つのページの物理アドレスが、それぞれ、論理アドレス「LA0」〜「LA7」に割り当てられる。データ「H0」が書き込まれて、トランザクション「T0」がコミットする。
(b)トランザクション「T1」及び「T2」が並列に実行される。トランザクション「T1」での書込み対象は、データ「A0」、「C0」、「F0」及び「H0」の更新後データ「A1」、「C1」、「F1」及び「H1」であり、トランザクション「T2」での書込み対象は、データ「A1」、「F1」及び「H1」の更新後データ「A2」、「F2」及び「H2」である。データ「A1」、「C1」、「F1」及び「H1」の書込み先は、それぞれ、論理アドレス「LA0」、「LA2」、「LA5」及び「LA7」である。論理アドレス「LA0」、「LA2」、「LA5」及び「LA7」の各々に、トランザクション「T1」に関連付いているタイムスタンプ「TS1」が関連付けられる。データ「A1」、「C1」、「F1」及び「H1」が、4つのページにそれぞれ書き込まれる。その4つのページの物理アドレスが、それぞれ、論理アドレス「LA0」、「LA2」、「LA5」及び「LA7」に、割当て済の物理アドレスに代えて、割り当てられる。データ「C1」の書込みとデータ「F1」の書込みの間に、論理アドレス「LA0」について、別のトランザクション「T2」における1つの書込み対象データ「A2」が書き込まれる。その論理アドレス「LA0」に、データ「A1」が記憶されているページの物理アドレスに代えて、データ「A2」の書込み先ページの物理アドレスが割り当てられる。データ「H1」が書き込まれて、トランザクション「T1」がコミットする。トランザクション「T2」での残りの書込み対象データ「F2」及び「H2」の書込み先は、それぞれ、論理アドレス「LA5」及び「LA7」である。データ「F2」及び「H2」が、それぞれ、2つのページに書き込まれる。その2つのページの物理アドレスが、それぞれ、論理アドレス「LA5」及び「LA7」に、割当て済の物理アドレスに代えて、割り当てられる。データ「H2」が書き込まれて、トランザクション「T2」がコミットする。
(c)トランザクション「T3」での書込み対象は、データ「F2」及び「H2」の更新後データ「F3」及び「H3」である。データ「F3」及び「H3」の書込み先は、それぞれ、論理アドレス「LA5」及び「LA7」である。論理アドレス「LA5」及び「LA7」の各々に、トランザクション「T3」に関連付いているタイムスタンプ「TS3」が関連付けられる。データ「F3」及び「H3」が、2つのページにそれぞれ書き込まれる。その2つのページの物理アドレスが、それぞれ、論理アドレス「LA5」及び「LA7」に、割当て済の物理アドレスに代えて、割り当てられる。データ「H3」が書き込まれて、トランザクション「T3」がコミットする。
以上の(a)〜(c)によれば、例えば、データ「A0」は、データ「A1」を書き込むトランザクション「T1」がコミットした時点で、別のトランザクションから参照されていない限り、参照されなくなるデータである。このようなデータは、削除されても構わない。
そこで、本実施例では、FMデバイス30が上述の拡張論物変換情報451を保持する。
図5は、拡張論物変換情報451の構成例を示す。
拡張論物変換情報451は、例えばテーブル構造であり、上述したように、拡張されたアドレス変換情報である。拡張論物変換情報451は、複数のエントリを有する。エントリは、LA+TS(論理アドレスとタイムスタンプの組)毎に存在する。各エントリが記憶する情報として、LA+TS501、PA502及び参照カウンタ503がある。
LA+TS501は、論理アドレスとタイムスタンプの組を表す。タイムスタンプは、バージョンID(例えば通し番号)でもよいし、時刻でもよい。PA502は、論理アドレスに割り当てられた物理アドレスを表す。参照カウンタ503は、その物理アドレスが属するページを参照する参照元(例えば、トランザクション、又は、バージョン(タイムスタンプ))の数である参照カウンタを表す。従って、参照カウンタ(値)が1以上であれば、その参照カウンタに対応する論理アドレスが書込み先とされたデータが、少なくとも1つのトランザクションから参照されることを意味する。参照カウンタが「0」であれば、その参照カウンタに対応する論理アドレスが書込み先とされたデータが、いずれのトランザクションからも参照されないことを意味する。参照カウンタが「0」であり、且つ、その参照カウンタ「0」に対応した論理アドレスに関連付いているTSよりも新しいTSが、その参照カウンタ「0」に対応した論理アドレスと同じ論理アドレスに関連付いた場合、その参照カウンタ「0」に対応した論理アドレスが書込み先であるデータは消去されてよいデータ(無効化されるデータ)として扱うことができる。
次に、図6及び図7を参照して、トランザクション、タイムスタンプ、論理アドレス、データ、物理アドレス、ページ状態(有効/無効)及び参照カウンタの対応関係の一例を説明する。
図6は、トランザクション、タイムスタンプ、論理アドレス及びデータの対応関係の一例を示す。図7は、タイムスタンプ、論理アドレス、データ、物理アドレス、ページ状態(有効/無効)及び参照カウンタの対応関係の一例を示す。図6と図7が対応している。なお、以下の説明では、下記を前提とする。
(*)図6の表記は、図3の表記と同じである。
(*)図7において、2つのエントリから構成される1つのボックスは、1つのブロックに対応する。各エントリを構成する3つのフィールドは、左から順に、チェックボックスフィールド、データフィールド及び参照カウンタフィールドを意味する。1つのエントリは、1つのページに対応している。
(*)従って、図7の例では、1つのブロックが、2つのページで構成されている。
(*)また、図7において、物理アドレスは、物理アドレスを意味する符号(P)と、ブロック番号と、ページ番号との組合せである。例えば、n番目のブロック(物理ブロック)におけるm番目のページ(物理ページ)の物理アドレスを、「Pnm」と表記できる(n及びmは、それぞれ整数)。物理アドレスPnmに該当するページを、「ページ#nm」と表記できる。n番目のブロックを、「PB#n」又は「ブロック#n」と表記できる。m番目のページを、「PP#m」又は「ページ#m」と表記できる。
(*)図7において、チェックマークは、参照カウンタが「1」以上のページを意味する。このため、チェックマークは、有効ページ(有効データ)をカバーする。チェックマーク無し且つデータ有りは、無効ページ(無効データ)を意味する。チェックマーク無し且つデータ無しは、空きページを意味する。
(*)図7において、参照カウンタフィールドにおける値は、参照カウンタである。
(*)データ「Ax」(x=0、1、…)の書込み先論理アドレスは、論理アドレス「LA1」である。データ「Bx」(x=0、1、…)の書込み先論理アドレスは、論理アドレス「LA2」である。データ「Cx」(x=0、1、…)の書込み先論理アドレスは、論理アドレス「LA3」である。
(*)図6の表記は、図3の表記と同じである。
(*)図7において、2つのエントリから構成される1つのボックスは、1つのブロックに対応する。各エントリを構成する3つのフィールドは、左から順に、チェックボックスフィールド、データフィールド及び参照カウンタフィールドを意味する。1つのエントリは、1つのページに対応している。
(*)従って、図7の例では、1つのブロックが、2つのページで構成されている。
(*)また、図7において、物理アドレスは、物理アドレスを意味する符号(P)と、ブロック番号と、ページ番号との組合せである。例えば、n番目のブロック(物理ブロック)におけるm番目のページ(物理ページ)の物理アドレスを、「Pnm」と表記できる(n及びmは、それぞれ整数)。物理アドレスPnmに該当するページを、「ページ#nm」と表記できる。n番目のブロックを、「PB#n」又は「ブロック#n」と表記できる。m番目のページを、「PP#m」又は「ページ#m」と表記できる。
(*)図7において、チェックマークは、参照カウンタが「1」以上のページを意味する。このため、チェックマークは、有効ページ(有効データ)をカバーする。チェックマーク無し且つデータ有りは、無効ページ(無効データ)を意味する。チェックマーク無し且つデータ無しは、空きページを意味する。
(*)図7において、参照カウンタフィールドにおける値は、参照カウンタである。
(*)データ「Ax」(x=0、1、…)の書込み先論理アドレスは、論理アドレス「LA1」である。データ「Bx」(x=0、1、…)の書込み先論理アドレスは、論理アドレス「LA2」である。データ「Cx」(x=0、1、…)の書込み先論理アドレスは、論理アドレス「LA3」である。
(7−1)トランザクション「T0」での書込み対象が、データ「A0」〜「C0」である。従って、FMコントローラ32は、LA+TSとして、「LA0+TS0」、「LA1+TS0」、及び、「LA2」+TS0」を拡張論物変換情報451に登録する。書込み先ブロックが空きブロック#0(いずれのページも空き状態のブロック)の場合、FMコントローラ32は、ブロック#0のページ#0及び#1にデータ「A0」及び「B0」を書き込み、次に、書込み先ブロックを空きブロック#1とし、残りのデータ「C0」を、ページ#10に書き込む。このため、FMコントローラ32は、「LA0+TS0」、「LA1+TS0」、及び、「LA2+TS0」に、それぞれ、物理アドレス「PA00」、「PA01」及び「PA10」を割り当てる。物理アドレス「PA00」、「PA01」及び「PA10」にそれぞれ属する3つのページは、それぞれ有効ページである。FMコントローラ32は、「LA0+TS0」、「LA1+TS0」、及び、「LA2+「S0」にそれぞれ対応した3つの参照カウンタの各々に1を加算する。結果として、3つの参照カウンタの各々は「1」となる。
(7−2)FMコントローラ32は、データ「C0」の書込みによりトランザクション「T0」がコミットした場合、タイムスタンプ「TS0」に対応した「LA0+TS0」、「LA1+TS0」、及び、「LA2+TS0」にそれぞれ対応した3つの参照カウンタの各々から1を減算する。結果として、3つの参照カウンタの各々は「0」となる。しかし、その3つの参照カウンタの各々には再び1が加算される。なぜなら、データ「A0」及び「C0」は、それぞれ、トランザクション「T1」での書込み対象データ「A1」及び「C1」の更新前データであり、データ「B0」は、トランザクション「T2」での書込み対象データ「B1」の更新前デーだからである。従って、FMコントローラ32は、LA+TSとして、「LA0+TS1」、「LA1+TS2」、及び、「LA2+TS1」を、拡張論物変換情報451に登録する。また、FMコントローラは、「LA0+TS1」、「LA1+TS2」、及び、「LA2+TS1」にそれぞれ対応した3つの参照カウンタの各々に1を加算する。また、FMコントローラは、「LA1+TS2」に対応した更新前データ「B0」が属する「LA1+TS0」に対応した参照カウンタにも1を加算する。結果として、チェックマークは、「LA0+TS1」、「LA1+TS2」、「LA2+TS1」及び「LA2+TS0」の各々に対応する。データ「A1」、「B1」及び「C1」は、ページ#11、#20及び#21。このため、FMコントローラ32は、「LA0+TS1」、「LA1+TS2」、及び、「LA2+TS1」に、それぞれ、物理アドレス「PA11」、「PA20」及び「PA21」を割り当てる。FMコントローラ32は、データ「C1」の書込みによりトランザクション「T1」がコミットした場合、コミットしたトランザクション「T1」に対応するタイムスタンプ「TS1」と、そのタイムスタンプ「TS1」より旧いタイムスタンプのうちの最新のタイムスタンプとの両方に関連付いている論理アドレス「LA0」及び「LA2」を特定する。すなわち、「LA0+TS0」及び「LA2+TS0」が特定される。FMコントローラ32は、特定した「LA0+TS0」及び「LA2+TS0」にそれぞれ対応した2つの参照カウンタの各々から1を減算する。結果として、その2つの参照カウンタの各々は「0」となる。
(7−3)タイムスタンプ「TS1」より旧いタイムスタンプ「TS0」に対応する「LA0+TS0」及び「LA2+TS0」にそれぞれ対応した2つの参照カウンタの各々は「0」である。このため、「LA0+TS0」及び「LA2+TS0」については、それぞれ、データが参照されることが無い。そこで、FMコントローラ32は、「LA0+TS0」及び「LA2+TS0」にそれぞれ対応した2つのエントリの各々を無効エントリとして扱う(図7においてブランクのエントリ)。FMコントローラ32は、ウェアレベリング処理の1つとして、ガベージコレクション処理(言い換えれば、リクラメーション処理)を行う。例えば、FMコントローラ32は、移動対象データの少ないブロック#0及び#1(すなわち、チェックマークが関連付けられているページの数が少ないブロック#0及び#1)から、それぞれ、空きブロック#3に、チェックマークが関連付けられているページ内のデータ(参照カウンタが「1」以上であるページ内のデータ)をコピーする。これにより、FMコントローラ32は、「LA0+TS0」及び「LA2+TS0」に、コピー元物理アドレスP00及びP10に代えて、コピー先物理アドレスP30及びP31を割り当てる。また、FMコントローラ32は、各コピー元ページを、無効ページとして管理する。結果として、無効化されたエントリに対応したページが無効ページとなる。FMコントローラ32は、有効ページの無いブロック#0及び#1からそれぞれデータを消去することで、ブロック#0及び#1を空きブロックとする(図7では、ブロック#1及び#2のうちブロック#1のみ、空きブロックとなったことを示す)。なお、ウェアレベリング処理によれば、コピー元(移動元)ページ内のデータの更新頻度が比較的高い場合、コピー先(移動先)空きブロックは、消去回数が比較的少ないブロックでよい。一方、コピー元ページ内のデータの更新頻度が比較的低い場合、コピー先空きブロックは、消去回数が比較的多いブロックでよい。
(7−4)FMコントローラ32は、トランザクションT2での残りのデータ「C2」を、空きブロック#0の空きページ#0に書き込む。このため、「LA2+TS2」に、物理アドレス「P00」が割り当てられる。FMコントローラ32は、データ「C2」の書込みによりトランザクション「T2」がコミットした場合、コミットしたトランザクション「T2」に対応するタイムスタンプ「TS2」と、そのタイムスタンプ「TS2」より旧いタイムスタンプのうちの最新のタイムスタンプとの両方に関連付いている論理アドレス「LA1」及び「LA2」を特定する。すなわち、「LA1+TS0」及び「LA2+TS1」が特定される。FMコントローラ32は、特定した「LA1+TS0」及び「LA2+TS1」にそれぞれ対応した2つの参照カウンタの各々から1を減算する。結果として、その2つの参照カウンタの各々は「0」となり、論理アドレス「LA0+TS1」、「LA1+TS2」及び「LA2+TS2」にそれぞれ対応した3つの参照カウンタは「1」のままである。「LA0+TS1」、「LA1+TS2」及び「LA2+TS2」の各々に対応した参照カウンタ(つまり、各論理アドレスについて最新時点に対応した参照カウンタ)が「1」以上である(「0」にされない)理由は、最新のタイムスタンプ「TS2」時点の最新のデータは参照され得るためである。
以下、図8〜図11を参照して、本実施例で行われる読出し処理、書込み処理、参照カウンタ更新処理、GC(ガベージコレクション)処理を説明する。なお、図8〜図11において、「ホスト」に対応した処理は、ホストシステム(DBMS412及びストレージコントローラ842)によって行われ、「FM」に対応した処理は、FMコントローラ32によって行われる。
図8は、読出し処理の流れの一例を示す。
DBMS412(クエリ実行部424)が、読出し元論理アドレス(LA)とタイムスタンプ(TS)とを指定した読出し要求を発行する(ステップ601)。発行された読出し要求は、オペレーティングシステム417を通じて外部ストレージ装置402に送られる。ストレージコントローラ842が、記憶デバイス群443のうちの、その読出し元論理アドレスに対応するFMデバイス30に、LA及びTSを指定した読出し要求を送信する。
FMコントローラ32(FM制御プログラム442)が、LA及びTSを指定した読出し要求を受信する(ステップ602)。FMコントローラ32が、指定されたLAについて、指定されたTS又はそれより旧いTSのうちの最も新しいTSに対応したエントリを、拡張論物変換情報451から探す(ステップ603)。
FMコントローラ32は、見つかったエントリから物理アドレスを特定する(ステップ604)。FMコントローラ32は、特定した物理アドレスが属するページからデータを読み出し、読み出したデータを、ステップ602で受信した読出し要求の応答として、ストレージコントローラ842に送信する(ステップ605)。ストレージコントローラ842は、1以上のFMデバイスからそれぞれ読み出された1以上のデータに基づくデータを、データベースサーバ401からの読出し要求の応答として、送信する。
この読出し処理において、後述する参照カウンタ更新処理も行われる。
図9は、書込み処理の流れの一例を示す。
DBMS412(クエリ実行部424)が、キャッシュ領域(メモリ416上に設けられた領域)に格納されているチェックポイント対象データのうちの、ページサイズの整数倍量のデータを、書込み対象のデータとして決定する。DBMS412は、書込み先論理アドレス(LA)とタイムスタンプ(TS)とを指定した書込み要求を発行する(ステップ700)。書込み対象データは、書込み要求に付随する。なお、ここで言う「ページサイズ」は、例えば、ページ毎にECC(Error Correcting Code)が付加される場合、ECCを除いたサイズでよい。また、キャッシュ領域での領域単位サイズ(管理単位サイズ)と、ページサイズが同じであれば、ステップ700は行われないでよい。
発行された書込み要求は、オペレーティングシステム417を通じて外部ストレージ装置402に送られる。ストレージコントローラ842が、記憶デバイス群443のうちの、その書込み先論理アドレスに対応するFMデバイス30に、LA及びTSを指定した書込み要求を送信する。
FMコントローラ32(FM制御プログラム442)が、LA及びTSを指定した書込み要求を受信する(ステップ701)。FMコントローラ32が、指定されたLAについて、指定されたTS又はそれより旧いTSのうちの最も新しいTSに対応したエントリであって、参照カウンタが「0」であるエントリを、拡張論物変換情報451から探す(ステップ702)。
そのようなエントリが見つかった場合(ステップ703:YES)、FMコントローラ32は、見つかったエントリを無効化候補とする(ステップ704)。「無効化候補」とは、トランザクションのコミット時に無効化されることを意味する。無効化候補であることが、見つかったエントリに関連付けられる。例えば、拡張論物変換情報451が、無効化候補か否かを表すフラグが登録されるカラムを有していて、そのエントリに対応したフラグが、無効化候補を意味する値に更新される。或いは、例えば、そのエントリに対応したLA+TS501、PA502及び参照カウンタ503のうちの少なくとも1つに、無効化候補であることを意味するコードが関連付けられる。
そのようなエントリが見つからなかった場合(ステップ703:NO)、又は、ステップ704の後、FMコントローラ32は、受信した書込み要求について新たなエントリを、拡張論物変換情報451から取得する(ステップ705)。FMコントローラ32は、ステップ706を行う。ステップ706では、例えば、FMコントローラ32は、下記を行う。
(*)FMコントローラ32は、取得したエントリに、その書込み要求で指定されているLA及びTSを登録する。
(*)FMコントローラ32は、空きページを確保し、空きページの物理アドレス(PA)を、書込み要求で指定されているLA及びTSに割り当てる。つまり、FMコントローラ32は、取得したエントリに、確保した空きページのPAを登録する。
(*)FMコントローラ32は、確保した空きページ(割り当てた空きページ)に、書込み要求に付随するデータを書き込む。
(*)FMコントローラ32は、取得したエントリに、その書込み要求で指定されているLA及びTSを登録する。
(*)FMコントローラ32は、空きページを確保し、空きページの物理アドレス(PA)を、書込み要求で指定されているLA及びTSに割り当てる。つまり、FMコントローラ32は、取得したエントリに、確保した空きページのPAを登録する。
(*)FMコントローラ32は、確保した空きページ(割り当てた空きページ)に、書込み要求に付随するデータを書き込む。
この書込み処理において、後述する参照カウンタ更新処理も行われる。
図10は、参照カウンタ更新処理の流れの一例を示す。
1以上の読出し処理(図8)及び1以上の書込み処理(図9)のうちの少なくとも1つが、1つのトランザクションの処理において行われる。FMコントローラ32が、トランザクション開始を検出する(ステップ501)。トランザクション開始の検出は、例えば、トランザクション開始を意味する要求(BEGIN)を、DBMS412からストレージコントローラ842を通じてFMコントローラ32が受信することで、検出されてよい。
トランザクション開始の検出からトランザクション終了の検出までの間、ステップ502が行われる。すなわち、FMコントローラ32は、読出し要求を受信した場合、その読出し要求で指定されているLA(及びTS)を、読出し元変数(例えば、キャッシュ領域の管理で使用されるReadSet)のリストにこのLA(及びTS)がまだ含まれていなければこのLA(及びTS)をそのリストに追加し、そのLA及びTSに対応した参照カウンタに1を加算する。一方、FMコントローラ32は、書込み要求を受信した場合、その書込み要求で指定されているLA(及びTS)を、更新後変数(例えば、キャッシュ領域の管理で使用されるWriteNewSet)のリストにこのLA(及びTS)がまだ含まれていなければこのLA(及びTS)をそのリストに追加し、そのLA及びTSに対応した参照カウンタに1を加算する。その書込み要求に従うデータの更新前データが存在する場合、FMコントローラ32は、その書込み要求で指定されているLA(及びTS)を、更新前変数(例えば、キャッシュ領域の管理で使用されるWriteOldSet)のリストにこのLA(及びTS)がまだ含まれていなければこのLA(及びTS)をそのリストに追加する。ステップ502は、読出し要求又は書込み要求が受信される都度に行われる。
FMコントローラ32が、トランザクション終了を検出する(ステップ503)。トランザクション終了の検出は、例えば、トランザクション終了を意味する要求(COMMIT)を、DBMS412からストレージコントローラ842を通じてFMコントローラ32が受信することで、検出されてよい。この検出がされた場合、コミット処理が行われる。一方、例えば、トランザクションの処理中での所定のエラーの検出も、トランザクション終了の検出でよい。この検出がされた場合、アボート処理が行われる。
コミット処理では、FMコントローラ32は、ステップ504を行う。すなわち、FMコントローラ32は、このトランザクションに対応する読出し元変数リストに含まれるLA及びTSに対応した参照カウンタから1減算する。また、FMコントローラ32は、このトランザクションに対応する更新前変数リストに含まれるLA及びTSに対応した参照カウンタから1減算する。これにより、このトランザクションに対応する読出し元変数リストに含まれているLA及びTSに対応した参照カウンタは、トランザクション開始前の値に戻される。また、このトランザクションに対応する更新前変数リストに含まれているLA及びTSに対応した参照カウンタは、ゼロになり得る。FMコントローラ32は、参照カウンタがゼロになった無効化候補エントリ(図9のステップ704で無効化候補とされたエントリ)を、無効化する。これにより、そのエントリに登録されていたPAに対応するページは無効ページであるとの扱いになる。なお、FMコントローラ32は、このトランザクションに対応する更新後変数リストに含まれるLA及びTSに対応した参照カウンタから1減算することはしない。なぜなら、更新後変数リストに含まれるLA及びTSに対応したデータ(コミット時の最新データ)は、参照され得るデータであり、故に、参照カウンタを1以上に維持する必要があるからである。
一方、アボート処理では、FMコントローラ32は、ステップ505を行う。すなわち、FMコントローラ32は、このトランザクションに対応する読出し元変数リストに含まれるLA及びTSに対応した参照カウンタから1減算する。更に、FMコントローラ32は、このトランザクションに対応する更新後変数リストに含まれるLA及びTSに対応した参照カウンタから1減算する。これにより、このトランザクションに対応する読出し元変数リスト、更新前変数リスト及び更新後変数リストに含まれているLA及びTSに対応した参照カウンタは、トランザクション開始前の値に戻される。なお、FMコントローラ32は、このトランザクションにおいて無効化候補となったエントリを、無効化候補としないようにしてよい(無効化候補状態をキャンセルしてよい)。
図11は、GC処理の流れの一例を示す。
FMコントローラ32は、所定条件が満たされたか否かを判断する(ステップ801)。所定条件は、例えば、ブロック総数に対する空きブロックの比率が所定値より低下したこと、である。
所定条件が満たされている場合(ステップ801:YES)、FMコントローラ32は、1以上のコピー元ブロックと、1つのコピー先空きブロックを選択する(ステップ802)。コピー元ブロックは、例えば、比較的有効ページの少ないブロック(コピー対象のデータの少ないブロック)である。コピー先ブロックは、例えば、コピー元ブロック内のコピー対象データの更新頻度が比較的高い場合、消去回数の比較的少ないブロックである。一方、コピー先ブロックは、例えば、コピー元ブロック内のコピー対象データの更新頻度が比較的低い場合、消去回数の比較的多いブロックである。
FMコントローラ32は、ステップ803を行う。すなわち、FMコントローラ32は、1以上のコピー元ブロックから1つのコピー先空きブロックに有効データをコピーする。これにより、いずれのコピー元ブロックも、有効ページが存在しないブロックとなる。FMコントローラ32は、各コピー元ブロックに対して消去処理を行うことで、各コピー元ブロックを空きブロックとする。
FMコントローラ32は、所定条件が満たされている状態が解消されたならば(ステップ804:YES)、処理を終了する。一方、所定条件が満たされている状態が解消されていなければ(例えば、空きブロックの比率が未だ所定値以上であれば)(ステップ804:NO)、FMコントローラ32は、ステップ802を行う。
以上が、実施例1の説明である。実施例1によれば、追記型MVCC方式に従うバージョン管理及び空き領域管理のうちの少なくとも空き領域管理が、FMデバイス30にオフロードされる。これにより、DBMS412を実行するプロセッサ414の負荷が軽減される。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する。
実施例1では、図12に示すように、ログ領域が記憶デバイス415のような不揮発記憶デバイスに別途確保されている。このため、データベース851のログを、FMデバイス30に格納する必要が無い。従って、データベース851のデータの単位サイズ(書き込まれるデータの単位サイズ)を、FMのページのサイズと同じとすることができる。結果として、ページに空き領域が生じない。つまり、データ格納効率が高い。
一方、実施例2では、図13に示すように、ログ領域が別途確保されていない。このため、データベース851のログ(キャッシュ領域上の更新前データを含む更新前イメージ)と、更新後データとを、FMデバイス30に格納する必要がある。従って、書き込まれるデータの単位サイズを、FMのページのサイズと同じとすることが難しい。結果として、ページに空き領域が生じることがある。つまり、データ格納効率が低いことがある。
そこで、実施例2では、プロセッサ414の負荷に応じて、データ格納方式を変更する。
例えば、プロセッサ414の負荷が所定値よりも高い場合、図14に示すように、DBMS412(クエリ実行部424)が、コミット処理をグループ化することで、書込み単位サイズをページサイズの整数倍とする。すなわち、DBMS412は、キャッシュ領域に、ページサイズの整数倍分のデータ及びログ(コミットしたデータおよびログ)が蓄積されるまで待つ。プロセッサ414の負荷が高いということは、FMデバイス30への書込み以外の処理をプロセッサ414が行っているということなので、FMデバイス30への書込みが待たれても、影響は小さい。プロセッサ414は、ページサイズの整数倍の量のデータ及びログ(コミットしたデータおよびログ)がキャッシュ領域に蓄積された場合、そのデータ及びログを、FMデバイス30(外部ストレージ装置402)に書き込む。つまり、ページサイズの整数倍の量のデータ及びログが書込み対象とされた書込み要求が、FMデバイス30に送信される。このように、書込み単位サイズがページサイズの整数倍であれば、後述するページ間マージコピーの必要性を軽減できる。
一方、プロセッサ414の負荷が所定値以下の場合、図15に示すように、DBMS412(クエリ実行部424)は、ページサイズの整数倍分のデータ及びログ(コミットしたデータおよびログ)が蓄積されるまで待たない(図15において、「PB」はブロック(物理ブロック)を意味し、「PP」はページ(物理ページ)を意味する)。プロセッサ414は、ページサイズの整数倍に満たないデータ及びログ(コミットしたデータおよびログ)を、FMデバイス30(外部ストレージ装置402)に書き込む。図15の例によれば、書込み先ブロックは、ブロック#1である。また、図15の例によれば、説明を分かり易くするため、PA10、PA11及びPA12にそれぞれ対応した3つのページの各々に、ページサイズよりも小さいデータ又はログが書き込まれている(ページ内のグレーのセルは、有効データを格納しているセクタを意味する)。この例によれば、3つのページのいずれにも空き領域(空きセクタ)が生じているので、データ格納効率が低い。FMコントローラ32は、空きセクタのあるページを検出する。ここでは、FMコントローラ32は、PA10、PA11及びPA12にそれぞれ対応した3つのページを検出する。FMコントローラ32は、検出した3つのページ内のデータを1つのページに集約する。つまり、FMコントローラ32は、ページ間マージコピーを行う。ページ間マージコピーでは、コピー元ページの割り当て先のLA及びTSに対応した参照カウンタは、「1」以上である。なぜなら、その参照カウンタが「0」であれば、コピー元ページは無効ページであるからである。図15の例によれば、FMコントローラ32は、PA10、PA11及びPA12にそれぞれ対応した3つのページから、有効データを、PA20のページ(ブロック#2におけるページ#0)に集約(コピー)する。これにより、データ格納効率が向上する。なお、FMコントローラ32は、いずれのコピー元ページも、無効ページとして管理する。また、FMコントローラ32は、図15に示すように、拡張論物変換情報において、PA10、PA11及びPA12にそれぞれ対応する異なる3つのLAに、それぞれ、PA10、PA11及びPA12に代えて、同一のPA20を関連付ける。なお、LAとデータの対応関係を判別可能にするために、FMコントローラ32は、LAに関連付けるPAに、セクタ番号を関連付けてよい。図15の例によれば、PA20のページにおいて、0番目〜1番目のセクタが、LA0に対応し、2番目〜5番目のセクタがLA1に対応し、6番目〜7番目のセクタがLA2に対応していることがわかる。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、データベースの一部が1以上のFMデバイスに格納され、残りがメモリ416又は記憶デバイス415に格納されてもよい。
30…フラッシュメモリ(FM)デバイス、401…データベースサーバ、412…データベース管理システム(DBMS)
Claims (11)
- 複数の物理領域を含んだ不揮発記憶媒体を有し、データベースの少なくとも一部が格納される論理空間を提供する追記型不揮発記憶デバイスと、
データベース管理システムを含んだホストシステムと
を有し、
前記ホストシステムは、トランザクションの開始から終了までの間に前記データベースのデータの更新が生じる場合に、更新前データが格納されている領域に属する論理アドレスと同一の論理アドレスとタイムスタンプとを指定した書込み要求を前記追記型不揮発記憶デバイスに送信するようになっており、
前記追記型不揮発記憶デバイスは、タイムスタンプ、物理アドレス及び参照カウンタが論理アドレス毎に関連付けられるアドレス変換情報である拡張論物変換情報を有し、
各参照カウンタは、その参照カウンタに対応した論理アドレス及びタイムスタンプに対応したデータを参照する参照元の数を表し、
前記追記型不揮発記憶デバイスは、論理アドレスに新たに割り当てられた物理アドレスの物理領域を消去不可の物理領域として管理するようになっており、
前記追記型不揮発記憶デバイスは、対象の論理アドレスについて、
(A)前記拡張論物変換情報を基に、最新のタイムスタンプより旧いタイムスタンプが関連付けられており、且つ、前記対象の論理アドレスと前記旧いタイムスタンプとに対応した参照カウンタが、参照元が存在しないことを表しているか否かを判断し、
(B)(A)の判断結果が肯定の場合に、前記対象の論理アドレスと前記旧いタイムスタンプとに対応した物理アドレスの物理領域を、消去可能な物理領域として管理する、
計算機システム。 - 前記追記型不揮発記憶デバイスは、(A)の判断結果が肯定であり、且つ、前記トランザクションのコミットにより前記トランザクションが終了した場合に、(B)を実行する、
請求項1記載の計算機システム。 - 前記追記型不揮発記憶デバイスは、前記トランザクションの開始から終了までの間に受信した書込み要求について、(A)及び(B)を実行し、
前記対象の論理アドレスは、前記受信した書込み要求で指定されている論理アドレスであり、
前記最新のタイムスタンプは、前記受信した書込み要求で指定されているタイムスタンプである、
請求項2記載の計算機システム。 - 前記追記型不揮発記憶デバイスは、前記トランザクションの開始からコミットまでの間に、前記受信した書込み要求で指定されている論理アドレス及びタイムスタンプに対応した参照カウンタに値を加算し、
前記追記型不揮発記憶デバイスは、前記トランザクションのコミットの場合に、前記対象の論理アドレス及び前記旧いタイムスタンプに対応した参照カウンタから値を減算し、(A)を実行する、
請求項3記載の計算機システム。 - 前記データベースのログが格納されるログ領域を有する不揮発記憶デバイスであるログ記憶デバイスを更に有し、
前記不揮発記憶デバイスに書き込まれるデータの単位サイズは、物理領域サイズの整数倍である、
請求項1記載の計算機システム。 - 前記ホストシステムは、前記データベースのデータの他に前記データベースのログも前記追記型不揮発記憶デバイスに書き込むようになっており、
前記不揮発記憶デバイスは、
それぞれコピー元となる2以上の物理領域と、コピー先となる1つの空きの物理領域とを選択し、
2以上のコピー元物理領域内のデータを1つのコピー先物理領域にコピーし、
前記2以上のコピー元物理領域の各々に対応した論理アドレス及びタイムスタンプに、前記コピー先物理領域の物理アドレスを割り当てる、
請求項1記載の計算機システム。 - 前記ホストシステムは、前記ホストシステムの負荷が高い場合は、物理領域サイズの整数倍の量のデータ及びログの書込み要求を、前記追記型不揮発記憶デバイスに送信する、
請求項6記載の計算機システム。 - 前記ホストシステムは、論理アドレス及びタイムスタンプを指定した読出し要求を前記追記型不揮発記憶デバイスに送信し、
前記追記型不揮発記憶デバイスは、
前記読出し要求を受信し、
前記拡張論理物変換情報を基に、前記読出し要求で指定された論理アドレスについて、前記読出し要求で指定されたタイムスタンプ又はそれより旧いTSのうちの最も新しいタイムスタンプに割り当てられている物理アドレスを特定し、
特定した物理アドレスの物理領域からデータを読み出し、
読み出したデータを前記ホストシステムに送信する、
請求項1記載の計算機システム。 - 前記不揮発記憶媒体は、複数のブロックを有するNANDフラッシュメモリであり、
各ブロックは、複数のページを有し、
各物理領域は、ページである、
請求項1記載の計算機システム。 - 複数の物理領域を含んだ不揮発記憶媒体を有する追記型不揮発記憶デバイスにより、データベース管理システムを含んだホストシステムにより論理空間を提供し、
前記論理空間に、データベースの少なくとも一部を格納し、
トランザクションの開始から終了までの間に前記データベースのデータの更新が生じる場合に、更新前データが格納されている領域に属する論理アドレスと同一の論理アドレスとタイムスタンプとを指定した書込み要求を、前記ホストシステムから前記追記型不揮発記憶デバイスにより受信し、
前記受信した書込み要求で指定されている論理アドレス及びタイムスタンプを基に、前記追記型不揮発記憶デバイスにより、タイムスタンプ、物理アドレス及び参照カウンタが論理アドレス毎に関連付けられるアドレス変換情報である拡張論物変換情報を更新し、各参照カウンタは、その参照カウンタに対応した論理アドレス及びタイムスタンプに対応したデータを参照する参照元の数を表し、
対象の論理アドレスについて、前記追記型不揮発記憶デバイスにより、前記拡張論物変換情報を基に、最新のタイムスタンプより旧いタイムスタンプが関連付けられており、且つ、前記対象の論理アドレスと前記旧いタイムスタンプとに対応した参照カウンタが、参照元が存在しないことを表しているか否かを判断し、
その判断結果が肯定の場合、前記追記型不揮発記憶デバイスにより、前記対象の論理アドレスと前記旧いタイムスタンプとに対応した物理アドレスの物理領域を、消去可能な物理領域として管理する、
データベース管理方法。 - 複数の物理領域を含んだ不揮発記憶媒体と、
データベースの少なくとも一部が格納される論理空間を、データベース管理システムを含んだホストシステムに提供する媒体コントローラと
を有し、
前記ホストシステムは、トランザクションの開始から終了までの間に前記データベースのデータの更新が生じる場合に、更新前データが格納されている領域に属する論理アドレスと同一の論理アドレスとタイムスタンプとを指定した書込み要求を前記追記型不揮発記憶デバイスに送信するようになっており、
前記媒体コントローラは、論理アドレス毎に、タイムスタンプ、物理アドレス及び参照カウンタが関連付けられるアドレス変換情報である拡張論物変換情報を有し、
各参照カウンタは、その参照カウンタに対応した論理アドレス及びタイムスタンプに対応したデータを参照する参照元の数を表し、
前記媒体コントローラは、論理アドレスに新たに割り当てられた物理アドレスの物理領域を消去不可の物理領域として管理するようになっており、
前記媒体コントローラは、対象の論理アドレスについて、
(A)前記拡張論物変換情報を基に、最新のタイムスタンプより旧いタイムスタンプが関連付けられており、且つ、前記対象の論理アドレスと前記旧いタイムスタンプとに対応した参照カウンタが、参照元が存在しないことを表しているか否かを判断し、
(B)(A)の判断結果が肯定の場合に、前記対象の論理アドレスと前記旧いタイムスタンプとに対応した物理アドレスの物理領域を、消去可能な物理領域として管理する、
不揮発記憶デバイス。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/061007 WO2016162981A1 (ja) | 2015-04-08 | 2015-04-08 | 計算機システム、及び、データベース管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2016162981A1 JPWO2016162981A1 (ja) | 2017-06-01 |
JP6198992B2 true JP6198992B2 (ja) | 2017-09-20 |
Family
ID=57072691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017511402A Expired - Fee Related JP6198992B2 (ja) | 2015-04-08 | 2015-04-08 | 計算機システム、及び、データベース管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10515071B2 (ja) |
JP (1) | JP6198992B2 (ja) |
WO (1) | WO2016162981A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10693709B2 (en) * | 2018-03-28 | 2020-06-23 | Salesforce.Com, Inc. | Processing gap events in a change detection management system |
CN110737392B (zh) * | 2018-07-20 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 管理存储系统中的地址的方法、设备和计算机可读存储介质 |
JP2020030873A (ja) * | 2018-08-21 | 2020-02-27 | キオクシア株式会社 | メモリシステム |
US12007887B2 (en) | 2021-05-25 | 2024-06-11 | SK Hynix Inc. | Method and system for garbage collection |
US11954350B2 (en) * | 2021-05-25 | 2024-04-09 | SK Hynix Inc. | Storage device and method of operating the same |
CN118170523B (zh) * | 2024-05-14 | 2024-08-16 | 南京芯驰半导体有限公司 | 时间戳获取方法、系统及芯片 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101473344B1 (ko) * | 2007-08-24 | 2014-12-17 | 삼성전자 주식회사 | 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법 |
JP5343399B2 (ja) * | 2008-05-22 | 2013-11-13 | 富士通株式会社 | 管理プログラム、管理方法、及び管理装置 |
WO2012104909A1 (en) | 2011-02-02 | 2012-08-09 | Hitachi, Ltd. | Storage system and data control method therefor |
CN102789368B (zh) * | 2012-06-21 | 2015-10-21 | 记忆科技(深圳)有限公司 | 一种固态硬盘及其数据管理方法、系统 |
-
2015
- 2015-04-08 JP JP2017511402A patent/JP6198992B2/ja not_active Expired - Fee Related
- 2015-04-08 US US15/564,514 patent/US10515071B2/en not_active Expired - Fee Related
- 2015-04-08 WO PCT/JP2015/061007 patent/WO2016162981A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US10515071B2 (en) | 2019-12-24 |
WO2016162981A1 (ja) | 2016-10-13 |
JPWO2016162981A1 (ja) | 2017-06-01 |
US20180081928A1 (en) | 2018-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10649910B2 (en) | Persistent memory for key-value storage | |
JP6198992B2 (ja) | 計算機システム、及び、データベース管理方法 | |
US10289545B2 (en) | Hybrid checkpointed memory | |
US10620862B2 (en) | Efficient recovery of deduplication data for high capacity systems | |
US20210157523A1 (en) | Storage system | |
Jin et al. | KAML: A flexible, high-performance key-value SSD | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
Arulraj et al. | Let's talk about storage & recovery methods for non-volatile memory database systems | |
JP6507245B2 (ja) | データベース検索システム及びデータベース検索方法 | |
Lu et al. | {ReconFS}: A Reconstructable File System on Flash Storage | |
US10402091B1 (en) | Managing data in log-structured storage systems | |
US9342256B2 (en) | Epoch based storage management for a storage device | |
US20150347310A1 (en) | Storage Controller and Method for Managing Metadata in a Cache Store | |
Oh et al. | SHARE interface in flash storage for relational and NoSQL databases | |
Liu et al. | Zen: A high-throughput log-free OLTP engine for non-volatile main memory | |
KR20210123236A (ko) | 키-값 장치들을 위한 키-값 저장소 아키텍처 | |
Do et al. | Better database cost/performance via batched I/O on programmable SSD | |
US20210042050A1 (en) | Method and apparatus for rebuilding memory mapping tables | |
Xu et al. | Building a fast and efficient LSM-tree store by integrating local storage with cloud storage | |
Do et al. | Improving CPU I/O performance via SSD controller FTL support for batched writes | |
CN1604046A (zh) | 用于管理关于目标卷与源卷之间关系的信息的方法和系统 | |
Lee et al. | TLSM: Tiered log-structured merge-tree utilizing non-volatile memory | |
Ni et al. | Leveraging ssd's flexible address mapping to accelerate data copy operations | |
Wei et al. | Extending SSD lifetime with persistent in-memory metadata management | |
Koo et al. | FLIXR: Embedding index into flash translation layer in SSDs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170216 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170801 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170822 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6198992 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |