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

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

▶ デジタル・アセット・(スウィツァーランド)・ゲーエムベーハーの特許一覧

特表2022-548444マルチユーザデータベースシステムおよび方法
<>
  • 特表-マルチユーザデータベースシステムおよび方法 図1
  • 特表-マルチユーザデータベースシステムおよび方法 図2
  • 特表-マルチユーザデータベースシステムおよび方法 図3
  • 特表-マルチユーザデータベースシステムおよび方法 図4
  • 特表-マルチユーザデータベースシステムおよび方法 図5
  • 特表-マルチユーザデータベースシステムおよび方法 図6
  • 特表-マルチユーザデータベースシステムおよび方法 図7
  • 特表-マルチユーザデータベースシステムおよび方法 図8
  • 特表-マルチユーザデータベースシステムおよび方法 図9
  • 特表-マルチユーザデータベースシステムおよび方法 図10
  • 特表-マルチユーザデータベースシステムおよび方法 図11
  • 特表-マルチユーザデータベースシステムおよび方法 図12
  • 特表-マルチユーザデータベースシステムおよび方法 図13
  • 特表-マルチユーザデータベースシステムおよび方法 図14
  • 特表-マルチユーザデータベースシステムおよび方法 図15
  • 特表-マルチユーザデータベースシステムおよび方法 図16
  • 特表-マルチユーザデータベースシステムおよび方法 図17
  • 特表-マルチユーザデータベースシステムおよび方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-21
(54)【発明の名称】マルチユーザデータベースシステムおよび方法
(51)【国際特許分類】
   G06F 16/21 20190101AFI20221114BHJP
   G06F 21/62 20130101ALI20221114BHJP
   G06F 21/64 20130101ALI20221114BHJP
   G06F 16/23 20190101ALI20221114BHJP
   G06F 16/27 20190101ALI20221114BHJP
【FI】
G06F16/21
G06F21/62 318
G06F21/64
G06F16/23
G06F16/27
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021572038
(86)(22)【出願日】2019-07-19
(85)【翻訳文提出日】2022-02-02
(86)【国際出願番号】 US2019042609
(87)【国際公開番号】W WO2020246998
(87)【国際公開日】2020-12-10
(31)【優先権主張番号】62/856,808
(32)【優先日】2019-06-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】521165253
【氏名又は名称】デジタル・アセット・(スウィツァーランド)・ゲーエムベーハー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ジーモン・マイヤー
(72)【発明者】
【氏名】シャウル・クフィル
(72)【発明者】
【氏名】ジェームズ・ベントン・リツィオス
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175BA01
(57)【要約】
データベースシステムメモリ(3)と、少なくとも第1のデータベースサーバ(9)とを備えるデータベースシステム(1)、および方法(100)が提供される。データベースシステムメモリ(3)は、データレコード(7)のデータベース、ならびに第1および第2のデータベースユーザ(21、31)間の共有プログラム命令(51)を記憶する。共有プログラム命令(51)は、それぞれ第1および第2のデータベースユーザ(21、31)のためのプライバシ制限(14、23、33)を含む、プライバシモデル(13)を定義し、第1のデータベースユーザ(21)が第1のユーザのプライバシ制限(23'、33')に合致してデータレコードの第1のサブセット(27)を操作することを可能にする第1の認可セット(25'、35')、および第2のユーザ(31)が第2のユーザのプライバシ制限(23''、33'')に合致してデータレコードの第2のサブセット(37)を操作することを可能にする第2の認可セット(25''、35'')を含む、認可モデル(19)を指定する。データベースサーバ(9)は、共有プログラム命令(51)を実行するように構成されたプロセッサ(11)を含み、共有プログラム命令(51)は、プロセッサ(11)によって実行されると、(1)第1または第2のデータベースユーザ(21、31)によってサブミットされたトランザクション(53)を処理(110)すること、(2)トランザクション(53)がプライバシモデルおよび認可モデル(13、19)に準拠しているかどうかを判定(120)すること、ならびに(3)トランザクションがステップ2をパスした場合、トランザクション(53)をコミット(130)し、プライバシモデルおよび認可モデル(13、19)に合致して第1または第2のデータレコードのサブセット(27、37)を操作(55)することを行う。
【特許請求の範囲】
【請求項1】
データベースシステム(1)であって、
データレコード(7)のデータベース、ならびに第1および第2のデータベースユーザ(21、31)間の共有プログラム命令(51)を記憶するデータベースシステムメモリ(3)であり、前記共有プログラム命令(51)は、それぞれ前記第1および前記第2のデータベースユーザ(21、31)のためのプライバシ制限(14、23'、23''、33'、33'')を含む、プライバシモデル(13)を定義し、前記第1のデータベースユーザ(21)が前記第1のユーザのプライバシ制限(23'、33')に合致して前記データレコードの第1のサブセット(27)を操作することを可能にする第1の認可セット(25'、35')、および前記第2のユーザ(31)が前記第2のユーザのプライバシ制限(23''、33'')に合致して前記データレコードの第2のサブセット(37)を操作することを可能にする第2の認可セット(25''、35'')を含む、認可モデル(19)を指定する、データベースシステムメモリ(3)と、
前記共有プログラム命令(51)を実行するように構成されたプロセッサ(11)を含む少なくとも第1のデータベースサーバ(9)であり、前記共有プログラム命令(51)は、前記プロセッサ(11)によって実行されると、
1.前記第1または前記第2のデータベースユーザ(21、31)によってサブミットされたトランザクション(53)を処理(110)すること、
2.前記トランザクション(53)が前記プライバシモデルおよび前記認可モデル(13、19)に準拠しているかどうかを判定(120)すること、ならびに
3.前記トランザクションがステップ2をパスした場合、前記トランザクション(53)をコミット(130)し、前記プライバシモデルおよび前記認可モデル(13、19)に合致して前記第1または前記第2のデータレコードのサブセット(27、37)を操作(55)すること
を行う、少なくとも第1のデータベースサーバ(9)と
を備える、データベースシステム(1)。
【請求項2】
前記メモリ(3)内に記憶されたプログラム命令をさらに含み、前記プログラム命令は、実行されると、前記トランザクションが前記認可モデル(19)に合致して前記第1または前記第2のユーザからの暗号認可を含むことを検証することを行う、請求項1に記載のデータベースシステム。
【請求項3】
前記暗号認可は、前記トランザクションが前記第1または前記第2のデーベースユーザによって暗号署名されることを含む、請求項2に記載のデータベースシステム。
【請求項4】
エビデンスログ(57)と、前記メモリ(3)内に記憶されたプログラム命令とをさらに含み、前記プログラム命令は、前記プロセッサによって実行されると、
前記共有プログラム命令(51)の実行履歴を記録すること、
前記トランザクションをサブミットせよとの要求を記録すること、および/または
前記トランザクションとともにサブミットされた任意の暗号認可を記録すること
を行う、請求項1から3のいずれか一項に記載のデータベースシステム。
【請求項5】
プログラム命令を含む実行エンジン(2)をさらに備え、前記プログラム命令は、前記プロセッサによって実行されると、
前記第1または前記第2のデータベースユーザのための前記プライバシ制限、および前記第1または前記第2の認可セットが、前記データベースシステムのためのそれぞれに対応するグローバルルールに準拠していることを検証することと、
前記プライバシ制限および前記認可の検証のエビデンスを前記エビデンスログ内に記録することと
を行う、請求項4に記載のデータベースシステム。
【請求項6】
プログラム命令を有するトランザクションおよび同時実行エンジン(6)をさらに備え、前記プログラム命令は、前記プロセッサによって実行されると、同時実行制御プロトコルを使用して、前記データベースシステムにサブミットされた同時トランザクションを処理することを行う、請求項1から5のいずれか一項に記載のデータベースシステム。
【請求項7】
前記共有プログラム命令(51)は、少なくとも一部には前記メモリ(3)内に記憶されたストアドプロシージャ(304)であり、前記システムは、
前記第1または前記第2のデータベースユーザによってサブミットされた前記トランザクションから、前記トランザクションを処理するのに適した1つまたは複数のストアドプロシージャを決定することと、
少なくとも一部には、前記トランザクションを前記1つまたは複数のストアドプロシージャを実行することによって処理することと
を行うように構成された、手続き型ハンドラ(302)をさらに備える、請求項1から6のいずれか一項に記載のデータベースシステム。
【請求項8】
前記共有プログラム命令(51)を実行し、前記プライバシモデルおよび前記認可モデル(13、19)を実施するように構成された、実行エンジン(2)をさらに備える、請求項1から7のいずれか一項に記載のデータベースシステム。
【請求項9】
前記実行エンジンは、前記プライバシモデル(13)に合致するように前記データレコード(7)へのアクセスを制限するように構成される、請求項8に記載のデータベースシステム。
【請求項10】
前記実行エンジンは、前記共有プログラム命令(51)を実行するように、また前記共有プログラム命令(51)によって指定された場合、前記共有プログラム命令(51)に合致して前記プライバシモデルおよび前記認可モデル(13、19)を改変するように構成される、請求項8に記載のデータベースシステム。
【請求項11】
前記トランザクション(53)は前記第2のデータベースユーザ(31)によってサブミットされ、前記共有プログラム命令(51)は、前記プロセッサ(11)によって実行されると、少なくとも、前記第1のデータベースユーザ(21)による前記データレコード(7)の前記第1のサブセット(27)へのアクセスを変更する、請求項10に記載のデータベースシステム。
【請求項12】
前記トランザクション(53)は前記第2のデータベースユーザ(31)によってサブミットされ、前記共有プログラム命令(51)は、前記プロセッサ(11)によって実行されると、少なくとも、前記第1のデータベースユーザ(21)が前記データレコード(7)の前記第1のサブセット(27)を操作することを可能にする前記第1のデータベースユーザ(21)の第1の認可セット(35')を変更する、請求項10に記載のデータベースシステム。
【請求項13】
前記共有プログラム命令(51)は、前記プロセッサによって実行されると、前記エビデンスログまたは前記トランザクション(53)内に、ある特定のデータが存在するかまたは存在しない場合にのみ、前記プライバシモデルおよび前記認可モデル(13、19)を改変する、請求項4に従属するときの請求項11または12に記載のデータベースシステム。
【請求項14】
前記共有プログラム命令(51)は、前記プロセッサによって実行されると、請求項1に記載のステップ3を実施し、前記エビデンスログまたは前記トランザクション(53)自体内に、ある特定のデータが存在するかまたは存在しない場合にのみ、前記トランザクション(53)をコミット(130)する、請求項4に記載のデータベースシステム。
【請求項15】
前記共有プログラム命令(51)は、前記プロセッサによって実行されると、前記トランザクション(53)とそのプライバシおよび認可の有効性のエビデンスをどちらも、同時にコミットする、請求項1から14のいずれか一項に記載のデータベースシステム。
【請求項16】
データレコード(7)のデータベースを記憶するように構成されたデータベースシステムメモリ(3)と、プロセッサ(11)を含む少なくとも第1のデータベースサーバ(9)とを備えるデータベースシステム(1)を使用して、複数のトランザクション(53)を処理する方法(100)であって、
a)第1または第2のデータベースユーザ(21、31)によって前記データベースサーバ(9)にサブミットされたトランザクション(53)を処理(110)するステップと、
b)前記トランザクション(53)が、前記第1および前記第2のデータベースユーザ(21、31)間の共有プログラム命令(51)によって定義されたプライバシモデル(13)および認可モデル(19)に準拠しているかどうかを判定(120)するステップであり、前記プライバシモデル(13)は、それぞれ前記第1および前記第2のデータベースユーザ(21、31)のためのプライバシ制限(14、23'、23''、33'、33'')を含み、前記認可モデル(19)は、前記第1のデータベースユーザ(21)が前記第1のユーザのプライバシ制限(23'、33')に合致して前記データレコード(7)の第1のサブセット(27)を操作することを可能にする第1の認可セット(25'、35')、および前記第2のユーザ(31)が前記第2のユーザのプライバシ制限(23''、33'')に合致して前記データレコード(7)の第2のサブセット(37)を操作することを可能にする第2の認可セット(25''、35'')を含む、ステップと、
c)前記トランザクションがステップ(b)をパスした場合、前記トランザクション(53)をコミット(130)し、前記プライバシモデルおよび前記認可モデル(13、19)に合致して前記第1または前記第2のデータレコードのサブセット(27、37)を操作(55)するステップと
を含む、方法(100)。
【請求項17】
前記トランザクションが前記第1または前記第2のデータベースユーザからの暗号認可を前記プライバシモデルおよび/または前記認可モデルに従って含むことを検証するステップ
をさらに含む、請求項16に記載の方法。
【請求項18】
前記トランザクションは、前記第1の認可セットに合致して、条件に応じて前記第1のデータレコードのサブセットを操作せよとの要求を含み、ステップ16.b)は、前記条件の発生をベリファイするステップと、前記プライバシモデルおよび前記認可モデルに合致して前記第1のデータレコードのサブセットを操作するステップとを含む、請求項16から17のいずれか一項に記載の方法。
【請求項19】
前記条件は、別のトランザクションまたは前記データレコードのサブセットのステータスが、ある特定の基準を満たすかどうかを判定することを含む、請求項18に記載の方法。
【請求項20】
前記プライバシモデルおよび/または前記認可モデルは、前記サブミットされたトランザクションの一部として、1つまたは複数の予想されるアクションまたは結果を指定する、請求項16から19のいずれか一項に記載の方法。
【請求項21】
前記データベースシステムはエビデンスログをさらに含み、前記方法は、
a)前記共有プログラム命令の実行履歴を記録するステップ、
b)前記トランザクションをサブミットせよとの要求を記録するステップ、および/または
c)前記トランザクションとともにサブミットされた任意の暗号認可を記録するステップ
をさらに含む、請求項16から20のいずれか一項に記載の方法。
【請求項22】
前記プライバシモデル内の前記第1または前記第2のデータベースユーザのための前記プライバシ制限、および前記認可モデル内の前記第1または前記第2の認可セットが、前記データベースシステムのためのそれぞれに対応するグローバルルールに準拠していることを検証するステップと、
前記プライバシ制限および前記認可の検証のエビデンスを前記エビデンスログ内に記録するステップと
をさらに含む、請求項21に記載の方法。
【請求項23】
同時実行制御プロトコルを実行して、前記データベースシステムにサブミットされた同時トランザクションを処理するステップ
をさらに含む、請求項16から22のいずれか一項に記載の方法。
【請求項24】
前記データベースシステムメモリは、プログラム命令を、少なくとも一部にはストアドプロシージャとして記憶し、前記方法は、前記データベースサーバの手続き型ハンドラが、
前記第1または前記第2のデータベースユーザによってサブミットされた前記トランザクションから、前記トランザクションを処理するのに適した1つまたは複数のストアドプロシージャを決定するステップと、
少なくとも一部には、前記トランザクションを前記1つまたは複数のストアドプロシージャを実行することによって処理するステップと
を実施することをさらに含む、請求項16から23のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、複数のユーザと共有されたデータベースシステムを使用してトランザクションを処理するデータベースシステムおよび方法に関する。
【背景技術】
【0002】
ビジネスプロセス、例えばマルチパーティビジネスプロセスをデータベース(例えばSQLおよびNoSQL)内に実装することは、特にマルチパーティプロセスにデータベースユーザのプライベートビジネスプロセスが関与するとき、困難であり得る。データベースシステムは、これまでのところ、マルチパーティプロセスにおいてプライバシを維持することには適していない。ステートマシンを使用して、ビジネスモデルをデータベースシステム内に実装することができるが、ステートマシンおよびデータベースシステムアクセス制御は、(i)特定の制約の下でのマルチパーティビジネスプロセスの展開を可能にするのに必要な認可を自然に獲得すること、(ii)プライバシ制約をモデリングすること、(iii)データベースシステムユーザがマルチパーティビジネスプロセスの一部を他のデータベースシステムユーザに委譲することの説明責任を、データベースシステムアクセス制御認可により証明しうることを確実とすること、および(iv)データベースシステムユーザが、(例えば他のデータベースシステムユーザによって)要求されたときに、特定のビジネスプロセスを実行するために自身の認可を調整しうることを確実とすること、ができない。
【0003】
分散型台帳技術(以下、「DLT」)およびブロックチェーンは、マルチパーティビジネスプロセスをスマートコントラクト(台帳上に記録されたプログラムコード)の形態で記録する分散型台帳を実装することによって、マルチパーティビジネスプロセスを円滑にしようと試みてきた。しかし、既存のDLTおよびブロックチェーンのソリューションには、いくつかのマイナス面がある場合があり、このマイナス面には、例えばブロックチェーンが典型的には、(i)分散ノードがブロックチェーン(したがってブロックチェーンに記録されたスマートコントラクト)の正当な「状態」についてコンセンサスに達するためのコンセンサスメカニズム/アルゴリズム、および(ii)状態変化を分散システム内の全てのノードに伝搬させるための複製メカニズム、を必要とすることが含まれる。(i)と(ii)はいずれも、分散システム内のノードがそれらの共有ビジネスプロセスを含む台帳の状態について同期していることを確実とするものである。しかし、(i)および(ii)は、ブロックチェーンまたはDLTの実装形態において一般に実施される他のオペレーションに加えて、分散システムに高いオーバヘッドをもたらすとともに、分散システムをスケーリングが困難なものにする。例として、ブロックチェーンまたはDLTがコンセンサスメカニズム/アルゴリズムを実行している場合、ネットワークのスループット(トランザクション/秒)を垂直方向にスケーリングすることが困難となることがある。同様に、複製メカニズムを利用すると、システムにレイテンシが導入されることがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】WO2017/187394(「DAML2」)
【特許文献2】WO2019/082142(「DAML3」)
【発明の概要】
【課題を解決するための手段】
【0005】
本開示は、プライバシを保ち、かつ、スケールに応じたプログラムのマルチパーティ実行を円滑にするための、異なるパーティ間の共有データベースシステムおよびプライバシ保全性のプログラミングセマンティクス(semantic)を提供することにより、いくつかの既存の問題を解決する。
【0006】
本開示の第1の態様は、データベースシステムメモリと、少なくとも第1のデータベースサーバとを備えるデータベースシステムを含む。データベースシステムメモリは、データレコードのデータベース、ならびに第1および第2のデータベースユーザ間の共有プログラム命令を記憶し、共有プログラム命令は、それぞれ第1および第2のデータベースユーザのためのプライバシ制限を含む、プライバシモデルを定義し、第1のデータベースユーザが第1のユーザのプライバシ制限に合致してデータレコードの第1のサブセットを操作することを可能にする第1の認可セット、および第2のユーザが第2のユーザのプライバシ制限に合致してデータレコードの第2のサブセットを操作することを可能にする第2の認可セットを含む、認可モデルを指定する。データベースサーバは、共有プログラム命令を実行するように構成されたプロセッサを含み、共有プログラム命令は、プロセッサによって実行されると、
1)第1または第2のデータベースユーザによってサブミットされたトランザクションを処理すること、
2)トランザクションがプライバシモデルおよび認可モデルに準拠しているかどうかを判定すること、ならびに
3)トランザクションがステップ2をパスした場合、トランザクションをコミットし、プライバシモデルおよび認可モデルに合致して第1または第2のデータレコードサブセットを操作すること
を行う。
【0007】
いくつかの例では、データベースシステムは、メモリ内に記憶されたプログラム命令をさらに含み、そのプログラム命令は、実行されると、トランザクションが認可モデルに合致して第1または第2のユーザからの暗号認可(cryptographic authorization)を含むことを検証(validate)する。
【0008】
いくつかの例では、暗号認可は、トランザクションが第1または第2のデータベースユーザによって暗号署名(cryptographically sign)されることを含む。
【0009】
いくつかの例では、データベースシステムは、エビデンスログと、メモリ内に記憶されたプログラム命令とをさらに含み、そのプログラム命令は、プロセッサによって実行されると、共有プログラム命令の実行履歴を記録すること、トランザクションをサブミットせよとの要求を記録すること、および/またはトランザクションとともにサブミットされた任意の暗号認可を記録することを行う。
【0010】
さらなる例では、データベースシステムは、プログラム命令を含む実行エンジンをさらに備え、そのプログラム命令は、プロセッサによって実行されると、第1または第2のデータベースユーザのためのプライバシ制限、および第1または第2の認可セットが、データベースシステムのためのそれぞれに対応するグローバルルールに準拠していることを検証することと、プライバシ制限および認可の検証のエビデンスをエビデンスログ内に記録することとを行う。
【0011】
いくつかの例では、データベースシステムは、プログラム命令を有するトランザクションおよび同時実行エンジンをさらに備え、そのプログラム命令は、プロセッサによって実行されると、同時実行制御プロトコルを使用して、データベースシステムにサブミットされた同時トランザクションを処理することを行う。
【0012】
いくつかの例では、共有プログラム命令は、少なくとも一部にはメモリ内に記憶されたストアドプロシージャであり、システムは、第1または第2のデータベースユーザによってサブミットされたトランザクションから、そのトランザクションを処理するのに適した1つまたは複数のストアドプロシージャを決定することと、少なくとも一部には、そのトランザクションをその1つまたは複数のストアドプロシージャを実行することによって処理することとを行うように構成された、手続き型ハンドラ(procedural handler)をさらに備える。
【0013】
いくつかの例では、データベースシステムは、共有プログラム命令を実行し、プライバシモデルおよび認可モデルを実施するように構成された、実行エンジンをさらに備える。
【0014】
さらなる例では、実行エンジンは、データレコードへのアクセスをプライバシモデルと整合した形で制限するように構成される。
【0015】
一代替例では、実行エンジンは、共有プログラム命令を実行するように、また共有プログラム命令によって指定された場合、共有プログラム命令に合致してプライバシモデルおよび認可モデルを改変するように構成される。
【0016】
いくつかの例では、トランザクションは第2のデータベースユーザによってサブミットされ、共有プログラム命令は、プロセッサによって実行されると、少なくとも、第1のデータベースユーザによるデータレコードの第1のサブセットへのアクセスを変更する。
【0017】
別の例では、トランザクションは第2のデータベースユーザによってサブミットされ、共有プログラム命令は、プロセッサによって実行されると、少なくとも、第1のデータベースユーザがデータレコードの第1のサブセットを操作することを可能にする第1のデータベースユーザの第1の認可セットを変更する。
【0018】
いくつかの例では、共有プログラム命令は、プロセッサによって実行されると、エビデンスログまたはトランザクション内に、ある特定のデータが存在するかまたは存在しない場合にのみ、プライバシモデルおよび認可モデルを改変する。
【0019】
いくつかの例では、共有プログラム命令は、プロセッサによって実行されると、ステップ(3)を実施し、エビデンスログまたはトランザクション自体内に、ある特定のデータが存在するかまたは存在しない場合にのみ、トランザクションをコミットする。
【0020】
いくつかの例では、共有プログラム命令は、プロセッサによって実行されると、トランザクションとそのプライバシおよび認可の有効性のエビデンスをどちらも、同時にコミットする。
【0021】
データレコードのデータベースを記憶するように構成されたデータベースシステムメモリと、プロセッサを含む少なくとも第1のデータベースサーバとを備えるデータベースシステムを使用して、複数のトランザクションを処理する方法であって、
A.第1または第2のデータベースユーザによってデータベースサーバにサブミットされたトランザクションを処理するステップと、
B.トランザクションが、第1および第2のデータベースユーザ間の共有プログラム命令によって定義されたプライバシモデルおよび認可モデルに準拠しているかどうかを判定するステップであり、プライバシモデルは、それぞれ第1および第2のデータベースユーザのためのプライバシ制限を含み、認可モデルは、第1のデータベースユーザが第1のユーザのプライバシ制限に合致してデータレコードの第1のサブセットを操作することを可能にする第1の認可セット、および第2のユーザが第2のユーザのプライバシ制限に合致してデータレコードの第2のサブセットを操作することを可能にする第2の認可セットを含む、ステップと、
C.トランザクションがステップ(B)をパスした場合、トランザクションをコミットし、プライバシモデルおよび認可モデルと合致して第1または第2のデータレコードのサブセットを操作するステップと
を含む、方法。
【0022】
いくつかの例では、方法は、トランザクションが第1または第2のデータベースユーザからの暗号認可をプライバシモデルおよび/または認可モデルに従って含むことを検証するステップをさらに含む。
【0023】
方法のいくつかの例では、トランザクションは、第1の認可セットと合致して、条件に応じて第1のデータレコードのサブセットを操作せよとの要求を含み、ステップ(B)は、その条件の発生をベリファイするステップと、プライバシモデルおよび認可モデルと合致して第1のデータレコードのサブセットを操作するステップとを含む。
【0024】
方法のいくつかの例では、条件は、別のトランザクションまたはデータレコードのサブセットのステータスが、ある特定の基準を満たすかどうかを判定することを含む。
【0025】
方法のいくつかの例では、プライバシモデルおよび/または認可モデルは、サブミットされたトランザクションの一部として、1つまたは複数の予想されるアクションまたは結果を指定する。
【0026】
方法のいくつかの例では、データベースシステムはエビデンスログをさらに含み、方法は、
A.第1の共有プログラム命令の実行履歴を記録するステップ、
B.トランザクションをサブミットせよとの要求を記録するステップ、および/または
C.トランザクションとともにサブミットされた任意の暗号認可を記録するステップ
をさらに含む。
【0027】
一例では、方法は、プライバシモデル内の第1または第2のデータベースユーザのためのプライバシ制限、および認可モデル内の第1または第2の認可セットが、データベースシステムのためのそれぞれに対応するグローバルルールに準拠していることを検証するステップと、プライバシ制限および認可の検証のエビデンスをエビデンスログ内に記録するステップとをさらに含む。
【0028】
一例では、方法は、同時実行制御プロトコルを実行して、データベースシステムにサブミットされた同時トランザクションを処理するステップをさらに含む。
【0029】
いくつかの例では、データベースシステムメモリは、プログラム命令を、少なくとも一部にはストアドプロシージャとして記憶し、方法は、データベースサーバの手続き型ハンドラが、第1または第2のデータベースユーザによってサブミットされたトランザクションから、そのトランザクションを処理するのに適した1つまたは複数のストアドプロシージャを決定するステップと、少なくとも一部には、そのトランザクションをその1つまたは複数のストアドプロシージャを実行することによって処理するステップとを実施することをさらに含む。
【0030】
本開示の例について、下の図を参照して説明する。
【図面の簡単な説明】
【0031】
図1】例示的なデータベースシステムの概略図である。
図2】例示的なプライバシモデルおよび認可モデル、ならびに図1のデータベースシステム内でデータレコードを操作し、または読み出す際の、それらのモデルの使用の様子の図である。
図3図1のデータベースシステム内に記憶された共有コードセグメントの概略図である。
図4図1のデータベースシステムを使用して複数のトランザクションを処理するためのコンピュータ実装方法の例示的な流れ図である。
図5図1のデータベースサーバにサブミットされるトランザクションの一例の図である。
図6】プライバシ制限および認可制限の代表的な例の図である。
図7】リレーショナルデータレコード、およびプライバシ制限を定義するそれぞれに対応するコードの一例を示す図である。
図8】データレコードサブセットの操作を可能にする認可セットの一例の図である。
図9図1のデータベースシステムのネイティブ実装の概略例を示す図である。
図10図1のデータベースシステムの例示的なエビデンスおよび監査ログを示す図である。
図11図1のデータベースシステムのストアドプロシージャ実装の概略例を示す図である。
図12図1のデータベースサーバにサブミットされたトランザクションの出力例を示す図である。
図13図1のデータベースサーバにサブミットされたトランザクションの出力例を示す図である。
図14図1のデータベースサーバにサブミットされたトランザクションの出力例を示す図である。
図15図1のデータベースサーバにサブミットされたトランザクションの出力例を示す図である。
図16図1のデータベースサーバにサブミットされたトランザクションの出力例を示す図である。
図17図1のデータベースサーバにサブミットされたトランザクションの出力例を示す図である。
図18】プロセッサの概略例の図である。
【発明を実施するための形態】
【0032】
本開示は、異なるユーザまたはエンティティ間のマルチパーティプロセスを円滑にするプライバシおよび認可保全性のプログラミングセマンティクスを含む、データベースシステムに関する。一例では、本データベースは、リレーショナル(例えばSQL)タイプ、非リレーショナル(例えばNoSQL)タイプ、グラフタイプ、または別のタイプの、データベースモデルを利用することができる。いくつかの例では、本データベースは、複数のユーザによってアクセス可能な、データの一元的なビューを可能にすることができる(すなわちこの場合、データはデータベースの各ユーザに関連するノードにわたって複製されない)。換言すれば、いくつかの例では、本データベースは、分散コンセンサスプロトコルまたは複製メカニズムを使用せず、したがってDLTではない、集中データベースとすることができる。したがって、以下説明するように、本データベースは、DLTの既存の欠点を少しも被ることなく、プライバシおよび適切な認可を保った、プログラムのマルチパーティ実行を可能にすることができる。本データベース上のデータへのアクセスは、ユーザおよびアプリケーションが本データベースおよびその中に収容されているデータと対話することを可能にするデータベース管理システムによって提供することができる。
【0033】
本明細書においてDAMLと呼ばれる、データベースの共通プログラミングセマンティクスは、データベースシステムユーザがマルチパーティビジネスロジックを表現することを可能にし、全てのデータベーストランザクションが1つまたは複数の正当なパーティによって適切に認可されるようにするとともにトランザクションに関係するデータにとって適切なプライバシ制約が実施されるようにすることを確実とする特定のランタイムを使用する。DAMLについては、その開示がここに、参照によりその全体が本明細書に組み込まれている、WO2017/187394(「DAML2」)およびWO2019/082142(「DAML3」)に詳細に記載されている。データベースシステムは、複数のパーティと対話することができる(例えばDAMLで表現された)プログラムを記憶することができ、それらのプログラムは、実行されると、プライバシを保ち、適切な認可で、データレコードを操作し、または読み出し、データベーススキーマを展開し、記憶されたプログラムおよび他のタスクの実行のエビデンスを記録することができる。その結果として、複数のパーティ間で、それ自体が本来プライベートであり、監査可能であり、共通プログラミングセマンティクス(例えばDAML)に従って認可を保全する、新規なデータベースシステムとなる。
【0034】
図1は、上述したデータベースシステム1の例を示す。以下では、このデータベースシステムのいくつかのコンポーネントと、それに続いて、どのようにデータベースシステム1をプログラミングセマンティクス(例えばDAML)とともに利用して、プライバシを保ち、適切な認可で、マルチパーティプロセスの実行を円滑にすることができるかについて説明する。
【0035】
データベースシステム1は、プロセッサ11を有するデータベースサーバ9と、記憶装置またはメモリ3とを含むことができる。一例では、メモリ3は、プログラミングセマンティクス(例えばDAML)で表現されたプログラムに関係するプログラム命令51、データレコード7のデータベース、および/または(例えばトランザクションがデータベースサーバ9にサブミットされたときに)プログラム命令51の実行についての詳細を記録するエビデンスログ57を記憶することができる。一代替例では、プログラム命令51は、データベースサーバ9の一部を成さない記憶装置またはメモリ3'(例えばデータベースサーバ9から離れて位置する記憶装置またはメモリ)内に記憶させることができる。プログラム命令51(例えばDAML)は、データベースユーザ21、31、41がトランザクション53(図5)をデータベースシステム1にサブミットすることによって実行することができる。トランザクション53は、いくつかの場合には、データレコード7を操作し、データベーススキーマを展開し、または他のデータベースアクションを実施する効果を有することができる。一例では、そのようなプログラム命令51および/または関連する各トランザクション53の実行についての詳細も、(例えば、データレコード7の正確な状態をデータベースが収容していることを確認するためにプログラム命令51の実行を監査することを目的として)エビデンスログ57に記録することができる。このようにして、プログラム命令51の実行についての詳細、したがって各トランザクション53の詳細は、証明可能(すなわちユーザがエビデンスログ57を介してそれを取り出し、ベリファイし、かつ/またはそれが認可されることを実証することが可能)となり得る。トランザクション53をサブミットすることによりプログラム命令51を実行するプロセスについては、以下、データベースシステム1を使用した例示的な方法に関してより詳細に説明する。
【0036】
永続性モジュール
【0037】
データベースシステム1は、プログラミング命令51、例えばDAMLで表現されたプログラムを永続させる永続性モジュールを有することができる。一例では、永続性モジュールは、データベースサーバ9の一部であるメモリ3とすることもでき、あるいは、データベースサーバ9から離れて位置するメモリ3'とすることもできる。永続性モジュールは、プログラミング命令51を永続させるために使用することができ、それによって、以下より詳細に説明するように、複数のデータベースユーザ21、31、41が、トランザクション53をデータベースシステム1、例としてデータベースサーバ9にサブミットし、それを実行する権利を特定のユーザ21、31、41が与えられた特定のプログラム51を実行できるようになる。データベースユーザ21、31、41が、永続性モジュール内に記憶された特定のプログラム51またはその一部を実行できるかどうか、また実行しているデータベースユーザ21、31、41がそのプログラム51の実行からの情報および/または結果にどのようにアクセスするかまたはアクセスするかどうかは、とりわけ、(i)パーティが選択した、DAMLでのプログラムの表現の仕方、ならびに(ii)DAMLの認可制約およびプライバシ制約が、DAMLプログラムを実行するために使用される実行エンジン2(以下、より詳細に説明する)によってどのように実施されるか、によって決まり得る。
【0038】
トランザクションおよび同時実行エンジン
【0039】
データベースシステム1は、データベースシステム1にサブミットされたトランザクション53を処理することのできるトランザクションおよび同時実行エンジン6を有することができる。トランザクション53は、データベースユーザ21、31、41がそれによって、永続性モジュール(例えばメモリ3)内に記憶されたデータレコード7にアクセスし、かつ/またはそれを操作する、主要なメカニズムでありうる。トランザクションおよび同時実行エンジン6は、複数のデータベースユーザ21、31、41から同時に、サブミットされたトランザクション53を受け取り、そのようなトランザクション53を処理し、プログラミング命令51のプライバシモデル13および認可モデル19(図2)に準拠している場合、データレコード7の要求された操作54'、54''、54'''、55'、55''、55'''、56'、56''、56'''またはデータレコード7へのアクセスをコミットし、それに影響を及ぼすように機能することができる。しばしば、トランザクション53は、永続性モジュール内に記憶された特定のプログラム51またはその一部を実行せよとの要求とすることができる。したがって、以下においてより詳細に説明するように、トランザクションおよび同時実行エンジン6ならびに実行エンジン2を使用して、データベースシステム1にサブミットされたどのトランザクション53が有効であり、コミットされることが可能であるかを決定することができる。コミットされた場合、トランザクション53は、DAMLプログラム51またはその一部の実行を1人または複数のデータベースユーザ21、31、41の代わりに生じさせることができ、それにより、データベースシステム1を使用したマルチパーティの定義およびプログラム51の実行が可能になる。
【0040】
トランザクションおよび同時実行エンジン6は、一例では、ユーザ21、31、41間に存在する共有プログラミングセマンティクス(DAML)に従って許可されたデータベースユーザ21、31、41のいずれかによってサブミットされたトランザクション53のみを処理する。別の言い方をすれば、DAMLコンテキストの一実施形態では、DAMLプログラム51の実行を要求するトランザクション53は、特定のデータベースユーザが認可し、データベースシステム1に対してコミットする(例えばそのようなデータベースユーザによって後に実行できるように永続性モジュール内に記憶させる)、DAMLプログラム51の認可制約およびプライバシ制約に従って、許可されなければならない。
【0041】
いくつかの実施形態では、DAMLプログラム51の認可制約およびプライバシ制約、ならびにデータは、DAMLプログラム51の実行の動的コンテキストと、データベースシステム1の(データレコード7などの)アクセスされるデータのデータ作成の動的コンテキストの両方に応じて決まり得る。これは、DAMLプログラム51がシステム1によって実行されて、状態を変化させるときに、ユーザの認可制約が変化することができることを意味する。このようにして、システム1では、プログラムにより定義される別途のアクセス制御が、予想可能で、スケーラブルで、かつ安全なアクセス制御システムに組み合わされることが可能である。
【0042】
データベースユーザが、実行することのできるDAMLプログラムのタイプ、およびDAMLプログラムのどの部分を実行することができるかを指定するメカニズムについて、以下、DAMLがデータベースシステム1に適用されるときのDAMLについてのより詳細な議論の中で説明する。一例では、トランザクション53は、トランザクションおよび同時実行エンジン6による処理後に有効でありかつデータベースシステム1に対してコミットされた場合、以下のことを行うDAMLプログラム命令51を実行しうる。
1.(例えば実行時に実施されたDAMLのプライバシモデル13および認可モデル19によって指定されたように)データベースユーザ21、31、41がアクセスすることを許可されているデータレコード7の部分に対してデータを書き込み、または読み出すこと。
2.データベーススキーマを管理または展開すること(例えばリレーショナルデータベース内のテーブルを追加、修正、または削除する、リレーショナルデータベース内のロウおよび/またはカラム構造を追加、修正、または削除するなど)。
3.データベースユーザ21、31、41のいずれかによる認可およびデータベースシステム1に対するアクセス制御を管理して、
a.データベース内のある特定のデータレコード7に対して読み出し、書き込むこと。
b.DAMLプログラム(例えば共有コードセグメント5)の特定の部分を実行すること。
c.DAMLプログラム(例えば共有コードセグメント5)の一部に関する実行認可およびアクセス制御を別のデータベースユーザ21、31、41に委譲すること。
d.DAMLプログラム(例えば共有コードセグメント5)の指定された条件下での後の実行を調整すること。
e.DAMLプログラム(例えば共有コードセグメント5)の特定の条件下での後の実行を調整し、選択された記憶済みコードに関連するデータの問合せ可能性の一意性およびデータ不変性を保全することをコミットすること。
f.ユーザ21、31、41の認可されたオペレーションによって可能になった認可およびアクセス制御の(例えば追跡可能性または説明責任のための)証明を調整するとともに、ユーザ21、31、41によるDAMLプログラム(例えば共有コードセグメント5)の特定の条件下での後の実行も認可すること。
g.データベーススキーマを移行させること。
【0043】
データベースシステム1を使用する例示的な方法に関して以下においてより詳細に説明するように、トランザクション53のさまざまな機能は、DAMLプログラム51の実行、データベーススキーマのマルチパーティへの移行、および任意数のデータベースユーザが単一のデータベースシステム1を使用することを可能にするための他のデータベースオペレーションを可能にする、マルチパーティデータベースシステム1を実現する働きをすることができる。結果として、任意数のデータベースユーザが、プライバシを保ち、適切な認可で、スケーラビリティの低下またはレイテンシの増大のようなDLTシステムの欠点が少しもない状態で、マルチパーティデータベースシステム1にアクセスし、それらのそれぞれに対応するデータの合同台帳を利用することが可能である。
【0044】
データベースシステム1、例としてそのトランザクションおよび同時実行エンジン6はまた、同時実行プロトコルを利用して、トランザクションの重要な特性(例えば原子性、整合性、独立性、および耐久性)を維持しながら同時トランザクション53を可能にすることができる。全てのトランザクションの実行が生じるか、1つの実行も生じないかのいずれかである、という原子性は、データベースシステム1において以下の同時実行メカニズムのいずれかを単独で、または組み合わせて使用することによって、トランザクションの独立性とともに達成することができる。
1.データへのアクセスを、そのデータに割り当てられたロックによって制御する、ロッキング(例えば2相ロッキング)。あるトランザクションの、別のトランザクションによってロックされたデータアイテム(例えばデータベースレコード)へのアクセスは、ロック解放まで(ロックタイプおよびアクセスオペレーションタイプに応じて)阻止され得る。
2.スケジュールのグラフ内に閉路があるかどうかをチェックし、アボートによってそれらを切断する、逐次化グラフチェック(逐次化可能性、または競合もしくは先行グラフチェックとも呼ばれる)。
3.トランザクションに時刻印を割り当て、時刻印の順序によってデータへのアクセスを制御またはチェックする、時刻印順序付け(TO)。
4.トランザクションのコミット事象の時間的な順序が、それらのそれぞれに対応する先行順序と一致するように制御し、またはその一致をチェックする、コミットメント順序付け(またはコミット順序付け)。
【0045】
それに加えて、以下のものを含む他の同時実行制御タイプが単独で、または上記とともに利用されてもよいことを理解されたい。
5.オブジェクトが書き込まれるときに毎回データベースオブジェクト(例えばデータレコード)の新たなバージョンを生成し、スケジューリング方法に応じて、(各オブジェクトの)いくつかの最終関連バージョンのトランザクションの読出しオペレーションを可能にすることによって、同時並行性および性能を向上させるための、マルチバージョン同時実行制御(MVCC)。
6.ユーザデータにではなく索引に対するアクセスオペレーションの同期を可能にする、索引並行性制御。
7.個別作業空間モデル(遅延更新モデル)。各トランザクションは、そのアクセスされたデータについて個別作業空間を維持し、その変更されたデータは、トランザクションのコミット後にのみ、トランザクションの外部に見えるようになる。
8.競合のない複製データ型(Conflict-free replicated data type)(CRDT)モデル。複製された各ビューは、レプリカ間の調整なしで独立かつ同時に更新されることが可能であり、一方、結果として生じる可能性のある不整合は常に解決されることが可能である。DAMLコンテキストでは、不整合は、事前合意されたプロセス(DAMLによって定義された例(exemplary))内で解決されることが可能である。
【0046】
上述したように、トランザクションおよび同時実行エンジン6はしたがって、異なるデータベースユーザ21、31、41によってサブミットされたトランザクション53を同時に処理することができ、それによって、そのようなユーザが、マルチパーティデータベースのアクション、および各ユーザ21、31、41に与えられるその権利を定義する、DAMLプログラム51を構成することが可能である。
【0047】
実行エンジン
【0048】
データベースシステム1は、プログラム命令51(例えばDAMLプログラム)を実行するための実行エンジン2をさらに含むことができる。実行エンジン2は、DAMLプログラム命令51の実行のためのランタイムシステムおよびランタイム環境を含むことができる。
【0049】
一例では、実行エンジン2のランタイムシステムは、ユーザ21、31、41からサブミットされたオペレーションを受け取って、記憶されたデータを作成し、読み出し、更新し、かつ/または削除するプログラム命令51の認可された実行を通じて、共有データベース状態を修正することができる。オペレーションは、トランザクション53など、一連のオペレーションの一部とすることができる。データベースシステム1のDAMLコンテキストでは、共有マルチユーザプログラミングセマンティクスに関連する、データを修正しデータにアクセスするための認可は、以前にサブミットされたオペレーションまたはトランザクション53に応じて決まり得る。さらなる例では、認可はまた、サブミットしているユーザ21、31、41の特定の識別情報に応じて決まり得る。これらの認可は、特定のユーザがDAML実行を通じてアクセス権などの認可を与えられることに応じて決まってもよい。一例では、DAML実行エンジン2は、以下のステップを実施することができる。
1.1人または複数のデータベースユーザ21、31、41によって開始され、サブミットされたオペレーション(またはトランザクション53)を受け取るステップ。
2.期待されるオペレーション結果に一致するオペレーション結果を計算するステップ。一例では、これには、データベースシステム1に記録されている実行可能DAMLプログラム(例えば命令51)を、実行エンジン2のランタイムシステムを使用して実行して、少なくとも一部にはデータベースユーザ21、31、41によるオペレーションまたはトランザクション53のサブミッションによって受け取られたデータに基づいて、期待されるオペレーション結果を計算することが関与し得る。
3.データ変更整合性ならびにプライバシ制約および認可制約を確保しながら、期待されるオペレーション結果の正当性を検証し、(例えば1つまたは複数のデータレコード7を操作することによって)期待されるオペレーション結果をデータベースシステム1に対してコミットするステップ。一例では、これには、ステップ2において述べたように、実行可能DAMLプログラム51を実行エンジン2のランタイムシステムを使用して実行する一環として、プライバシモデル13および認可モデル19ならびにデータ変更整合性制約が順守されていることをチェックすることが関与し得る。
4.コミットされたオペレーション結果を、システム1の認可されたユーザに通信するステップ。
5.ステップ4の認可されたユーザによる、コミットされたオペレーション結果の受取の通信を受け取るステップ。
【0050】
一例では、上記のステップ3は、以前のオペレーションまたはトランザクションのログを利用することができる。別の例では、ステップ3は、追加データがユーザによるオペレーションのサブミッションによって受け取られたデータとともに直接記憶されることを利用することができる。
【0051】
上述したように、期待されるオペレーション結果をデータベースシステム1に対してコミットする前に、実行エンジン2は、期待されるオペレーション結果の正当性を検証することができる。これには、プライバシ制約、認可制約、およびデータ変更整合性制約をチェックすることが含まれ得る。やはり上述したように、認可制約およびプライバシ制約は、DAMLプログラム51の実行の動的コンテキストなどの動的因子に応じて決まり得る。このようにして、期待されるオペレーション結果(したがってトランザクション53)のコミットメントの前に、データベースシステム1は、サブミットされたオペレーション/トランザクションが、新たに作成された任意のデータの一部または全てを削除することを可能にすることができる。一例では、そのような削除されるデータは、データが一時的な状態にある(例えばデータがあるトランザクション53の持続時間にわたって存在し、次いでその同じトランザクション53内で削除される)ため、一時データと呼ぶことができる。別の言い方をすれば、データベースシステム1は、一時データならびに一時データの動的な作成および削除に応じて決まる認可制約およびプライバシ制約を提供することができる。
【0052】
一例では、実行エンジン2は、システム1のトランザクションおよび同時実行エンジン6と協調して、1つまたは複数のトランザクションの特性を最終結果(すなわちコミットされた期待されるオペレーション結果またはトランザクション結果)にもたらすことができる。例えば、上述したように、トランザクションの特性には、原子性、整合性、独立性、および耐久性が含まれてよい。
【0053】
DAMLコンテキストでは、システム1のトランザクション性は、メモリマッピングされたファイルおよび「fsync」のようなオペレーティングシステムコマンドの使用により、ネイティブで達成される。トランザクション性は、DAML実行エンジン2とローカルに働くデータベースエンジン、エンタープライズサーバまたはコンテナサービス(例えばJavaアプリケーションサーバ、KubernetesのReplicaSetおよびStatefulSet)、ならびにリモートデータベースサービスによっても達成することができる。同様に、高信頼の送達および受取通知の受け取りは、ユーザ21、31、41とDAML実行エンジン2との間の高信頼のメッセージ送達によって達成することができる。
【0054】
さらなる例では、実行エンジン2は、データベースユーザ21、31、41によるトランザクションの一環として実行されると最終のコミットされたトランザクション53に由来する認可された実行がプライバシ制限および認可条件を満足させることを検証する、命令を含むことができる。プライバシ制約および認可条件はそれぞれ、プライバシモデル13および認可モデル19内で入手されることが可能である。例示的な一認可条件は、データベースユーザ21、31、41の要求される認可なしではデータベースユーザの認可が証明されないことを確実にすることができる。データベースユーザの要求される認可は、暗号認可とすることができる。
【0055】
さらなる例では、複数のDAML実行エンジンノード2にわたるプログラム命令51の分散実行を行うことができる。例えば、上記のステップ2からステップ3へと、またステップ4からステップ5へと移行させるための1つまたは複数の分散コンセンサスプロトコルを使用することができる。分散コンセンサスプロトコルの例示的な使用は、システム1のトランザクションおよび同時実行エンジン6と協調されることが可能である。
【0056】
上記のステップ1からステップ5が、例示的なDAML実行エンジン2内でDAMLプライバシおよびデータ共有者によってパーティショニングされると、ビジネスプロセスの強力なプライバシを達成することができる。実際のところ、ステップ1からステップ5は、DAMLオペレーションの全てまたは一部の同一プライバシビューを共有するユーザまたはユーザグループによって別々に生じる。このようにして、以下を通じてプライバシを達成することができる。
・オペレーションプライバシビューによる実行エンジン2の計算フローの物理的な分離。
・プライバシビューによるオペレーションの全てまたは一部のメモリ3、3'の物理的な分離。
・オペレーション結果およびオペレーション結果の受取通知の、ユーザまたはユーザグループごとの別々の通信。
・ユーザまたはユーザグループによりアクセス可能なデータ暗号化の使用。
・ゼロ知識証明(ZKP)または類似の暗号代数法(crypto-algebraic method)を用いた、DAMLプライバシルールおよび認可ルール内での暗号化されたオペレーション実行。
・データベースシステム1の実行がデータベースシステム1の認証されたバージョンのみを利用していることを立証するための、また前述の実行によって実施されたプライバシモデル13の認証を立証するための、専用のセキュアなハードウェア機能(例えばIntel SGXなどのトラステッド実行環境またはセキュアなエンクレーブ)の使用。
【0057】
さらなる例では、プログラム命令51の分散実行と同様に、上記のステップ2からステップ3へと、またステップ4からステップ5へと移行させるためのプライバシコンセンサスプロトコルの例示的な使用により、確実にDAMLプライバシおよびデータ共有者が正当なものであるようにすることができる。プライバシコンセンサスプロトコルは、確実にオペレーションまたはトランザクション53の影響を受け認可された全てのユーザが全体または一部において同じ結果を閲覧するようにすることもできる。一例では、プライバシコンセンサスプロトコルの使用は、システム1のトランザクションおよび同時実行エンジン6と協調されることが可能である。
【0058】
DAMLプログラム命令の実行
【0059】
本システム1のコンテキストでは、(プログラム命令51を介した)DAMLオペレーションまたはトランザクションの実行は、
・複数のステップ(例えば上記の1から5)にわたって、
・複数の実行エンティティ(ノード、コア、マシン)にわたって、かつ
・複数のプライバシビュー(例えば上述したプライバシコンセンサスを参照されたい)にわたって
生じることができる。
【0060】
それに加えて、DAMLプログラムは、特定の明確に定義されたルール(すなわち、以下さらに詳細に説明するDAMLセマンティクス)内でのみ進行し、データに影響を及ぼすことができる。この理由から、検証は、DAMLプログラム内のDAMLオペレーションの実行の中心的部分とすることができる。それに加えて、DAMLプログラムの実行は、ユーザが特定のオペレーションをサブミットして、共有プログラムの共有セグメントを実行する前に、DAMLプログラムがユーザおよび実行ノードに対して共有され、通信されることを含むことができる。これにより、DAML実行エンジン2が、実行プロセスの不可欠な部分として、プログラム実行およびデータフロー特性を解析し、事前計算することが可能になる。これにより以下の目的を達成することもできる。
・プログラム51がDAMLセマンティクスによって定義されたルールを満たすことを検証すること。例えば、DAMLオペレーションがユーザをそれらの合意していない状態にしないことを事前計算する。
・より広範な実行プラットフォームおよびより高度の性能を可能にすること。例えば、プログラム51をある形態の実行可能コードから別の形態の実行可能コードに(例えばSQL、Javaバイトコード、または.NET CLIに対して、DAML表層言語からDAMLコア言語に)変換することによって。
・より広範なユーザアプリケーション統合を可能にすること。例えば、プログラムをある形態のソースコードから別の形態のソースコードに変換して、より広い範囲を可能にすることによって。これには、言語埋め込みDAMLをネイティブDAMLに変換および抽出することが含まれてよい(例えばJavaエンタープライズサーバ内でのDAML実行を目的としてJava埋め込みDAMLを抽出する)。
・オペレーション実行およびデータ転送を、事前計算された実行およびデータ特性を用いて最適化すること。例えば、事前コンパイルされた実行ステップ、通信、およびコンセンサスプロトコル、ならびにプライバシグループを(例えば上記のステップ1からステップ5内で)生成すること。
【0061】
DAML
【0062】
上述したように、データベースシステム1内で使用されるプログラミングセマンティクスは、一例では、本出願人が作成したDAMLと呼ばれるプログラミング言語とすることができる。DAMLについてのいくつかの詳細は、本出願人が出願し、上で参照により本明細書に組み込まれている、DAML2出願およびDAML3出願内に見いだすことができる。一実施形態では、実行エンジン2は、それによりデータベースユーザ21、31、41がトランザクション53をデータベースシステム1にサブミットしたときにデータベースユーザ21、31、41によりDAMLプログラム51が実行されるメカニズムとすることができる。以下に続くのは、データベースシステム1に関連するDAMLのいくつかの特徴についてと、どのように実行エンジン2(例えばそのランタイムシステムおよび環境)がDAMLプログラム51を実行して、確実にデータベースシステム1がマルチパーティプライバシ、監査能力、および適切な認可を含むようにするかについての説明である。前述の内容を示すために、DAMLプログラム例が図7に示されており、図2図6および図8は、データベースシステム1に関係するDAMLのプライバシおよび認可の態様を示すための補助的な図として使用される。
【0063】
DAMLプログラムは、1つのテンプレートまたは一連のテンプレート59'、59''、59'''(図3)および81(図7)として表現することができる。一例では、テンプレートは、コントラクトテンプレートまたはスマートコントラクトテンプレートと呼ぶことができる。テンプレート59'、59''、59'''、81は、データスキーマ196と、それに加えてデータスキーマ196のデータを操作し、またはそれにアクセスすることのできるコード宣言またはロジック(例えば選択肢(choice)83、85)とを定義することができる。したがって、テンプレート59'、59''、59'''、81は、概念的には、データスキーマをコード宣言またはロジックとともに定義することのできるインスタンス化されていないプログラムと考えることができ、それは、どのように複数のパーティがプログラムを使用し、かつ/またはそれにアクセスすることができるかを定義する働きをするものである。テンプレート59'、59''、59'''、81のインスタンス化されたバージョンは、コントラクトまたはスマートコントラクトと呼ぶことができる。テンプレート59'、59''、59'''、81とそれらのインスタンス化物はどちらも、データベースユーザ21、31、41によって後に実行できるように、データベースシステム1の永続性モジュールに記録されることが可能である。
【0064】
認可、プライバシ、および検証
【0065】
DAMLセマンティクスは、実行エンジン2によるそれらのセマンティクスの実施に加えて、異なるデータベースユーザ21、31、41間の、DAMLプログラムのためのプライバシモデル13および認可モデル19(図2)を定義することができる。例として、図7のテンプレート81などのDAMLプログラムは、(例えばそれぞれが秘密/公開鍵対などの一意の暗号識別情報と関連付けられた)異なるPartyを定義することができ、実行エンジン2は、(例えばそのランタイムシステムによる)テンプレート81のインスタンス化物の実行中に、それらの異なるParty間で共有プライバシ制限14および共有認可20を実施することができる。データベースシステム1の場合、異なるPartyは、データベースユーザ21、31、41のいずれかとすることができる。
【0066】
別の言い方をすれば、データベースユーザ21、31、41は、DAML言語を使用して無数の方途でDAMLテンプレート59'、59''、59'''、81を構成することができ、DAMLのセマンティクスは、実行エンジン2によって実施されるときに、確実にデータベースユーザ21、31、41の任意のサブセットに関連するプライバシ制限14(図2)を含むプライバシモデル13が実施されるようにすることができる。一例では、データベースユーザのサブセットは、第1のデータベースユーザ21のプライバシ制限23'、33'、43'、第2のデータベースユーザ31のプライバシ制限23''、33''、43''、および任意の追加のNデータベースユーザのプライバシ制限23'''、33'''、43'''をDAMLで定義して、特定のDAMLプログラムのためのこのグループのプライバシ制限14を一まとめにして定義することができる。プライバシ制限14は、第1のデータベースユーザ21、第2のデータベースユーザ31、およびNデータベースユーザそれぞれの、データベースシステム1の特定のデータレコード7への読出しおよび/または書込みアクセスを指定することができる。プライバシ制限23'、23''、23'''は、データベースシステム1内で、データベースユーザ21によって認可されたものとして証明されることが可能であり、プライバシ制限33'、33''、33'''は、データベースシステム1内で、データベースユーザ31によって認可されたものとして証明されることが可能であり、プライバシ制限43'、43''、43'''は、データベースシステム1内で、データベースユーザ41によって認可されたものとして証明されることが可能である。本説明では、(「Nデータベースユーザ」、「N認可セット」、「Nユーザ」、または「Nデータレコードのサブセット」などの)「N」とは、一連のものまたは複数のもののうちの指定されないメンバまたはアイテムを指すために使用されている。
【0067】
それに加えて、データベースユーザ21、31、41は、テンプレート59'、59''、59'''、81のインスタンス化物が、インスタンス化されたDAMLプログラムの一部をデータベースユーザ21、31、41のうちのいく人かにより実行するための認可20を含む認可モデル19に準拠するように、DAMLテンプレート59'、59''、59'''、81を構成することができる。一例では、データベースユーザのサブセットは、インスタンス化されたDAMLテンプレート59'、59''、59'''、81の定義された部分を実行するための、第1のデータベースユーザ21の認可25'、35'、45'、第2のデータベースユーザ31の認可25''、35''、45''、および任意のNデータベースユーザの認可25'''、35'''、45'''をDAMLで定義することができる。認可25'、25''、25'''、35'、35''、35'''、45'、45''、45'''は、データベースユーザがDAMLプログラムのある特定の部分を実行し、それにより、データベースシステム1内に記憶された第1のデータレコードのサブセット27、第2のデータレコードのサブセット37、およびNデータレコードのサブセット47(図2)にそれぞれアクセスし、かつ/またはそれらをそれぞれ操作54'、54''、54'''、55'、55''、55'''、56'、56''、56'''することを可能にすることができる。典型的には、DAMLプログラムの一部の実行は、データベースユーザ21、31、41がトランザクション53をデータベースシステム1にサブミットすることにより影響を受ける。
【0068】
いずれのプライバシ制限23'、23''、23'''、33'、33''、33'''、43'、43''、43'''も、特定のDAMLプログラムの全ての状態について、データベースシステム1内に記憶されたデータレコード7への、それぞれに対応するデータベースユーザによるアクセス(例えば読出し、書込み、またはアクセスなし)を指定することができる。それに加えて、データベースシステム1内に記憶されたデータレコード7に対する、特定のデータベースユーザのプライバシ制限は、DAMLプログラムがシステム1によって実行されて、状態を変化させるときに、変化することができる。プライバシ制限に対する変化は、それらの対応するDAMLテンプレート内で定義されたルールにそのような変化が従うとき、予想可能となり得る。例として、第1のデータベースユーザ21は、関連するDAMLテンプレートのDAMLセマンティクスによる、データベースシステム1内に記憶された第1のデータレコードのサブセット27へのユーザ21によるアクセス(例えば読出し、書込み、またはアクセスなし)を制限するプライバシ制限23'、33'、43'を有することができ、第2のデータベースユーザ31は、同じDAMLテンプレートのセマンティクスによる、データベースシステム1内に記憶された第2のデータレコードのサブセット37へのユーザ31によるアクセス(例えば読出し、書込み、またはアクセスなし)を制限するプライバシ制限23''、33''、43''を有することができ、任意のNデータベースユーザは、データベースシステム1内に記憶されたNデータレコードのサブセット47へのNユーザによるアクセス(例えば読出し、書込み、またはアクセスなし)を制限するプライバシ制限23'''、33'''、43'''を有することができる。さらに、本説明の他の場所でより十分に詳述するように、トランザクション53が第1のデータベースユーザ21、第2のデータベースユーザ31、またはNデータベースユーザによってデータベースシステム1(例えばデータベースサーバ9)にサブミットされるとき、いずれのプライバシ制限23'、23''、23'''、33'、33''、33'''、43'、43''、43'''も、関連するDAMLプログラムの状態および/またはデータレコード27、37、47の状態が変化するときに改変されることが可能である。
【0069】
それに加えて、いずれの認可25'、25''、25'''、35'、35''、35'''、45'、45''、45'''も、とりわけ、(i)あるデータベースユーザが、インスタンス化されたDAMLプログラムのある特定の部分を実行できる能力、(ii)該データベースユーザが、DAMLプログラムのそのような部分の実行を、別のデータベースユーザに委譲できる能力、(iii)他のデータベースユーザが、DAMLプログラムの、該データベースユーザに影響を与えることになる部分を実行できる能力、および/または(iv)該データベースユーザが、データベースシステム1内の特定のデータレコードのサブセットにアクセスし、かつ/もしくはそれを操作できる能力、を指定することができる。それに加えて、プライバシ制限の場合と同様に、(i)から(iv)のいずれかを行うための特定のデータベースユーザの認可も、DAMLプログラムがシステム1によって実行されて、状態を変化させるときに、変化することができる。例として、第1のデータベースユーザ21は、関連するDAMLテンプレートのDAMLセマンティクスによる、(i)から(iv)のいずれかを行うためのユーザ21の認可を定義する認可25'、35'、45'を有することができ、第2のデータベースユーザ31は、同じDAMLテンプレートのDAMLセマンティクスによる、(i)から(iv)のいずれかを行うためのユーザ31の認可を定義する認可25''、35''、45''を有することができ、任意のNデータベースユーザは、(i)から(iv)のいずれかを行うための認可25'''、35'''、45'''を有することができる。さらに、本説明の他の場所でより十分に詳述するように、トランザクション53が第1のデータベースユーザ21、第2のデータベースユーザ31、またはNデータベースユーザによってサブミットされるとき、いずれの認可25'、25''、25'''、35'、35''、35'''、45'、45''、45'''も、関連するDAMLプログラムの状態および/またはデータレコード27、37、47の状態が変化するときに改変されることが可能である。いくつかの例では、これは、あるデータベースユーザによってサブミットされた、別のデータベースユーザの、他方のデータベースユーザのデータレコードのサブセットへのアクセスおよび/またはそのデータレコードのサブセットを操作するための認可を変化させるトランザクション53を含むことができる。
【0070】
プライバシ制限23'、23''、23'''および認可セット25'、25''、25'''は、データベースシステム1内で、データベースユーザ21によってそれ自身に対して、またユーザ31および41に対して認可されたプライバシ制限および認可として、証明されることが可能である。プライバシ制限33'、33''、33'''および認可セット35'、35''、35'''は、データベースシステム1内で、データベースユーザ31によってそれ自身に対して、またユーザ21および41に対して認可されたプライバシ制約および認可として、証明されることが可能である。プライバシ制約43'、43''、43'''および認可セット45'、45''、45'''は、データベースシステム1内で、データベースユーザ41によってそれ自身に対して、またユーザ21および31に対して認可されたプライバシ制限および認可として、証明されることが可能である。
【0071】
本開示の上記の態様を示す具体例が有用である。図7を参照すると、テンプレート81は、そのpotentialRecipientsフィールド74を現金額76の潜在的な受け取り者のリストと見なすことのできる、Cashテンプレートの一例である。テンプレート81では、セマンティックDAMLキーワード「signatory」を使用して、発行者197(Partyタイプのフィールド)が、テンプレート81のインスタンス化物が有効になるためのその署名者でなければならないことを指定し、キーワード「observer」を使用して、potentialRecipients74(PartyタイプのList(例えばアレイ))が、テンプレート81のインスタンス化物に対する観察者であることを指定している。一例では、「observer」キーワードは、観察者としてリストされたParty(この場合はpotentialRecipients74)が、データベースシステム1内に記憶されるテンプレート81のインスタンス化物に関連する任意のデータレコード7への読出しアクセスのみを有することを表すことができる。そのようなデータレコード7は、データスキーマ196に準拠することができる。例として、テンプレート81のインスタンス化物75(例えばリレーショナルデータベースシステム1のテーブル内のロウ75の形態をとるデータレコード7)が、図7の上部に示されており、観察者79がそのデータレコード内のカラムとしてリストされていることが分かる。この例では、観察者79をインスタンス化物75とともにリストすることにより、potentialRecipients(寄贈者80)がそのデータレコード(ロウ75)への読出し専用アクセスを有することを示すことになる。特定のDAMLプログラム内に追加の権利も設けられるのでない限り、この例のpotentialRecipients(寄贈者80)は、図7のデータレコードに関係する、読出し専用アクセスに限定されたプライバシ制限を有しているはずであり、データレコードを変更またはミューテーションするための認可は有していないはずである。したがって、例えば、寄贈者80に関係するデータベースユーザによってサブミットされた、ロウ75内の任意のデータをミューテーションしようと試みる任意のトランザクション53は、(例えば以下詳述する実行エンジン2によるランタイム時に)寄贈者80に対して前述の制限を実施できないことがある。
【0072】
それとは反対に、上述した「signatory」キーワードは、一例では、Party(この場合は発行者197)がテンプレート81のインスタンス化物への読出しアクセスを有することを表すことができるが、テンプレート81のインスタンス化物がデータベースシステム1内で有効になるためにそのPartyがそのインスタンス化物を暗号認可しなければならない(かつデータベースシステム1はPartyによるテンプレート81のインスタンス化を証明できなければならない)ことも表すことができる。例として、図7の上部に明確に示されているように、銀行78は、Cashコントラクトのインスタンス化物75が有効になるためにそれをデータベースシステム1内に暗号認可する必要がある。実際、銀行78は、Cashコントラクトの作成を暗号認可していない場合、コントラクトのコード宣言(選択肢83、85)内に指定された現金の額76を提供する義務を負うことはできない。この場合、この例では、署名者77も、インスタンス化物75(ロウ)の一カラムとしてリストされることが可能である。先に述べたように、テンプレート81のインスタンス化物を暗号認可することは、トランザクション53に暗号署名することを含むことができ、それには、テンプレート81をインスタンス化し、そのインスタンス化物をデータベースシステム1内に永続させる効果がある。テンプレート81のインスタンス化物を暗号認可することは、証明されたデータに署名することを含むこともできる。
【0073】
したがって、DAMLのセマンティクス、この場合は「signatory」キーワードおよび「observer」キーワードは、異なるデータベースユーザのためのある特定のプライバシ制限および認可制約を規定することができ、それらは、実行エンジン2による特定のDAMLプログラムの実行中に実施されることが可能である。例として、データベースユーザ21が、データベースシステム1に記録された一意の暗号識別情報によって、図7に示すテンプレート81のインスタンス化物75の銀行Party78と関連付けられる場合があり得る。また、データベースユーザ31が、データベースシステム1に記録された一意の暗号識別情報によって、テンプレート81のインスタンス化物75の寄贈者Party80と関連付けられる場合があり得る。したがって、データベースユーザ21のためのプライバシ制限23'は、データベースユーザ21が、「署名者」77であることによって、少なくともテンプレート81のインスタンス化物75への読出しアクセスを有するという事実を含むことができ、また認可制約も、データベースユーザ21が、インスタンス化物75がデータベースシステム1内のデータレコード7として有効なエントリになるためにそれを暗号認可していたはずである(例えばそのインスタンス化物について説明できるはずである)、という事実を含むことができる。さらに、データベースユーザ31のためのプライバシ制限23''は、データベースユーザ31が、「観察者」79であることによって、少なくともテンプレート81のインスタンス化物75への読出しアクセスを有する、という事実を含むことができる。それに加えて、データベースユーザ31は、DAMLプログラムが実行されるときに実行エンジン2によって実施されるDAMLセマンティクスを利用して、確実に、データベースユーザ21がテンプレート81のインスタンス化物75を暗号認可しており、それにより、インスタンス化物75がデータベースシステム1内の有効なエントリまたはデータレコード7(したがって義務)であるという確信が、データベースユーザ31にもたらされるようにすることができる。例として、データベースユーザ31は、それがデータベースシステム1内のデータレコード7として表された現金の額76を保持していること、またデータベースユーザ21がこの状態
について説明できることを、DAMLのセマンティクスに組み込まれている認可制約のため、確信することができる。
【0074】
さらなる認可制約が、DAMLのセマンティクスに組み込まれ、実行エンジン2によってデータベースシステム内で実施されることが可能である。そのような認可制約の例について、以下において図7のCashテンプレート81に関して論じる。大まかに言えば、DAML2またはDAML3のいずれの認可制約または特徴も、データベースシステム1とともに利用され、実行エンジン2によって実施されて、確実に、データベースシステム1にサブミットされるトランザクション53が、関連するデータベースユーザ21、31、41によって適切に暗号認可されるようにすることが可能である。例として、DAML3のパラグラフ[219]からパラグラフ[231]に開示されているいわゆる「義務負担可能計算(obligable computation)」認可制約(非義務負担可能計算チェックと呼ばれることもある)をデータベースシステム1とともに利用して、確実にデータベースシステム1とともに使用されるDAMLプログラムの全ての可能な実行経路が正当なデータベースユーザ21、31、41によって認可されるようにすることができる。実際、DAML3では、どのように、DAMLプログラムの実行中に、確実にそのプログラムの全ての実行経路または可能性が十分に認可されるようにすることができるかについて詳述している。これはデータベースシステム1についても同じとなり得、実行エンジン2をそのような認可制約を実施するためのメカニズムとすることができる。例として、実行エンジン2は、そのランタイムシステムおよび/または環境によって、データベースシステム1内に記憶されたDAMLプログラムの全ての実行経路(例えば以前の実行状態および将来的な実行状態)を調べて、確実にプログラムの以前の各実行経路または実行状態およびプログラムの将来的な各実行経路または実行状態が適切に暗号認可されるようにすることができる。
【0075】
Cashテンプレート81を認可制約の一例として使用すると、テンプレート81が、所有者84によって実行されることの可能な複数の選択肢83、85を含んでいることが分かる。一例では、DAMLのセマンティクス、この場合はキーワード「controller owner can」の使用により、テンプレート81のインスタンス化時に実行エンジン2によって実施されることの可能な認可制約が規定される。「controller can」シンタックスは、実行エンジン2によって解釈され、実行されると、指定されたParty(この場合は所有者84)のみが、関連するコード宣言またはロジック(例えば図7の選択肢83の本体部)の実行を認可されることを示すことができる。一例では、そのような能力が備わったPartyは、関連するコード宣言またはロジック(例えば図7の選択肢83の本体部)を実行するためのその認可を、データベースシステム1にサブミットされるトランザクション53に適切な暗号鍵(例えば一意の秘密鍵)で暗号署名することによって、実証することができる。それに加えて、関連するコード宣言およびロジックの本体部は、さらなる認可制約を指定することができ、その認可制約は、コード宣言およびロジック(例えば選択肢83)内で、関連するPartyが、他のPartyを義務に拘束する新たなDAMLプログラムをそのようなPartyの認可なしでは作成することができないこと、適切な認可なしでは他のDAMLプログラムの一部を実行すること(すなわち実行を進行させること)ができないこと、また適切な認可なしではDAMLプログラムに関連する他のデータおよび共有コードセグメントをアーカイブあるいは修正することができないことを確実にすることのできる能力を含むことができる。一例では、実行エンジン2は、いわゆる「義務負担可能計算」チェックを実施して、確実にDAMLの前述の例示的な認可制約のいずれも違反していることのないようにすることができる。図7では、「Cash」コントラクト(DAMLテンプレート81)が、(196内の)「発行者」Partyによって暗号認可されたオペレーションのみを通じて最初に作成されることが可能であることが分かり、というのもこのPartyは署名者197であるためである。この例では、作成された後、「発行者」はいずれの実行可能選択肢83、85にわたっても同じ状態を保ち、それによって、「発行者」の初期認可がCashコントラクト作成89、87、および95を認可することが可能であることに留意されたい。同様に、例示的なDAMLセマンティクスは、コントローラ「所有者」84を観察者にし、「所有者」パーティが選択肢83、85を実行することを認可する。
【0076】
したがって、DAMLのセマンティクスを任意のデータベースユーザ21、31、41が使用して、DAMLプログラムを構成し、確実にユーザ21、31、41間で適切なプライバシ制限および認可制約が実施されるようにすることができる。以下詳述するように、実行エンジン2は、確実にDAMLプログラムがデータベースシステム1内で実行されるときにプライバシ制限および認可制約がデータベースシステム1内で実施されるようにする、重要な役割を果たすことができる。
【0077】
エビデンスログ
【0078】
データベースシステム1は、データベースエビデンスログ57を使用して、共有コードセグメントの実行履歴(例えばインスタンス化されたDAMLテンプレートの実行)、サブミットされたトランザクション53、トランザクション53に関連する暗号認可、およびエビデンスとしてまたはデータベースシステム1を監査するのに有用な、他の情報を記録することができる。いくつかの例では、これは、プライバシ制限および/または認可の検証のエビデンスを含むことができる。換言すれば、インスタンス化されたDAMLテンプレートの実行が、関連する任意のプライバシモデルおよび/または認可モデルに準拠していること、のエビデンスである。
【0079】
(本明細書においては「監査ログ」とも呼ばれる)エビデンスログ57は、データベースユーザ21、31、41が各データベースユーザの異なる(かつ許可された)ビューに従ってデータベースシステム1の状態を検証するための監査可能情報を含むことができる。さらなる例では、これが、データベースサーバ9および他のパーティがプライバシ制限および認可に従ってデータベースシステム1の状態を検証することを可能にすることもできる、ということを理解されたい。
【0080】
エビデンスログ57の一例が図10に示されており、これは、サブミットされたいくつかのトランザクション53のエビデンスを示している。エビデンスログ57は、以下のデータのうちの1つまたは複数を取り込んでよい。
1.グローバル一意トランザクション識別子(「tx_id」401)。
2.特定のデータレコード7の挿入、削除、または更新を生じさせた要求の要求識別子(「req_id」403)。要求識別子は特定のデータレコードを識別することができる。
3.要求に対する署名者および観察者(「signatories」405および「observers」407)。これは、以下のものを含むことができる。
a.要求を認可したパーティ(例えばデータベースユーザ)。
b.実行要求の結果として実行される1つまたは複数の共有コードセグメントの実行を認可したパーティ。
c.特定のデータレコードへの特定のパーティの観察者読出しアクセスを認可したパーティ。
d.要求によって影響を受けた(挿入された、更新された、または削除された)データを観察するための読出しアクセスが認可されたパーティ。
4.要求タイプ(「request」409)および要求者の識別情報(「requested_by」411)。要求タイプは、要求によって呼び出された共有コードセグメント51、5(例えばDAMLコントラクトおよび/またはDAMLテンプレート59)への参照とすることができる。例として、要求タイプはDAMLコントラクトテンプレート識別子とすることができ、それは(以下において論じる)DAMLプログラムの識別子とすることができる。
5.トランザクション53のサブミッションの時刻印などの要求時刻印(「requested_at」413)。例示的な時刻印値は、データベースオペレータによって、または別途の時刻印付けエンジン8によって設定されることが可能である。
6.DAMLコントラクトを起動するために使用される要求引数(「request_args」415)。
7.現在のトランザクション要求を開始した可能性のある、任意の要求への参照(「obligated_by」417)。例えば、以前のトランザクション要求が、委譲されたトランザクション要求(例えば現在の要求)の実行を開始した場合、監査ログ57は、次いで現在の委譲された要求を開始した以前の要求の要求識別子を記憶することができる。一例が、以前の要求2「によって義務を負わされた」要求3である。
8.現在の要求を通じた実行の進行を可能にする認可制約およびプライバシ制約を可能にした可能性のある任意の以前の要求への参照(「requested_on」419)。例として、要求4(「cash_split_for」)は、要求3(所有者「博物館」によって所有される現金額500,000を作成した要求)が与えられて可能であったのであり、したがって、要求4は要求3を参照する。
9.パーティがそのプライバシビューに従ってデータベースシステム1の現在の状態を検証するために必要となるはずである、図示していない他の監査データ。
10.データベースオペレーションの高速化、低レイテンシ化、および最良の電力消費を求めてオペレータが並列実行および順次実行をシャード(shard)、分割、クラスタ化、インデックス付け、および一般にはオーケストレーションするために必要となるはずである、図示していない他のデータ。
【0081】
データベースシステム1は、確実に全てのデータベーストランザクションが適切なエビデンスを有するようにすることができる。記録されたエビデンスは、各トランザクションに各トランザクションの一部として関連付けられることが可能である。換言すれば、トランザクションおよび同時実行エンジン6、実行エンジン2、ならびにエビデンスログ57は、証明されたトランザクションおよび証明されたデータベースオペレーションをコミットすることに加えて、エビデンスの各部分を一緒に処理し、それをエビデンスログ57に対してコミットすることができる。データベースシステム1は、確実にエビデンスなしではトランザクションまたはデータベースオペレーションがコミットされないようにし、また対応する証明されたトランザクションおよびオペレーションをデータベースが記録しなければエビデンスログ57の部分が記録されないようにすることができる。
【0082】
データベーストランザクションおよび同時実行エンジン6、実行エンジン2、ならびにエビデンスログ57を使用して、データベースシステム1にサブミットされたどのトランザクション53が有効であり、コミットされることが可能であるかを、エビデンスがある状態で決定することができる。コミットされた場合、トランザクション53は、DAMLプログラム51またはその一部の実行を1人または複数のデータベースユーザ21、31、41の代わりに生じさせること、およびトランザクション53の有効性を証明するエビデンスログ57の部分を生じさせることができる。エビデンスログ57内のエビデンスは、証明されたトランザクションのプライバシおよび認可制約を受けた1人または複数のデータベースユーザによって閲覧されることが可能であり、それにより、マルチパーティの定義、およびデータベースシステム1を使用したプログラム51の証明された実行が可能になる。証明されたトランザクション53は、いくつかの場合には、データレコード7を操作し、データベーススキーマを展開し、または他のデータベースアクションを実施する、効果を有することができ、それにより、マルチパーティプログラム51にわたって使用される証明されたマルチパーティデータレコード7が可能になる。
【0083】
データベースシステム1の問合せオペレーションが、エビデンス結果を生成することができる。データベースユーザは、特定のエビデンスログ57データの存在または不在に応じて決まる結果をコミットするデータベーストランザクション53を要求することができる。データベース認可は、プログラムのエビデンスログ57データへの問合せオペレーション内での特定のエビデンス結果の存在または不在を条件とした特定のプログラムセグメントの実行を認可することができる。データベース認可は、プログラムのオペレーション内での特定のエビデンス結果の作成を条件とした特定のプログラムセグメントの実行を認可することができる。DAMLセマンティクスを実施する例示的なエビデンスログ57は、認可され証明されたトランザクション結果、認可、およびデータを記録することができ、それによって、1人または複数のデータベースユーザ21、31、41が以前のまたは現在のトランザクション結果の存在または不在を条件としたプログラム実行を認可するトランザクションを認可することが可能である。
【0084】
データベースシステム1は、確実に、特定のプログラムセグメントのための実行認可が、その特定のプログラムセグメントの実行を期待しているトランザクション内で、データに対する特定のオペレーション、または認可、または特定の実行オペレーションの存在を条件とすることができるようにすることができる。データベースユーザはしばしば、そのようなトランザクション全体にわたる条件を利用して、データベースユーザグループ内でデータを管理し、その場合、データベースユーザは、特定のデータベースユーザグループ内でデータに対して自由に操作することができるが、グループ外のデータベースユーザを含むトランザクションについては、特定の認可データベースユーザを含めなければならない。
【0085】
データベースシステム1は、エビデンスログ57のプライバシを各データベースユーザの特定の「ビュー」に従って確実なものにするための制約を含んでよい。換言すれば、各データベースユーザは、監査ログ57の、データレコード7に対するそれ自身のアクセス認可に当てはまる部分のみを閲覧することができる。したがって、任意のデータベースユーザは、一例では、上で詳述したように、DAMLセマンティクスに従って許可されない限り、他のデータベースユーザに関連する監査ログ57情報に関与していない。これは実際的には、データベースユーザがデータベースシステム1の状態を、その状態がデータベースユーザの許可されたビューに関係するときにのみベリファイできることを意味する。
【0086】
データベースシステム1は、エビデンスログ57内のエビデンス、また問合せによってエビデンスログ57から返されたエビデンスが、データベースシステム1の認証されたバージョンを使用した実行および記憶、ならびにエビデンスログ57の認証されたバージョンの結果であることを立証するための、専用のセキュアなハードウェア機能(例えばIntel SGXなどのトラステッド実行環境またはセキュアエンクレーブ)の使用を含んでよい。換言すれば、専用のセキュアなハードウェア機能の使用を通じて、認証された正当なエビデンスログプログラムを含めて、共有データベースプログラムセマンティクス(例えばDAMLセマンティクス)を実施する正当なデータベースシステム1の認証されたバージョンが、ユーザによってエビデンスログに入力される、またユーザによってエビデンスログ57から問合せされるデータベーストランザクションの正当なプライベートの認可された実行を、各ユーザに立証することができる。
【0087】
例示的な方法
【0088】
図1および図4を参照すると、第1のデータベースユーザ21、第2のデータベースユーザ31、および任意のNデータベースユーザ41が、特定の使用例のためのそれらのユーザのDAMLプログラムを定義する第1のDAMLテンプレート59'、第2のDAMLテンプレート59''、および第3のDAMLテンプレート59'''に合意することができる。例として、第1のDAMLテンプレート59'、第2のDAMLテンプレート59''、および第3のDAMLテンプレート59'''は、コンピュータネットワーク経由でデジタル資産の交換を行うためのDAMLプログラムを定義することができる。第1のDAMLテンプレート59'、第2のDAMLテンプレート59''、および第3のDAMLテンプレート59'''は、実行可能プログラム命令51として、永続性モジュールを介してデータベースシステム1に永続させる(例えばメモリ3内に記憶させる)ことができる。一例では、第1のデータベースユーザ21、第2のデータベースユーザ31、またはNデータベースユーザ41は、ペイロードが第1のテンプレート59'、第2のテンプレート59''、および第3のテンプレート59'''に対応する要求の形態をとるトランザクション53をデータベースシステム1にサブミットして、後の時点で実行できるようにそのようなテンプレートをメモリ3に永続させることができる。
【0089】
DAMLテンプレート59'、59''、59'''は、データベースユーザ21、31、41間のプライバシモデル13および認可モデル19を定義することができる。実際、上で詳細に説明したように、DAMLのセマンティクスにより、データベースユーザ21、31、41が、それらの特定の使用例(例えばこの場合はコンピュータネットワーク経由でのデジタル資産の交換)のために、DAMLプログラムを構成し、プライバシモデルまたは制約13および認可モデルまたは制約19を定義することが可能になり得る。一例では、テンプレート59'、59''、59'''のうちの1つを、図7のCashテンプレート81とすることができ、交換されるデジタル資産を、そのテンプレート81内に記載された現金の額76のデジタル表現とすることができる。図2に示すように、DAMLテンプレート59'、59''、59'''は、第1のデータベースユーザ21によって認可されたプライバシ制限23'、23''、23'''および第1の認可セット25'、25''、25'''、第2のデータベースユーザ31によって認可されたプライバシ制限33'、33''、33'''および第2の認可セット35'、35''、35'''、ならびにNデータベースユーザによって認可されたプライバシ制限43'、43''、43'''およびN認可セット45'、45''、45'''を定義することができる。図3は、テンプレート59'、59''、59'''によって定義されたデータベースユーザ21、31、41のプライバシ制限14および認可20を示す。認可20は、本明細書のパラグラフ[80]において説明した(i)から(iv)のいずれかとすることができ、プライバシ制限14は、認可25、35、45内のユーザのそれぞれのものと合致し、データベースシステム1内に記憶されたデータレコード7のサブセット27、37、47への読出しアクセスおよび/または書込みアクセスを指定することができる。例として、ユーザ21、31、41のいずれかが、DAMLテンプレート内の何らかのコード宣言またはロジック(例えば「選択肢」)を実行するための認可を有してよく、そのようなユーザのプライバシ制限は、そのコード宣言またはロジックの実行中および/または実行後にそのユーザがデータレコード7の特定のサブセットに対して読み出し、かつ/または書き込むことのできる能力を定義することができる。
【0090】
データベースシステム1内のデータレコード7にアクセスし、かつ/またはそれを操作するために、データベースユーザ21、31、41のいずれかが、データベースシステム1にトランザクション53をサブミットすることができる。トランザクション53は、ユーザ21、31、41のいずれかのコンピュータまたはノード20、30、40によって通信ネットワーク(例えばインターネット)経由でデータベースシステム1(例えばデータベースサーバ9)に送出される、任意のデータレコード7にアクセスし、またはそれを操作せよとの要求とすることができる。
【0091】
図5は、データベースシステム1またはサーバ9にサブミットされるトランザクション53の一例を示す。いくつかの例では、トランザクション53は、1つまたは複数の要求またはオペレーションを含むことができる。例えば、トランザクション53は、データレコード7のサブセットを、その中に定義されたプライバシ制限および認可セットに従って操作せよとの要求61を含んでよい。上述したように、プライバシ制限および認可セットはそれぞれ、プライバシモデル13および認可モデル19によって定義されてよい。トランザクション53は、データレコード7のサブセットを、Zテンプレート内に定義されたプライバシ制限および認可に従って操作せよとの要求63を含むこともできる。さらなる例では、トランザクション53は、データレコードのサブセットを、複数の予想可能なアクションからの指定された選択肢に従って操作せよとの要求を含むことができる。さらに別の例では、トランザクション53は、データレコードの複数のサブセットを、それぞれに対応するプライバシ制限および認可セットに従って操作せよとの要求を含むことができる。
【0092】
図4の例示的なプロセス100に示すように、トランザクション53はデータベースサーバ9にサブミットされ、サーバ9によって処理110されることが可能である。一例では、各トランザクション53は、データベースシステム1内に記憶されたデータレコード7にアクセスせよ、もしくはそれを操作せよとの、またはインスタンス化されたDAMLテンプレート59'、59''、59'''を実行せよとの要求とすることができる。実際、いずれのテンプレート59'、59''、59'''も(例えばトランザクション53をデータベースシステム1にサブミットすることによって)インスタンス化され、それにより、テンプレートに応じて、関連するユーザ21、31、41に、インスタンス化されたテンプレートのコード宣言またはロジック(例えば「選択肢」)を実行することのできる、かつ/またはテンプレートのデータスキーマ内で定義されたデータにアクセスすることのできる能力が与えられることが可能である。データベースサーバ9へのトランザクション53のサブミッション後、トランザクションおよび同時実行エンジン6ならびに実行エンジン2は、トランザクション53を処理110し、トランザクション53を、処理のためにデータベースサーバ9にサブミットされる可能性のある他のトランザクション53に対して順序付けすることができる。例として、トランザクションおよび同時実行エンジン6は、本明細書において述べた同時実行制御プロトコルのいずれかを利用して、トランザクション53を他のトランザクション53に対して順序付けし、確実にトランザクション53がデータベースサーバ9によって処理されるときにトランザクションの重要な特性(例えば原子性、整合性、独立性、および耐久性)を維持するようにすることができる。
【0093】
トランザクションおよび同時実行エンジン6ならびに実行エンジン2はまた、トランザクション53を処理120して、トランザクション53がプライバシモデル13および認可モデル19に準拠しているかどうかを判定することができる。トランザクション53がプライバシモデル13および認可モデル19に準拠している場合、トランザクション53はコミットされることが可能であり、図2に示すように、データレコード7の第1のサブセット27および/または第2のサブセット37は、プライバシモデル13および認可モデル19と合致して操作55'、55''されることが可能である。例として、トランザクション53は、一例では、第1のコンピュータノード20および/または第2のコンピュータノード30によって送信された、インスタンス化されたDAMLテンプレート59'、59''、59'''を実行せよとの要求とすることができ、このトランザクション53は、データベースシステム1内に記憶されたデータレコード7を操作する効果を有することができる。実際、図10は、req_id1(トランザクション53)が、図7のCashテンプレート81をデータベースシステム1内のデータレコード7としてインスタンス化する働きをするcash_create要求であることを示す。同様に、req_id2は、req_id1トランザクション53からのインスタンス化されたCashテンプレート81の第2の選択肢85(すなわち送金選択肢)を実行する働きをするcash_transferトランザクション53である。送金選択肢の実行は、データベースシステム1内のデータレコード7(例えばリレーショナルデータベースのテーブル内のロウ)の、第1のデータベースユーザから第2のデータベースユーザへの現金の送金(例えば現金の額76)を記録する入力または操作を生じさせることができる。
【0094】
上述したように、トランザクション53がプライバシモデル13および認可モデル19に準拠している場合、トランザクション53はコミットされることが可能である。一例では、実行エンジン2は、トランザクション53をデータベースシステム1に対してコミットするためのメカニズムを提供することができる。例として、実行エンジン2のランタイムシステムが、インスタンス化されたDAMLテンプレート59'、59''、59'''を実行し、確実にそのような実行が特定のインスタンス化物のプライバシモデル13および認可モデル19に準拠するようにする働きをすることができる。一例では、トランザクション53に応答して、インスタンス化されたDAMLテンプレート59'、59''、59'''に対応するプログラム命令51が、プロセッサ11によって、永続性モジュール(例えばメモリ3)から取り出され、実行エンジン2のランタイムシステムを使用して実行されることが可能である。インスタンス化されたDAMLテンプレート59'、59''、59'''の実行を要求する特定のトランザクション53が、インスタンス化されたDAMLテンプレート59'、59''、59'''の実行に必要なパラメータまたは他のデータを含んでいる場合、そのようなパラメータまたはデータは、インスタンス化されたDAMLテンプレート59'、59''、59'''の実行中に実行エンジン2に提供されることが可能である。
【0095】
さらに、実行エンジン2は、確実にそのようなインスタンス化されたDAMLテンプレート59'、59''、59'''の(例えば必要なパラメータまたはデータを用いての)実行中にプライバシモデル13および認可モデル19が実施されるようにすることができる。例として、トランザクション53がサブミットされるとき、そのトランザクション要求をサブミットしたコンピュータノード20、30、40による暗号署名またはその表現物の形態をとるデータが、トランザクション53とともに含められることが可能である。また、インスタンス化されたDAMLテンプレート59'、59''、59'''の実行時に、実行エンジン2のランタイムシステムは、トランザクション53をサブミットしたコンピュータノード20、30、40が、インスタンス化されたDAMLテンプレート59'、59''、59'''の実行を認可されているかどうかを判定することができる。例として、実行エンジン2は、DAML3のパラグラフ[219]からパラグラフ[231]に記載されているいわゆる「義務負担可能計算」認可チェックを含む、DAML2またはDAML3に記載されている認可プロセスのいずれかを実施することができる。関係する認可セット25'、25''、25'''、35'、35''、35'''、45'、45''、45'''のいずれかをトランザクション53が違反しており、したがって、トランザクション53が認可モデル19に準拠していない場合、実行エンジン2は、インスタンス化されたDAMLテンプレート59'、59''、59'''の実行をフェイルさせ、関連するプロセスを(例えばそのトランザクション要求をサブミットしたコンピュータノード20、30、40にメッセージを通信して)終了することができる。例として、誤った暗号署名がトランザクション53とともに提示された場合、実行エンジン2はランタイム時に、インスタンス化されたDAMLテンプレート59'、59''、59'''の実行をフェイルさせることができ、トランザクション53をデータベースシステム1に対してコミットすることができない。別の例では、トランザクション53と関連するノード20、30、40が適切な認可を提供しない場合、実行エンジン2は、インスタンス化されたDAMLテンプレートの実行をフェイルさせることができ、トランザクション53をデータベースシステム1に対してコミットすることができない。
【0096】
同様に、実行エンジン2は、確実にインスタンス化されたDAMLテンプレート59'、59''、59'''の(例えば必要なパラメータまたはデータを用いての)実行中にプライバシモデル13が実施されるようにすることができる。例として、実行エンジン2を使用してインスタンス化されたDAMLテンプレート59'、59''、59'''が実行されるトランザクション53のサブミッションの際に、いずれのプライバシ制限23'、23''、23'''、33'、33''、33'''、43'、43''、43'''も、関係するデータレコードのサブセット27、37、47に関して改変されることが可能であり、かつ/またはデータレコード7の異なるサブセットに関して新たなプライバシ制限14が作成されることが可能である。さらに、データレコード7の異なるサブセットに適用可能なプライバシ制限の改変および作成は、異なるデータベースユーザ21、31、41がそれらのDAMLプログラムをシンタックス上どのように構成したか、また実行エンジン2(例えばそのランタイムシステム)がそのDAMLシンタックスをどのように実施するかによって規定されることが可能である。例として、図7のテンプレート81は第2の選択肢85を示しており、この第2の選択肢において、所有者「コントローラ」は、テンプレートのデータスキーマ内で定義された現金の額76を別のパーティに送金することができ、そのことが、所有者84がnewOwner95(Partyタイプのフィールド)に設定されるテンプレート81の別のインスタンス化物を作成する働きをする。テンプレート81のインスタンス化物の送金選択肢85の実行時、実行エンジン2は、その選択肢85に対応するプログラム命令51を(例えばその選択肢のコントローラ、すなわち寄贈者80によってサブミットされたトランザクション53によって)実行し、データベースシステム1内のデータレコード7の操作を生じさせて、現金の額76が所有者84からnewOwner95に送金されたことを示すことができる。それに加えて、テンプレート81のこのインスタンス化物に関係するプログラム命令51の実行は、データベースユーザに対応することのできる所有者84およびnewOwner95のためのプライバシ制限を変更することができる。
【0097】
図12図17はそれぞれ、データベースサーバ9へのトランザクション53のサブミッションからの出力例を示しており、この場合、寄贈者80がCashテンプレート81のインスタンス化物の第2の選択肢85を実行して、現金の額76を寄贈者80からnewOwner95、この場合は博物館へと送金している。具体的には、図12は、最初に銀行データベースユーザによってサブミットされたcash_createトランザクション53と、その結果、データベースシステム1がcash_createトランザクション53をエビデンスログ57内にロギングし、cash_createトランザクション53についての詳細をシステム1にデータレコード7(例えばリレーショナルデータベース内のロウ)として入力する様子を示している。cash_createトランザクション53は、図示のように、所有者84、この場合は寄贈者80のために、現金500,000を作成する。図13は、銀行パーティおよび寄贈者パーティのための、またcash_createトランザクション53に関与していない他のデータベースユーザのための、対応するプライバシ制限14を示す。これに加えて、図13、および図14の上部は、Cashテンプレート81のインスタンス化物のための認可制約20を示し、具体的には、第1のデータベースユーザ(eve)が、第2のデータベースユーザ(銀行)による500,000の現金義務を作成するトランザクション53を、そのデータベースユーザの有効な暗号認可なしでは、データベースサーバ9にサブミットできないことを示す。やはりこれは、Cashテンプレート81のインスタンス化物が有効な拘束力のある義務を構成するためにそれを署名者197(発行者)が暗号認可しなければならない(例えば発行者による現金義務を作成するcash_createトランザクション53に暗号署名しなければならない)ことを、Cashテンプレート81が指定する結果としてのものである。またその上に、コントローラ84(所有者)がCashデータレコード7への読出しアクセスを有する暗号認可された観察者であることを、Cashテンプレート81が指定する結果でもある。
【0098】
図14図17は、寄贈者80によって別のデータベースユーザ、この場合は博物館に現金を送金する様子を示す。図15は、寄贈者80がcash_transferトランザクション53をサブミットして、現金の額76を寄贈者80からnewOwner95、この場合は博物館に送金する様子を示す。図16の上部に示すように、cash_transferトランザクション53の結果、エビデンスログ57が2つのロウ分拡張する。実際、cash_transferトランザクション53により、Cashテンプレート81のインスタンス化物の第2の選択肢85の実行が実質的に生じるので、これらの2つのロウが追加されることは、第2の選択肢85の実行の論理的かつ予想可能な結果である。具体的には、cash_transferトランザクション53は、Cashテンプレート81の既存のインスタンス化物をアーカイブまたは廃棄するcash_transferアクション、および所有者84が博物館として反映されているCashテンプレート81の新たなインスタンス化物を作成するcash_createアクションを生じさせることができる。所有者84が博物館として反映されているCashテンプレート81の新たなインスタンス化物は、図17の下部のデータレコード7内に見ることができ、これは、cash_transferトランザクション53の結果としてデータベースシステム1に入力されたものである。さらに、図16は、要求3の一部であるcash_createアクションが、以前の所有者84によってcash_transferアクション内で指定されたnewOwner95(博物館)によって所有される現金を作成するための、銀行78に委譲された要求であるという説明を含んでいる。委譲された要求とは、出願人のDAML3出願に記載されているように、銀行78データベースユーザと寄贈者80データベースユーザとの間に共有認可20が存在することを意味することができ、その中で、寄贈者80データベースユーザは、第2の選択肢85内でnewOwner95を受取人としてCashテンプレート81をインスタンス化するための認可を、銀行78データベースユーザに委譲している。換言すれば、寄贈者80データベースユーザの、トランザクション53を介した第2の選択肢85の実行は、以前の所有者84、この場合は寄贈者80によって指定されたnewOwner95を受取人としたCashテンプレート81のインスタンス化物の作成を委譲することができる。例として、第2の選択肢85を実行するトランザクション53をサブミットする際、寄贈者80データベースユーザは、そのようなトランザクション53とともに、newOwner95を識別するデータを提供することができ、それによって、そのようなデータが実行エンジン2によって第2の選択肢85の実行中に利用されることが可能になる。したがって、実行エンジン2(例えばそのランタイムシステム)は、確実に第2の選択肢85の実行中に銀行78データベースユーザと寄贈者80データベースユーザとの間の共有認可20が満たされるようにすることができ、満たされない場合、実行エンジン2は、任意の関連するトランザクション53をフェイルさせることができる。具体的には、図16の上部に示すエビデンスログ57内に反映されているように、寄贈者80による、newOwner95を博物館に設定した第2の選択肢85を実行するトランザクション53のサブミッションは、要求2として識別されるcash_transferアクション、および銀行78が要求者として識別される委譲されたcash_createアクションを生じさせ、その結果、newOwner95が博物館としてリストされたCashテンプレート81のインスタンス化物を生じさせることができる。それに加えて、前述のアクションはそれぞれ、図16にトランザクション2584として識別された同じ原子トランザクション53内で生じることができる。したがって、現金の額76をnewOwner95、この場合は博物館に送金するために寄贈者80によってサブミットされたトランザクション53の原子性のため、それらのアクションのどちらも生じるか、どちらも生じないかのいずれかとなる。
【0099】
やはり図16に示すように、寄贈者80データベースユーザによる上記のトランザクション53のサブミッションの結果、そのデータベースユーザのプライバシ制限14を変更することができる。実際、現金の額76はnewOwner95(博物館)に送金されたので、寄贈者80データベースユーザはもはや、その額を閲覧するのに適した許可をもっておらず、というのも寄贈者80データベースユーザはCashテンプレート81の現在のインスタンス化物に対するパーティではないためである。したがって、第2の選択肢85の実行中、実行エンジン2は、寄贈者80データベースユーザに関するプライバシ制限14を、寄贈者80がもはや、Cashテンプレート81の現在のインスタンス化物に関連する任意のデータレコード7を閲覧するためのアクセス認可を有していないように、改変することができる。図16に示すように、寄贈者80は、自身のプライバシ制限14が正しいことを、トランザクションid2583、2584の一部であった要求1および2のみを表示するエビデンスログ57の自身のバージョンを閲覧することによって、監査および確認することができる。とりわけ、寄贈者80のエビデンスログ57のビューは、それがトランザクションid2584の一部である要求3へのビューを、寄贈者80が監査ログのその部分を閲覧するのに適したプライバシ許可をもたないことから有していないという点で、プライバシ保全性でもある。それに加えて、図17は、博物館のビューを、そのエビデンスログ57と、Cashテンプレート81のインスタンス化物に対応するデータベースシステム1内に記憶されたデータレコード7へのそのビューの両方の点から示す。図示のように、博物館は、トランザクションid2584の一部であった要求3へのビュー、および博物館が銀行78データベースユーザを署名者として現金500,000を有することを示すデータレコード7のみを有する。
【0100】
上記の例を通じて実証したように、データベースシステム1およびその実行エンジン2は、異なるデータベースユーザ間でプライバシ制限14および認可制約20を実施し、それらはどちらも、異なるデータベースユーザがデータベースサーバ9にトランザクション53をサブミットするときに変更されることが可能である。それに加えて、データベースシステム1にサブミットされたトランザクション53に対応するデータが、エビデンスログ57内に取り込まれることが可能であり、このエビデンスログ57もやはり、異なるデータベースユーザ間で共有されるプライバシ制限14に準拠する。その結果として、プライバシおよび認可保全性であり、全てのデータベースユーザによって監査可能である、マルチパーティデータベースシステム1となる。
【0101】
代替的ストアドプロシージャ実装形態
【0102】
図11は、上記のデータベースシステム1に類似したデータベースシステム301の代替的ストアドプロシージャ実装形態を示す。本明細書においては詳細に論じないが、データベースシステム301は、実行エンジン2およびエビデンスログ57の使用を含むがそれに限定されない、データベースシステム1のコンポーネントおよび機能の多くを共有することができる。
【0103】
一例では、DAMLは、データベースシステム301と対話するための手続き型言語として使用することができ、DAMLテンプレートおよび/またはそれらのインスタンス化物は、データベースシステム301のデータベースサーバ内にストアドプロシージャ304として記憶させることができる。一例では、DAMLストアドプロシージャ304は、データベースシステム301のデータディクショナリ内に記憶させることができる。さらに、手続き型ハンドラまたは手続き型言語ハンドラ302を、データベースシステム301内に含めることができる。手続き型言語ハンドラ302は、DAMLストアドプロシージャ304をパースし、完全シンタックス解析し、実行する、プログラム命令を備えることができる。したがって、手続き型言語ハンドラ302は、データベースシステム301のデータベースサーバ内に記憶された、異なるデータベースユーザ間で構成されたDAMLコントラクトを解釈してデータベースシステム301内でアクションを起こす(例えばデータレコード、例としてテーブル308にアクセスし、かつ/またはそれを操作する)働きをするプログラム命令を含むことができる。
【0104】
データベースシステム1の場合について上述したのと同様に、データベースシステム301内に記憶されたデータレコードは、データベースシステム301のデータベースサーバにトランザクションをサブミットすることによってアクセスされ、かつ/または操作されることが可能であり、データベースシステム301のデータベースサーバにトランザクションをサブミットすることには、DAMLストアドプロシージャ304を実行する効果がある。図11に示すように、任意数のクライアントアプリケーション320、330、340がデータベースシステム301のデータベースサーバにトランザクションをサブミットすることができ、そのことが、異なるデータベースユーザ間でDAMLストアドプロシージャ304を実行する働きをすることができる。一例では、クライアントアプリケーション320、330、340は、データベースシステム301のデータベースサーバにサブミットされるトランザクションに暗号署名して、そのようなアプリケーションの、特定のストアドプロシージャを実行するための認可を証明することができる。したがって、上で論じたDAML例の場合と同様に、共有認可がデータベースシステム301のデータベースユーザ間で、データベースシステム1と同様に存在することが可能である。さらに、DAMLストアドプロシージャ304に対する実行時に、データベースシステム301のデータベースユーザ間のプライバシ制限が、データベースシステム1と同様に実施されることが可能である。したがって、データベースユーザは、それらのDAMLプログラムを無数の方途でストアドプロシージャ304として構成することを選択し、次いでデータベースシステム301のデータベースサーバにトランザクションをサブミットして、そのようなストアドプロシージャ304を実行し、そのようなトランザクションと合致してデータレコード(例えばテーブル308)のプライバシおよび認可保全性のアクセスおよび/または操作を生じさせることができる。それに加えて、図示していないが、そのようなトランザクションに関係するデータは、先に詳述したように、データベースシステム301内に記憶されたエビデンスログまたは監査ログ内に記録されることが可能である。したがって、データベースシステム301は、データベースシステム1に代わる、プライベー
トであり、監査可能であり、認可保全性の、マルチパーティデータベース実装形態を提供することができる。
【0105】
一代替実施形態では、DAML以外のプログラミング言語をストアドプロシージャ言語として使用することができる。
【0106】
プロセッサ例
【0107】
[1]図18は、ノード例を示す。図18に示すノード20、30、40は、プロセッサ1802、メモリ1803、ネットワークインターフェースデバイス1808、データ記憶デバイス1820とインターフェースするインターフェースデバイス1809、およびユーザインターフェース1810を含む。メモリは、命令1804およびデータ1806を記憶し、プロセッサは、メモリからの命令を実行して、上述した方法を実施する。
【0108】
[2]プロセッサ1802は、メモリ1803および/またはデータ記憶デバイス1820上に記憶された命令を実行する。プロセッサ1802は、データベースユーザ21、31、41などのユーザによる入力を受け取る。プロセッサ1802は、データベースユーザによる入力に基づいて命令を決定する。命令は、実行しようとする機能とすることができる。プロセッサ1802は、プログラムコード1804内に記憶された命令を実行して、ユーザ21、31、41に任意の出力または結果を示してよい。
【0109】
本開示の広範な一般的範囲から逸脱することなく、上述した実施形態に多数の変形および/または修正が加えられてよいことが、当業者には理解されよう。したがって、本発明の実施形態は、あらゆる点で、例示的なものであり制限するものではないと見なされるべきである。
【0110】
限定はしないが一例として、本開示において暗号認可(例えば暗号署名)について論じているが、データベースユーザによるトランザクション53のサブミッションを含む他の認可メカニズムを、データベースシステム1で使用できることを理解されたい。例として、データベースユーザは非暗号手段を通じて(例えばログイン認証情報および/またはパスワードの使用を通じて)自身を認証し、次いで、そのような非暗号手段を使用してトランザクション53を認可することができる。
【0111】
加えて、先に本開示において1つのデータベースサーバ9について開示しているが、複数のデータベースサーバをデータベースシステム1において使用できることを理解されたい。そのような複数のデータベースサーバは、複数のデータベースサーバ間の合同トランザクションをコミットするためのコントローラと組み合わせることができる。
【符号の説明】
【0112】
1 マルチパーティデータベースシステム、リレーショナルデータベースシステム
2 DAML実行エンジン、DAML実行エンジンノード
3 記憶装置またはメモリ
3' 記憶装置またはメモリ
5 共有コードセグメント
6 データベーストランザクションおよび同時実行エンジン
7 データレコード、Cashデータレコード
8 時刻印付けエンジン
9 データベースサーバ
11 プロセッサ
13 プライバシモデルまたは制約
14 共有プライバシ制限
19 認可モデルまたは制約
20 共有認可、コンピュータまたはノード、第1のコンピュータノード、認可制約
21 第1のデータベースユーザ
23' プライバシ制限
23'' プライバシ制限
23''' プライバシ制限
25 認可
25' 認可、第1の認可セット
25'' 認可、第1の認可セット
25''' 認可、第1の認可セット
27 第1のデータレコードのサブセット、データレコード、第1のサブセット
30 コンピュータまたはノード、第2のコンピュータノード
31 第2のデータベースユーザ
33' プライバシ制限
33'' プライバシ制限
33''' プライバシ制限
35 認可
35' 認可、第2の認可セット
35'' 認可、第2の認可セット
35''' 認可、第2の認可セット
37 第2のデータレコードのサブセット、データレコード、第2のサブセット
40 コンピュータまたはノード、コンピュータノード
41 Nデータベースユーザ
43' プライバシ制限
43'' プライバシ制限
43''' プライバシ制限
45 認可
45' 認可、N認可セット
45'' 認可、N認可セット
45''' 認可、N認可セット
47 Nデータレコードのサブセット、データレコード
51 DAMLプログラム命令、プログラミング命令、実行可能DAMLプログラム、共有コードセグメント、マルチパーティプログラム、実行可能プログラム命令
53 トランザクション、cash_createトランザクション、cash_transferトランザクション、req_id1トランザクション
57 エビデンスログ、監査ログ
59 DAMLテンプレート
59' 第1のDAMLテンプレート、第1のテンプレート
59'' 第2のDAMLテンプレート、第2のテンプレート
59''' 第3のDAMLテンプレート、第3のテンプレート
81 DAMLテンプレート、Cashテンプレート
83 実行可能選択肢
85 実行可能選択肢、第2の選択肢、送金選択肢
100 プロセス
301 データベースシステム
302 手続き型ハンドラまたは手続き型言語ハンドラ
304 DAMLストアドプロシージャ
308 テーブル
320 クライアントアプリケーション
330 クライアントアプリケーション
340 クライアントアプリケーション
1802 プロセッサ
1803 メモリ
1804 命令、プログラムコード
1806 データ
1808 ネットワークインターフェースデバイス
1809 インターフェースデバイス
1810 ユーザインターフェース
1820 データ記憶デバイス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
【国際調査報告】