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

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

▶ エスアーペー エスエーの特許一覧

特開2024-73354ネイティブマルチテナント行テーブル暗号化
<>
  • 特開-ネイティブマルチテナント行テーブル暗号化 図1
  • 特開-ネイティブマルチテナント行テーブル暗号化 図2A
  • 特開-ネイティブマルチテナント行テーブル暗号化 図2B
  • 特開-ネイティブマルチテナント行テーブル暗号化 図3A
  • 特開-ネイティブマルチテナント行テーブル暗号化 図3B
  • 特開-ネイティブマルチテナント行テーブル暗号化 図4
  • 特開-ネイティブマルチテナント行テーブル暗号化 図5
  • 特開-ネイティブマルチテナント行テーブル暗号化 図6A
  • 特開-ネイティブマルチテナント行テーブル暗号化 図6B
  • 特開-ネイティブマルチテナント行テーブル暗号化 図6C
  • 特開-ネイティブマルチテナント行テーブル暗号化 図7
  • 特開-ネイティブマルチテナント行テーブル暗号化 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024073354
(43)【公開日】2024-05-29
(54)【発明の名称】ネイティブマルチテナント行テーブル暗号化
(51)【国際特許分類】
   G06F 16/11 20190101AFI20240522BHJP
   G06F 21/60 20130101ALI20240522BHJP
【FI】
G06F16/11
G06F21/60 320
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023102652
(22)【出願日】2023-06-22
(31)【優先権主張番号】17/988,975
(32)【優先日】2022-11-17
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】300015447
【氏名又は名称】エスアーペー エスエー
【住所又は居所原語表記】Dietmar-Hopp-Allee 16, 69190 Walldorf, Germany
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ボムソ・キム
(72)【発明者】
【氏名】ヨン・シク・クウォン
(72)【発明者】
【氏名】ジ・フン・ジャン
(72)【発明者】
【氏名】ヒョン・ソグ・キム
(57)【要約】
【課題】ネイティブマルチテナント行テーブル暗号化を提供すること。
【解決手段】システムおよび方法が、データページのヘッダに基づいて、揮発性メモリに記憶された行ストアデータベーステーブルのデータページに関連付けられた第1の暗号化キーを特定すること、第1の暗号化キーを使用してデータページの本文を暗号化すること、およびヘッダと、暗号化された本文とを備える暗号化されたデータページを永続ストレージシステムに記憶することを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
永続ストレージシステムと、
行ストアデータベーステーブルの複数のデータページを記憶する揮発性メモリと、
データベースインスタンスのプログラムコードを実行して、データベースシステムに、
前記複数のデータページのうちの1つのデータページに関連付けられた第1の暗号化キーを、前記複数のデータページのうちの前記1つのデータページのヘッダに基づいて特定すること、
前記第1の暗号化キーを使用して前記複数のデータページのうちの前記1つのデータページの本文を暗号化すること、および
前記ヘッダと、前記暗号化された本文とを備えるデータページを前記永続ストレージシステムに記憶することを行わせる処理ユニットと
を備えるデータベースシステム。
【請求項2】
前記揮発性メモリは、redoログエントリヘッダと、redoログエントリデータとを含むredoログエントリを記憶し、前記処理ユニットは、前記データベースインスタンスのプログラムコードを実行して、前記データベースシステムに、
前記redoログエントリの前記ヘッダに基づいて、前記redoログエントリに関連付けられた第2の暗号化キーを特定すること、
前記第2の暗号化キーを使用して前記redoログエントリデータを暗号化すること、および
前記redoログエントリヘッダと、前記暗号化されたredoログエントリデータとを備えるredoログエントリページを前記永続ストレージシステムに記憶することを行わせる、請求項1に記載のデータベースシステム。
【請求項3】
前記揮発性メモリは、複数のundoデータページを記憶し、前記処理ユニットは、前記データベースインスタンスのプログラムコードを実行して、前記データベースシステムに、
前記複数のundoデータページのうちの1つのundoデータページに関連付けられた第3の暗号化キーを、前記複数のundoデータページのうちの前記1つのundoデータページのundoページヘッダに基づいて特定すること、
前記第3の暗号化キーを使用して前記複数のundoデータページのうちの前記1つのundoデータページのundoページ本文を暗号化すること、および
前記undoページヘッダと、前記暗号化されたundoページ本文とを備えるundoデータページを前記永続ストレージシステムに記憶することを行わせる、請求項2に記載のデータベースシステム。
【請求項4】
前記処理ユニットは、前記データベースインスタンスのプログラムコードを実行して、前記データベースシステムに、
最新のセーブポイントに関連付けられた、前記永続ストレージシステムに記憶された前記データページを特定すること、
前記永続ストレージシステムに記憶された前記データページの前記ヘッダに基づいて復号キーを特定すること、
前記復号キーを使用して、前記永続ストレージシステムに記憶された前記データページの前記暗号化された本文を復号すること、
前記永続ストレージシステムに記憶された前記redoログエントリの前記redoログエントリヘッダに基づいて第2の復号キーを特定すること、
前記第2の復号キーを使用して、前記永続ストレージシステムに記憶された前記redoログエントリの前記暗号化されたredoログエントリデータを復号すること、
コミットされていないトランザクションに関連付けられた、前記永続ストレージシステムに記憶された前記undoデータページを特定すること、
前記永続ストレージシステムに記憶された前記undoデータページの前記ヘッダに基づいて第3の復号キーを特定すること、および
前記第3の復号キーを使用して、前記永続ストレージシステムに記憶された前記undoデータページの前記暗号化された本文を復号することを行わせる、請求項3に記載のデータベースシステム。
【請求項5】
前記復号キーと前記第2の復号キーと前記第3の復号キーは、互いに異なり、前記処理ユニットは、前記データベースインスタンスのプログラムコードを実行して、前記データベースシステムに、前記復号キー、前記第2の復号キー、および前記第3の復号キーの復号をキー管理システムから要求することをさせる、請求項4に記載のデータベースシステム。
【請求項6】
前記処理ユニットは、前記データベースインスタンスのプログラムコードを実行して、前記データベースシステムに、
最新のセーブポイントに関連付けられた、前記永続ストレージシステムに記憶された前記データページを特定すること、
前記永続ストレージシステムに記憶された前記データページの前記ヘッダに基づいて復号キーを特定すること、
前記復号キーを使用して、前記永続ストレージシステムに記憶された前記データページの前記暗号化された本文を復号すること、
前記永続ストレージシステムに記憶された前記redoログエントリの前記redoログエントリヘッダに基づいて第2の復号キーを特定すること、および
前記第2の復号キーを使用して、前記永続ストレージシステムに記憶された前記redoログエントリの前記暗号化されたredoログエントリデータを復号することを行わせる、請求項2に記載のデータベースシステム。
【請求項7】
前記復号キーと前記第2の復号キーは、互いに異なり、前記処理ユニットは、前記データベースインスタンスのプログラムコードを実行して、前記データベースシステムに、前記復号キーおよび前記第2の復号キーの復号をキー管理システムから要求することをさせる、請求項6に記載のデータベースシステム。
【請求項8】
データページのヘッダに基づいて、揮発性メモリに記憶された行ストアデータベーステーブルのデータページに関連付けられた第1の暗号化キーを特定するステップと、
前記第1の暗号化キーを使用して前記データページの本文を暗号化するステップと、
前記ヘッダと、前記暗号化された本文とを備える暗号化されたデータページを永続ストレージシステムに記憶するステップと
を含む方法。
【請求項9】
redoログエントリのヘッダに基づいて、前記揮発性メモリに記憶された、前記redoログエントリに関連付けられた第2の暗号化キーを特定するステップと、
前記第2の暗号化キーを使用してredoログエントリデータを暗号化するステップと、
前記redoログエントリヘッダと、前記暗号化されたredoログエントリデータとを備える暗号化されたredoログエントリページを前記永続ストレージシステムに記憶するステップと
をさらに含む請求項8に記載の方法。
【請求項10】
undoデータページのundoページヘッダに基づいて、前記揮発性メモリに記憶された、前記undoデータページに関連付けられた第3の暗号化キーを特定するステップと、
前記第3の暗号化キーを使用して前記undoデータページのundoページ本文を暗号化するステップと、
前記undoページヘッダと、前記暗号化されたundoページ本文とを備える暗号化されたundoデータページを前記永続ストレージシステムに記憶するステップと
をさらに含む請求項9に記載の方法。
【請求項11】
最新のセーブポイントに関連付けられた、前記永続ストレージシステムに記憶された前記暗号化されたデータページを特定するステップと、
前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記ヘッダに基づいて復号キーを特定するステップと、
前記復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記暗号化された本文を復号するステップと、
前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記redoログエントリヘッダに基づいて第2の復号キーを特定するステップと、
前記第2の復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記暗号化されたredoログエントリデータを復号するステップと、
コミットされていないトランザクションに関連付けられた、前記永続ストレージシステムに記憶された前記暗号化されたundoデータページを特定するステップと、
前記永続ストレージシステムに記憶された前記暗号化されたundoデータページの前記ヘッダに基づいて第3の復号キーを特定するステップと、
前記第3の復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたundoデータページの前記暗号化された本文を復号するステップと、
をさらに含む請求項10に記載の方法。
【請求項12】
前記復号キーと前記第2の復号キーと前記第3の復号キーは、互いに異なる、方法であって、
前記復号キー、前記第2の復号キー、および前記第3の復号キーの復号をキー管理システムから要求するステップをさらに含む請求項11に記載の方法。
【請求項13】
最新のセーブポイントに関連付けられた、前記永続ストレージシステムに記憶された前記暗号化されたデータページを特定するステップと、
前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記ヘッダに基づいて復号キーを特定するステップと、
前記復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記暗号化された本文を復号するステップと、
前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記redoログエントリヘッダに基づいて第2の復号キーを特定するステップと、
前記第2の復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記暗号化されたredoログエントリデータを復号するステップと
をさらに含む請求項9に記載の方法。
【請求項14】
前記復号キーと前記第2の復号キーは、互いに異なる、方法であって、
前記復号キーおよび前記第2の復号キーの復号をキー管理システムから要求するステップをさらに含む請求項13に記載の方法。
【請求項15】
コンピューティングシステムに、
データページのヘッダに基づいて、揮発性メモリに記憶された、行ストアデータベーステーブルのデータページに関連付けられた第1の暗号化キーを特定すること、
前記第1の暗号化キーを使用して前記データページの本文を暗号化すること、および
前記ヘッダと、前記暗号化された本文とを備える暗号化されたデータページを永続ストレージシステムに記憶することを行わせるように1つまたは複数の処理ユニットによって実行可能であるプログラムコードを記憶するコンピュータ可読記憶媒体。
【請求項16】
前記プログラムコードは、コンピューティングシステムに、
redoログエントリのヘッダに基づいて、前記揮発性メモリに記憶された、前記redoログエントリに関連付けられた第2の暗号化キーを特定すること、
前記第2の暗号化キーを使用してredoログエントリデータを暗号化すること、
前記redoログエントリヘッダと、前記暗号化されたredoログエントリデータとを備える暗号化されたredoログエントリページを前記永続ストレージシステムに記憶することを行わせるように1つまたは複数の処理ユニットによって実行可能である、請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記プログラムコードは、コンピューティングシステムに、
undoデータページのundoページヘッダに基づいて、前記揮発性メモリに記憶された、前記undoデータページに関連付けられた第3の暗号化キーを特定すること、
前記第3の暗号化キーを使用して前記undoデータページのundoページ本文を暗号化すること、および
前記undoページヘッダと、前記暗号化されたundoページ本文とを備える暗号化されたundoデータページを前記永続ストレージシステムに記憶することを行わせるように1つまたは複数の処理ユニットによって実行可能である、請求項16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記プログラムコードは、コンピューティングシステムに、
最新のセーブポイントに関連付けられた、前記永続ストレージシステムに記憶された前記暗号化されたデータページを特定すること、
前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記ヘッダに基づいて復号キーを特定すること、
前記復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記暗号化された本文を復号すること、
前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記redoログエントリヘッダに基づいて第2の復号キーを特定すること、
前記第2の復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記暗号化されたredoログエントリデータを復号すること、
コミットされていないトランザクションに関連付けられた、前記永続ストレージシステムに記憶された前記暗号化されたundoデータページを特定すること、
前記永続ストレージシステムに記憶された前記暗号化されたundoデータページの前記ヘッダに基づいて第3の復号キーを特定すること、および
前記第3の復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたundoデータページの前記暗号化された本文を復号することを行わせるように1つまたは複数の処理ユニットによって実行可能である、請求項17に記載のコンピュータ可読記憶媒体。
【請求項19】
前記復号キーと前記第2の復号キーと前記第3の復号キーは、互いに異なり、前記プログラムコードは、コンピューティングシステムに、前記復号キー、前記第2の復号キー、および前記第3の復号キーの復号をキー管理システムから要求することを行わせるように1つまたは複数の処理ユニットによって実行可能である、請求項18に記載のコンピュータ可読記憶媒体。
【請求項20】
前記プログラムコードは、コンピューティングシステムに、
最新のセーブポイントに関連付けられた、前記永続ストレージシステムに記憶された前記暗号化されたデータページを特定すること、
前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記ヘッダに基づいて復号キーを特定すること、
前記復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたデータページの前記暗号化された本文を復号すること、
前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記redoログエントリヘッダに基づいて第2の復号キーを特定すること、および
前記第2の復号キーを使用して、前記永続ストレージシステムに記憶された前記暗号化されたredoログエントリの前記暗号化されたredoログエントリデータを復号することを行わせるように1つまたは複数の処理ユニットによって実行可能である、請求項16に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネイティブマルチテナント行テーブル暗号化に関する。
【背景技術】
【0002】
マルチテナンシーは、別々のグループのユーザの間で計算リソースの共有を容易化するソフトウェアアーキテクチャパターンである。例えば、単一のマルチテナントアプリケーション(例えば、ソフトウェアアズアサービス(Software-as-a-Service)(SaaS)アプリケーション)が、単一のソフトウェアインスタンス内で多数のエンドユーザグループ(すなわち、顧客)にサービス供与してよい。そのようなソフトウェアインスタンスは、顧客ごとに1つのソフトウェアインスタンスをプロビジョニングするのに要求されるのと比べて、はるかに小さい計算リソースフットプリントを使用する。したがって、マルチテナンシーは、相当な費用便益をもたらすことが可能である。
【0003】
マルチテナントアーキテクチャにおける各顧客のデータは、通常、基礎を成すデータ層における対応するテナントにマップされる。このマッピングは、データ層内のデータの論理上の分離を可能にし、マルチテナントアプリケーションによるそれらのデータへのアクセスを容易化する。一部のマルチテナントアーキテクチャにおいて、各テナントのデータは、同一のコンピューティングシステム(例えば、ラックサーバ)内で実行される異なるデータベースインスタンスによって管理される。これらのアーキテクチャは、テナントデータの優れた分離をもたらすが、一部のシナリオにおいて費用対効果が悪く、テナントごとに完全なデータベースインスタンスを要求することがあり得る。例えば、最小のデータベースインスタンスは、32Gbのメモリを消費する可能性があり、これは、小さいテナントによって要求されるべきものより、相当により多くの計算リソースであり得る。
【0004】
他のマルチテナントデータアーキテクチャは、単一のデータベースインスタンスを使用して多数のテナントのデータを管理する。そのようなアーキテクチャにおけるデータは、物理的に分離されていないので、マルチテナントアプリケーションは、テナントを意識した様態でデータを記憶すること、および管理することを担う。例えば、データベースシステムが、各テナントのデータが区別する列を介して区分化された、すべてのテナントに関して単一のインスタンスの1つのスキーマを使用し得る。マルチテナントアプリケーションは、区別する列の値を使用して、特定のテナントに属するデータを識別する。別の実施例において、マルチテナントアプリケーションは、各テナントに専用のスキーマを関連付ける。いずれの事例においても、データベースシステムは、多数のテナントの存在を意識しておらず、単一テナントアプリケーションによってアクセスされているかのように、同一の様態で動作する。
【0005】
データベースシステムのデータボリュームおよびログセグメントは、ディスクに永続記憶されてよい。データベースシステムに記憶されたすべての顧客(すなわち、テナント)データ、ならびに任意の顧客に特有ではないデータおよびメタデータを含むこのデータは、そのデータがディスク上に記憶されるのに先立って、従来、データベースシステムに関連付けられたキー(すなわち、データ暗号化キー)を使用して暗号化される。データ暗号化キーは、データベースシステムのプロバイダによって生成され、そのキーに対応する復号キーは、データベースにローカルで記憶される。
【発明の概要】
【発明が解決しようとする課題】
【0006】
そのようなデータベースインスタンスレベルの暗号化の特徴のテナントレベルでの提供を容易化するシステムが、所望される。
【課題を解決するための手段】
【0007】
永続ストレージシステムと、
行ストアデータベーステーブルの複数のデータページを記憶する揮発性メモリと、
データベースインスタンスのプログラムコードを実行して、データベースシステムに、
複数のデータページのうちの1つのデータページに関連付けられた第1の暗号化キーを、複数のデータページのうちの1つのデータページのヘッダに基づいて特定すること、
第1の暗号化キーを使用して複数のデータページのうちの1つのデータページの本文を暗号化すること、および
ヘッダと、暗号化された本文とを備えるデータページを永続ストレージシステムに記憶することを行わせる処理ユニットと
を備えるデータベースシステムを提供する。
【図面の簡単な説明】
【0008】
図1】一部の実施形態によるネイティブマルチテナント行テーブル暗号化を提供するデータベースシステムを示すブロック図である。
図2A】一部の実施形態による、テナント識別ヘッダ部分を含む暗号化されていないデータページを例示する図である。
図2B】一部の実施形態による、キー識別ヘッダ部分を含む暗号化されたデータページを例示する図である。
図3A】一部の実施形態による、キー識別ヘッダ部分を含む暗号化されていないredoログエントリを例示する図である。
図3B】一部の実施形態による、キー識別ヘッダ部分を含む暗号化されたredoログエントリを例示する図である。
図4】一部の実施形態による、redoログエントリを暗号化して、記憶するプロセスを示すフローチャートである。
図5】一部の実施形態による、データページを暗号化して、記憶するプロセスを示すフローチャートである。
図6A】一部の実施形態による、データベース再起動中にデータページを復号するプロセスを示すフローチャートである。
図6B】一部の実施形態による、データベース再起動中にredoログエントリを復号するプロセスを示すフローチャートである。
図6C】一部の実施形態による、データベース再起動中にundoページを復号するプロセスを示すフローチャートである。
図7】一部の実施形態によるネイティブマルチテナンシーおよびテナントレベルの暗号化を可能にするデータベースシステムを示すブロック図である。
図8】一部の実施形態によるクラウドベースのシステムを示すブロック図である。
【発明を実施するための形態】
【0009】
以下の説明は、任意の当業者が、説明される実施形態を作成し、使用することを可能にすべく提供される。しかし、様々な変形形態が、当業者には直ちに明白となろう。
【0010】
一般に、活動的に処理されていないすべてのデータベースシステムデータ(すなわち、「休んでいる」データ)は、暗号化されて永続ストレージに存在し、各データベーステナントのデータは、そのデータ独自のテナント特有のキーを用いて暗号化される。すべてのテナントによって共有されるデータおよびメタデータ(例えば、データベースカタログ、ユーザ、共有されるコンテナ)は、データベースインスタンス特有のキーを使用して永続ストレージにおいて暗号化されてよい。
【0011】
そのような暗号化は、サードパーティ侵害の場合にデータ漏洩を防止し、防御をもたらしうる。キーは、データベースプロバイダによる顧客データへのアクセスを防止すべく、顧客によって供給され、コントロールされうる(例えば、取り消される)。データベースシステムが2名以上の顧客のデータを含み得る、マルチテナントシナリオにおいて、特定の顧客によるキーの取消しは、その特定の顧客のデータだけをアクセス不能にすべきである。そのような顧客コントロールは、機密の顧客データが公になり、データ漏洩の源が特定され得ない場合にデータベースプロバイダの潜在的な法的責任を軽減する可能性がある。
【0012】
実施形態が、暗号化されたデータの永続的な記憶に先立つ、テナント特有の暗号化キーを使用するテナント特有のデータおよびログの暗号化、および復号されたデータを揮発性メモリにロードすることに先立つ、テナント特有の復号キーを使用する永続的に記憶された、暗号化されたテナント特有のデータおよびログの復号を容易化する。一部の実施形態によれば、行ストアデータベーステーブルの各データページのヘッダが、行ストアデータベーステーブルが関連付けられたテナントの識別子を含む。永続ストレージにデータページを記憶することに先立って、その識別子が、暗号化キーを特定するのに使用され、暗号化キーは、データページの本文(ヘッダではなく)を暗号化するのに使用される。次に、暗号化されていないヘッダと、暗号化された本文とから成るデータページが、永続ストレージに記憶される。
【0013】
逆に、例えば、データベース再起動において、永続ストレージからメモリにデータページをロードするために、記憶されたデータページのヘッダが、対応する復号キーを特定すべく読み取られる。復号キーが、データページの本文を復号するのに使用される。次に、今やヘッダと、暗号化されていない本文とから成るデータページが、メモリにロードされてよい。
【0014】
一部の実施形態によれば、ネイティブマルチテナントデータベースシステムが、アプリケーション層上にマルチテナントアーキテクチャを実装することを容易化するデータベースレベルテナントオブジェクト(例えば、データベースカタログオブジェクト)を含む。テナントオブジェクトは、テナントに割り当てられているデータおよびメタデータアーティファクトの論理上のコレクションである。テナントは、第1クラスのデータベースオブジェクト(すなわち、他のいずれのデータベースエンティティとも無関係の識別情報を有する)として開示されてよい。
【0015】
テナントオブジェクト(すなわち、特定のテナント)の特定のインスタンス化に割り当てられたデータベースアーティファクトは、1つまたは複数のスキーマのデータ、テーブル、およびパーティション、ならびにテナントのテーブル上のビューを定義するメタデータ、仮想テーブル、キャッシュ、遠隔の源、テナントのデータベースオブジェクトに関するリソース使用を統制すべく使用される作業負荷クラス、データベースユーザを、含んでよいが、これらには限定されない。有利なこととして、テナントのライフサイクルは、テナントに割り当てられたデータベースアーティファクトのライフサイクルから切り離されてよい。しかし、一部の実施形態において、データベースインスタンスからテナントを脱落させることは、テナントに割り当てられたアーティファクトを脱落させることを、それらのアーティファクトがデータベースインスタンスの別のテナントに割り当てられているのでない限り、もたらす。
【0016】
ネイティブマルチテナントデータベースシステムは、1つまたは複数のデータベースインスタンス、すべてのテナントのデータ、およびデータを処理するためのエンジンを含んでよい。また、単一のシステムは、すべてのテナントのデータに関する単一の永続記憶も含む。顧客ではなく、多数の独立したテナントが単一のインスタンス上でホスティングされて、計算リソースを共有することを可能にすることにより、データベースインスタンスへの新たなテナントの展開が、ほぼゼロの限界費用に関連付けられる。このことは、異なるテナント間の物理的な隔離が低下するという犠牲を払ってもたらされる。さらに、実施形態は、別個のデータベースインスタンスをプロビジョニングするのに要求されるモデルと比べて、より細かい粒度を有するペイパーユース(pay-per-use)モデルを可能にする。
【0017】
一部の実施形態によるデータベースシステムは、さもなければ、アプリケーションによって実装されることを必要とする、テナントレベルのデータベース動作に対する要求をサポートする。これらの動作は、テナント作成、テナント脱落、テナント移動、バックアップからのテナント復元、テナントクローン、テナントサイズ変更、およびテナントリソース制限を含んでよい。一部の実施形態において、共有されるサービスは、例えば、関連付けられたテナントIDを使用してデータベースシステムからこれらのテナントレベルの動作を要求すべくマルチテナントアプリケーションによって呼び出されるAPIを開示する(例えば、RESTを介して)。現在のデータベースシステムDDLが、テナントに対するデータベースアーティファクトの割当てをサポートすべく拡張されてよい。
【0018】
図1は、一部の実施形態によるシステム100のブロック図である。システム100および本明細書において図示される他のすべてのアーキテクチャの例示される要素は、知られている、または知られることになるコンピューティングハードウェアおよび/またはプロセッサ実行可能プログラムコードの任意の適切な組合せを使用して実装されてよい。そのような組合せは、1つまたは複数のプログラマブルプロセッサ(マイクロプロセッサ、中央処理装置、マイクロプロセッサコア、実行スレッド)、1つまたは複数の非一過性の電子記憶媒体、およびプロセッサ実行可能プログラムコードを含んでよい。一部の実施形態において、システム100の2つ以上の要素が、単一のコンピューティングデバイスによって実装され、および/またはシステム100の2つ以上の要素が、併置される。システム100の1つまたは複数の要素が、クラウドベースのリソース、および/またはデマンド、ニーズ、価格、および/または他の任意のメトリックにより計算リソースを弾力的に配分する他のシステムを使用してクラウドサービス(例えば、ソフトウェアアズアサービス、プラットフォームアズアサービス(Platform-as-a-Service))として実装されてよい。
【0019】
データベースインスタンス110が、一部の実施形態によるネイティブマルチテナンシーを提供する。データベースインスタンス110は、1つまたは複数のコンピュータサーバまたは仮想マシンを含む、ハードウェアとソフトウェアの任意の適切な組合せの上でプロビジョニングされてよい。一部の実施形態において、データベースインスタンス110は、ソフトウェアコンテナ内で実行されるコンテナ化されたアプリケーションを備える。そのようなコンテナは、当技術分野において知られるクラスタ(例えば、Kubernetesクラスタ)の1つまたは複数のノードによって実装されてよい。
【0020】
データベースインスタンス110は、揮発性(例えば、ランダムアクセス)メモリ112に記憶されたデータを処理するためのデータエンジン111を含む。メモリ112は、データベースインスタンス110に割り当てられたすべてのテナントのテーブル、スキーマ、およびメタデータを含むデータ113を含む。データエンジン111は、データ113に記憶された行ストアテーブルを処理するための行ストアエンジンと、データ113に記憶された列ストアテーブルの列を処理するための列ストアエンジンとを含んでよい。当技術分野において知られるとおり、行ストアテーブルの各行のデータは、メモリ112の隣接するメモリロケーションに記憶され、列ストアテーブルの列のデータは、メモリ112の隣接するメモリロケーションに記憶される。
【0021】
システム100の各テナントについては、顧客に対応するものとして説明され、顧客は、企業、部門、作業グループ、または他の任意のグループのユーザであってよい。テナントは、所与の顧客の特定のクラウドリソース/サービスサブスクリプションに対応してよい。これに関して、顧客は、複数のサブスクリプションに関連付けられてよく、したがって、複数のテナントに関連付けられてよい。
【0022】
データ113は、メタデータにおいて定義されたテナントオブジェクトの多数のインスタンスを含む。各テナントインスタンスは、データベースアーティファクトのコレクションであり、各テナントインスタンスに割り当てられたアーティファクトは、データ113内に記憶される。テナントインスタンスに割り当てられたデータベースアーティファクトは、例えば、1つまたは複数のスキーマ、テーブル、およびパーティションを含んでよい。また、データベースアーティファクトは、テナントのテーブル上のビューを定義するメタデータ、仮想テーブル、キャッシュ、遠隔の源、テナントのデータベースオブジェクトに関するリソース使用を統制すべく使用される作業負荷クラス、およびデータベースユーザを含んでもよい。
【0023】
行ストアテーブルのデータは、リンクされた論理ページのセットとしてデータ113に記憶される。一部の実施形態によれば、各ページは、16kBのサイズである。当技術分野において知られるとおり、各ページは、ヘッダと、本文とを含む。ヘッダは、例えば、論理ページ番号、ならびに前のページに対するポインタ、および次の論理ページに対するポインタなどのページメタデータを含む。本文は、ページに関連付けられた行ストアテーブルの実際のデータを含む。
【0024】
マルチテナントアプリケーション130は、SaaSアプリケーションを備えてよいが、実施形態は、これに限定されない。マルチテナントアプリケーション130は、1つまたは複数のコンピュータサーバまたは仮想マシンの上にプロビジョニングされてよく、ソフトウェアコンテナ内で実行されるコンテナ化されたアプリケーションを備えてよい。マルチテナントアプリケーション130は、顧客140および150のユーザ145および155からそれぞれ受け取られた入力に基づいて、データベースインスタンス110に対してクエリ(例えば、SQL、MDX)を発行する。
【0025】
顧客A 140が、データベースインスタンス110の第1のテナントに対応し、顧客B 150が、データベースインスタンス110の第2のテナントに対応するものと想定される。顧客A 140のユーザ145から入力が受け取られると、マルチテナントアプリケーション130は、データベースインスタンス110に第1のテナントとの関連付けを示すクエリを送信してよい。同様に、顧客B 150のユーザ155から入力が受け取られると、マルチテナントアプリケーション130は、データベースインスタンス110に、クエリを、そのクエリが第2のテナントに関連付けられているという表示と一緒に送信してよい。
【0026】
したがって、マルチテナントアプリケーション130は、入力が受け取られたユーザに対応するテナントを特定することができる。例えば、各ユーザは、テナント特有のサブスクリプションを使用してマルチテナントアプリケーション130にログオンしてよい。したがって、マルチテナントアプリケーション130は、ユーザを、ユーザがログオンするのに用いたサブスクリプションのテナントに関連付ける。別の実施例において、ユーザとマルチテナントアプリケーション130の間の通信は、テナントを識別するトークンを含んでよい。
【0027】
また、マルチテナントアプリケーション130は、いずれのテナントがいずれのデータベースインスタンス上に配置されているかを意識してもいる。これに関して、マルチテナントアプリケーション130は、データベースインスタンスのプロビジョニング、およびプロビジョニングされたデータベースインスタンス上のテナントの作成を要求してよい。所与のテナントに関連付けられたユーザから入力を受け取ると、マルチテナントアプリケーション130は、所与のテナントを含み、したがって、対応するクエリが向けられるべきデータベースインスタンスを特定することができる。
【0028】
マルチテナントアプリケーション130からクエリが受信されると、データベースインスタンス110は、データエンジン111、およびクエリが関連付けられた特定のテナントに割り当てられているアーティファクト(例えば、行ストアテーブル)を使用してクエリを処理する。アプリケーションから受信されるクエリは毎回、メモリ112におけるデータに対するトランザクションから成り、トランザクションは、データ113内に記憶されたログセグメントのログエントリとしてログ記録される。データページのトランザクション前のバージョンが、undoデータページとして記憶され、トランザクションによって変更されたデータページに「ダーティ」として印が付けられる。周期的に、当技術分野において知られるとおり、セーブポイントが、データ113のダーティデータページおよび対応するundoデータページを永続ストレージ120に書き込むことによって作成される。
【0029】
永続ストレージ120は、割り当てられたすべてのテナントの暗号化されたデータを永続記憶する。永続ストレージ120は、分散型データストレージシステムを含むが、これには限定されない、知られている、または知られることになる任意の永続データストレージシステムを使用して実装されてよい。永続ストレージ120は、データボリューム122と、ログボリューム124とを含む。
【0030】
一部の実施形態によれば、行ストアテーブルに関連付けられた各ページのヘッダが、暗号化キーペアを特定するのに使用されることが可能な識別子を含む。本明細書において使用される暗号化キーペアは、暗号化キーと、暗号化キーに関連付けられた復号キーとを含んでよく、または暗号化と復号のために使用される単一の非対称キーを含んでよい。暗号化キーペアは、ローカルストレージ160の暗号化キー165の間に記憶されてよい。セーブポイントにおいて、メモリ112に記憶された各ダーティデータページおよび各undoデータページに関して、ページ管理構成要素114が、データページのヘッダにおける識別子を獲得し、その識別子に基づいて暗号化キー165の暗号化キーペアを特定し、キーペアの暗号化キーを使用して、データページの本文を暗号化する。次に、ページ管理構成要素114は、暗号化されていないヘッダと、暗号化された本文とを含むデータページを、永続ストレージ120のデータボリューム122内に記憶する。
【0031】
一部の事例において、記憶されるべきデータページは、任意の特定のテナントに関連付けられず、そのデータページのヘッダの識別子は、そのデータページが割り当てられていないことを示す。そのようなデータページを暗号化すべく、ページ管理構成要素114は、いずれかの特定のテナントにではなく、データベースインスタンス110に関連付けられた暗号化キー165の暗号化キーペアを特定し、データボリューム122内に記憶するのに先立って、このキーペアの暗号化キーを使用して、割り当てられていないデータページの本文を暗号化する。したがって、データボリューム122は、特定のテナントに割り当てられた行ストアテーブルの暗号化されたデータページおよびundoデータページ、ならびにデータベースインスタンス110のいずれの特定のテナントにも割り当てられていない行ストアテーブルの暗号化されたデータページおよびundoデータページを含む。
【0032】
所与のテナントに関連付けられた暗号化キーペアは、所与のテナントが作成されると、生成されて、ストア160に記憶されてよい。同様に、データベースインスタンス110に関連付けられた暗号化キーペアは、データベースインスタンス110の作成時に生成されてよい。
【0033】
ロガー構成要素115が、コミットされた各トランザクションに関してログエントリをログボリューム124に書き込む。そのようなログエントリは、redoログエントリとして参照され、1つの行ストアテーブル上でトランザクションに関連付けられる。redoログエントリは、トランザクションの開始時刻、およびトランザクションがコミットされたか、または中止されたかの標識などのヘッダ情報を含んでよく、また、トランザクションからもたらされる更新されたテーブルデータも含む。
【0034】
また、各ログエントリは、暗号化キー165の暗号化キーペアを特定するのに使用されることが可能な識別子を含んでもよい。ロガー115が、ログボリューム124にログエントリを保存することになると毎回、ロガー115は、ログエントリの識別子を獲得し、その識別子に基づいて暗号化キー165の暗号化キーペアを特定し、キーペアの暗号化キーを使用してログエントリの更新されたテーブルデータを暗号化する。次に、ロガー115は、暗号化されていないヘッダ情報と、暗号化された、更新されたテーブルデータとを含むログエントリをログボリューム124内に記憶する。
【0035】
データベースインスタンス110の再起動時に、ページ管理構成要素114が、データボリューム122から最新のセーブポイントの行ストアテーブルデータページを読み取り、そのデータページをメモリ112にロードする。各データページの本文は、暗号化されたフォーマットでデータボリューム122に記憶されるので、データページをメモリ112にロードするのに先立って、各データページの本文を復号する必要がある。したがって、セーブポイントの記憶された各データページに関して、ページ管理構成要素114は、データページのヘッダにおける識別子を使用してキー165の復号キーを識別し、その復号キーを使用してデータページの本文を復号する。次に、ヘッダおよび復号された本文が、メモリ112にロードされる。
【0036】
次に、前回のセーブポイントにおいてデータボリューム122に記憶され、コミットされていないトランザクションに関連付けられたundoデータページが、識別される。ページ管理構成要素114は、各undoデータページのヘッダにおける識別子を使用して対応する復号キーを識別し、その復号キーを使用してundoデータページの本文を復号する。次に、復号されたundoデータページが、コミットされていないトランザクションをデータ113内の復号されたundoデータページによって表される状態にロールバックすべく、データベースインスタンス110のロールバック機構に供給される。
【0037】
ロガー115が、前回のセーブポイント以来、コミットされたトランザクションに関連付けられたログエントリがないかログボリューム124を探索する。識別された各ログエントリに関して、ロガー115は、ログエントリヘッダ情報の識別子を使用してキー165の復号キーを識別し、その復号キーを使用してログエントリのデータを復号する。次に、ヘッダ情報および復号されたデータが、復号されたデータに基づいてデータ113を更新すべく、ログリプレイ機構に供給される。
【0038】
その結果、データベースインスタンス110は、データベースインスタンス110のすべてのテナントのデータおよびメタデータ、データを処理するためのエンジン、ならびにデータおよびメタデータに関する単一の永続記憶を含む単一のデータサーバをもたらす。そのような単一のデータベースインスタンス上で多数の独立のテナントをホスティングすることは、ほぼゼロの限界費用で計算リソースの共有を容易化する。
【0039】
図2Aは、一部の実施形態による暗号化されていないデータページ200の概念的な例示である。データページ200は、メモリ112に記憶されてよく、行ストアテーブルデータのデータページを備えてよい。データページ200は、当技術分野において知られる論理ページ番号に関連付けられる。データページ200は、前述したとおり、undoデータページを備えてよい。データページ200は、ヘッダ210と、本文220とを含み、本文220は、実際のテーブルデータを記憶し、ヘッダ210は、本文220のデータに関連付けられたメタデータを記憶する。
【0040】
ヘッダ210は、キー識別ヘッダ部分212を含む。ヘッダ部分212は、本文220のデータを暗号化すること、および復号することに使用されるべき暗号化キーペアを特定するのに適した任意の情報を記憶してよい。情報は、テナント(データベースインスタンス110のメタデータによって暗号化キーペアに関連付けられた)の識別子、キーペア自体の識別子、またはキーペアと1対1関係を有する別のエンティティの識別子を備えてよい。一部の実施形態において、ヘッダ部分212は、8バイト値を記憶する。
【0041】
データ113内で行ストアテーブルが作成されると、キー識別ヘッダ部分212に、データベースインスタンス110に関連付けられたデータベース特有のキーペアの識別子がポピュレートされてよい。その後、行ストアテーブルがテナントに割り当てられた場合、識別子の値が、テナントの(または、例えば、テナントに関して作成されたキーペアの)識別子に更新される。一部の実施形態において、行ストアテーブルは、その作成時にテナントに割り当てられ、その場合、ヘッダ部分212に、テナント(または関連付けられたキーペア)の識別子が初期にポピュレートされる。
【0042】
図2Bは、一部の実施形態による暗号化されたデータページ230の概念的な例示である。暗号化されたデータページ230は、図2Aのページ200の暗号化されたバージョンであり、ページ200と同一の論理ページ番号を表す。例えば、永続ストレージにデータページ200を記憶するため、本文220が、ヘッダ部分212内の識別子によって識別された暗号化キーを使用して暗号化され、本文240がもたらされる。同様に、記憶されたデータページ230をメモリにロードするのに先立って、本文240は、ページ230のヘッダ部分212内の識別子によって識別された復号キーを使用して復号され、本文220がもたらされる。有利なこととして、キー識別子を含むヘッダ210は、決して暗号化されず、データページ200および230に関連付けられたキーペアを特定するために常に読み取られることが可能である。
【0043】
図3Aは、一部の実施形態による暗号化されていないredoログエントリ300を例示する。redoログエントリ300は、当技術分野において知られるとおり、データベースインスタンス110の動作中にメモリ112に記憶されたログセグメントを備えてよい。これに関して、すべてのデータ変更は、メモリ112のredoログバッファにおけるログセグメントに記録される。
【0044】
各redoログエントリは、ヘッダ310と、トランザクションによってもたらされたデータベーステーブルに対するデータ変更を記述するredoログデータ320とを含む。各ヘッダ310は、識別子(例えば、データベーステーブルが割り当てられたテナントの識別子)を記憶するキー識別ヘッダ部分312を含む。識別子は、redoログデータ320を暗号化すること、および復号することに使用するための暗号化キーペアを識別するのに使用可能である。
【0045】
データベーストランザクションがコミットされたとき、そのトランザクションに対応するredoログエントリが、永続ストレージに保存される。また、トランザクションがコミットされているか否かにかかわらず、redoログバッファが或るサイズに達すると、redoログバッファのログセグメントが、永続記憶されてもよい。redoログエントリは、永続ストレージに記憶するのに先立って暗号化される。
【0046】
図3Bは、一部の実施形態による、キー識別ヘッダ部分を含む暗号化されたredoログエントリ330の概念的な例示である。暗号化されたログエントリ330は、図3Aのログエントリ300の暗号化されたバージョンを備える。
【0047】
永続ストレージにログエントリ300を記憶するため、各redoログデータ部分320が、それに対応するヘッダ部分312内の識別子によって識別された暗号化キーを使用して暗号化され、暗号化されたredoログデータ340がもたらされる。データベース再起動時に、記憶された暗号化されたログエントリをデータベースインスタンス110のリプレイ機構に渡すのに先立って、暗号化されたredoログデータ340が、対応するヘッダ部分312内の識別子によって識別された復号キーを使用して復号され、復号されたデータ320がもたらされる。この場合も、各ログエントリのヘッダ310は、決して暗号化されないので、部分312は、所与のredoログエントリの暗号化および復号のために使用されるべきキーペアを特定するために常に読み取られることが可能である。
【0048】
図4は、一部の実施形態による、テナント特有のログエントリを暗号化して、記憶するプロセスのフローチャートである。プロセス400、および本明細書において言及される他のすべてのプロセスは、1つまたは複数の処理ユニット(例えば、プロセッサ、プロセッサコア、プロセッサスレッド)によって実行可能なプログラムコードとして実現されてよく、ハードディスクドライブ、揮発性もしくは不揮発性のランダムアクセスメモリ、DVD-ROM、フラッシュドライブ、および磁気テープなどの非一過性のコンピュータ可読媒体のうちの1つまたは複数から読み取られてよく、その後、圧縮されたフォーマット、コンパイルされていないフォーマットおよび/または暗号化されたフォーマットで記憶されてよい。一部の実施形態において、一部の実施形態によるプロセスの実装のためのプログラムコードの代わりに、またはそのようなプログラムコードとの組合せで、ハードワイヤードの回路が使用されてよい。したがって、実施形態は、ハードウェアとソフトウェアのいずれの特定の組合せにも限定されない。
【0049】
初期に、S410において、永続記憶されるべきredoログエントリが受け取られる。ログエントリは、ロガー115などのデータベースインスタンスのロガーによって受け取られてよい。また、ロガー115は、プロセス400の残りのステップを実行してもよいが、実施形態は、そのように限定されない。ログエントリは、前述したとおり、コミットされたトランザクションに対応してよく、またはログバッファをフラッシュすることのためにログバッファの他のログエントリと一緒に受け取られてよい。
【0050】
ログエントリのヘッダに基づいて、ログエントリのための暗号化キーがS420において特定される。前述したとおり、各redoログエントリは、暗号化キーペアを特定するのに使用可能な識別子を記憶するヘッダ部分を含んでよい。識別子は、データベーステナントを識別してよく、またはログエントリに関連付けられたデータベーステーブルがいずれのデータベーステナントにも割り当てられていないことを示してよい。データベーステナントを識別する事例において、データベーステナントに関連付けられた暗号化キーが、S420において特定される。データベーステーブルがいずれのデータベーステナントにも割り当てられていない事例において、データベースインスタンスに関連付けられ、いずれの特定のテナントにも関連付けられていない暗号化キーが、S420において特定される。
【0051】
ログエントリのデータが、S430において、特定された暗号化キーを使用して暗号化される。データは、redoログエントリに関連付けられた、コミットされたトランザクションのデータから成る。ヘッダは、暗号化されず、したがって、ヘッダ内の識別子は、永続ストレージから読み取られることが可能であり、後の時点でデータを復号するのに使用されることが可能である。これに関して、ログエントリは、S440において永続ストレージに保存される。保存されたログエントリは、S410において受け取られたヘッダと、S430において暗号化されたデータとから成る。
【0052】
図5は、一部の実施形態による、行ストアテーブルのデータページを暗号化して、記憶するプロセスのフローチャートである。永続記憶されるべきデータページが、S510において受け取られる。データページは、セーブポイントを作成するためのプロセス中にページ管理構成要素114によって受け取られてよい。これに関して、受け取られたデータページは、前回のセーブポイント以来、変更されているデータページ、またはundoデータページを備えてよい。
【0053】
データページに関する暗号化キーが、データページのヘッダに基づいてS520において特定される。S520における特定は、ヘッダの或る部分に、そこに記憶された識別子を探し出すべくアクセスすること、およびその識別子に基づいて暗号化キーペアを特定することから成ってよい。例えば、識別子は、データページに関連付けられた行ストアテーブルに割り当てられたデータベーステナントを識別してよい。代替として、識別子は、行ストアテーブルがいずれのデータベーステナントにも割り当てられていないことを示してよい。したがって、識別子に基づいて、データベーステナントに関連付けられた暗号化キー、またはデータベースインスタンスに関連付けられた暗号化キーが、S520において特定される。
【0054】
行ストアテーブルデータから成るデータページの本文が、特定された暗号化キーを使用してS530において暗号化される。データページのヘッダは、暗号化されず、したがって、ヘッダ内の識別子は、永続ストレージから読み取られることが可能であり、必要とされるときに本文を復号するのに使用されることが可能である。ヘッダと、暗号化された本文とを含むデータページが、S540において永続ストレージに保存される。
【0055】
図6Aないし図6Cは、一部の実施形態による、データベース再起動中にデータページ、redoログエントリ、およびundoページを復号するプロセスのフローチャートを示す。データベース再起動が、S602において検出され、応答して、前回のセーブポイントの永続記憶されたページが、S604において特定される。一部の実施形態において、ページ管理構成要素114が、S604において、データボリューム122から前回のセーブポイントの行ストアテーブルデータページを特定する。各データページの本文は、暗号化されたフォーマットでデータボリューム122に記憶されるので、データページをメモリ112にロードするのに先立って、各データページの本文を復号することが必要である。
【0056】
したがって、特定されたデータページのうちの1つに関する復号キーが、S606において特定される。ページ管理構成要素114が、前述したとおり、S606においてデータページのヘッダにおける識別子を使用してキー165の復号キーを識別してよい。データページの本文が、データページの本文を復号すべき特定された復号キーを使用して、S608において復号される。次に、S610において、ヘッダと、復号された本文とを含むデータページが、メモリ112にロードされる。
【0057】
特定された他のデータページが復号されて、メモリにロードされるべく残っている場合、フローは、S612からS606に戻る。したがって、フローは、特定されたすべてのデータページが復号されて、メモリにロードされるまで、S606ないしS612の間で循環する。実施形態は、前述したとおり、各データページを順次に復号すること、およびロードすることに限定されない。例えば、データページ(例えば、同一の復号キーを使用して復号されるべきデータページ)のバッチが、第1のステップにおいて復号されてよく、その後、次のステップにおいてメモリにロードされてよい。フローは、特定されたすべてのデータページが復号されて、メモリにロードされた後、S614に進む。
【0058】
S614において、ロガー115が、前回のセーブポイント以来、コミットされたトランザクションに関連付けられたredoログエントリを特定すべくログボリューム124を探索してよい。特定されたログエントリに関して、ロガー115は、ログエントリヘッダ情報内に記憶された識別子を使用してキー165の復号キーを特定する。特定された復号キーが、S618においてログエントリのデータを復号するのに使用される。次に、ヘッダおよび復号されたデータが、復号されたredoログエントリデータに基づいてデータ113を更新すべく、データベースインスタンス110のredoログリプレイ機構に供給される。
【0059】
フローは、S614において特定された他のredoログエントリが、復号されて、メモリにロードされるべく残っている場合、S622からS616に戻る。したがって、フローは、特定されたすべてのredoログエントリが復号されて、ログリプレイヤに供給されるまで、S616ないしS622の間で循環する。実施形態は、特定された各redoログエントリを順次に復号して、供給することに限定されるのではなく、redoログエントリは、バッチ処理されてよい。
【0060】
特定されたすべてのredoログエントリが復号されて、ログリプレイヤに供給されると、前回のセーブポイントにおいてデータボリューム122に記憶され、コミットされていないトランザクションに関連付けられたundoデータページが、S624において特定される。ページ管理構成要素114が、S626において、特定されたundoデータページのヘッダにおける識別子を使用して対応する復号キーを識別してよい。その後、undoデータページの本文が、S628において復号キーを使用して復号される。次に、S630において、ヘッダと、復号された本文とを含む復号されたundoデータページが、データ113において反映されるコミットされていないトランザクションを、復号されたundoデータページによって表される状態にロールバックすべく、データベースインスタンス110のロールバック機構に供給される。
【0061】
フローは、特定された他のundoデータページが処理されるべく残っている場合、S626に戻る。したがって、フローは、特定されたすべてのundoデータページが復号されて、ロールバック機構に供給されるまで、S626ないしS632の間を循環する。この場合も、特定された複数のundoデータページが、S626、S628および/またはS630においてバッチ処理されてよい。
【0062】
図7は、一部の実施形態による、ネイティブマルチテナンシーおよびテナントレベル暗号化を可能にするデータベースシステムのブロック図である。データベースインスタンス750が、データ113およびメモリ112に関して前述したとおり、揮発性メモリ751内にデータ752を記憶する。データベースインスタンス750のデータエンジンは、簡明のため図7から省かれている。
【0063】
データベースインスタンス750の各テナントインスタンスは、顧客710のうちのそれぞれの顧客に対応する。顧客A 711が、キーユーザ712と、ビジネスユーザ713とを含み、顧客N 717が、キーユーザ718と、ビジネスユーザ719とを含む。一部の実施例において、キーユーザ712は、データベースインスタンスのプロビジョニングを要求すべくマルチテナントアプリケーション720にアクセスしてよい。この要求は、サービスマネージャ730およびクラウドサービスブローカ740に転送される。その後、クラウドサービスブローカ740が、データベースインスタンス750をクラウドベースのリソースとしてプロビジョニングする。
【0064】
その後、テナントオブジェクトインスタンスが、データベースインスタンスにおいて作成されてよい。前段の実施例を続けると、キーユーザ712が、データベースインスタンス750上でテナントの作成を要求すべく、マルチテナントアプリケーション720にアクセスしてよい。この要求は、サービスマネージャ730、サービスブローカ760、およびテナント管理サービス770に転送される。その後、テナント管理サービス770が、データ752のメタデータにおいて定義されたテナントオブジェクトに基づいてテナントAのインスタンスを作成するようデータベースインスタンス750に命令する。テナントAのインスタンスは、データベースインスタンス750およびマルチテナントアプリケーション720に知られているテナントIDによって識別されてよい。
【0065】
一部の実施形態は、テナントインスタンスに割り当てるべきデータベースアーティファクトを定義すべく展開インフラストラクチャを使用してよい。展開インフラストラクチャは、コンテナを使用してデータベースオブジェクトを(例えば、デザイン時アーティファクトとして)定義するための宣言アプローチを提供してよい。例えば、サービスブローカ760が、その後、テナントインスタンスに割り当てられてよい、データベーススキーマおよびさらなるメタデータ(例えば、ユーザ、役割、特権)に対応するコンテナを作成してよい。そのようなコンテナは、スキーマレベルのアクセス特権によって互いに隔離されてよい。アプリケーション720は、割り当てられたスキーマごとの技術データベースユーザ(assigned per-schema technical database user)を使用することによってコンテナのデータベーススキーマにおける任意のデータベースオブジェクトにアクセスすることができる。
【0066】
データベースインスタンス750をプロビジョニングして、テナントAおよびテナントNを作成した後、マルチテナントアプリケーション720は、例えば、顧客A 711のビジネスユーザ713から入力を受け取ってよい。応答して、アプリケーション720は、もたらされるあらゆるクエリをテナントAの識別子と一緒に、テナント管理サービス770を介してデータベースインスタンス750に向ける。したがって、データベースインスタンス750は、テナントインスタンスAに割り当てられたアーティファクトに基づいてクエリに応答する。マルチテナントアプリケーション720が、顧客N 717のビジネスユーザ719から入力を受け取る事例において、もたらされるあらゆるクエリは、テナントインスタンスNに割り当てられたアーティファクトに基づいて、データベースインスタンス750に向けられ、応答される。
【0067】
永続記憶754は、任意の適切なストレージシステムまたは複数のストレージシステムを使用して実装されてよい。永続記憶754のデータボリューム755は、テナントに割り当てられたすべてのデータベースオブジェクト、および特定のテナントに割り当てられていないすべてのデータベースオブジェクトのデータ756を記憶する。ログボリューム757が、すべてのデータベースオブジェクトと関係するコミットされたトランザクションに対応するredoログ758を記憶する。前述したとおり、データ756およびredoログ758は、暗号化される。具体的には、従来のシステムとは対照的に、テナント特有のデータ756およびredoログ758は、それらの対応するテナント(例えば、DEK AおよびDEK N)に特有であるデータ暗号化キー(DEK)を使用して暗号化され、いずれのテナントにも特有ではないデータ756およびredoログ758は、データベースインスタンス750に特有であるDEK(例えば、DEK DB)を使用して暗号化される。
【0068】
一部の実施形態によれば、DEK DBは、データベースインスタンス750の作成中に生成されるパブリック-プライベートキーペアであり、テナント特有のキーDEK AおよびDEK Nは、テナントAおよびテナントNの作成中にそれぞれ生成されるパブリック-プライベートキーペアである。キーペアのパブリックキーは、データ752およびredoログを、永続記憶754に記憶するのに先立って暗号化するのに使用され、プライベートキーは、記憶されたデータ756およびログ758を復号するのに使用される。
【0069】
一部の実施形態において、キーペアのプライベートキー(すなわち、復号キー)は、暗号化された形態でセキュアストア780の永続記憶785に記憶される。例えば、データベースインスタンスプロバイダ790のキーユーザ795が、キーボールト(key vault)794に記憶するためにキー管理システム792にキー暗号化キー(KEK)DBを提供する。KEK DBは、DEK DBのプライベートキーを、セキュアストア永続記憶785にそれを記憶するのに先立って、暗号化するのに使用される。また、KEK DBは、プライベート-パブリックキーペアを備えてもよく、キーボールト794が、KEK DBのプライベートキーを記憶する一方で、対応するパブリックキーは、DEK DBのプライベートキーを、それをセキュアストア永続記憶785に記憶するのに先立って、暗号化するのに使用される。
【0070】
したがって、データベースインスタンス750は、データベースインスタンス750がテナントに割り当てられていないデータページまたはredoログを復号することを所望するとき、セキュアストア780からDEK DBのプライベートキーを要求する。応答して、セキュアストア780は、KEK DBのプライベートキーを使用して、DEK DBの記憶された暗号化されたプライベートキーを復号するようキー管理システム792に要求する。その後、データベースインスタンス750が、DEK DBの復号されたプライベートキーを使用して、所望されるテナントに割り当てられていないデータページまたはredoログを復号する。
【0071】
同様に、顧客A 711のキーユーザ712が、キーボールト794に記憶するためにキー管理システム792にKEK Aを提供する。KEK Aは、DEK Aのプライベートキーを、それをセキュアストア永続記憶785に記憶するのに先立って、暗号化するのに使用される。KEK Aは、プライベート-パブリックキーペアを備えてよく、キーボールト794が、KEK Aのプライベートキーを記憶する一方で、対応するパブリックキーは、DEK Aのプライベートキーを、それをセキュアストア永続記憶784に記憶するのに先立って、暗号化するのに使用される。
【0072】
データベースインスタンス750が、テナントAに関連付けられた、データ756のデータページまたはログ758のredoログを復号するためにセキュアストア780からDEK Aのプライベートキーを要求してよい。一実施例において、そのようなデータページまたはredoログのヘッダは、テナントAを識別する識別子を含み、データベースインスタンス750は、テナントAがDEK Aに関連付けられていることを意識している。要求に応答して、セキュアストア780は、KEK Aのプライベートキーを使用してDEK Aの記憶された暗号化されたプライベートキーを復号するようキー管理システム792に要求する。要求は、顧客A 711に特有であるキー管理システム792のアカウントに発行されてよい。その後、データベースインスタンス750が、DEK Aの復号されたプライベートキーを使用してデータ756の所望されるデータ、またはログ758の所望されるログを復号する。したがって、顧客Aが、キーボールト794からKEK Aを取り消した場合、キー管理システム792は、記憶されたプライベートキーDEK Aを復号することができず、その結果、データベースインスタンス750は、テナントAに特有であるデータを復号することも、redoログを復号することもできない。
【0073】
図8は、一部の実施形態によるクラウドベースのデータベース展開800のブロック図である。ユーザデバイス810は、クラウドベースのマルチテナントアプリケーションにアクセスすべくキーユーザまたはビジネスユーザによって操作可能な任意の適切なコンピューティングシステムを備えてよい。ユーザデバイス810は、そのようなマルチテナントアプリケーションのログインページに関連付けられたユニフォームリソースロケータ(URL)にアクセスすべくウェブブラウザのプログラムコードを記憶して、実行してよい。ウェブブラウザは、当技術分野において知られるとおり、マルチテナントアプリケーションのクライアント側構成要素のプログラムコードをダウンロードして、実行してよい。
【0074】
一部の実施形態により、アプリケーションサーバノード820、822、および824が、マルチテナントアプリケーションをホスティングしてよい。データベースノード830、832、および834が、本明細書において説明されるとおりマルチテナントアプリケーションにアクセス可能であり、ネイティブマルチテナンシーを可能にする1つまたは複数のデータベースインスタンスをホスティングしてよい。データベースノード830、832、および834は、本明細書において説明されるとおり、テナント特有の暗号化キーを使用してデータページおよびredoログを暗号化してよく、暗号化されたデータページおよびredoログを永続ストレージに記憶してよく、そのように記憶されたデータページおよびredoログを、テナント特有の復号キーを使用して復号してよい。
【0075】
展開800の各ノードが、別個の物理マシン、または仮想マシンを備えてよい。そのような仮想マシンは、セルフサービスおよび即時プロビジョニング、自動スケーリング、セキュリティ、コンプライアンスおよび識別情報管理の特徴を提供するクラウドプロバイダによって割り振られてよい。
【0076】
前述の図面は、一部の実施形態によるプロセスについて説明するための論理アーキテクチャを表し、実際の実装形態は、他の様態で構成されたさらなる、または異なる構成要素を含んでよい。他のトポロジが、他の実施形態と併せて使用されてよい。さらに、本明細書において説明される各構成要素または各デバイスは、任意の数の他のパブリックネットワークおよび/またはプライベートネットワークを介して通信する任意の数のデバイスによって実装されてよい。そのようなコンピューティングデバイスのうちの2つ以上が、互いに遠隔に配置されてよく、知られている任意の様態のネットワークおよび/または専用の接続を介して互いに通信してよい。各構成要素または各デバイスは、本明細書において説明される機能、ならびに他の任意の機能を提供するのに適した任意の数のハードウェア要素および/またはソフトウェア要素を備えてよい。例えば、任意のコンピューティングデバイスが、コンピューティングデバイスが本明細書において説明されるとおり動作するようにプログラムコードを実行するプログラマブルプロセッサを含んでよい。
【0077】
本明細書において検討されるすべてのシステムおよびプロセスは、1つまたは複数の非一過性のコンピュータ可読媒体上に記憶されたプログラムコードとして実現されてよい。そのような媒体は、例えば、DVD-ROM、フラッシュドライブ、磁気テープ、およびソリッドステートランダムアクセスメモリ(RAM)ストレージユニットもしくは読取り専用メモリ(ROM)ストレージユニットを含んでよい。したがって、実施形態は、ハードウェアとソフトウェアのいずれの特定の組合せにも限定されない。
【0078】
互いに通信するものとして本明細書において説明される要素は、共有されるメモリ通信、ローカルエリアネットワーク、ワイドエリアネットワーク、電話ネットワーク、セルラネットワーク、光ファイバネットワーク、衛星ネットワーク、赤外線ネットワーク、無線周波数ネットワーク、ならびにデバイス間で情報を送信するのに使用されてよい他の任意のタイプのネットワークを含むが、これには限定されない、データを転送するための任意の数の異なるシステムを介して直接に、または間接的に通信することができる。さらに、システム間の通信は、非同期転送モード(ATM)、インターネットプロトコル(IP)、ハイパーテキストトランスファプロトコル(HTTP)、ワイヤレスアプリケーションプロトコル(WAP)などの、知られている、または知られることになる1つまたは複数の任意の伝送プロトコルを介して行われてよい。
【0079】
本明細書において説明される実施形態は、例示を目的としているに過ぎない。前述した実施形態に変形および変更を加えて他の実施形態が実施されてよいことが、当業者には認識されよう。
【符号の説明】
【0080】
100 システム
110 データベースインスタンス
111 データエンジン
112 メモリ
113 データ
114 ページ管理構成要素
115 ロガー構成要素
120 永続ストレージ
122 データボリューム
124 ログボリューム
130 マルチテナントアプリケーション
145、155 ユーザ
140、150 顧客
160 ローカルストレージ、ストア
165 暗号化キー
200 データページ
210 ヘッダ
212 ヘッダ部分
220、240 本文
230 ページ
300 ログエントリ
310 ヘッダ
312 ヘッダ部分
320 redoログデータ部分
330 ログエントリ
340 redoログデータ
710、711、717 顧客
712、718、795 キーユーザ
713、719 ビジネスユーザ
720 マルチテナントアプリケーション
730 サービスマネージャ
740 クラウドサービスブローカ
750 データベースインスタンス
751 揮発性メモリ
752、756 データ
754 永続記憶
755 データボリューム
757 ログボリューム
758 redoログ
760 サービスブローカ
770 テナント管理サービス
780 セキュアストア
785 セキュアストア永続記憶
790 データベースインスタンスプロバイダ
792 キー管理システム
794 キーボールト
800 データベース展開
810 ユーザデバイス
820、822、824 アプリケーションサーバノード
830、832、834 データベースノード
図1
図2A
図2B
図3A
図3B
図4
図5
図6A
図6B
図6C
図7
図8
【外国語明細書】