首页 » ORACLE, ORACLE [C]系列 » Oracle 20C新特性一:Blockchain Tables(区块链表)

Oracle 20C新特性一:Blockchain Tables(区块链表)

Oracle database是一个技术超融合类的产品,以致于现在的版本给人的印象是过于庞大,但是不可否认她还是传统数据库学习的方向标,几年前在引入机器学习ML/AI到传统数据库时就有人质疑,但是目前看来这也是一个前瞻性的决定,现实世界中的ADW/ATP取得了用户的认可,Oracle 20C版本同样又引入了新的特性,在China这个大背景下还追随ORACLE也许会让人不解,但是离开她你也许会错过很多。

Oracle Database 20c New feature:

    • BlockChain table type
    • Desupport of non-cdb architecture,The usage of Multitenant architecture will be mandatory, facilitating 3 PDB’s with no cost
    • Native Persistent Database Memory (PMEM) –
    • Automated Machine Learning
    • Binary Json Data type for more performance
    • Oracle Spatial and Graph
    • Lots of machine learning algorithms

20C新特性中首当其冲的就是blockchain tables区块链表,受益于区块链的防篡改安全可信机制,Oracle认为并非每个项目都需要区块链技术的全部功能,而引入其IT环境复杂区块链。区块链表使客户可以在需要高度防篡改的数据管理,而又无需在多个组织中分布分类帐或依靠分散式信任模型的情况下使用Oracle数据库。它们还可以用于改善数据完整性和对中央机构(例如托管公司)提供的服务的欺诈保护。

区块链表是一种新的专用表类型,它在Oracle数据库中提供了高度防篡改的持久性选项。它允许仅插入操作,不允许进行任何更新和其他修改,并限制删除操作。为了进一步提高抗篡改性,通过将前一行的哈希存储在当前行中来对行进行链接,从而使用户能够验证任何修改。用户还可以选择使用X.509证书使用基于PKI的签名对行的内容进行签名,并且可以验证签名和数据的完整性,从而确保不可否认性。

数据库内部攻击不仅最难以识别,而且盗用用户或DBA的凭据也可能为外部黑客打开大量关键数据。区块链表通过防止用户欺诈(有人重写历史记录,删除某些数据或对其进行加密以勒索赎金)来提供更强的数据库安全性。 配合ORACLE DV可以防止DBA操作,即使使用闪加数据库把数据库已回滚到前一个时间点,并且随后的插入被欺诈性条目替换,您都可以将哈希和PKI签名与外部审计日志进行比较,以验证数据完整性并检测任何篡改。

使用区块链表是一个易于使用但高度防篡改的集中式数据管理选项,可透明地支持现有应用程序,并使用户和开发人员能够利用丰富的Oracle开发工具和环境集,并且可以与其它非BLOCKCHAIN TABLE关连查询,使用区块链表比实现区块链网络和去中心化应用程序容易得多,不需要新的基础架构,该功能作为Oracle数据库的一部分提供。表的使用对于现有应用程序可以是透明的,并且开发人员可以使用SQL,PL / SQL,JDBC和其他方式访问表来保持当前的体系结构和编程模型。同样也得利于数据库的其它特性如分区、inmemory、备份、归档。虽然insert性能效率相比之前有所损耗,但是相对于分布式区块链提交共识加载率还是高效的。

对比blockchain table 和 normal table insert的速率(10几倍的差别)(测试环境是完全空闲)

create blockchain table anbob.bc_tab2(id number,name varchar2(10), price number (  6,2))
 no drop until 31 days idle
 no delete locked
 hashing using "SHA2_512" version "v1";

create table anbob.tab2  (id number,name varchar2(10), price number (  6,2));

SQL> set timing on
SQL> begin
for i in 1..10000 loop
 insert into anbob.bc_tab2 values(i,'anbob'||i,100);
 commit;
end loop;
 end;
 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:13.26

SQL> begin
for i in 1..10000 loop
 insert into anbob.tab2 values(i,'anbob'||i,100);
 commit;
end loop;
 end;
 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.86


为什么要使用blockchain tables?

尽管新兴的分布式应用程序受益于去中心化信任模型中,但当今大多数应用程序都具有中央权限(银行,代管公司,交易交易所,政府办公室等),并且借助Oracle数据库中的区块链表,可以使这些应用程序更安全,而无需增加更改为托管服务器的复杂性去中心化模型。这就是使用Oracle Database 20c本机区块链表的原因。例如,财务交易日志,医疗记录,审计跟踪,监管合规性数据,财务记录,临床试验的FDA报告,合法保留数据,集中的保管或来源信息链,可以应用区块链表来使这些应用程序更安全并且其数据防篡改。

数据库区块链表和去中心区块链比较:
区块链表和区块链平台的共同属性:

  1. 仅追加数据
  2. 使用加密散列进行链式篡改
  3. 数字签名的更新(在区块链表中是可选的,在区块链平台交易中是必需的)

附加blockchain table功能或属性:

  1. 内置数据库备份和归档,分区,访问控制
  2. 插入事务的吞吐量更高
  3. 使用SQL和PL / SQL的编程模型
  4. 除了Oracle数据库外,不需要任何新的基础架构

使用blockchain tables

Oracle blockchain tables提供了新的语法,上面我们已经创建了一张blockchain table. anbob.bc_tab2 , 常用的字段类型都是支持的,但不支持long, 还有只允许insert不允许其它DML 或drop table ,drop partition操作,不允许直接路径加载,不允许blockchain table 转换非blockchain table, 不允许OGG同步更新数据.

create blockchain table anbob.bc_tab2(id number,name varchar2(10), price number ( 6,2))
no drop until 31 days idle
no delete locked
hashing using “SHA2_512” version “v1”;

1, NO DROP [UNTIL n DAYS IDLE]是强制性子句,可防止删除表或在配置非活动保留期前不允许删除。n的最小值是16,要以使用alter table调大,不允许调小。

2,NO DELETE [LOCKED] or NO DELETE UNTIL n DAYS AFTER INSERT [LOCKED]是控制最新记录insret后允许删除或永远不允许删除的控制删除策略的子句,每一行中都有隐藏列timestamp 类型。对于真正的永久分类帐,可以禁止行删除,也可以在n天的保留期后允许删除行,其中n的最小值也为16。同样可调大,不可调小。

3,HASHING USING “sha2_512” VERSION “v1”,也是强制性子句,用于指定行链接的哈​​希计算使用具有512位输出长度的SHA2算法。

为了在PL / SQL中使用区块链表,我们提供了三个具有一系列功能的数据库包DBMS_BLOCKCHAIN_TABLE、DBMS_TABLE_DATA、DBMS_USER_CERTS, Blockchiain相关VIEW xx_BLOCKCHAIN_TABLES , xx_CERTIFICATES.

 

先记录这么多,20c虽然该特性很棒,但是ORACLE 19C仍然是当前(2020年)推荐升级的版本,后续在分享整理其它特性。

 

reference https://blogs.oracle.com/blockchain/native-blockchain-tables-extend-oracle-database%e2%80%99s-multi-model-converged-architecture

打赏

,

对不起,这篇文章暂时关闭评论。