CN114096958A - 多用户数据库系统及方法 - Google Patents
多用户数据库系统及方法 Download PDFInfo
- Publication number
- CN114096958A CN114096958A CN201980097896.0A CN201980097896A CN114096958A CN 114096958 A CN114096958 A CN 114096958A CN 201980097896 A CN201980097896 A CN 201980097896A CN 114096958 A CN114096958 A CN 114096958A
- Authority
- CN
- China
- Prior art keywords
- database
- transaction
- user
- authorization
- subset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据库系统(1)和方法(100),包括数据库系统存储器(3)和至少一个第一数据库服务器(9)。数据库系统存储器(3)存储第一和第二数据库用户(21、31)之间的数据记录(7)的数据库和共享程序指令(51)。共享程序指令(51)定义包括分别对第一和第二数据库用户(21、31)的隐私限制(14、23、33)的隐私模型(13),并指定第一子集授权(25′、35′)和第二子集授权(25"、35"),该第一子集授权(25′、35′)包括允许第一数据库用户(21)与第一用户的隐私限制(23′、33′)一致地操纵数据记录的第一子集(27),该第二子集授权(25"、35")允许第二数据库用户(31)与第二用户的隐私限制(23″、33″)一致地操纵数据记录的第二子集(37)。数据库服务器(9)包括:处理器(11),被配置为执行共享程序指令(51),其中共享程序指令(51)在被处理器(11)执行时:(1)处理(110)第一或第二数据库用户(21、31)提交的交易(53);(2)确定(120)交易(53)是否符合隐私模型(13)和授权模型(19);(3)如果交易通过步骤2,投付(130)交易(53)并与隐私模型(13)和授权模型(19)一致地操纵(55)数据记录的第一或第二子集(27、37)。
Description
技术领域
本公开涉及和使用与多个用户共享的数据库系统来处理交易的数据库系统和方法。
背景技术
业务流程,例如多方业务流程,在数据库(例如SQL和NoSQL)中很难实现,尤其是当多方流程涉及数据库用户的私有业务流程时。数据库系统历来不适合在多方过程中维护隐私。虽然状态机可用于在数据库系统内实现业务模型,但状态机和数据库系统访问控制无法进行以下操作:(i)自然地捕获允许在特定约束下多方业务流程演变所需的授权,(ii)模型隐私约束,(iii)确保数据库系统访问控制授权可以证明数据库系统用户有责任将多方业务流程的部分委托给其他数据库系统用户,以及(iv)确保数据库系统用户可以协调他们的授权以在被(例如,其他数据库系统用户的)请求时执行特定的业务流程。
分布式账本技术(以下简称“DLT”)和区块链试图通过实现以智能合约(记录在账本上的程序代码)形式记录多方业务流程的分布式账本来促进多方业务流程。然而,现有的DLT和区块链解决方案可能存在一些缺点,包括:例如,区块链通常需要:(i)针对分布式节点的共识机制/算法,以对区块链的正确“状态”(以及记录到区块链中的智能合约)达成共识,以及(ii)复制机制,将状态改变传播到分布式系统中的所有节点。(i)和(ii)都确保分布式系统中的节点与账本的状态同步,包括它们共享的业务流程。然而,除了通常在区块链或DLT实现中执行的其他操作之外,(i)和(ii)还会导致分布式系统的高开销,并使分布式系统难以扩展。例如,如果区块链或DLT正在运行共识机制/算法,则很难垂直扩展网络的吞吐量(交易/秒)。类似地,利用复制机制可能会给系统带来延迟。
本公开通过在不同方之间提供共享数据库系统和隐私保护编程语义以促进具有隐私和规模的程序的多方执行,解决了许多现有问题。
发明内容
本公开的第一方面包括一种数据库系统,所述数据库系统包括:数据库系统存储器和至少第一数据库服务器。数据库系统存储器存储第一和第二数据库用户之间的共享程序指令和数据记录的数据库,其中共享程序指令分别定义包括对第一和第二数据库用户的隐私限制的隐私模型,并指定授权模型,该授权模型包括第一子集授权和第二子集授权,该第一子集授权允许第一数据库用户与第一用户的隐私限制一致地操纵数据记录的第一子集,该第二子集授权允许第二用户与第二用户的隐私限制一致地操纵数据记录的第二子集。数据库服务器包括:处理器,被配置为执行共享程序指令,其中共享程序指令在被处理器执行时:
1)处理第一或第二数据库用户提交的交易;
2)确定交易是否符合隐私模型和授权模型;以及
3)如果交易通过步骤2,则投付交易并与隐私模型和授权模型一致地操纵数据记录的第一或第二子集。
在一些示例中,数据库系统还包括存储在存储器中的程序指令,程序指令在被执行时验证交易包括来自第一或第二用户的与授权模型一致的加密授权。
在一些示例中,加密授权包括由第一或第二数据库用户加密签名的交易。
在一些示例中,数据库系统还包括:用存储器存储中的程序指令和存证日志,当被处理器执行时,记录共享程序指令的执行历史,记录提交交易的请求,和/或记录随交易提交的任何加密授权。
在另一个示例中,数据库系统还包括执行引擎,所述执行引擎包括当由处理器执行时执行以下动作的程序指令:验证对第一或第二数据库用户的隐私限制以及第一或第二子集授权符合各自的数据库系统的全局规则;以及将对隐私限制和授权进行验证的存证记录在存证日志中。
在一些示例中,数据库系统还包括具有程序指令的交易和并发引擎,所述程序指令在由处理器执行时使用并发控制协议来处理提交到数据库系统的并发交易。
在一些示例中,共享程序指令至少部分是存储在存储器中的存储过程,并且该系统还包括过程处理程序,该过程处理程序被配置为:根据第一或第二数据库用户提交的交易来确定适合于处理交易的一个或更多的存储过程;以及通过执行一个或多个存储过程来至少部分地处理交易。
在一些示例中,数据库系统还包括执行引擎,所述执行引擎被配置为执行共享程序指令并实施隐私和授权模型。
在进一步的示例中,执行引擎被配置为以与隐私模型一致的方式限制对数据记录的访问权。
在替代示例中,执行引擎被配置为执行共享程序指令,并且如果由共享程序指令指定,则执行引擎与共享程序指令一致地改变隐私和授权模型。
在一些示例中,交易由第二数据库用户提交,并且共享程序指令在由处理器执行时至少改变第一数据库用户对数据记录的第一子集的访问权。
在另一示例中,交易由第二数据库用户提交,并且共享程序指令在由处理器执行时至少改变第一数据库用户的允许第一数据库用户对数据记录的第一子集进行操纵的第一子集授权。
在一些示例中,共享程序指令在由处理器执行时,仅在存证日志或交易中存在或不存在特定数据时才改变隐私和授权模型。
在一些示例中,共享程序指令在由处理器执行时,仅在存证日志或交易本身中存在或不存在特定数据时才执行步骤(3)并投付交易。
在一些示例中,共享程序指令在由处理器执行时,同时投付交易、及其隐私和授权有效性的存证。
一种使用数据库系统处理多个交易的方法,所述数据库系统包括被配置为存储数据记录的数据库的数据库系统存储器、以及包括处理器的至少第一数据库服务器,所述方法包括:
A.处理第一或第二数据库用户提交到数据库服务器的交易;
B.确定交易是否符合第一和第二数据库用户之间的共享程序指令定义的隐私模型和授权模型,其中隐私模型包括分别对第一和第二数据库用户的隐私限制,并且授权模型包括第一子集授权和第二子集授权,该第一子集授权允许第一数据库用户与第一用户的隐私限制一致地操纵数据记录的第一子集,该第二子集授权允许第二数据库用户与第二用户的隐私限制一致地操纵数据记录的第二子集;以及
C.如果交易通过步骤(B),则投付交易并与隐私和授权模型一致地操纵数据记录的第一或第二子集。
在一些示例中,所述方法还包括以下步骤,验证:交易包括来自第一或第二数据库用户的根据隐私模型和/或授权模型的加密授权。
在所述方法的一些示例中,交易包括响应于条件,对与第一子集授权一致地操纵的数据记录的第一子集的请求,其中步骤(B)包括:验证条件的发生和与隐私和授权模型一致地操纵数据记录的第一子集。
在所述方法的一些示例中,条件包括:确定另一交易的状态或数据记录的子集是否满足特定标准。
在所述方法的一些示例中,隐私模型和/或授权模型将一个或多个预期动作或结果指定为所提交交易的一部分。
在所述方法的一些示例中,所述数据库系统还包括存证日志,所述方法还包括:
A.记录对第一共享程序指令的执行历史;
B.记录提交交易的请求,和/或
C.记录随交易提交的任何加密授权。
在一个示例中,所述方法还包括验证:隐私模型中的第一或第二数据库用户的隐私限制以及授权模型中的第一子集或第二子集授权符合数据库系统的相应全局规则;以及将对隐私限制和授权的存证进行验证的存证记录在存证日志中。
在一个示例中,所述方法还包括:执行并发控制协议以处理提交到数据库系统的并发交易。
在一些示例中,数据库系统存储器至少部分地将程序指令存储为存储过程,其中所述方法还包括执行以下步骤的数据库服务器的过程处理程序:根据第一或第二数据库用户提交的交易来确定适合处理所述交易的一个或多个的存储过程,并通过执行所述一个或多个存储过程来至少部分地处理交易。
附图说明
参考下图描述了本公开的示例:
图1是示例性数据库系统的示意图;
图2是示例性隐私和授权模型及其在图1的数据库系统中的数据记录的操纵或读取中的使用的图;
图3是图1的数据库系统中存储的共享代码段的示意图;
图4是使用图1的数据库系统处理多个交易的计算机实现方法的示例性流程图。
图5是提交到图1的数据库服务器的交易的示例;
图6是隐私和授权限制的代表示例;
图7图示了定义隐私限制的关系数据记录和相应代码的示例;
图8是允许操纵数据记录的子集的一集合授权的示例;
图9图示了图1的数据库系统的本地实现的示意性示例;
图10图示了图1的数据库系统的示例性存证和审计日志;
图11图示了图1的数据库系统的存储过程实现的示意性示例;
图12至17图示了提交到图1的数据库服务器的交易的示例输出;
图18是处理器的示意性示例。
具体实施方式
本公开涉及一种数据库系统,包括促进不同用户或实体之间的多方处理的保留隐私和授权的编程语义。在一个示例中,数据库可以利用关系(例如,SQL)、非关系(例如,NoSQL)、图形或其他类型的数据库模型。在一些示例中,数据库可以提供可由多个用户访问的数据的中心化视图(即,不对与数据库的每个用户关联的节点复制数据)。换言之,在一些示例中,数据库可以是不使用分布式共识协议或复制机制的中心化数据库,因此不是DLT。因此,如下所述,该数据库可以实现具有隐私和适当授权的多方执行程序,而不会受到DLT的一些现有缺陷的影响。可以通过允许用户和应用程序与数据库和数据库中包含的数据交互的数据库管理系统来提供对数据库中的数据的访问。
数据库的通用编程语义,本文称为DAML,允许数据库系统用户表达多方业务逻辑,并使用特定的运行时确保所有数据库交易都由正确的一方或多方正确授权,并且对与交易相关的数据实施合适的隐私约束。DAML在WO 2017/187394(“DAML 2”)和WO 2019/082142(“DAML 3”)中进行了详细描述,其公开内容通过引用整体并入本文。数据库系统可以存储多方可以交互的程序(例如,用DAML表示),并且在执行时可以操纵或读取数据记录、演化数据库模式、记录所存储程序的执行存证,以及其他具有隐私和合适的授权的任务。结果是一种新的数据库系统,在多方之间本身是私有的、可审计的,并根据通用编程语义(例如DAML)保留授权。
图1图示了如上所述的数据库系统1的示例。下面是对数据库系统的几个组件的描述,然后是如何利用数据库系统1以及编程语义(例如,DAML)来促进具有隐私和适当授权的多方过程的执行。
数据库系统1可以包括具有处理器11和存储装置或存储器3的数据库服务器9。在一个示例中,存储器3可以存储与以编程语义(例如,DAML)表达的程序相关的程序指令51、数据记录7的数据库、和/或记录关于程序指令51的执行的细节的存证日志57(例如,当交易被提交到数据库服务器9时)。在替代示例中,程序指令51可以存储在不构成数据库服务器9的一部分的存储装置或存储器3′中(例如,与数据库服务器9分开定位的存储装置或存储器)。程序指令51(例如,DAML)可以由数据库用户21、31、41通过向数据库系统1提交交易53(图5)来执行。在某些情况下,交易53可以具有操纵数据记录7的效果、演化数据库模式或执行其他数据库动作。在一个示例中,关于此类程序指令51和/或每个关联交易53的执行的细节也可以被记录到存证日志57(例如,为了审计程序指令51的执行以确认数据库包含数据记录7的准确状态)。以此方式,关于程序指令51的执行的细节以及因此每个交易53的细节可以是可存证的(即,能够通过存证日志57被用户检索、验证和/或证实是被用户授权的)。下面结合使用数据库系统1的示例性方法更详细地描述通过提交交易53来执行程序指令51的过程。
持久化模块
数据库系统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的授权和隐私约束如何通过执行引擎2(下文更全面地描述)用于执行DAML程序。
交易和并发引擎
数据库系统1可以具有交易和并发引擎6,该引擎可以处理提交到数据库系统1的交易53。交易53可以是数据库用户21、31、41访问和/或操纵存储在持久化模块(例如,存储器3)中的数据记录7的主要机制。交易和并发引擎6可以用于同时从多个数据库用户21、31、41接收提交的交易53,处理这样的交易53,并且如果符合编程指令51的隐私模型13和授权模型19(图2),则投付(commit)和影响所请求的操纵54′、54″、54″′、55′、55″、55″′、56′、56″、56″′或访问数据记录7。通常,交易53可以请求执行存储在持久化模块中的(一个或多个)特定程序51或其一部分。如下文更详细地描述的,交易和并发引擎6以及执行引擎2因此可以用于确定提交到数据库系统1的哪些交易53是有效的并且可以被投付。如果被投付,则交易53可以代表一个或多个数据库用户21、31、41导致执行(一个或多个)DAML程序51或其一部分,从而允许使用数据库系统1进行程序51的多方定义和执行。
在一个示例中,交易和并发引擎6仅处理根据用户21、31、41之间存在的共享编程语义(DAML)允许的数据库用户21、31、41中的任何一个数据库用户提交的交易53。换句话说,在DAML上下文的一个实施例中,请求执行(一个或多个)DAML程序51的交易53必须根据特定数据库用户授权和投付到数据库系统1(例如,存储在持久化模块中以供此类数据库用户以后执行)的(一个或多个)DAML程序51的授权和隐私约束而得到允许。
在一些实施例中,(一个或多个)DAML程序51和数据的授权和隐私约束可以取决于(一个或多个)DAML程序51的执行动态上下文和数据库系统1的被访问数据(例如数据记录7)的数据创建的动态上下文。这意味着当DAML程序51由系统1执行并改变状态时,用户的授权约束可以改变。以这种方式,系统1使得能够将单独的、以编程方式定义的访问控制组合成可预期的、可扩展的和安全的访问控制系统。
数据库用户指定可以执行的DAML程序的类型和哪些部分的机制在下文对DAML的更详细讨论中进行描述,因为其适用于数据库系统1。在一个示例中,交易53,如果在交易和并发引擎6处理后是有效的并被投付到数据库系统1,则可以执行DAML程序指令51:
1.向数据库用户21、31、41被允许访问(例如,如执行时实施的DAML的隐私模型13和授权模型19所指定的)的数据记录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.迁移数据库模式。
如以下结合使用数据库系统1的示例性方法更详细地描述的,交易53的不同功能可以动作以提供允许执行DAML程序51、数据库模式的多方迁移和其他数据库操作的多方数据库系统1,以允许任意数量的数据库用户使用单个数据库系统1。因此,任意数量的数据库用户都可以在隐私和适当的授权并且没有DLT系统的一些缺点,例如较低的可扩展性或增加的延迟的情况下,访问多方数据库系统1并使用各自数据的联合账本。
数据库系统1,例如其交易和并发引擎6,还可以利用并发协议来允许并发交易53,同时保持重要的交易属性(例如,原子性、一致性、隔离性和持久性)。通过在数据库系统1中单独或组合使用以下任何并发机制,可以与交易隔离一起实现原子性——要么执行所有交易,要么不执行交易:
1.锁定(例如,两阶段锁定),通过分配给数据的锁来控制对数据的访问。一交易对被另一交易锁定的数据项(例如,数据库记录)的访问可能会被阻塞(取决于锁定类型和访问操作类型),直到锁定释放。
2.序列化图检查(也称为可序列化、冲突或优先图检查),用于检查调度图中的循环并通过中止来破坏它们。
3.时间戳排序(TO),为交易分配时间戳,并通过时间戳顺序控制或检查对数据的访问。
4.投付的排序(或投付排序),控制或检查交易投付事件的时间排序以与它们各自的优先顺序兼容。
此外,可以理解的是,其他并发控制类型也可以单独使用,或与上述方法结合使用,包括:
5.多版本并发控制(MVCC),通过在每次写入对象时生成新版本的数据库对象(例如,数据记录)来提高并发性和性能,并允许取决于调度方法来交易对(每个对象的)最近几个相关版本的读操作。
6.索引并发控制,允许将访问操作同步到索引,而不是同步到用户数据。
7.私有工作空间模型(延迟更新模型)。每个交易为其访问的数据维护私有工作区,并且其改变的数据仅在其被投付时在交易外部可见。
8.无冲突复制数据类型(CRDT)模型。每个复制的视图都可以独立地并发地更新,而无需副本之间的协调,同时始终可以解决可能导致的不一致问题。在DAML上下文中,可以在预先商定的过程(例如用DAML定义)内解决不一致问题。
因此,如上所述,交易和并发引擎6可以同时处理由不同数据库用户21、31、41提交的交易53,使得这些用户可以组成定义提供给每个用户21、31、41的多方数据库动作和权限的DAML程序51。
执行引擎
数据库系统1还可以包括用于执行程序指令51(例如,DAML程序)的执行引擎2。执行引擎2可以包括具有用于执行DAML程序指令51的运行时环境的运行时系统。
在一个示例中,执行引擎2的运行时系统可以从用户21、31、41接收提交的操作,以通过创建、读取、更新和/或删除存储的数据的程序指令51的授权执行来修改共享数据库状态。操作可以是一系列操作的一部分,例如交易53。在数据库系统1的DAML上下文中,修改和访问与共享多用户编程语义相关联的数据的授权可以取决于先前提交的操作或交易53。在进一步的示例中,授权还可以取决于提交用户21、31、41的特定身份。这些授权还可以取决于:特定用户通过DAML执行而被给定授权,例如访问权限。在一个示例中,DAML执行引擎2可以执行以下步骤:
1.接收由一个或多个数据库用户21、31、41发起并提交的操作(或交易53)。
2.计算与预期操作结果匹配的操作结果。在一个示例中,这可以涉及使用执行引擎2的运行时系统执行记录到数据库系统1的可执行DAML程序(例如,指令51),以至少部分地基于通过由数据库用户21、31、41提交操作或交易53接收的数据来计算预期操作结果。
3.验证预期操作结果的正确性并将预期操作结果投付到数据库系统1(例如,通过操纵一个或多个数据记录7),同时确保数据改变的一致性以及隐私和授权约束。在一个示例中,这可以涉及检查隐私模型13和授权模型19以及数据改变一致性约束,被视为使用执行引擎2的运行时系统执行可执行DAML程序51的一部分,如步骤2中所述。
4.将投付的操作结果传达给系统1的授权用户。
5.接收第4步的授权用户收到投付的操作结果的通信。
在一个示例中,上面的步骤3可以依赖于先前操作或交易的日志。在另一示例中,步骤3可以依赖于与通过用户提交操作而接收到的数据一起直接存储的附加数据。
如上所述,在将预期操作结果投付到数据库系统1之前,执行引擎2可以验证预期操作结果的正确性。这可以包括检查隐私约束、授权约束和数据改变一致性约束。还如上所述,授权和隐私约束可以取决于动态因素,例如DAML程序51的动态执行上下文。这样,在投付预期操作结果(以及因此交易53)之前,数据库系统1可以启用提交的操作/交易以删除部分或全部任何新创建的数据。在一个示例中,这种被删除的数据可以被称为瞬态数据,因为该数据处于瞬态状态(例如,它存在于交易53的持续时间内然后在同一交易53中被删除)。换言之,数据库系统1可以提供授权和隐私约束以依赖于瞬态数据以及依赖于瞬态数据的动态创建和删除。
在一个示例中,执行引擎2可以与系统1的交易和并发引擎6协调并且向最终结果(即,投付的预期操作或交易结果)提供一个或多个交易属性。例如,如上所述,交易属性可以包括原子性、一致性、隔离性和持久性。
在DAML上下文中,系统1的交易性是通过存储器映射文件和使用类似操作系统命令的“fsync”来本地实现的。交易性也可以通过与DAML执行引擎2在同地工作的数据库引擎、企业服务器或容器服务(例如,Java应用程序服务器、Kubernetes的ReplicaSet和StatefulSet)以及远程数据库服务来实现。类似地,通过用户21、31、41和DAML执行引擎2之间的可靠消息传递,可以实现可靠的传递和接收。
在进一步的示例中,执行引擎2可以包括指令,当数据库用户21、31、41作为交易的一部分执行时,验证源自最终确定和投付的交易53的授权执行满足隐私限制和授权条件。隐私限制和授权条件可以分别在隐私模型13和授权模型19中捕获。示例性授权条件可以确保在没有数据库用户21、31、41的请求授权的情况下不会存证数据库用户的授权。数据库用户的请求授权可以是加密授权。
在进一步的示例中,可以提供程序指令51在多个DAML执行引擎节点2上的分布式执行。例如,可以使用一个或多个分布式共识协议来转换上面的步骤2到3,以及步骤4到5。分布式共识协议的示例性使用可以与系统1的交易和并发引擎6协调。
当上述步骤1到5被示例性DAML执行引擎2内的DAML隐私和数据共享问题划分时,可以实现业务流程的强隐私。实际上,步骤1到5按共享所有或部分DAML操作的相同隐私视图的用户或用户组分开进行。通过这种方式,可以通过以下方式实现隐私:
·执行引擎2计算流程通过操作隐私视图物理分离。
·全部或部分操作的存储器3、3′通过隐私视图物理分离。
·按用户或用户组分开进行操作结果和操作结果的接收的通信。
·使用用户或用户组可访问的数据加密。
·使用零知识证据(ZKP)或类似的加密代数方法在DAML隐私和授权规则内加密执行操作。
·使用专用安全硬件功能(例如,可信执行环境或安全飞地,例如Intel SGX)来证实数据库系统1的执行仅依赖于数据库系统1的认证版本,并证实上述执行所实现的隐私模型13的真实性。
在另一个示例中,与程序指令51的分布式执行类似,示例性地使用隐私共识协议来转换上述步骤2到3以及步骤4到5可以确保DAML隐私和数据共享问题是正确的。隐私共识协议还可以确保操作或交易53的所有受影响和授权用户全部或部分看到相同的结果。在一个示例中,隐私共识协议的使用可以与系统1的交易和并发引擎6协调。
DAML程序指令的执行
在本系统1的上下文中,DAML操作或交易的执行(经由程序指令51)可以发生:
·多个步骤(例如,上文的1到5);
·在多个执行实体(节点、核心、机器)上;以及
·在多个隐私视图(参见例如,如上所述的隐私共识)上。
此外,DAML程序只能在特定且明确定义的规则(即,如下文进一步详细描述的DAML语义)内处理和影响数据。因此,验证可以成为DAML程序中执行DAML操作的核心部分。此外,在用户提交特定操作以执行共享程序的共享段之前,DAML程序的执行可以使DAML程序被共享并被传达给用户和执行节点。这允许DAML执行引擎2分析和预先计算程序执行和数据流属性作为执行过程的组成部分。这也可以达到以下目的:
·验证程序51符合DAML语义定义的规则。例如,预先计算DAML操作不会将用户置于他们未同意的状态。
·支持更广泛的执行平台和更高的性能。例如,通过将程序51从一种形式的可执行代码转换为另一种形式(例如,从DAML表面语言到DAML核心语言的SQL、Java字节码或.NET CLI)。
·支持更广泛的用户应用程序集成。例如,通过将程序从一种形式的源代码转换为另一种形式以实现更广泛的范围。这可能包括将语言嵌入的DAML转换和提取为原生DAML(例如,为了在Java企业服务器内执行DAML,提取Java嵌入的DAML)。
·使用预先计算的执行和数据属性优化操作执行和数据传送。例如,以生成预编译的执行步骤、通信和共识协议,以及隐私组(例如,在上文的步骤1到5中)。
DAML
如上所述,在一个示例中,在数据库系统1中使用的编程语义可以是由申请人创建的编程语言,称为DAML。可以在申请人提交的DAML 2和DAML 3申请中找到有关DAML的许多细节,以上通过引用将其并入本文。在一个实施例中,执行引擎2可以是数据库用户21、31、41在向数据库系统1提交交易53时执行DAML程序51的机制。以下是对与数据库系统1相关的DAML的某些特征的描述,以及执行引擎2(例如,其运行时系统和环境)如何执行DAML程序51以确保数据库系统1包括多方隐私、可审计性和适当的授权。为了说明上述内容,图7中提供了一个示例DAML程序,并使用图2-图6和图8作为支持图来说明与数据库系统1相关的DAML的隐私和授权方面。
DAML程序可以表示为一模板或一系列模板59、59′、59″(图3)和81(图7)。在一个示例中,模板可以称为合约模板或智能合约模板。除了可以操纵或访问数据模式196的数据的代码声明或逻辑(例如,选择83、85)之外,模板59、59′、59″、81还可以定义数据模式196。因此,模板59、59′、59″、81在概念上可以被认为是一个未实例化的程序,它可以定义数据模式以及代码声明或逻辑,用于定义多方如何使用和/或访问程序。实例化模板59、59′、59″、81的版本可以称为合约或智能合约。模板59、59′、59″、81和它们的实例都可以记录到数据库系统1的持久化模块中,供数据库用户21、31、41以后执行。
授权、隐私和验证
DAML语义,连同执行引擎2对这些语义的实施,可以为不同数据库用户21、31、41之间的DAML程序定义隐私模型13和授权模型19(图2)。例如,诸如图7的模板81之类的DAML程序可以定义不同的参与方(Party)(例如,每个参与方都与唯一的加密身份相关联,例如私钥/公钥对)和执行引擎2,在执行模板81的实例化期间(例如,通过其运行时系统),可以在这些不同的参与方之间实施共享的隐私限制14和共享的授权20。在数据库系统1的情况下,不同方可以是数据库用户21、31、41中的任何一个。
换句话说,数据库用户21、31、41可以使用DAML语言和DAML的语义以多种方式组成DAML模板59、59′、59″、81,由执行引擎2实施,可以确保包括与数据库用户21、31、41(图2)的任何子集相关联的隐私限制14的隐私模型13得到实施。在一个示例中,数据库用户的子集可以在DAML中定义第一数据库用户21的隐私限制23′、33′、43′、第二数据库用户31的隐私限制23″、33″、43″、以及任何附加的N数据库用户的隐私限制23″′、33″′、43″′,来为(一个或多个)特定的DAML程序统一地定义组的隐私限制14。隐私限制14可以指定每个第一数据库用户21、第二数据库用户31和N数据库用户对数据库系统1的特定数据记录7的读和/或写访问权。隐私限制23′、23″、23″′可以在由数据库用户21授权的数据库系统1中得到存证,隐私限制33′、33″、33″′可以在数据库用户31授权的数据库系统1中得到存证,并且隐私限制43′、43″、43″′可以在由数据库用户41授权的数据库系统1中得到存证。在本说明中,对“N”(例如“N数据库用户”、“N组授权”、“N用户”或“数据记录的N子集”)的引用用于表示一系列或多个项目中未指定的成员或项目。
此外,数据库用户21、31、41可以组成DAML模板59、59′、59″、81,使得模板59、59′、59″、81的实例化符合授权模型19,该授权模型包括授权20以由某些数据库用户21、31、41运行实例化的一个或多个DAML程序的一部分。在一个示例中,数据库用户的子集可以在DAML中定义第一数据库用户21的授权25′、35′、45′、第二数据库用户31的授权25″、35″、45″和任何N数据库用户的授权25″′、35″′、45″′来执行实例化DAML模板59、59′、59″、81的定义部分。授权25′、25"、25″′、35′、35"、35″′、45′、45"、45″′可以允许数据库用户执行DAML程序的某些部分,从而分别访问和/或操纵54′、54″、54″、55′、55″、55″′、56′、56″、56″′存储在数据库系统1(图2)中的数据记录的第一子集27、数据记录的第二子集37和数据记录的N子集47。通常,部分DAML程序的执行受数据库用户21、31、41向数据库系统1提交交易53的影响。
任何隐私限制23′、23″、23″′、33′、33″′、33″′、43′、43″、43″′,可以为(一个或多个)特定DAML程序的所有状态,对与数据库系统1一起存储的数据记录7指定相应的数据库用户的访问权(例如,读、写或无访问)。此外,特定数据库用户对存储在数据库系统1内的数据记录7的隐私限制可以随着系统1执行DAML程序并改变状态而改变。隐私限制的改变是可以预见的,因为此类改变遵循其对应DAML模板中定义的规则。例如,根据相关联的一个或多个DAML模板的DAML语义,第一数据库用户21可以具有隐私限制23′、33′、43′,其限制用户21对于存储在数据库系统1中的数据记录的第一子集27的访问权(例如,读、写或无访问),根据相同一个或多个DAML模板的语义,第二数据库用户31可以具有隐私限制23″、33″、43″,其限制用户31对存储在数据库系统1中的数据记录的第二子集37的访问权(例如,读、写或无访问),并且任何N数据库用户都可以具有隐私限制23″′、33″′、43″′,其限制N用户对存储在数据库系统1中的数据记录的N子集47的访问权(例如,读、写或无访问)。此外,如描述中其他地方更详细的那样,因为交易53由第一数据库用户21、第二数据库用户31或N数据库用户提交到数据库系统1(例如,数据库服务器9),所以任何隐私限制23′、23″、23″′、33′、33″、33″′、43′、43″、43″′可以随着相关联的DAML程序状态和/或数据记录27、37、47的状态改变而改变。
此外,授权25′、25″、25″′、35′、35″、35″′、45′、45″、45″′中的任何一个都可以指定:(i)数据库用户执行实例化DAML程序某些部分的能力,(ii)数据库用户将DAML程序的这一部分的执行委托给另一个或多个数据库用户的能力,(iii)其他数据库用户执行会影响该数据库用户的部分DAML程序的能力和/或(iv)数据库用户访问和/或操纵数据库系统1中特定数据记录子集的能力。此外,与隐私限制一样,特定数据库用户对执行(i)到(iv)中任何一项的授权可以随着系统1执行DAML程序并改变状态而改变。例如,根据相关联的DAML模板的DAML语义,第一数据库用户21可以具有授权25′、35′、45″,其定义用户21对执行(i)到(iv)中任何一项的授权,根据相同DAML模板的DAML语义,第二数据库用户31可以具有授权25″、35″、45″,其定义用户31对执行(i)到(iv)中任何一项的授权,并且任何N数据库用户都可以具有对执行(i)到(iv)中任何一项的授权25″′、35″′、45″′。此外,如描述中其他地方更详细的描述,由于交易53是由第一数据库用户21、第二数据库用户31或N数据库用户提交的,所以授权25′、25″、25″′、35′、35″、35″′、45′、45″、45″′可以随着相关联的DAML程序状态和/或数据记录27、37、47的状态改变而改变。在一些示例中,这可以包括由一个数据库用户提交的交易53,该交易改变了另一数据库用户对另一个数据库用户的数据记录子集的访问权和/或对操纵数据记录子集的授权。
隐私限制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的授权。
说明本公开的上述方面的具体示例是有用的。参考图7,模板81是Cash(现金)模板的示例,其potentialRecipients(潜在接收者)字段74可以被视为现金的金额76潜在接收者的列表。模板81使用语义DAML关键字“signatory(签名者)”来指定发布者197(Partytype(各方类型)的字段)必须是模板81实例化的签名者才能有效,并且关键字“observer(观察者)”指定潜在接收者74(各方类型的列表(例如,数组))是对模板81的实例化的观察者。在一个示例中,“观察者”关键字可以表示被列为观察者的各方(这里是潜在接收者74)只能读取与模板81的实例化相关联的与数据库系统1一起存储的任何数据记录7。这样的数据记录7可以符合数据模式196。例如,模板81的实例化75(例如,关系数据库系统1的表中的行75形式的数据记录7)示出在图7的顶部,并且可以看到的是观察者79被列为该数据记录中的一列。在此示例中,列出具有实例化75的观察者79将指示潜在接收者(捐赠者80)对该数据记录(第75行)具有只读访问权限。除非在特定的DAML程序中还提供了额外的权利,否则本示例中的潜在接收者(捐赠者80)将具有与图7中的数据记录相关的隐私限制,仅限于只读访问并且无权改变或转换数据记录。因此,例如,与试图改变行75内的任何数据的捐赠者80相关的数据库用户提交的任何交易53可能失败(例如,在运行时由执行引擎2执行,如下详述)以对捐赠者80实施上述限制。
相反,在一个示例中,上面提到的“signatory(签名者)”关键字可以表示一方(这里是发布者197)(或多方)对模板81的实例化具有读取访问权限,但也表示一方或多方必须以加密方式授权模板81的实例化(并且数据库系统1必须能够向一方存证模板81的实例化)以使实例化在数据库系统1内有效。例如,如图7顶部所示清楚可见,银行78需要以密码方式授权数据库系统1中的现金合约的实例化75以使其有效。事实上,如果银行78没有以密码方式授权创建现金合约,那么它就没有义务提供合约代码声明(选择83、85)中指定的现金的金额76。此处,在该示例中,还可以将签名者77列为实例化列75(行)。如前所述,以加密方式授权模板81的实例化可以包括对交易53进行加密签名,该交易53具有实例化模板81并且在数据库系统1内持久化该实例的效果。加密授权模板81的实例化还可以包括对存证的数据进行签名。
因此,DAML的语义——在这种情况下是“签名者”和“observer(观察者)”关键字——可以为不同的数据库用户规定某些隐私限制和授权约束,这些可以在执行引擎2执行特定DAML程序期间实施。例如,可能的情况是数据库用户21通过记录到数据库系统1的唯一密码身份与图7所示的模板81的实例化75的银行方78相关联。并且,可能的情况是数据库用户31通过记录到数据库系统1的唯一密码身份与模板81的实例化75的捐赠方80相关联。因此,数据库用户21的隐私限制23′、23″可以包括这样一个事实,即数据库用户21由于是“签名者”77,至少具有对模板81的实例化75的读取访问权,以及数据库用户21必须具有加密授权实例化75的授权约束(例如,对实例化负责),因为它是作为数据库系统1中数据记录7的有效条目。此外,数据库用户31的隐私限制23″可以包括这样的事实,即数据库用户31由于是“观察者”79,所以至少具有对模板81的实例化75的读取访问权。此外,数据库用户31可以依赖DAML语义,当执行DAML程序时由执行引擎2实施,以确保数据库用户21具有加密授权的模板81的实例化75,从而使数据库用户31确信实例化75是数据库系统1中的有效条目或数据记录7(因此是义务)。例如,数据库用户31可以确信它持有现金的金额76,在数据库系统1中表示为数据记录7,并且由于DAML语义中内置的授权约束,该数据库用户21对该状态负责。
进一步的授权约束可以被构建到DAML的语义中并且由执行引擎2在数据库系统内实施。这种授权约束的示例在下面结合图7的现金模板81进行讨论。广义地说,DAML 2或DAML 3的任何授权约束或特征都可以与数据库系统1一起使用并由执行引擎2实施以确保提交到数据库系统1的交易53被相关数据库用户21、31、41适当地加密授权。例如,在DAML到[231]中公开的所谓“义务计算”授权约束(有时称为非义务计算检查)可以与数据库系统1一起使用以确保与数据库系统1一起使用的DAML程序的所有可能执行路径都由正确的数据库用户21、31、41授权。实际上,DAML 3详细说明了在DAML程序执行期间如何确保该程序的所有执行路径或可能性都经过充分授权。这对于数据库系统1可以是相同的,并且执行引擎2可以是实施此类授权约束的机制。例如,执行引擎2可以通过其运行时系统和/或环境检查存储在数据库系统1中的一个或多个DAML程序的所有执行路径(例如,先前和未来执行状态)以确保一个或多个程序的每个先前执行路径或状态以及一个或多个程序的每个未来执行路径或状态都经过适当的加密授权。
使用现金模板81作为授权约束的示例,可以看出模板81包括可由所有者84执行的多个选择83、85。在一个示例中,DAML的语义——在本例中使用关键字“controller ownercan(控制器所有者可以)”——表明在模板81实例化时可以由执行引擎2实施的授权约束。“控制器可以”语法,当由执行引擎2解释和执行时,可以表明只有被指定的一方或多方(这里是所有者84)被授权执行相关的代码声明或逻辑(例如,图7中的选择体83)。在一个示例中,具有这种能力的一方或多方可以通过对提交到数据库系统1的交易53用适当的加密密钥(例如,唯一的私钥)进行加密签名来存证其授权执行相关代码声明或逻辑(例如,图7中的选择体83)。此外,相关代码声明和逻辑的主体可以指定进一步的授权约束,其可以包括确保在代码声明和逻辑中的能力(例如,选择83),相关的一方或多方在未经该一方或多方授权的情况下不能创建将其他一方或多方绑定到义务的新的DAML程序,不能在没有适当授权的情况下执行(即,进度执行)其他DAML程序的部分,并且在未经适当授权的情况下不能存档或以其他方式修改与DAML程序相关联的其他数据和共享代码段。在一个示例中,执行引擎2可以执行所谓的“义务计算”检查以确保没有违反DAML的前述示例性授权约束。在图7中,可以看到“Cash(现金)”合约(DAML模板81)只能通过“发布者”方(196内)加密授权的操作得到最初创建,因为该方是签名者197。请注意,在在这个示例中,一旦创建“发布者”在任何可执行选择83、85上保持不变,从而允许“发布者”的初始授权来授权现金合约创建89、87和95。同样,示例性DAML语义使控制器“所有者”84成为观察者,并授权“所有者”一方执行选择83、85。
因此,任何数据库用户21、31、41都可以使用DAML的语义来编写DAML程序,并确保在用户21、31、41之间实施适当的隐私限制和授权约束。如下详述,当在数据库系统1中执行DAML程序时,执行引擎2可以在确保在数据库系统1中实施隐私限制和授权约束方面发挥重要作用。
存证日志
数据库系统1可以使用数据库存证日志57来记录共享代码段的执行历史(例如,实例化的DAML模板的执行)、提交的交易53、与交易53相关联的加密授权以及用作存证的其他信息或用于审计数据库系统1。在一些示例中,这可以包括验证隐私限制和/或授权的存证。换句话说,实例化DAML模板的执行符合任何关联的隐私模型和/或授权模型的存证。
存证日志57(在此也称为“审计日志”)可以包括数据库用户21、31、41的可审计信息,以根据每个数据库用户的不同(和允许)视图来验证数据库系统1的状态。应当理解,在进一步的示例中,这还可以允许数据库服务器9和其他方根据隐私限制和授权来验证数据库系统1的状态。
图10中示出了存证日志57的示例,其示出了已经提交的多个交易53的存证。存证日志57可以捕获以下一项或多项数据:
1.全局唯一的交易标识符(“tx_id”401)。
2.导致特定数据记录7的插入、删除或更新的请求的请求标识符(“req_id”403)。请求标识符可以标识特定的数据记录。
3.请求的签名者和观察者(“签名者”405和“观察者”407)。这可以包括:
a.授权请求的一方(例如,数据库用户)。
b.授权执行作为执行请求的结果而执行的一个或多个共享代码段的各方。
c.授以观察者读取特定方对特定数据记录的访问权的各方。
d.被授以读取访问权以观察受请求影响(插入、更新或删除)的数据的各方。
4.请求类型(“request”409)和请求者的标识(“requested_by”411)。请求类型可以是对请求调用的(一个或多个)共享代码段51、5(例如,(一个或多个)DAML合约和/或模板59)的引用。例如,请求类型可以是DAML合约模板标识符,它可以是DAML程序的标识符(下面讨论)。
5.请求时间戳(“requested_at”413),例如交易53提交的时间戳。示例性时间戳值可以由数据库操作员或由单独的时间戳引擎8设置。
6.用于调用一个或多个DAML合约的请求参数(“request_args”415)。
7.对可能已经发起当前交易请求的任何请求的引用(“obligated_by”417)。例如,如果对交易的在先请求发起对交易的委托请求(例如,当前请求)的执行,则审计日志57可以存储发起当前委托请求的在先请求的请求标识符。一个示例是请求3,它是由先前的请求2“负责”的。
8.对任何先前请求(“requested_on”419)的引用,该请求可能已启用授权和隐私约束以允许通过当前请求的执行进度。例如,请求4-“cash_split_for”-在请求3的情况下是可能的-该请求创建所有者“博物馆(museum)”拥有的500,000现金额的请求-因此请求4引用请求3。
9.一方根据其隐私视图验证数据库系统1的当前状态所需的未示出的其他审计数据。
10.操作员进行分片、分区、集群、索引以及通常协调并行和顺序执行以提高速度、降低延迟和最佳数据库操作功耗所需的未示出的其他数据。
数据库系统1可以确保所有数据库交易都有适当的存证。记录的存证可以作为每笔交易的一部分与每笔交易相关联。换句话说,交易和并发引擎6、执行引擎2和存证日志57可以一起处理并将存证的每一部分连同投付存证交易和存证数据库操作一起投付到存证日志57。数据库系统1可以确保在没有存证的情况下不投付任何交易或数据库操作,并且在没有数据库记录相应的存证交易和操作的情况下不记录存证日志57的任何部分。
数据库交易和并发引擎6、执行引擎2和存证日志57可用于确定提交到数据库系统1的哪些交易53是有效的,并且可以在有存证的情况下投付。如果被投付,则交易53可以同时导致代表一个或多个数据库用户21、31、41执行(一个或多个DAML)程序51或其中的一部分,并导致存证日志57的一部分存证交易53的有效性。受存证交易隐私和授权约束的一个或多个数据库用户可以查看存证日志57中的存证,从而允许使用数据库系统1对程序51进行多方定义和存证执行。在某些情况下,存证交易53可以具有以下效果:操纵数据记录7、演化数据库模式或执行其他数据库动作,从而允许跨多方程序51使用多方存证数据记录7。
数据库系统1查询操作可以产生存证结果。数据库用户可以请求数据库交易53投付取决于存在或不存在特定存证日志57数据的结果。数据库授权可以授权特定程序段的执行,条件是程序对存证日志57数据的查询操作中存在或不存在特定存证结果。数据库授权可以授权特定程序段的执行,条件是在程序的操作中创建特定的存证结果。实施DAML语义的示例性存证日志57可以记录授权和存证的交易结果、授权和数据,从而允许一个或多个数据库用户21、31、41授权交易,这些交易以先前或当前存在或不存在交易结果为条件授权程序执行。
数据库系统1可以确保对特定程序段的执行授权可以以在期望执行特定程序段的交易中对数据的特定操作或授权或特定执行操作的存在为条件。数据库用户经常依赖这种交易范围的条件来管理数据库用户组内的数据,其中数据库用户可以自由操作特定数据库用户组内的数据,但必须包括特定授权数据库用户进行交易,其中包括组外数据库用户。
数据库系统1可以包括约束以根据每个数据库用户的特定“视图”来确保存证日志57的隐私。换句话说,每个数据库用户只能查看审计日志57中适用于其对数据记录7的访问授权的部分。因此,在一个示例中,任何数据库用户都不知道与其他数据库用户相关的审计日志57信息,除非根据DAML语义允许,如上所述。这实际上意味着数据库用户只能因为与他们允许的视图有关而验证数据库系统1的状态。
数据库系统1可以包括使用专用安全硬件特征(例如,可信执行环境或安全飞地,例如英特尔SGX)来证实在存证日志57内并且由来自存证日志57的查询返回的存证是使用数据库系统1的经认证版本和存证日志57的经认证版本的执行和存储结果。换言之,通过使用专用安全硬件功能,正确数据库系统1的经认证版本实现共享数据库程序语义(例如,DAML语义),包括经过认证的正确存证日志程序,可以证实每个用户正确隐私和授权执行的数据库交易由用户录入存证日志,并由用户从存证日志57中查询。
一个或多个示例性方法
参考图1和图4,第一数据库用户21、第二数据库用户31和任何N数据库用户41可以就定义用户针对特定用例的DAML程序的第一DAML模板59′、第二DAML模板59″和第三DAML模板59″′达成一致。例如,第一DAML模板59′、第二DAML模板59″和第三DAML模板59″′可以定义DAML程序,用于通过计算机网络进行数字资产的交换。第一DAML模板59′、第二DAML模板59″和第三DAML模板59″′可以经由持久化模块(例如,存储在存储器3中)作为可执行程序指令51被持久化到数据库系统1。在一个示例中,第一数据库用户21、第二数据库用户31和N数据库用户41可以以具有对应于第一模板59′、第二模板59"和第三模板59″′的有效载荷的请求的形式向数据库系统1提交交易53,以将这些模板持久化到存储器3以便在稍后点执行。
DAML模板59′、59"、59″′可以定义数据库用户21、31、41之间的隐私模型13和授权模型19。实际上,如上文详细描述的,DAML的语义可以允许数据库用户21、31、41来构成DAML程序并定义隐私模型13和授权模型19或对其特定用例的约束(例如,这里,通过计算机网络交换数字资产)。在一个示例中,模板59′、59″、59″′之一可以是图7的现金模板81,并且被交换的数字资产可以是现金的金额76的数字表示,如该模板81中所述。如图2所示,DAML模板59′、59″、59″′可以定义由第一数据库用户21授权的隐私限制23′、23″、23″′和第一子集授权25′、25″、25″′,由第二数据库用户31授权的隐私限制33′、33″、33″′和第二子集授权35′、35″、35″′、以及N数据库用户授权的隐私限制43′、43″、43″″和N组授权45′、45″、45″′。图3图示了由模板59′、59″、59″′定义的数据库用户21、31、41的隐私限制14和授权20。授权20可以是在中描述的(i)到(iv)中的任何一个,并且隐私限制14可以指定与用户各自在授权25、35、45内一致的对存储在数据库系统1中的数据记录7的子集27、37、47的读和/或写访问权。例如,用户21、31、41中的任何一个可具有在DAML模板中执行某些代码声明或逻辑(例如,“选择”)的授权,并且此类用户的隐私限制可以定义用户在代码声明或逻辑执行期间和/或之后读取和/或写入数据记录7的特定子集的能力。
为了访问和/或操纵数据库系统1中的数据记录7,数据库用户21、31、41中的任何一个都可以向数据库系统1提交交易53。交易53可以是用户21、31、41中的任何一个通过通信网络(例如,互联网)从计算机或节点20、30、40向数据库系统1(例如,数据库服务器9)发送访问或操纵任何数据记录7的请求。
图5图示了提交到数据库系统1或服务器9的交易53的示例。在一些示例中,交易53可以包括一个或多个请求或操作。例如,交易53可以包括根据隐私限制和其中定义的一组授权来操纵数据记录7的子集的请求61。如上所述,隐私限制和一组授权可以分别由隐私模型13和授权模型19定义。交易53还可以包括根据Z模板中定义的隐私限制和授权来操纵数据记录7的子集的请求63。在进一步的示例中,交易53可以包括根据从多个可预期动作中的指定选择来操纵数据记录的子集的请求。在又一示例中,交易53可以包括根据各自的隐私限制和一组授权来操纵数据记录的多个子集的请求。
如图4的示例性过程100所示,交易53可以被提交到数据库服务器9并且由服务器9处理110。在一个示例中,每个交易53可以是访问或操纵存储在数据库系统1或执行实例化的DAML模板59′、59″、59″′中的数据记录7的请求。实际上,模板59′、59″、59″′中的任何一个都可以被实例化(例如,通过向数据库系统1提交交易53),从而根据模板向相关用户21、31、41提供以下能力:执行实例化模板的代码声明或逻辑(例如,“选择”)和/或访问模板的数据模式中定义的数据。在向数据库服务器9提交交易53后,交易、并发和执行使用引擎6和2可以处理110交易53和相对于可能提交到数据库服务器9进行处理的其他交易53的对交易53进行排序。例如,交易和并发引擎6可以利用本文提到的任何并发控制协议来将交易53相对于其他交易53排序并确保交易53保持其由数据库服务器9处理时的重要交易属性(例如,原子性、一致性、隔离性和持久性)。
交易、并发和执行引擎6和2还可以处理120交易53以确定交易53是否符合隐私模型13和授权模型19。如果交易53符合隐私模型13和授权模型19,可以托付交易53,并且如图2所示,可以与隐私模型13和授权模型19一致地操纵55′、55″数据记录7的第一子集27和/或第二子集37。例如,在一个示例中,交易53可以是由第一计算机节点20个和/或第二计算机节点30发送的执行实例化的DAML模板59′、59″、59″′的请求,这可以具有操纵存储在数据库系统1中的数据记录7的效果。实际上,图10图示出req_id 1-交易53-是用于将图7的现金模板81实例化为数据库系统1中的数据记录7的cash_create(现金_创建)请求。同样,req_id2是cash_transfer(现金_转移)交易53,其动作以执行来自req_id 1交易53的实例化现金模板81的第二选择85(即,转移选择)。转移选择的执行可以导致输入或操纵数据库系统1中记录现金(例如,现金的金额76)从第一数据库用户到第二数据库用户的转移的数据记录7(例如,关系数据库的表中的一行)。
如上所述,如果交易53符合隐私模型13和授权模型19,则可以托付交易53。在一个示例中,执行引擎2可以提供将交易53托付到数据库系统1的机制。例如,执行引擎2的运行时系统可以动作以执行实例化的DAML模板59′、59″、59″′并确保这种执行符合特定实例的隐私模型13和授权模型19。在一个示例中,响应于交易53,可以从持久化模块(例如,存储器3)中检索对应于实例化的DAML模板59′、59″、59″′的程序指令51,并且使用执行引擎2的运行时系统来由处理器11执行。如果请求执行实例化DAML模板59′、59″、59″′的特定交易53包含执行实例化DAML模板59′、59″、59″′所必需的参数或其他数据,这样的参数或数据可以在实例化的DAML模板59′、59″、59″′的执行期间提供给执行引擎2。
此外,执行引擎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可以执行DAML 2或3中描述的任何授权过程,包括在DAML到[231]中描述的所谓的“义务计算”授权检查。如果交易53违反了相关各组授权25′、25″、25″′、35′、35″、35″′、45′、45″、45″′中的任何一个,使得交易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。
同样,执行引擎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图示了第二选择85,其中所有者“控制器”可以将模板的数据模式中定义的现金的金额76转移到另一方,另一方动作以创建模板81的另一实例,其中所有者84被设置为newOwner(新所有者)95-各方类型的字段。在执行模板81的实例化的转移选择85时,执行引擎2可以执行对应于该选择85的程序指令51(例如,通过由选择的控制器、捐赠者80提交的交易53),从而导致操纵数据库系统1中的数据记录7,以示出现金的金额76从所有者84转移到新所有者95。此外,与模板81的实例化相关的程序指令51的执行会导致所有者84和新所有者95(他们可能对应数据库用户)的隐私限制变化。
图12-图17各自图示了从向数据库服务器9提交交易53的示例输出,其中捐赠者80执行现金模板81的实例化的第二选择85以将现金的金额76从捐赠者80转移到新所有者95,在本例中是博物馆。特别地,图12首先图示了由银行数据库用户提交的cash_create交易53,这导致数据库系统1将cash_create交易53记录在存证日志57中并将关于cash_create交易53的详细信息输入为数据记录7(例如,关系数据库中的一行)进入系统1。如图所示,Cash_create交易53为所有者84(在本例中为捐赠者80)创建500,000现金。图13图示了银行和捐赠方以及不了解cash_create交易53的其他数据库用户的对应隐私限制14。另外,图13和图14的顶部图示了现金模板81的实例化的授权约束20,特别是在没有该数据库用户的有效加密授权的情况下,第一数据库用户(eve)不能提交由第二数据库用户(银行)创建500,000的现金义务的交易53到数据库服务器9。同样,这是因为现金模板81指定签名者197(发布者)必须加密授权现金模板81的实例化,以使其构成有效的、绑定的义务(例如,由发布者加密签名创建现金义务的cash_create交易53)。并且现金模板81的结果也指定控制器84(所有者)是加密授权的观察者,具有对现金数据记录7的读取访问权。
图14-图17图示了捐赠者80向另一数据库用户(在本例中是博物馆)的现金转移。图15图示了捐赠者80提交cash_transfer交易53以将现金的金额76从捐赠者80转移到新所有者95,在本例中是博物馆。如图16的顶部所示,cash_transfer交易53导致存证日志57扩展两(2)行。实际上,由于现金转移交易53有效地导致现金模板81的实例化的第二选择85的执行,这两(2)行的添加是第二选择85的执行的逻辑和可预期的结果。特别地,cash_transfer交易53可以导致将现金模板81的现有实例存档或报废现有的cash_transfer的实例,以及创建现金模板81的新实例的cash_create动作,其中所有者84被反映为博物馆。其中所有者84被反映为博物馆的现金模板81的新实例可以在图17底部的数据记录7中看到,作为现金转移交易53的结果输入数据库系统1。此外,图16包括以下解释:作为请求3的一部分的cash_create动作是委托给银行78的请求,用于创建由前所有者84在cash_transfer动作中指定的新所有者95(博物馆)拥有的现金。如申请人的DAML 3申请中所述,对委托请求的引用可能意味着银行78数据库用户和捐赠者80数据库用户之间存在共享授权20,其中捐赠者80数据库用户已将支持新所有者95的第二选择85的现金模板81的实例化的授权委托给银行78数据库用户。换言之,捐赠者80数据库用户经由交易53执行第二选择85可以委托有利于由先前所有者84指定的新所有者95(在本例中是捐赠者80)的现金模板81的实例化的创建。例如,在提交执行第二选择85的交易53时,捐赠者80数据库用户可以连同这样的交易53一起提供标识新所有者95的数据,使得这样的数据可以在执行引擎2执行第二选择85期间使用。因此,执行引擎2(例如,其运行时系统)可以确保在执行第二选择85期间满足银行78数据库用户和捐赠者80数据库用户之间的共享授权20,并且如果不满足,则执行引擎2可以使任何相关联的交易53失败。特别地,如图16顶部所示的存证日志57所反映的,捐赠者80提交交易53执行第二选择85并且新所有者95设置为博物馆可以导致标识为请求2的现金转移动作、以及委托的cash_create动作,其中银行78被标识为请求者,从而导致现金模板81的实例化,其中新所有者95被列为博物馆。此外,上述动作中的每一个都可以发生在同一原子交易53内,在图16中标识为交易2584。因此,由于捐赠者80提交的将现金的金额76转移到新所有者95——在本例中是博物馆——的交易53的原子性质,这两个动作要么都发生,要么都不发生。
同样如图16所示,捐赠者80数据库用户提交上述交易53可以导致改变该数据库用户的隐私限制14。实际上,由于现金的金额76被转移到新所有者95(博物馆),捐赠者80数据库用户不再具有查看该金额的适当权限,因为它不是现金模板81当前实例化的一方。因此,在第二选择85的执行期间,执行引擎2可以改变关于捐赠者80数据库用户的隐私限制14,使得捐赠者80不再具有查看与现金模板81的当前实例相关联的任何数据记录7的访问权限。如图16所示,捐赠者80可以通过查看其存证日志57的版本来审计并确认其隐私限制14是正确的,该版本仅显示作为交易ID 2583、2584一部分的请求1和2。值得注意的是,捐赠者80对存证日志57的视图也保护隐私,因为它确实无法查看作为交易ID 2584的一部分的请求3,因为捐赠者80没有适当的隐私权限来查看审计日志的该部分。此外,图17在其存证日志57和其对存储在数据库系统1中的对应于现金模板81的实例化的数据记录7的视图方面示出了博物馆的视图。如图所示,博物馆仅具有作为交易ID 2584的一部分的请求3的视图,并且数据记录7示出博物馆有500,000现金,其中银行80数据库用户作为签名者。
如通过以上示例所演示的,数据库系统1及其执行引擎2在不同的数据库用户之间实施隐私限制14和授权限制20,这两者都可以随着不同的数据库用户向数据库服务器9提交交易53而改变。此外例如,对应于提交到数据库系统1的交易53的数据可以在也符合在不同数据库用户之间共享的隐私限制14的存证日志57中被捕获。结果是多方数据库系统1保护隐私和授权,并且所有数据库用户都可以进行审计。
替代存储过程的实现
图11图示了类似于上文数据库系统1的数据库系统301的替代存储过程实现。尽管本文没有详细讨论,但是数据库系统301可以共享数据库系统1的许多组件和功能,包括但不限于使用执行引擎2和存证日志57。
在一个示例中,DAML可以用作与数据库系统301交互的过程语言,并且DAML模板和/或其实例可以作为存储过程304存储在数据库系统301的数据库服务器中。在一个示例中,DAML存储过程304可以存储在数据库系统301的数据字典中。此外,过程处理程序或过程语言处理器302可以被包括在数据库系统301中。过程语言处理器302可以包括解析、完整语法分析和执行DAML存储过程304的程序指令。因此,过程语言处理程序302可以包括与数据库系统30的数据库服务器一起存储的程序指令,其动作以解释在不同数据库用户之间组成的DAML合约并在数据库系统301中采取行动(例如,访问和/或操纵数据记录,例如表308)。
与上述数据库系统1类似,可以通过向数据库系统301的数据库服务器提交交易来访问和/或操纵存储在数据库系统301中的数据记录,其具有执行DAML存储过程304的效果。如图11所示,任意数量的客户端应用程序320、330、340可以向数据库系统301的数据库服务器提交交易,其可以动作以在不同数据库用户之间执行DAML存储过程304。在一个示例中,客户端应用程序320、330、340可以对提交到数据库系统301的数据库服务器的交易进行加密签名,以存证此类应用程序对执行特定存储过程的授权。因此,与上面讨论的DAML示例一样,共享授权可以以与数据库系统1相同的方式存在于数据库系统301的数据库用户之间。此外,在DAML存储过程304上执行时,数据库系统301的数据库用户之间的隐私限制可以以与数据库系统1相同的方式执行。因此,数据库用户可以选择以多种方式将他们的DAML程序组成存储过程304,然后将交易提交到数据库系统301的数据库服务器以执行这些存储过程304并导致隐私和授权保留与此类交易一致的数据记录(例如,表308)的访问和/或操纵。此外,尽管未示出,但可以将与此类交易有关的数据记录在与数据库系统301一起存储的存证或审计日志中,如前所述。因此,数据库系统301可以为数据库系统1提供替代的多方私有、可审计和保留授权的数据库实现。
在替代实施例中,可以使用不同于DAML的编程语言作为存储过程语言。
示例处理器
[1]图18图示了示例节点。图18所示的节点20、30、40包括处理器1802、存储器1803、网络接口设备1808、与数据存储设备1820和用户接口1810接口的接口设备1809。存储器存储指令1804和数据1806,并且处理器执行来自存储器的指令以实现如上所述的方法。
[2]处理器1802执行存储在存储器1803和/或数据存储设备1820上的指令。处理器1802接收诸如数据库用户21、31、41的用户的输入。处理器1802基于该指令确定指令由数据库用户输入。该指令可以是要执行的函数。处理器1802可以执行存储在程序代码1804中的指令以向用户21、31、41表明任何输出或结果。
本领域技术人员将理解,在不脱离本公开的广泛的一般范围的情况下,可以对上述实施例进行多种变化和/或修改。因此,本实施例在所有方面都被认为是说明性的而非限制性的。
作为示例而非限制,虽然在本公开中讨论了加密授权(例如,加密签名),但是应当理解,其他授权机制可以与数据库系统1一起使用,包括通过数据库用户提交交易53。例如,数据库用户可以通过非密码手段(例如,通过使用登录凭证和/或密码)验证他们自己,然后使用这种非密码手段授权交易53。
此外,虽然在本公开上面公开了数据库服务器9,但是应当理解,可以在数据库系统1中使用多个数据库服务器。这样的多个数据库服务器可以与控制器组合以在多个数据库服务器之间托付联合交易。
Claims (24)
1.一种数据库系统(1),包括:
数据库系统存储器(3),存储第一数据库用户(21)和第二数据库用户(31)之间的共享程序指令(51)和数据记录(7)的数据库,其中所述共享程序指令(51)定义包括分别对所述第一数据库用户(21)和所述第二数据库用户(31)的隐私限制(14、23′、23″、33′、33")的隐私模型(13),并且指定授权模型(19),所述授权模型(19)包括第一子集授权(25′、35′)和第二子集授权(25″、35″),所述第一子集授权(25′、35′)允许所述第一数据库用户(21)与第一用户的隐私限制(23′、33′)一致地操纵所述数据记录的第一子集(27),所述第二子集授权(25″、35″)允许所述第二用户(31)与第二用户的隐私限制(23"、33")一致地操纵所述数据记录的第二子集(37);
至少一个第一数据库服务器(9),包括处理器(11),所述处理器(11)被配置为执行所述共享程序指令(51),其中所述共享程序指令(51)在被所述处理器(11)执行时:
1.处理(110)所述第一数据库用户(21)或所述第二数据库用户(31)提交的交易(53);
2.确定(120)所述交易(53)是否符合所述隐私模型(13)和所述授权模型(19);以及
3.如果所述交易通过步骤2,则投付(130)所述交易(53)并且与所述隐私模型(13)和所述授权模型(19)一致地操纵(55)所述数据记录的所述第一子集(27)或所述第二子集(37)。
2.根据权利要求1所述的数据库系统,还包括用所述存储器(3)存储的程序指令,所述程序指令在被执行时验证所述交易包括来自所述第一用户或所述第二用户的与所述授权模型(19)一致的加密授权。
3.根据权利要求2所述的数据库系统,其中所述加密授权包括:所述交易由所述第一数据库用户或所述第二数据库用户加密地签名。
4.根据前述权利要求中任一项所述的数据库系统,还包括存储在所述存储器(3)中的存证日志(57)和程序指令,在由所述处理器执行时:
记录所述共享程序指令(51)的执行历史;
记录对提交所述交易的请求;和/或
记录随所述交易提交的任何加密授权。
5.根据权利要求4所述的数据库系统,还包括执行引擎(2),所述执行引擎(2)包括在由所述处理器执行时执行以下动作的程序指令:
验证:对所述第一数据库用户或所述第二数据库用户的所述隐私限制以及所述第一子集授权或所述第二子集授权符合所述数据库系统的相应全局规则;以及
将对所述隐私限制和授权进行验证的存证记录在所述存证日志中。
6.根据前述权利要求中任一项所述的数据库系统,还包括交易和并发引擎(6),所述交易和并发引擎(6)具有程序指令,所述程序指令在由所述处理器执行时使用并发控制协议来处理提交到所述数据库系统的并发交易。
7.根据前述权利要求中任一项所述的数据库系统,其中所述共享程序指令(51)至少部分是存储在所述存储器(3)中的存储过程(304),并且所述系统还包括过程处理程序(302),所述过程处理程序(302)被配置为:
根据所述第一数据库用户或所述第二数据库用户提交的交易来确定适合处理所述交易的一个或多个存储过程;以及
通过执行所述一个或多个存储过程来至少部分地处理所述交易。
8.根据前述权利要求中任一项所述的数据库系统,还包括执行引擎(2),所述执行引擎(2)被配置为执行所述共享程序指令(51)并且实施所述隐私模型(13)和所述授权模型(19)。
9.根据权利要求8所述的数据库系统,其中所述执行引擎被配置为以与所述隐私模型(13)一致的方式限制对所述数据记录(7)的访问权。
10.根据权利要求8所述的数据库系统,其中所述执行引擎被配置为执行所述共享程序指令(51),并且如果由所述共享程序指令(51)指定,则所述执行引擎与所述共享程序指令(51)一致地改变所述隐私模型(13)和所述授权模型(19)。
11.根据权利要求10所述的数据库系统,其中所述交易(53)由所述第二数据库用户(31)提交,并且所述共享程序指令(51)在由所述处理器(11)执行时至少改变所述第一数据库用户(21)对所述数据记录(7)的所述第一子集(27)的访问权。
12.根据权利要求10所述的数据库系统,其中所述交易(53)由所述第二数据库用户(31)提交,并且所述共享程序指令(51)在由所述处理器(11)执行时至少改变所述第一数据库用户(21)的允许所述第一数据库用户(21)对所述数据记录(7)的所述第一子集(27)进行操纵的所述第一子集授权(35′)。
13.根据从属于权利要求4情况下的权利要求11-12中任一项所述的数据库系统,其中所述共享程序指令(51)在由所述处理器执行时,仅在所述存证日志或所述交易(53)中存在或不存在特定数据时改变所述隐私模型(13)和所述授权模型(19)。
14.根据权利要求4所述的数据库系统,其中所述共享程序指令(51)在由所述处理器执行时执行权利要求1的步骤3,并且所述共享程序指令(51)仅在所述存证日志或所述交易(53)本身中存在或不存在特定数据时才投付(130)所述交易(53)。
15.根据前述权利要求中任一项所述的数据库系统,其中所述共享程序指令(51)在由所述处理器执行时,同时投付所述交易(53)、及所述交易(53)的隐私和授权有效性的存证。
16.一种使用数据库系统(1)处理多个交易(53)的方法(100),所述数据库系统(1)包括被配置为存储数据记录(7)的数据库的数据库系统存储器(3)、和包括处理器(11)的至少第一数据库服务器(9),所述方法包括:
a)处理(110)由第一数据库用户(21)或第二数据库用户(31)提交到所述数据库服务器(9)的交易(53);
b)确定(120)所述交易(53)是否符合由所述第一数据库用户(21)和所述第二数据库用户(31)之间的共享程序指令(51)定义的隐私模型(13)和授权模型(19),其中所述隐私模型(13)包括分别对所述第一数据库用户(21)和所述第二数据库用户(31)的隐私限制(14、23′、23″、33′、33″),并且所述授权模型(19)包括第一子集授权(25′、35′)和第二子集授权(25″、35″),所述第一子集授权(25′、35′)允许所述第一数据库用户(21)与第一用户的隐私限制(23′、33′)一致地操纵所述数据记录(7)的第一子集(27),所述第二子集授权(25"、35")允许所述第二用户(31)与第二用户的隐私限制(23″、33″)一致地操纵所述数据记录(7)的第二子集(37);以及
c)如果所述交易通过步骤(b),则投付(130)所述交易(53)并且与所述隐私模型(13)和所述授权模型(19)一致地操纵(55)所述数据记录的所述第一子集(27)或所述第二子集(37)。
17.根据权利要求16所述的方法,还包括以下步骤:
验证:所述交易包括来自所述第一数据库用户或所述第二数据库用户的根据所述隐私模型和/或所述授权模型的加密授权。
18.根据权利要求16-17中任一项所述的方法,其中所述交易包括响应于条件对与所述第一子集授权一致地操纵所述数据记录的所述第一子集的请求,其中步骤16.b)包括:验证所述条件的发生并且与所述隐私模型和所述授权模型一致地操纵所述数据记录的所述第一子集。
19.根据权利要求18所述的方法,其中所述条件包括:确定另一交易的状态或所述数据记录的子集是否满足特定标准。
20.根据权利要求16-19中任一项所述的方法,其中所述隐私模型和/或授权模型将一个或多个预期动作或结果指定为所提交交易的一部分。
21.根据权利要求16-20中任一项所述的方法,其中所述数据库系统还包括存证日志,所述方法还包括:
a)记录所述共享程序指令的执行历史;
b)记录对提交所述交易的请求,和/或
c)记录随所述交易提交的任何加密授权。
22.根据权利要求21所述的方法,还包括:
验证:所述隐私模型中对所述第一数据库用户或所述第二数据库用户的所述隐私限制以及所述授权模型中的所述第一子集授权或所述第二子集授权符合所述数据库系统的相应的全局规则;以及
将对所述隐私限制和授权进行验证的存证记录在所述存证日志中。
23.根据权利要求16-22中任一项所述的方法,还包括:
执行并发控制协议来处理提交到所述数据库系统的并发交易。
24.根据权利要求16-23中任一项所述的方法,其中所述数据库系统存储器至少部分地将程序指令存储为存储过程,其中所述方法还包括执行以下步骤的所述数据库服务器的过程处理程序:
根据所述第一数据库用户或所述第二数据库用户提交的交易来确定适合处理所述交易的一个或多个存储过程;
通过执行所述一个或多个存储过程来至少部分地处理所述交易。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962856808P | 2019-06-04 | 2019-06-04 | |
US62/856,808 | 2019-06-04 | ||
PCT/US2019/042609 WO2020246998A1 (en) | 2019-06-04 | 2019-07-19 | Multi-user database system and method |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114096958A true CN114096958A (zh) | 2022-02-25 |
Family
ID=73651590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980097896.0A Pending CN114096958A (zh) | 2019-06-04 | 2019-07-19 | 多用户数据库系统及方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20200387627A1 (zh) |
EP (1) | EP3970029A4 (zh) |
JP (1) | JP2022548444A (zh) |
KR (1) | KR20220005645A (zh) |
CN (1) | CN114096958A (zh) |
AU (1) | AU2019449803A1 (zh) |
CA (1) | CA3140359A1 (zh) |
SG (1) | SG11202113361UA (zh) |
WO (1) | WO2020246998A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116127507A (zh) * | 2022-12-27 | 2023-05-16 | 北京菱云科技有限公司 | 一种多方零拷贝的车辆数字档案构建方法及系统 |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4202626A (en) * | 1978-02-24 | 1980-05-13 | A Patent Partnership | Signature verification and authentication systems |
US6925182B1 (en) * | 1997-12-19 | 2005-08-02 | Koninklijke Philips Electronics N.V. | Administration and utilization of private keys in a networked environment |
US6275824B1 (en) * | 1998-10-02 | 2001-08-14 | Ncr Corporation | System and method for managing data privacy in a database management system |
KR100366311B1 (ko) * | 2000-02-25 | 2002-12-31 | 이은정 | 에이알에스 전화시스템과 네트워크를 결합한 직거래 정보 자동 교차 통보 서비스 시스템 및 그 방법 |
JP2001325372A (ja) * | 2000-03-08 | 2001-11-22 | Fujitsu Ltd | ヘルスケアデータ共有システム,ヘルスケアデータ共有方法およびヘルスケアデータ共有プログラム |
US20090019552A1 (en) * | 2000-03-15 | 2009-01-15 | Mclaughlin Mark R | Healthcare Medical Information Management System |
AU7182701A (en) * | 2000-07-06 | 2002-01-21 | David Paul Felsher | Information record infrastructure, system and method |
US20030036374A1 (en) * | 2001-06-04 | 2003-02-20 | Time Domain Corporation | Wireless local area network using impulse radio technology to improve communications between mobile nodes and access points |
US7181500B2 (en) * | 2001-06-18 | 2007-02-20 | Microsoft Corporation | System and method for utilizing personal information to customize an application program |
JP3927834B2 (ja) * | 2002-02-12 | 2007-06-13 | キヤノン株式会社 | サービス提供システム、方法、プログラム及び記憶媒体 |
US20060041760A1 (en) * | 2002-06-26 | 2006-02-23 | Zezhen Huang | Trusted computer activity monitoring and recording system and method |
US6721765B2 (en) * | 2002-07-02 | 2004-04-13 | Sybase, Inc. | Database system with improved methods for asynchronous logging of transactions |
CN100476750C (zh) * | 2003-06-19 | 2009-04-08 | 黄泽镇 | 计算机活动监测记录系统及方法 |
US7526521B2 (en) * | 2003-07-11 | 2009-04-28 | At&T Intellectual Property I, L.P. | Multi-user database system and method for resource usage tracking |
US7206789B2 (en) * | 2003-11-13 | 2007-04-17 | St. Jude Children's Research Hospital, Inc. | System and method for defining and collecting data in an information management system having a shared database |
AU2005266922A1 (en) * | 2004-07-23 | 2006-02-02 | Privit, Inc. | Privacy compliant consent and data access management system and method |
US20070192140A1 (en) * | 2005-08-17 | 2007-08-16 | Medcommons, Inc. | Systems and methods for extending an information standard through compatible online access |
US20070180259A1 (en) * | 2006-01-20 | 2007-08-02 | Bulot Earl J | Secure Personal Medical Process |
US7685377B1 (en) * | 2006-07-12 | 2010-03-23 | Storage Technology Corporation | Piecewise logical data management |
US7974924B2 (en) * | 2006-07-19 | 2011-07-05 | Mvisum, Inc. | Medical data encryption for communication over a vulnerable system |
CN101136046B (zh) * | 2006-08-28 | 2011-01-05 | 鸿富锦精密工业(深圳)有限公司 | 电子签名验证系统及方法 |
US20080301148A1 (en) * | 2007-06-01 | 2008-12-04 | Microsoft Corporation | Methods and apparatus relating to server/client sql environments |
US8140502B2 (en) * | 2008-06-27 | 2012-03-20 | Microsoft Corporation | Preserving individual information privacy by providing anonymized customer data |
US8925041B2 (en) * | 2010-04-01 | 2014-12-30 | Salesforce.Com, Inc. | System, method and computer program product for performing one or more actions based on a determined access permissions for a plurality of users |
JP5611728B2 (ja) * | 2010-08-30 | 2014-10-22 | 一般財団法人電力中央研究所 | 共用データ生成方法、生成装置及び生成プログラム |
WO2012048347A1 (en) * | 2010-10-08 | 2012-04-12 | Brian Lee Moffat | Private data sharing system |
US20120278101A1 (en) * | 2011-04-28 | 2012-11-01 | Tiatros Llc | System and method for creating trusted user communities and managing authenticated secure communications within same |
CN104094261B (zh) * | 2012-02-01 | 2017-09-22 | 国际商业机器公司 | 访问受限数据的优化处理方法及系统 |
AU2013214801B2 (en) * | 2012-02-02 | 2018-06-21 | Visa International Service Association | Multi-source, multi-dimensional, cross-entity, multimedia database platform apparatuses, methods and systems |
EP2820613A2 (en) * | 2012-03-01 | 2015-01-07 | Minerva IP Holdings, LLC | Systems and methods for generating, managing, and sharing prescriptions with digital scripts |
US20130339310A1 (en) * | 2012-06-13 | 2013-12-19 | Commvault Systems, Inc. | Restore using a client side signature repository in a networked storage system |
US9092642B2 (en) * | 2012-09-27 | 2015-07-28 | Intel Corporation | Managing personal privacy settings |
GB2523759A (en) * | 2014-03-04 | 2015-09-09 | Ibm | Method for processing of restricted data |
US10279470B2 (en) * | 2014-06-12 | 2019-05-07 | Play-i, Inc. | System and method for facilitating program sharing |
US9485098B1 (en) * | 2015-07-22 | 2016-11-01 | AO Kaspersky Lab | System and method of user authentication using digital signatures |
US11328299B2 (en) * | 2015-08-10 | 2022-05-10 | Ipsidy, Inc. | Method and system for transaction authorization based on a parallel autonomous channel multi-user and multi-factor authentication |
KR101720268B1 (ko) * | 2015-10-26 | 2017-03-27 | (주)아이알엠 | 환자정보 보호를 위한 의료영상의 클라우드 데이터베이스 구축 및 판독 방법 |
CN105303123A (zh) * | 2015-11-02 | 2016-02-03 | 山东大学 | 一种基于分块混淆的动态数据隐私保护系统及方法 |
US10114854B2 (en) * | 2015-11-17 | 2018-10-30 | International Business Machines Corporation | Validation rule management across entities |
US10586062B1 (en) * | 2015-11-23 | 2020-03-10 | United Services Automobile Association (Usaa) | Systems and methods to track, store, and manage events, rights and liabilities |
US9912799B2 (en) * | 2016-01-10 | 2018-03-06 | Apple Inc. | Switching between watches or other accessories |
EP3424177B1 (en) * | 2016-02-29 | 2021-10-13 | SecureKey Technologies Inc. | Systems and methods for distributed identity verification |
CN107239474B (zh) * | 2016-03-29 | 2021-05-04 | 创新先进技术有限公司 | 一种数据记录方法及装置 |
US11025428B2 (en) * | 2016-05-05 | 2021-06-01 | Neustar, Inc. | Systems and methods for enabling trusted communications between controllers |
US10847256B2 (en) * | 2016-08-13 | 2020-11-24 | Ranjit Notani | System and computer program for healthcare information management in a multi-party healthcare network |
CN106485513A (zh) * | 2016-10-18 | 2017-03-08 | 鄢广国 | 一种食药生产环境及品质保障监管系统与方法 |
WO2018132844A1 (en) * | 2017-01-13 | 2018-07-19 | Payeazy, Inc. | Authentication systems and methods for online services |
WO2018136954A1 (en) * | 2017-01-23 | 2018-07-26 | Health2047, Inc. | Trust based access to records via encrypted protocol communications with authentication system |
JP2018136626A (ja) * | 2017-02-20 | 2018-08-30 | Kddi株式会社 | アクセス制御装置、アクセス制御方法及びアクセス制御プログラム |
KR102016730B1 (ko) * | 2017-05-24 | 2019-09-03 | 라온시큐어(주) | 프로그래밍이 가능한 블록체인과 통합 아이디 기반의 사용자 인증 방법 및 시스템 |
CN111066018B (zh) * | 2017-09-14 | 2023-12-05 | 索尼公司 | 信息处理设备、信息处理方法以及程序 |
US10970410B2 (en) * | 2017-10-26 | 2021-04-06 | Lawrence Livermore National Security, Llc | Accessing protected data by a high-performance computing cluster |
CN113609477B (zh) * | 2017-10-27 | 2024-08-13 | 数字资产(瑞士)股份有限公司 | 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法 |
AU2019200933B1 (en) * | 2017-10-27 | 2019-05-23 | Digital Asset (Switzerland) GmbH | Computer system and method for distributed privacy-preserving shared execution of one or more processes |
US11709817B2 (en) * | 2018-03-09 | 2023-07-25 | Ford Global Technologies, Llc | Application marketplace for transportation services platform |
CA3098918A1 (en) * | 2018-05-01 | 2019-11-07 | Killi Inc. | Privacy controls for network data communications |
TWI674513B (zh) * | 2018-12-06 | 2019-10-11 | 財團法人工業技術研究院 | 健康資訊之存取系統、存取裝置及存取方法 |
JP6865851B2 (ja) * | 2019-03-04 | 2021-04-28 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | ブロックチェーンワールド状態マークルパトリシアトライ木サブツリーの構築 |
CN111950034B (zh) * | 2019-05-15 | 2024-02-06 | 天地融科技股份有限公司 | 一种电子签章的联合签章方法、联合验证方法及系统 |
WO2020240237A1 (en) * | 2019-05-31 | 2020-12-03 | Micron Technology, Inc. | Memory device having a secure test mode entry |
-
2019
- 2019-07-19 EP EP19931853.6A patent/EP3970029A4/en not_active Withdrawn
- 2019-07-19 KR KR1020227000245A patent/KR20220005645A/ko unknown
- 2019-07-19 CA CA3140359A patent/CA3140359A1/en active Pending
- 2019-07-19 AU AU2019449803A patent/AU2019449803A1/en not_active Abandoned
- 2019-07-19 US US16/516,910 patent/US20200387627A1/en not_active Abandoned
- 2019-07-19 SG SG11202113361UA patent/SG11202113361UA/en unknown
- 2019-07-19 JP JP2021572038A patent/JP2022548444A/ja active Pending
- 2019-07-19 CN CN201980097896.0A patent/CN114096958A/zh active Pending
- 2019-07-19 WO PCT/US2019/042609 patent/WO2020246998A1/en unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116127507A (zh) * | 2022-12-27 | 2023-05-16 | 北京菱云科技有限公司 | 一种多方零拷贝的车辆数字档案构建方法及系统 |
CN116127507B (zh) * | 2022-12-27 | 2024-04-26 | 北京菱云科技有限公司 | 一种多方零拷贝的车辆数字档案构建方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200387627A1 (en) | 2020-12-10 |
JP2022548444A (ja) | 2022-11-21 |
EP3970029A1 (en) | 2022-03-23 |
AU2019449803A1 (en) | 2022-01-20 |
EP3970029A4 (en) | 2023-06-28 |
WO2020246998A1 (en) | 2020-12-10 |
SG11202113361UA (en) | 2021-12-30 |
KR20220005645A (ko) | 2022-01-13 |
CA3140359A1 (en) | 2020-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11611560B2 (en) | Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (DLT) platform | |
US11588803B2 (en) | Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment | |
US20230342734A1 (en) | Systems, methods, and apparatuses for implementing smart flow contracts using distributed ledger technologies in a cloud based computing environment | |
KR102579802B1 (ko) | Dlt를 사용한 관계형 데이터 관리 및 구성 | |
US11824970B2 (en) | Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules | |
US11257073B2 (en) | Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment | |
US11418510B2 (en) | Systems, methods, and apparatuses for implementing a role based access control and authorization validator via blockchain smart contract execution using distributed ledger technology (DLT) | |
US20240289479A1 (en) | System supporting operations on securely commingling self-governing data sets from a plurality of publishers | |
US20190238316A1 (en) | Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment | |
US20190236606A1 (en) | Systems, methods, and apparatuses for implementing a virtual chain model for distributed ledger technologies in a cloud based computing environment | |
US20190236562A1 (en) | Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment | |
US11017113B2 (en) | Database management of transaction records using secure processing enclaves | |
CN114365133A (zh) | 利用秘密共享和对读取的共识在元数据驱动的区块链上实现被遗忘的权利的系统或方法 | |
CN114096958A (zh) | 多用户数据库系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40069860 Country of ref document: HK |