(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-27
(45)【発行日】2024-06-04
(54)【発明の名称】データ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体
(51)【国際特許分類】
G06F 16/23 20190101AFI20240528BHJP
G06F 3/06 20060101ALI20240528BHJP
【FI】
G06F16/23
G06F3/06 301M
(21)【出願番号】P 2020157555
(22)【出願日】2020-09-18
【審査請求日】2023-09-19
(32)【優先日】2019-09-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】朴 熙 權
(72)【発明者】
【氏名】李 好 彬
(72)【発明者】
【氏名】洪 一 九
(72)【発明者】
【氏名】奇 亮 ソク
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】米国特許出願公開第2016/0171002(US,A1)
【文献】米国特許出願公開第2018/0121487(US,A1)
【文献】米国特許第7818745(US,B2)
【文献】米国特許出願公開第2012/0011106(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/29
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
トランザクションのグループ化を用いてマージを実行するための、トランザクションモジュール及びマージモジュールを備えるシステムによるデータ格納方法であって、
前記トランザクションモジュールにより、
キーに対応する1つ以上のキー値アップデートを有する保留キュー内のトランザクションを識別する段階と、
異なるトランザクションに属する前記キー値アップデートの内、共通に関連付けられたキー値アップデートに関連付けられたキーの内の共通に関連付けられたキーを識別する段階と、
異なるトランザクション間で共通に関連付けられたキー値アップデートの総数の分析に基づいて、前記トランザクションにトランザクショングループIDを割り当てる段階と、
前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを複数のトランザクショングループ内のトランザクショングループにグループ化する段階と、
を有し、
前記マージモジュールにより、同じトランザクショングループ内のトランザクションのグループ化されたトランザクションに対して、共通に関連付けられたキーの、共通に関連付けられたキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する段階
を有し、
ここで、前記マージする段階は、第1のキーに対する第1のキー値アップデート及び第1のキーに対する第2のキー値アップデートを決定し、第2のキー値アップデートを実行する段階を含むことを特徴とするデータ格納方法。
【請求項2】
前記トランザクションモジュールにより、
前記複数のトランザクショングループの内のクラッシュしたトランザクショングループ内のトランザクションの内の衝突(crash)したトランザクションで衝突が発生したことを判断する段階と、
衝突(crash)したトランザクショングループ内のトランザクションの内、競合するデータ書き込みをマージすることによりリンクされたトランザクションを前記衝突したトランザクションにリンクするよう再試行する段階と、を更に有することを特徴とする請求項1に記載のデータ格納方法。
【請求項3】
前記マージモジュールにより、同一のキーに対応する1つ以上の第1のキー値アップデートを、1つ以上の第2のキー値アップデートとして有する前記トランザクションの内の1つを削除するために境界設定する(demarcating)段階を更に有し、
前記第2のキー値アップデートは、境界が定められたトランザクション以外の1つ以上のトランザクション内で行われることを特徴とする請求項1に記載のデータ格納方法。
【請求項4】
前記トランザクションモジュールにより、
連続するトランザクションのペアにキーの共通キーに対応する個別の関連付けられたキー値アップデートがあることを判断する段階と、
前記連続するトランザクションが異なるそれぞれのトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる段階と、を更に有することを特徴とする請求項1に記載のデータ格納方法。
【請求項5】
前記トランザクションモジュールにより、
前記キーの共通キーに対応する共通に関連付けられたキー値アップデートの数が最も少ない連続するトランザクションのペアを決定する段階と、
前記連続するトランザクションが異なるトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる段階と、を更に有することを特徴とする請求項1に記載のデータ格納方法。
【請求項6】
前記システムにより、
前記トランザクショングループの内の1つの前記競合するデータ書き込みのマージされたキー値アップデートを1つ以上のストレージデバイスに書き込む段階と、
前記トランザクショングループの内の1つのマージされたキー値アップデートに対応するメタデータを更新する段階と、
前記マージされたキー値アップデートが前記1つ以上のストレージデバイスに存在することを判断する段階と、を更に有することを特徴とする請求項1に記載のデータ格納方法。
【請求項7】
前記トランザクションモジュールにより、前記トランザクション
に前記
トランザクショングループIDを生成するためのトランザクションIDを割り当てる段階を更に有することを特徴とする請求項1に記載のデータ格納方法。
【請求項8】
トランザクションのグループ化を用いてマージを実行するためのシステムであって、
トランザクションモジュールと、
マージモジュールと、を有し、
前記トランザクションモジュールは、
キーに対応する1つ以上のキー値アップデートを有する複数のトランザクションを保留中のキュー内で識別し、
異なるトランザクションに属する前記キー値アップデートの内、共通に関連付けられたキー値アップデートに関連付けられたキーの内の共通に関連付けられたキーを識別し、
異なるトランザクション間で共通に関連付けられたキー値アップデートの総数の分析に基づいて、前記トランザクションにトランザクショングループIDを割り当て、
前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを複数のトランザクショングループ内のトランザクショングループにグループ化する動作を行うように構成され、
前記マージモジュールは、
同じトランザクショングループ内のトランザクションのグループ化されたトランザクションに対して、共通に関連付けられたキーの、共通に関連付けられたキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する動作を行うように構成され、
ここで、前記マージは、第1のキーに対する第1のキー値アップデート及び第1のキーに対する第2のキー値アップデートを決定し、第2のキー値アップデートを実行することを含むことを特徴とするシステム。
【請求項9】
前記トランザクションモジュールは、前記複数のトランザクショングループの内のクラッシュしたトランザクショングループ内のトランザクションの内の衝突(crash)したトランザクションで衝突が発生したことを判断するように更に構成され、
衝突(crash)したトランザクショングループ内のトランザクションの内、競合するデータ書き込みをマージすることによりリンクされたトランザクションを前記衝突したトランザクションにリンクするよう再試行するように更に構成されることを特徴とする請求項8に記載のシステム。
【請求項10】
前記マージモジュールは、同一のキーに対応する1つ以上の第1のキー値アップデートを、1つ以上の第2のキー値アップデートとして有する前記トランザクションの内の1つを削除するために境界設定(demarcating)動作を行うように構成され、
前記第2のキー値アップデートは、境界が定められたトランザクション以外の1つ以上のトランザクション内で行われることを特徴とする請求項8に記載のシステム。
【請求項11】
前記トランザクションモジュールは、
連続するトランザクションのペアにキーの共通キーに対応する個別の関連付けられたキー値アップデートがあることを判断し、
前記連続するトランザクションが異なるそれぞれのトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる動作を行うように更に構成されることを特徴とする請求項8に記載のシステム。
【請求項12】
前記トランザクションモジュールは、
前記キーの共通キーに対応する共通に関連付けられたキー値アップデートの数が最も少ない連続するトランザクションのペアを決定し、
前記連続するトランザクションが異なるトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる動作を行うように更に構成されることを特徴とする請求項8に記載のシステム。
【請求項13】
インフライト・リクエストバッファ(inflight request buffer)を更に有し、
前記インフライト・リクエストバッファは、前記トランザクショングループの内の1つの前記競合するデータ書き込みのマージされたキー値アップデートを1つ以上のストレージデバイスに書き込み、
前記トランザクショングループの内の1つのマージされたキー値アップデートに対応するメタデータを更新し、
前記マージされたキー値アップデートが前記1つ以上のストレージデバイスに存在することを判断する動作を行うように構成されることを特徴とする請求項8に記載のシステム。
【請求項14】
前記トランザクションモジュールは、前記トランザクション
に前記
トランザクショングループIDを生成するためのトランザクションIDを割り当てるように更に構成されることを特徴とする請求項8に記載のシステム。
【請求項15】
トランザクショングループ化
を用いてマージを実行するための
、トランザクションモジュール及びマージモジュールを備えるシステム上に実装された非一時的なコンピュータ読取可能媒体であって、
前記非一時的なコンピュータ読取可能媒体は、プロセッサ上で実行される際のデータ格納方法を実行するコンピュータコードを有し、
前記データ格納方法は、
前記トランザクションモジュールにより、
キーに対応する1つ以上のキー値アップデートを有する保留キュー内のトランザクションを識別する段階と、
異なるトランザクションに属する前記キー値アップデートの内、共通に関連付けられたキー値アップデートに関連付けられたキーの内の共通に関連付けられたキーを識別する段階と、
異なるトランザクション間で共通に関連付けられたキー値アップデートの総数の分析に基づいて、前記トランザクションにトランザクショングループIDを割り当てる段階と、
前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを複数のトランザクショングループ内のトランザクショングループにグループ化する段階と、
を有し、
前記マージモジュールにより、同じトランザクショングループ内のトランザクションのグループ化されたトランザクションに対して、共通に関連付けられたキーの、共通に関連付けられたキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する段階
を有し、
ここで、前記マージする段階は、第1のキーに対する第1のキー値アップデート及び第1のキーに対する第2のキー値アップデートを決定し、第2のキー値アップデートを実行する段階を含むことを特徴とする非一時的なコンピュータ読取可能媒体。
【請求項16】
前記
データ格納方法は、
前記トランザクションモジュールにより、
前記複数のトランザクショングループの内のクラッシュしたトランザクショングループ内のトランザクションの内の衝突(crash)したトランザクションで衝突が発生したことを判断する段階と、
衝突(crash)したトランザクショングループ内のトランザクションの内、競合するデータ書き込みをマージすることによりリンクされたトランザクションを前記衝突したトランザクションにリンクするよう再試行する段階と、を更に有す
ることを特徴とする請求項15に記載の非一時的なコンピュータ読取可能媒体。
【請求項17】
前記
データ格納方法は、
前記マージモジュールにより、同一のキーに対応する1つ以上の第1のキー値アップデートを、1つ以上の第2のキー値アップデートとして有する前記トランザクションの内の1つを削除するために境界設定する(demarcating)段階を更に
有し、
前記第2のキー値アップデートは、境界が定められたトランザクション以外の1つ以上のトランザクション内で行われることを特徴とする請求項15に記載の非一時的なコンピュータ読取可能媒体。
【請求項18】
前記
データ格納方法は、
前記トランザクションモジュールにより、
連続するトランザクションのペアにキーの共通キーに対応する個別の関連付けられたキー値アップデートがあることを判断する段階と、
前記連続するトランザクションが異なるそれぞれのトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる段階と、を更に有す
ることを特徴とする請求項15に記載の非一時的なコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ格納に関し、特に、オーバーライトマージで起こり得る問題を避け、競合の際にも同一のキーに対するトランザクションの書き込みを安定的にマージするトランザクショングループ化とオーバーライトマージとの結合を提供するデータ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体に関する。
【背景技術】
【0002】
キー値ストアの動作において、与えられたキーが何度も書き込まれ、多様なキーが実質的に同時にアップデートされる。
多様なキー値をアップデートするための複数のトランザクションが保留キューに配置される。
保留キュー内における異なるトランザクションは、それぞれ競合するキー値アップデートに対応し、競合するキー値アップデートはいずれも共通キーに対応する。
例えば、第1書き込み動作又は第1トランザクションは、その後、第2の書き込み動作/トランザクションが同一のキーに対して異なるキー値アップデートを行おうとする際に、キーへのキー値アップデートを行おうとする。
【0003】
各トランザクションを処理する際に、各キー値アップデートを順に処理する。
従って、特定のキーは、異なるキー値ですぐに再アップデートされるようにキー値でアップデートされる。
【0004】
つまり、初期のキー値アップデートが起こる前に、初期(early-in-time)トランザクションのキー値アップデートが後期(later-in-time)トランザクションと関係なくレンダリングされるが、キー値アップデートはどちらも起こり、いずれか1つは不要になる。
このようなシナリオでのさまざまなトランザクションは、一般的に、互いに比較的近い時間に発生する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は上記従来のデータ格納方法における問題点に鑑みてなされたものであって、本発明の目的は、オーバーライトマージで潜在的に起こる可能性のある問題を避け、競合の際にも、同一のキーに対するトランザクションの書き込みを安定的にマージするトランザクショングループ化とオーバーライトマージとの結合を提供するデータ格納方法を提供することにある。
また、本発明の他の目的は、トランザクショングループ化とマージを実行するためのシステム及びそのシステムに実装された非一時的なコンピュータ読取可能媒体を提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するためになされた本発明によるデータ格納方法は、キーに対応する1つ以上のキー値アップデートを有する保留キュー内のトランザクションを識別する段階と、異なるトランザクションに属する前記キー値アップデートの内、共通に関連付けられたキー値アップデートに関連付けられたキーの内の共通に関連付けられたキーを識別する段階と、異なるトランザクション間で共通に関連付けられたキー値アップデートの総数の分析に基づいて、前記トランザクションにトランザクショングループIDを割り当てる段階と、前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを複数のトランザクショングループ内のトランザクショングループにグループ化する段階と、同じトランザクショングループ内のトランザクションのグループ化されたトランザクションに対して、共通に関連付けられたキーの、共通に関連付けられたキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する段階と、を有し、ここで、前記マージする段階は、第1のキーに対する第1のキー値アップデート及び第1のキーに対する第2のキー値アップデートを決定し、第2のキー値アップデートを実行する段階を含むことを特徴とする。
【0008】
前記複数のトランザクショングループの内のクラッシュしたトランザクショングループ内のトランザクションの内の衝突(crash)したトランザクションで衝突が発生したことを判断する段階と、衝突(crash)したトランザクショングループ内のトランザクションの内、競合するデータ書き込みをマージすることによりリンクされたトランザクションを前記衝突したトランザクションにリンクするよう再試行する段階と、をさらに有することが好ましい。
同一のキーに対応する1つ以上の第1のキー値アップデートを、1つ以上の第2のキー値アップデートとして有する前記トランザクションの内の1つを削除するために境界設定する(demarcating)段階をさらに有し、前記第2のキー値アップデートは、境界が定められたトランザクション以外の1つ以上のトランザクション内で行われることが好ましい。
連続するトランザクションのペアにキーの共通キーに対応する個別の関連付けられたキー値アップデートがあることを判断する段階と、前記連続するトランザクションが異なるそれぞれのトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる段階と、をさらに有することが好ましい。
【0009】
前記キーの共通キーに対応する共通に関連付けられたキー値アップデートの数が最も少ない連続するトランザクションのペアを決定する段階と、前記連続するトランザクションが異なるトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる段階と、をさらに有することが好ましい。
前記トランザクショングループの内の1つの前記競合するデータ書き込みのマージされたキー値アップデートを1つ以上のストレージデバイスに書き込む段階と、前記トランザクショングループの内の1つのマージされたキー値アップデートに対応するメタデータを更新する段階と、前記マージされたキー値アップデートが前記1つ以上のストレージデバイスに存在することを判断する段階と、をさらに有することが好ましい。
前記トランザクションに前記トランザクションIDを割り当てる段階をさらに有することが好ましい。
【0010】
上記目的を達成するためになされた本発明によるシステムは、トランザクションのグループ化を用いてマージを実行するためのシステムであって、トランザクションモジュールと、マージモジュールと、を有し、前記トランザクションモジュールは、キーに対応する1つ以上のキー値アップデートを有する複数のトランザクションを保留中のキュー内で識別し、異なるトランザクションに属する前記キー値アップデートの内、共通に関連付けられたキー値アップデートに関連付けられたキーの内の共通に関連付けられたキーを識別し、異なるトランザクション間で共通に関連付けられたキー値アップデートの総数の分析に基づいて、前記トランザクションにトランザクショングループIDを割り当て、前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを複数のトランザクショングループ内のトランザクショングループにグループ化する動作を行うように構成され、前記マージモジュールは、同じトランザクショングループ内のトランザクションのグループ化されたトランザクションに対して、共通に関連付けられたキーの、共通に関連付けられたキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する動作を行うように構成され、ここで、前記マージは、第1のキーに対する第1のキー値アップデート及び第1のキーに対する第2のキー値アップデートを決定し、第2のキー値アップデートを実行することを含むことを特徴とする。
【0011】
前記トランザクションモジュールは、前記複数のトランザクショングループの内のクラッシュしたトランザクショングループ内のトランザクションの内の衝突(crash)したトランザクションで衝突が発生したことを判断するようにさらに構成され、衝突(crash)したトランザクショングループ内のトランザクションの内、競合するデータ書き込みをマージすることによりリンクされたトランザクションを前記衝突したトランザクションにリンクするよう再試行するようにさらに構成されることが好ましい。
前記マージモジュールは、同一のキーに対応する1つ以上の第1のキー値アップデートを、1つ以上の第2のキー値アップデートとして有する前記トランザクションの内の1つを削除するために境界設定(demarcating)動作を行うように構成され、前記第2のキー値アップデートは、境界が定められたトランザクション以外の1つ以上のトランザクション内で行われることが好ましい。
前記トランザクションモジュールは、連続するトランザクションのペアにキーの共通キーに対応する個別の関連付けられたキー値アップデートがあることを判断し、前記連続するトランザクションが異なるそれぞれのトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる動作を行うようにさらに構成されることが好ましい。
【0012】
前記トランザクションモジュールは、前記キーの共通キーに対応する共通に関連付けられたキー値アップデートの数が最も少ない連続するトランザクションのペアを決定し、前記連続するトランザクションが異なるトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる動作を行うようにさらに構成されることが好ましい。
インフライト・リクエストバッファ(inflight request buffer)をさらに有し、前記インフライト・リクエストバッファは、前記トランザクショングループの内の1つの前記競合するデータ書き込みのマージされたキー値アップデートを1つ以上のストレージデバイスに書き込み、前記トランザクショングループの内の1つのマージされたキー値アップデートに対応するメタデータを更新し、前記マージされたキー値アップデートが前記1つ以上のストレージデバイスに存在することを判断する動作を行うように構成されることが好ましい。
前記トランザクションモジュールは、前記トランザクションに前記トランザクションIDを割り当てるようにさらに構成されることが好ましい。
【0013】
上記目的を達成するためになされた本発明による非一時的なコンピュータ読取可能媒体は、トランザクショングループ化とのマージを実行するためのシステム上に実装された非一時的なコンピュータ読取可能媒体であって、前記非一時的なコンピュータ読取可能媒体は、プロセッサ上で実行される際、データ格納方法を実行するコンピュータコードを有し、前記データ格納方法は、キーに対応する1つ以上のキー値アップデートを有する保留キュー内のトランザクションを識別する段階と、異なるトランザクションに属する前記キー値アップデートの内、共通に関連付けられたキー値アップデートに関連付けられたキーの内の共通に関連付けられたキーを識別する段階と、異なるトランザクション間で共通に関連付けられたキー値アップデートの総数の分析に基づいて、前記トランザクションにトランザクショングループIDを割り当てる段階と、前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを複数のトランザクショングループ内のトランザクショングループにグループ化する段階と、同じトランザクショングループ内のトランザクションのグループ化されたトランザクションに対して、共通に関連付けられたキーの、共通に関連付けられたキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する段階と、を有し、ここで、前記マージする段階は、第1のキーに対する第1のキー値アップデート及び第1のキーに対する第2のキー値アップデートを決定し、第2のキー値アップデートを実行する段階を含むことを特徴とする。
【0014】
前記コンピュータコードは、前記複数のトランザクショングループの内のクラッシュしたトランザクショングループ内のトランザクションの内の衝突(crash)したトランザクションで衝突が発生したことを判断する段階と、衝突(crash)したトランザクショングループ内のトランザクションの内、競合するデータ書き込みをマージすることによりリンクされたトランザクションを前記衝突したトランザクションにリンクするよう再試行する段階と、をさらに有する前記データ格納方法をさらに実装することが好ましい。
前記コンピュータコードは、同一のキーに対応する1つ以上の第1のキー値アップデートを、1つ以上の第2のキー値アップデートとして有する前記トランザクションの内の1つを削除するために境界設定する(demarcating)段階をさらに有する前記データ格納方法をさらに実装し、前記第2のキー値アップデートは、境界が定められたトランザクション以外の1つ以上のトランザクション内で行われることが好ましい。
前記コンピュータコードは、連続するトランザクションのペアにキーの共通キーに対応する個別の関連付けられたキー値アップデートがあることを判断する段階と、前記連続するトランザクションが異なるそれぞれのトランザクショングループに配置されるように、前記連続するトランザクションにトランザクショングループIDを割り当てる段階と、をさらに有する前記データ格納方法をさらに実装することが好ましい。
【発明の効果】
【0015】
本発明に係るデータ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体によれば、データの一貫性を保証するために、システム障害後にロールバック(システムにより再試行)しなければならないトランザクションの数を減らすことにより、データ格納が改善できる。
【図面の簡単な説明】
【0016】
【
図1】本発明の一実施形態によるオーバーライトマージ及びそれから発生するトランザクションの依存性を説明するための図である。
【
図2】本発明の一実施形態によるトランザクショングループ化とのオーバーライトマージを説明するための図である。
【
図3】本発明の一実施形態によるトランザクショングループ化とのオーバーライトマージを説明するためのフローチャートである。
【
図4】本発明の一実施形態によるシステムでのワークフローを説明するための概略構成ブロック図である。
【発明を実施するための形態】
【0017】
次に、本発明に係るデータ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体を実施するための形態の具体例を図面を参照しながら説明する。
【0018】
特に明示しない限り、同様の図面符号は、多様な図面全体において同様の部分を示す。
対応する参照符号は、様々な図面にわたって対応する構成要素を示す。
当業者は、図面の要素が単純性や明瞭性のために示しており、必ずしも正確な比率で示していないことを理解するであろう。
例えば、図面において、一部の構成要素、層、領域の面積は、明瞭性や多様な実施形態の理解を助けるために、他の構成要素、層、領域に比べて誇張される。
また、実施形態の説明に関連していない、一般的であるがよく理解される構成要素及び部分は、多様な実施形態の図面が影響を受けないように、且つ説明を明確にするために図示しない場合もある。
【0019】
本発明の特徴及びこれを達成するための方法は、実施形態の詳細な説明及び添付図面を参照してより容易に理解できる。
以下では、実施形態について添付図面を参照してより詳細に説明する。
しかし、説明する実施形態は、多様な他の形態で実施することができ、本明細書で開示する実施形態に限定して解釈すべきではない。
むしろ、このような実施形態は、本発明が徹底的且つ完全なものになるように例示として提供し、当業者に本発明の態様や特徴を十分に伝える。
よって、本発明の態様や特徴の完全な理解のために、当業者に不要なプロセス、要素、及び技術を説明しないことがあり得る。
【0020】
特に言及しない限り、同様の参照符号は、添付の図面及び記載する説明全体にわたって同様の要素を示しているため、その説明は繰り返さない。
また、実施形態の説明と関連のない部分は、説明を明確にするために示さない。
図面において、構成要素、層、領域の相対的なサイズは、明確性のために誇張することがある。
詳細な説明において、説明の目的として、多様な実施形態の徹底した理解のために多数の特定の詳細な説明を提示する。
しかし、多様な実施形態は、このような特定の詳細な説明がなくても実施してもよく、或いは、1つ以上の同等な配列を有して実施してもよいということは明らかである。
他方、よく知られている構造及び装置は、多様な実施形態をむやみに曖昧にすることを避けるために、ブロック図の形で示す。
【0021】
本明細書において、「第1」、「第2」、「第3」などの用語を多様な構成要素、部分品(components)、領域、層及び/又はセクションを説明するために用いるが、このような構成要素、部分品、領域、層及び/又はセクションは、これらの用語によって限定してはならないことが理解できる。
これらの用語は、単に1つの構成要素、部分品、領域、層又はセクションを他の構成要素、部分品、領域、層又はセクションと区別するために用いる。
従って、以下で説明する第1構成要素、部分品、領域、層又はセクションは、本発明の思想や範囲を逸脱することなく、第2構成要素、部分品、領域、層又はセクションとしてもよい。
【0022】
本明細書で用いる用語は、単に特定の実施形態を説明するために用いており、本発明を限定するものではない。単数形の表現は、文脈上明らかに異なるように示さない限り、複数形の表現を含む。
本明細書において、「含む」又は「有する」などの用語は、開示する特徴、数字、段階、動作、構成要素、部分品、及び/又はこれらの組み合わせが存在することを指すものであって、1つ以上の他の特徴、数字、段階、動作、構成要素、部分品及び/又はこれらの組み合わせの存在や付加の可能性を排除するものではないことを理解すべきである。
本明細書で用いる「及び/又は」、「及び/若しくは」という用語は、1つ以上の関連して挙げられた項目の任意且つ全ての組み合わせを含む。
【0023】
本明細書で用いる「実質的に」、「約」、「およそ」、及びこれと似た用語は、程度の用語ではなく、近似値の用語として用い、当業者が認識する測定値又は計算値の固有偏差を説明するためのものである。
本明細書で用いる「約」又は「およそ」は、特定量の測定に関する誤差(即ち、測定システムの限界)を考慮して、当業者によって決定される明示された値を含み、特定値の許容可能な偏差範囲内を意味する。
例えば、「約」は、1つ以上の標準偏差又は明示された値の±30%、20%、10%、5%内を意味する。
更に、本発明の実施形態を説明する際に用いる「し得る」は、本発明の1つ以上の実施形態を指すものである。
【0024】
ある実施形態を異なって実施する場合、特定のプロセスの順序は、説明する順序と異なって行ってもよい。
例えば、連続して説明する2つのプロセスは、実質的に同時に行ってもよく、或いは、説明する順序と反対の順序で行ってもよい。
【0025】
本明細書で説明する本発明の実施形態による電子又は電気装置及び/又は他の関連装置又は部分品は、任意の適切なハードウェア、ファームウェア(例えば、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、ソフトウェア、又は、ソフトウェア、ファームウェア及びハードウェアの組み合わせを利用して実装される。
例えば、これらの装置の多様な部分品は、1つの集積回路(IC)チップ又は別のICチップ上に形成される。
また、これらの装置の多様な部分品は、フレキシブル印刷回路フィルム、テープキャリアパッケージ(Tape Carrier Package:TCP)、印刷回路基板(Printed Circuit Board:PCB)上に実装されるか、又は1つの基板上に形成される。
【0026】
更に、これらの装置の多様な部分品は、コンピュータプログラム命令を実行し、本明細書で説明する多様な機能を行うために他のシステムの部分品と相互作用する1つ以上のコンピューティング装置内における1つ以上のプロセッサ上で実行するプロセス又はスレッド(thread)である。
コンピュータプログラム命令は、例えば、ランダムアクセスメモリ(Random Access Memory:RAM)などの標準メモリ装置を用いてコンピューティング装置内に実装されるメモリに格納される。
また、コンピュータプログラム命令は、例えば、CD-ROM、フラッシュドライブなどの他の非一時的なコンピュータ読取可能記録媒体(non-transitory computer readable media)に格納される。
更に、当業者は、本発明の実施形態の思想や範囲を逸脱することなく、多様なコンピューティング装置の機能が単一のコンピューティング装置に結合若しくは統合されるか、又は特定のコンピューティング装置の機能が1つ以上の他のコンピューティング装置に分散されるということを認識すべきである。
【0027】
特に定義しない限り、本明細書で用いる技術用語及び科学用語を含む全ての用語は、本発明が属する技術分野の通常の知識を有する者が一般的に理解するものと同様の意味を有する。
また、通常用いられる辞典に定義されているような用語は、関連技術及び/又は本明細書の文脈上の意味と一致すると解釈すべきであり、本明細書で明らかに定義しない限り、理想的又は過度に公式的な意味に解釈してはならないことが理解される。
【0028】
キー値アップデートの数を減らすことにより、ストレージデバイスにおける書き込みの効率性を向上させるために、「インライン・オーバーライトマージ」又は「オーバーライトマージ」(「インプレースアップデート」ともいう)は、共通キーに対応し、与えられたタイムフレーム内で発生する競合する書き込みのマージ(merging)を可能にする。
競合する書き込みは、与えられたタイムフレーム内で発生する互いに異なるそれぞれのトランザクションに対応するため、トランザクションは全て実質的に同時に保留キューに存在する。
【0029】
従って、オーバーライトマージは、同一のキーの最新キー値アップデートのために、特定のキーの過去のキー値アップデートを廃棄できるようにする。
つまり、与えられたタイムフレーム内に発生する共通キーへの競合する保留書き込みは、最後の書き込みのために、関連のない初期の書き込みを廃棄することにより、「マージ(併合)」される。
従って、キー値アップデート/書き込みの総数が減ることにより、システムオーバーヘッドが減る。
【0030】
オーバーライトマージの概念は、多様なKVストレージ方法に関して書き込み縮小(write reduction)方法として適用される(例えば、既存の永久的なキー値ストアと互換するキー値ソリッドステートドライブ(KVSSD)と共に用いる、FACEBOOK(登録商標)により開発されたRocksDB、及びMyRocksと互換するRocksDBストレージエンジン等のキー値ストアに関して)。
例えば、あるベンチマークは、マルチスレッドのシーケンシャル書き込み能力であり、各スレッドは、他のスレッドのキーと重複するキーを生成する。
従って、簡単なオーバーライトマージ能力を追加することが有利であり、フラッシュメモリをストレージ媒体空間に適用することにより、書き込み増幅(write amplification)の減少は有利になる。
【0031】
オーバーライトマージを使用することにより、書き込み増幅は減るが、一般に、オーバーライトマージはトランザクションシステムにのみ使用するものではない。
例えば、オーバーライトマージ/インプレースアップデートは、トランザクションの一括処理と共に使用する際に望ましくない影響を与える。
このような望ましくない影響は、トランザクションの依存性による保留中のトランザクションのロングテールが原因であり、そのため、潜在的にデータの不一致が発生し、オーバーライトマージを非実用的にしてしまう。
また、衝突(crash)の一貫性が潜在的に損なわれる。
つまり、オーバーライトマージを使用すると、書き込み増幅を減らし、性能を向上させることができるが(例えば、IOPS(秒あたり入出力動作)の向上)、多数のトランザクションがある場合、オーバーライトマージは行わない。
例えば、多数のトランザクションがある場合、複数のカスケード接続された/リンクされたトランザクションの内の1つで衝突が発生すると、データの一貫性が損なわれる。
また、オーバーライトが複数回発生する場合、保留中のトランザクションのロングテールが発生する。
【0032】
従って、本発明の実施形態は、インライン・オーバーライトマージを許可することにより、カスケード接続されたトランザクションのグループ化(例えば、トランザクショングループの使用)を可能にする。
本発明の実施形態を達成するために、対応するメタデータの書き込みは、グループ内の全てのトランザクション動作がデバイスに書き込まれるまで遅延する。
記載の通り、本発明の実施形態によるインライン・オーバーライトマージを、書き込み増幅を減らすことに使用するが、インライン・オーバーライトマージはトランザクションシステムに単独では使用しない。
フラッシュメモリ技術で本発明の実施形態を行うことにより、一部のフラッシュデバイスは、改善した書き込み耐久性及び性能(例えば、IOPS)を示す。
【0033】
図1は、オーバーライトマージ及びそれから発生するトランザクションの依存性を説明するための図である。
図1を参照すると、第1トランザクション(Trxn1)は、第2トランザクション(Trxn2)のキー値アップデート(V3)と、オーバーライトマージされるキー値アップデート(V2)と、を有する。
【0034】
第2トランザクション(Trxn2)は、それぞれ第3及び第4トランザクション(Trxn3及びTrxn4)のキー値アップデート(V5及びV6)と、オーバーライトマージされるキー値アップデート(V4)と、を有する。
第3トランザクション(Trxn3)は、第4トランザクション(Trxn4)のキー値アップデート(V8)と、オーバーライトマージされるキー値アップデート(V7)と、を有する。
更に、第4トランザクション(Trxn4)は、第5トランザクション(Trxn5)のキー値アップデート(V10)と、オーバーライトマージされるキー値アップデート(V9)と、を有する。
【0035】
従って、オーバーライトマージ能力を有するキー値アップデートによる多様なトランザクションの相互依存性によって、トランザクションは、それから生成される相互依存性のチェーンにより互いにリンクされる。
そのため、衝突又は予期しない停電が発生した場合、オーバーライトマージにより望ましくない影響が生じる。
【0036】
本発明の実施形態によると、
図1に示す通り、第4トランザクション(Trxn4)のキー値アップデート(V9)後、そして、第5トランザクション(Trxn5)のキー値アップデート(V10)前に衝突が発生すると、リンクされた全てのトランザクション(Trxn1~Trxn5)がロールバックされる(つまり、有効性及びデータの一貫性を保証するためにシステムにより再試行される)。
即ち、衝突により、第4トランザクション(Trxn4)のキー値アップデート(V9)が有効と判断されない。
第4トランザクション(Trxn4)のキー値アップデート(V9)が有効と判断されないため、第4トランザクション(Trxn4)の完了が有効と判断されない。
【0037】
また、第4トランザクション(Trxn4)のキー値アップデート(V6)が、第2及び第3トランザクション(Trxn2及びTrxn3)のキー値アップデート(V4及びV5)とマージされてオーバーライトされるため、キー値アップデート(V4及びV5)のいずれも有効に書き込まれていることが確認されない。
従って、第2及び第3トランザクション(Trxn2及びTrxn3)も同様に有効と判断されない。
【0038】
最後に、第1及び第2トランザクション(Trxn1及びTrxn2)のキー値アップデート(V2及びV3)がマージされ、第2トランザクション(Trxn2)が有効と判断されないため、第1トランザクション(Trxn1)は有効と判断されず、また、ロールバックされなければならない。
従って、オーバーライトマージから発生するトランザクションの依存性により、衝突はシステムにおけるデータの一貫性を達成するために比較的多数のトランザクションを要求する。
【0039】
また、トランザクションが復旧不可能な衝突後のシナリオが存在する。
例えば、キー値アップデート(V1)のメタデータがストレージデバイスに既に書き込まれており、且つ、任意のキー値ストアの実行における前回のメタデータの記録がないため(例えば、下記で更に説明する
図3のステップS380及び
図4のテーブル460参照)、第1トランザクション(Trxn1)がロールバックされない状況が存在する。
【0040】
本発明の実施形態は、オーバーライトマージを、本明細書で「トランザクショングループ化(transaction grouping)」という概念と結合することにより、オーバーライトマージで潜在的に起こる可能性のある問題を避ける。
つまり、トランザクショングループ化を通じてトランザクションをグループ化することにより、衝突の際にも、同一のキーに対するトランザクションの書き込みを安定的にマージするため、書き込みの効率性が向上する。
【0041】
図2は、本発明の一実施形態によるトランザクショングループ化とのオーバーライトマージを説明するための図である。
例えば、
図2を参照すると、それぞれのトランザクショングループID(例えば、Group1又はGroup2)をトランザクションに割り当てることにより、異なるトランザクションがグループ化される。
【0042】
トランザクショングループIDは、1つ以上の対応するトランザクションIDから生成される。
また、オーバーライトマージが発生しなければ、新たなトランザクショングループIDがスタートする。
例えば、複数のアップデートが臨界値を超えれば、新たなトランザクショングループIDがスタートする。
【0043】
それぞれのトランザクションのトランザクションIDに基づき、それぞれのトランザクションに対するそれぞれのトランザクショングループIDを生成することにより、それぞれのトランザクショングループを分離する1つ以上のトランザクショングループの境界を決定する。
例えば、本実施形態の実行において、トランザクショングループIDは、トランザクションIDの最上位59ビットである。
新たなトランザクショングループIDを使用する場合、次のトランザクションIDが増加する。
図2に示すように、連続的なトランザクションは単一のトランザクショングループに含まれるが、本発明の実施形態は、これに制限されない。
また、トランザクショングループ当たりのトランザクションの具体的な数は、特に制限されない。
【0044】
図2に示すように、第1~第3トランザクション(Trxn1、Trxn2、及びTrxn3)はそれぞれ、第1グループ「Group1」内に配置される第1グループのトランザクションIDが割り当てられる一方、第4及び第5トランザクション(Trxn4及びTrxn5)は、第2グループ「Group2」内に配置される第2グループのトランザクションIDが割り当てられる。
従って、第3及び第4トランザクション(Trxn3及びTrxn4)は、それぞれ、それぞれの同じキーに対応するそれぞれのキー値アップデートを含んでいても(例えば、キー「C」に対応するキー値アップデート(V5及びV6)、及びキー「D」に対応するキー値アップデート(V7及びV8))、このようなキー値アップデートは、第3及び第4トランザクション(Trxn3及びTrxn4)が互いに異なるトランザクショングループ(Group1及びGroup2)にそれぞれ属するため、オーバーライトマージされない。
【0045】
また、上述のように、グループ化は、一方でトランザクションが復旧不可能な衝突後のシナリオを解決する。
つまり、従来は、キー値アップデート(V1)のメタデータがストレージデバイスに既に書き込まれており、どのキー値ストアの実行でも前回のメタデータの記録がないため、第1トランザクション(Trxn1)がロールバックされない場合、トランザクションは復旧不可能である。
しかし、本発明の実施形態によるグループ化は、復旧不可能な衝突を避けることができるが、衝突が発生した際に(例えば、下記で更に説明する
図3のステップS380及び
図4のテーブル460参照)、データの一貫性を保証するために、アップデートされたキー値に対するメタデータがストレージデバイスに書き込まれる場合にのみ、アップデートされたキー値に対するメタデータがアップデートされるからである。
【0046】
従って、
図1に関して、上述の実施形態と異なり、
図1において、第4トランザクション(Trxn4)のキー値アップデート(V9)後、そして、第5トランザクション(Trxn5)のキー値アップデート(V10)前に衝突が発生すると、同じトランザクショングループ(Group2)の一部であるTrxn4及びTrxn5のリンクされたトランザクションのみがロールバックされる。
第1トランザクショングループ(Group1)のトランザクション(Trxn1、Trxn2、及びTrxn3)が有効と確認されたため、衝突によりロールバックする必要はない。
【0047】
つまり、連続的なトランザクション(Trxn3及びTrxn4)を異なるトランザクショングループに分離することにより、オーバーライトマージにより発生する他の連続的なトランザクション(Trxn3及びTrxn4)の間のリンクは、欠如/除去される。
従って、第3トランザクション(Trxn3)が有効と判断され、衝突による非効率性が減る。
【0048】
一般に、本発明の実施形態によりオーバーライトマージを用いたトランザクショングループ化のメリットは、衝突が発生する場合、書き込みの効率性を向上させることを含む。
上述のように、衝突が発生すると、システムは衝突と関連する与えられたトランザクショングループの開始を過ぎてロールバックする必要がない。
【0049】
また、本発明の実施形態によりオーバーライトマージを用いたトランザクショングループ化のメリットは、互いに異なるそれぞれのトランザクショングループに属する互いに異なる隣接するトランザクション間のオーバーライトマージを防止することができると同時に、与えられたトランザクショングループIDに共通して割り当てられる異なるトランザクションにわたるオーバーライトマージが、依然としてそれぞれのトランザクショングループ内に存在することである。
従って、システムは、トランザクショングループ化のない限り、ロールバックしなくてもよい。
しかし、システムは、キー値アップデートの一部をオーバーライトマージすることにより、オーバーライトマージに関するメリットを依然としてある程度まで達成する。
【0050】
図2に示すように、キーC及びDにそれぞれ2回書き込むことは非効率的である(キーCに対するキー値アップデート(V5及びV6)、キーDに対するキー値アップデート(V7及びV8))。
従って、一実施形態において、トランザクショングループの境界は、連続的なトランザクションがあったとしても、互いにオーバーライトマージされるキー値アップデートがない場合に評価することで割り当てられる。
他の実施形態において、トランザクショングループの境界は、どの連続的なトランザクションが互いにオーバーライトマージするのに適格であるキー値アップデートが最も少ないかを評価することで割り当てられる。
【0051】
また、本発明の他の実施形態において、システムは、異なるトランザクションにわたるキー値アップデートに対応する共通のそれぞれのキーに対する分析に基づき、トランザクショングループIDの生成が調整される。
例えば、
図2に示すように、第3トランザクション(Trxn3)からのキー値アップデートは、使用しない(Trxn3のV5及びV7は、Trxn4のV6及びV8により関係なく両方ともレンダリングされる)。
【0052】
従って、システムは、第1トランザクショングループ(Group1)からTrxn3を除去する。
例えば、キー対象は、キー値アップデートに対するリンクを有し、各キー値アップデートの対象は、トランザクションIDを含む。
バックグラウンドスレッド、又は「書き込み作業者」によりキー値アップデートを検査し、可能なオーバーライトマージを見つける。
このようなバックグラウンドスレッドは、新たなトランザクショングループIDを生成する(例えば、複数のアップデートが臨界値を超える場合)。
【0053】
図3は、本発明の実施形態によるトランザクショングループ化とのオーバーライトマージを説明するためのフローチャートである。
図3を参照すると、本発明の実施形態によるシステムは、入ってくるトランザクションが、トランザクショングループとのオーバーライトマージを正しく行うにあたって、大きすぎるものが可能か否かを初期に判断する(ステップS310)。
もし大きすぎれば、トランザクションID及びそれに続くトランザクショングループIDがトランザクションに割り当てられる(ステップS320)。
もしそうでなければ、トランザクションID及び現在のトランザクショングループIDがトランザクションに割り当てられる(ステップS330)。
【0054】
トランザクションID及びトランザクショングループIDがトランザクションに割り当てられた後、トランザクションの動作カウントがグループに追加される(ステップS340)。
次に、インライン・オーバーライトマージが、入ってくるトランザクションである対象を含むトランザクションに対して行われる(ステップS350)。
その後、トランザクションに対応するデータを1つ以上の装置に書き込むための書き込み動作が行われる(ステップS360)。
【0055】
そして、本発明のシステムは、グループ内の全ての動作が完了したか判断する(ステップS370)。
グループ内の全ての動作が完了した場合、それに対応するメタデータは、アップデートされ、そしてフラッシュされる(ステップS380)。
グループ内の全ての動作が完了していない場合、次のトランザクションが処理される(ステップS390)(例えば、グループ内の全ての動作が完了するまで)。
【0056】
図4は、本発明の実施形態によるシステムでのワークフローを説明するための概略構成ブロック図である。
図4を参照すると、トランザクショングループ化とのオーバーライトマージを行うために、トランザクション410がシステム400により受信され、トランザクションモジュール420に送られる。
【0057】
トランザクションモジュール420は、トランザクションID及びトランザクショングループIDをそれぞれのトランザクション410に割り当てる。
トランザクションモジュール420は、直近に受信したトランザクションを最新のグループに追加する。
直近のグループがフルになると、トランザクションモジュール420は、それに続くトランザクション410のための新たなグループを生成する。
【0058】
再び
図2を参照すると、Group1は、それぞれのキー(A、B、C、及びD)に対応するキー値アップデート(V1、V2、V3、V4、V5、及びV7)を含むトランザクション(Trxn1、Trxn2、及びTrxn3)を含む。
トランザクショングループ(例えば、Group1)を生成した後、マージモジュール430は、キー値アップデートのオーバーライトマージを行う。
【0059】
その後、インフライト・リクエストバッファ(inflight request buffer)440は、オーバーライトマージされたキー値をデバイス(例えば、KVSSD)450に書き込む。
トランザクショングループにおけるマージされたキー値が全てデバイス450に正しく書き込まれると、デバイスメタデータを含むテーブル460がアップデートされる。
最後に、メタデータは、テーブル460からデバイス450に書き込まれる(フラッシュされる)。
【0060】
上記によれば、本発明の実施形態は、インライン・オーバーライトマージを使用してカスカード接続されたトランザクションをグループ化し、これにより、関連するトランザクショングループにおける全ての動作が対応するデバイスに書き込まれるまで、メタデータの書き込み動作が遅延することにより、関連するメタデータのフラッシュを遅延させる。
従って、本発明の実施形態は、衝突の復旧を達成する。
【0061】
また、本発明の実施形態は、メタデータの書き込み動作に関する不適切な遅延を避け、また、カスカード接続されていないトランザクションを異なるそれぞれのトランザクショングループに分離して、できる限り多くのカスカード接続されたトランザクションを有するトランザクショングループを形成することを目標とする。
従って、本発明の実施形態によるトランザクショングループの実現は、衝突の一貫性を可能にし、保留中のトランザクションを減らすと同時に、トランザクションと共にオーバーライトマージ作業をスムーズにし、これによりデータ格納技術を向上させることができる。
【0062】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0063】
400 システム
410 トランザクション
420 トランザクションモジュール
430 マージモジュール
440 インフライト・リクエストバッファ
450 デバイス
460 テーブル