Skip to the content.

区块链——分布式合同

Contact me


课程作业

数据库技术

数据库技术就是数据管理的技术,是计算机科学与计算的重要分支,是信息系统的核心和基础。数据库是数据管理的产物,数据管理是数据库的核心任务,内容包括对数据的分类、组织、编码、储存、检索和维护。随着计算机硬件和软件的发展,数据库技术也不断地发展,数据库技术到目前共经历了人工管理阶段、文件系统阶段和数据库系统阶段。数据库的模型包括对象模型,层次模型,网状模型,关系模型,面向对象模型,半结构化模型,平面模型等。

关系数据库是当前数据库的主流,是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。标准数据查询语言SQL是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。

范式

第一范式(1NF):所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。

第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码,即在1NF基础上消除非主属性对主码的部分函数依赖。

第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性,即在2NF基础上消除传递依赖。

巴斯-科德范式(BCNF):Boyce-Codd Normal Form(巴斯-科德范式) 在3NF基础上,任何非主属性不能对主键子集依赖,即在3NF基础上消除对主码子集的依赖。

第四范式(4NF):满足BCNF,消除非平凡且非FD的多值依赖(MVD)。4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

第五范式(5NF):消除连接依赖,并且必须保证数据完整性。表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。

约束

数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。

完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

总的来说有五种:唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束,有五大关键词,UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT。

分布式数据库

当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上。管理网络中跨多台计算机存储的文件系统称为分布式文件系统。该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。一个标准的分布式系统应该具有以下几个主要特征:

hadoop是一个广泛使用的框架,自带一个称为HDFS的分布式文件系统。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算,使得其在海量数据处理方面得到大量使用。

去中心化的数据库——区块链

中本聪在2008年,于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币网络,开发出第一个区块,即“创世区块”,而后比特币网络稳定运行了几年,证明了其可行性,在应用上取得了一定的成功。它有几个特点:去中心化,公开透明,特殊的同步和共识机制,修改困难等。

但是以比特币为代表的区块链应用有着明显的缺陷:

区块链技术的一些思想可以借鉴:

区块链的应用

由于区块链的上述特点,使得我们可以构建一个基于区块链的合同机制。合同的特性包括了有效不可修改,对合同有关人员透明可见,具有强制执行效力等一些特点。

因此可以构想一个产品质量认证流程,该区块链可以由生产厂家共同维护,对于每个生产环节都生成区块链的事务(对应于比特币网络中的交易)。生产厂家将事务打包进区块,自动产生生产环节的认证。而对应于传统区块链的工作量证明,一个想法是将厂家的生产力作为工作量,由于区块链技术的修改困难和透明的特性,每个生产环节都是实实在在的认证,很难对其中的环节缺失等问题掩盖。

同时,在这个区块链中可以嵌入智能合同(合约),例如厂家A对厂家B下订单,可以透明公开的查看订单的生产情况和中间环节的认证。当生产的产品满足要求时,自动地执行合同的内容,生产和验收的质量在区块链的环节得到一定量的保证,减少人工对其中环节的二次检验,提高了效率。

总结

数据库是计算机科学的一个重要分支,对于推动信息化有重要的作用。由于数据量的日益增大,单机的数据库已经不能满足需要,因此分布式数据库,以及相关技术的出现使得数据库以新的形式继续发挥重要作用。

区块链目前比较成功的是比特币网络,它稳定运行了10年,证明了区块链的机制有一定的可行性。目前在其他方面尚无有效或者杀手级产品出现,但是其提供的去中心化,透明公开,修改困难,独特的同步和共识机制值得深入的研究和发掘。

根据区块链的特性可以帮助我们解决一些实际的问题,比如区块链的应用中提到的使用区块链作为智能合同和智能认证可以提升人工二次检查的效率,当前智能合约的技术是在区块链上产生的,也呈现出在不同领域广泛应用的趋势。