区块链表是 Oracle 数据库的一项重要特性,它通过密码学哈希链确保数据的防篡改性和可验证性。随着技术演进,区块链表的功能不断增强,本文重点解析用户链、行版本、日志记录等核心特性,帮助您更好地理解和应用区块链表。
用户链:基于用户定义列的数据隔离
早期版本的区块链表仅支持系统链。系统链由 Oracle 随机选择(每个实例最多 32 条),用于处理新插入的行。
用户链则基于最多三个用户定义的列(类型包括 NUMBER、CHAR、VARCHAR2 和 RAW)构建行链。例如,在跟踪银行交易(取款、存款、转账)的区块链表中,假设存在名为 ACCOUNTNO 的列用于记录账号。每个交易都会为特定账号插入新条目,用户链可与每个唯一的 ACCOUNTNO 值关联。若有 100 个不同的账号,则最多可存在 100 条用户链。您可仅针对特定 ACCOUNTNO 的链运行验证程序,从而实现更强的数据隔离。此特性允许基于版本列创建用户链,即使这些行分布在不同的系统链中。
多用户链提升了区块链表及其验证程序的灵活性,使您能更轻松地在应用中利用防篡改表。
行版本:管理多历史版本数据
区块链表行版本特性允许在区块链表中维护多个历史版本的行,这些版本对应于一组用户定义的列。通过区块链表上的 _last$ 视图,您可以仅查看行的最新版本。
此特性确保了在应用中使用防篡改区块链表时的行版本控制能力。
日志记录:闪回数据归档与区块链结合
闪回数据归档历史表现在已成为区块链表。此特性允许将常规用户表中的更改跟踪记录在由 Oracle 数据库维护的区块链表中,作为闪回数据归档的一部分。常规表中的每个更改都将作为单独行添加到区块链日志历史表中,并纳入由区块链表维护的密码学哈希链中。您可使用内置验证程序(DBMS_BLOCKCHAIN_TABLE.verify_rows)或通过外部验证(包括示例提供的持续验证过程)来验证闪回数据归档区块链日志历史表中的数据和链完整性。
此特性使您能够以密码学安全且可验证的方式记录常规用户表的更改。
列管理:动态添加与删除用户列
此特性支持区块链表和不可变表的演进,即允许在维护当前数据(包括已删除列中的数据)的同时添加和删除列,以确保加密哈希链的连续性。
随着应用发展,您可能需要通过添加或删除列来修改现有表。在本版本中,您可以轻松在先前创建的区块链或不可变表中添加或删除列。列删除之前的任何行将保留这些列中的数据,以维护加密哈希链的完整性,并允许验证程序在整个表上工作。
计数器签名:增强非否认性
您可在签署行时请求数据库计数器签名。除了在行中记录计数器签名及其元数据外,计数器签名和 signed_bytes 将返回给调用者。调用者随后可将计数器签名和 signed_bytes 保存在其他数据存储中(如 Oracle 区块链平台),以实现非否认目的。
计数器签名可为用户提供数据已安全存储在区块链表中的额外保证。
委托签名者:代他人签署行
委托人是允许签署由主用户插入的行的替代用户。此特性允许委托人代表其他用户在不可变或区块链表中签署行。仅当使用委托人证书中的公钥可验证签名时,委托人的签名才会被接受,该证书已添加到字典表中。
当用户无法签署其创建的行且信任其委托人时,可使用委托签名者。
保留时间权限:防止磁盘空间耗尽攻击
将空闲保留时间设置为足够大值的区块链表或不可变表,在表的最新行变得非常旧之前无法被删除。这限制了在必要时删除区块链/不可变表的能力,以防止磁盘空间耗尽攻击。因此,将表的空闲保留设置为较大值的操作仅限于通过授予新的 TABLE RETENTION 系统权限的特权用户。空闲保留阈值(指定何时需要新权限 BLOCKCHAIN_TABLE_RETENTION_THRESHOLD)是可配置的。
创建具有长保留时间的区块链表或不可变表并插入无法删除的大量数据,可能成为通过磁盘空间耗尽发起的拒绝服务攻击的载体。为降低此风险,引入了特殊权限。仅被授予此权限的用户可将空闲保留设置为高于可配置阈值水平。
常见问题
什么是区块链表的用户链?
用户链是基于用户定义列(如账号)构建的行链,它允许针对特定数据子集运行验证程序,提升数据隔离性和灵活性。
行版本特性有何作用?
行版本特性允许在区块链表中维护多个历史版本的行,并通过特定视图查看最新版本,确保数据版本控制的可信性。
区块链表如何记录日志历史?
闪回数据归档历史表作为区块链表,跟踪常规用户表的更改,每个更改作为单独行添加到密码学哈希链中,支持内置和外部验证。
能否动态修改区块链表的列?
是的,您可以在维护数据完整性的前提下添加或删除列,已删除列的数据仍被保留以确保加密哈希链的连续性。
计数器签名有什么好处?
计数器签名提供额外安全保证,支持非否认性,签名数据可保存于外部系统(如 Oracle 区块链平台)用于后续验证。
委托签名者适用于哪些场景?
当主用户无法直接签署行时,可信委托人可代其签署,签名验证通过委托人证书中的公钥进行,确保安全性和可靠性。
通过以上特性,区块链表在数据完整性、版本控制和安全管理方面展现出强大能力,助力企业构建高效可靠的防篡改数据存储解决方案。