概述
参考资料:
https://zhuanlan.zhihu.com/p/33381916
https://www.zuozuovera.com/archives/1062/
东南大学D&Intel Lab相关ppt
数据库的核心概念——表示、存取、查询
有了数据库是干什么,大概实现的逻辑,特点,才能引申出对当今这些新技术的对比、适应和发展。
- 目的:研究数据表示、存取
- 数据模型:表示数据的模型,通常由三层递进:
- 概念数据模型:用E-R图统一业务概念,给出实体和实体间的关系,与具体的DBMS无关。
- 逻辑数据模型:系统分析设计人员对数据存储的观点,确定具体的业务规则,在概念数据模型基础上详细描述数据,确定实体的属性,主外键约束,范式化处理。实际就是用户使用数据库时看到的数据的表现逻辑(如关系数据模型中的表)(既面向用户),也要用于具体DBMS的实现(也面向系统)。
- 物理数据模型:面向计算机物理表示,与DBMS和操作系统、硬件都有关。关于具体物理存取实现的设计。在数据库系统的使用者面前,物理数据模型是看不到的,大部分市县系统自动生成,如:用户只能指定某属性为索引(逻辑),具体索引的实现由系统用相应的B+树等方法开辟内存,构建索引的数据,以一定的逻辑存放从而优化查找,等等过程都是物理数据模型的设计。
- 以关系数据库为代表:通过将数据表示为实体及其关系来表示数据。
知识图谱——知识、推理
-
基本概念:结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系,通过将数据粒度从document级别降到data级别,聚合大量知识,从而实现知识的快速响应和推理。
上面的概念比较抽象,实质就是把现实世界中的一堆概念联系起来,构成一个知识的关系网,原来一般数据都存在各种各样的表里,一堆表集合起来表示所有数据,现在就是一张大网,粒度就是这些个实体和简单关系(下面说的三元组),构建这个的目的是为了根据一个东西找跟他相关的各种东西,或者推理下谁跟谁关系大之类的,这就是所谓快速响应和推理。
-
结构:如果两个节点之间存在关系,他们就会被一条无向边连接在一起,那么这个节点,我们就称为实体(Entity),它们之间的这条边,我们就称为关系(Relationship)。
-
基本单位——三元组:“实体(Entity)-关系(Relationship)-实体(Entity)”构成的三元组,这也是知识图谱的核心。
-
构建的步骤:一般三步。信息抽取,信息融合,信息加工。简单介绍一下通俗的理解。
- 信息抽取:数据一般都存在一些结构化的数据库(关系数据库),XML(半结构化数据库)等等, 从各种类型的数据源中提取出实体、属性以及实体间的相互关系,在此基础上形成本体化的知识表达。其实主要就是从一些跟知识图谱结构不一样的数据源里把数据提取成需要的样子。
- 信息融合,把得到的所谓知识整理整理,以消除矛盾和歧义,比如某些实体可能有多种表达,某个特定称谓也许对应于多个不同的实体等。其实把上一步得到的处理一下,大家叫法不一样的统一一下,这样知识才能用。
- 信息加工:真正知识图谱要想有用,主要靠这一步,上面得到只能说是统一了一下的事实,但事实本身并不等于知识。把事实加工,让系统能够根据这些做推理和快速的有联系的查询(目的),就得评估下信息怎么样,然后构建数据怎么存和怎么推理。
数据库遇上知识图谱——效率、可扩展、开放、半结构化
-
关系数据库 vs 知识图谱:
- 结构:关系数据库严格结构化,一个表通常是多元关系,而且严格限制什么主键不能空啊,保证数据的结构,都是静态;知识图谱松散,随便什么实体,有关系就加一条边表示,主谓宾就搞定,模式灵活。
- 效率:关系数据库查询的时候是找表,进行了对海量数据做了好的存储以优化查询;知识图谱直接就两个模式,简单来说就是找三元组里的东西:所以一般类型的数据库查找,显然数据库快的多;但是知识图谱在多跳查询(比如找你奶奶的爸爸的姐姐的丈夫的小学同学)的时候效率比关系数据库快的多,因为数据库要用join来把表连起来完成这个操作,表的join太笨重了。知识图谱就是干这个的,找联系,做推理,所以它做这个的速度可能是千分之一甚至万分之一。这就是它的特点;
- 扩展性:关系数据库要扩展就得在表添加属性或者根据原来的表添加相关的表,还得更新一堆有关的索引,具有封闭的特性;知识图谱只要在原来的图谱基础上加节点跟边就行了
知识图谱下:数据库的新挑战和新机遇
我个人感觉术业有专攻,没必要往上靠,但是老师ppt里说了这个。。。
总结一下:
- 让数据库可扩展,变灵活:结构化变成半结构化,灵活化的结构,大数据下的各种NoSql数据库,直接键值对存数据,适应互联网并发多,信息流多、快,且不成结构的特点
- 提高知识图谱这种联表查询的速度:搞好索引,查询优化,做好分布并发。
区块链——去中心、去信任、共识
共识
共识不是个什么高大上的新东西,新华词典上的解释是:指一个社会不同阶层、不同利益的人所寻求的共同认识、价值、理想。
在区块链里,“共识”的意思是参与者就某一区块链状态达成共同的认识。
那区块链为什么存在“共识”?为什么支付宝啊,网银啊,从来没听说过这个名词?
因为区块链是去中心化的,而支付宝是中心化的,支付宝的一切都是马云爸爸说了算,马云爸爸从来不需要和别人达成“共识”,你爱玩不玩,没你说话的份。你不能跟马云爸爸说,我不同意我支付宝这笔交易的余额,马云不理你的。
但区块链是去中心化的,所谓的去中心化的一个含义就是没有某一个人,或某一个机构处于权力领导地位,没有谁能一个人说了算。任何“决策/状态/改变等”都要大家参与者一起使用某种机制来达成相同的认识,这就是区块链的共识。
区块链里需要共识的内容
区块链里的共识具体内容有哪些呢,有很多,比如对哪笔交易是否有效,需要达成共识。
一种是针对交易的有效性达成共识,这是区块链最核心的功能之一。这几乎是所有区块链产品都要做到的“共识内容”。在比特币系统,本质上是一种交易顺序共识。就是哪笔交易最先被确认就有效的。
区块链共识的具体内容还有一个极端重要的是整个参与者需要对最新的高度区块达成共识。就比如如果有两个矿工同时挖出一个区块,哪谁的是有效的,谁的算是孤立块。就也需要某种机制让大家都接受最终的答案,不允许出现分歧。
一个良好的共识机制
李开复曾经创立过一种共识机制:夫妻意见一样时听丈夫的,夫妻意见不同时听太太的。据说这种共识机制可实现生活100%容错,远胜过任何区块链共识算法。
去信任
严格来说应该叫分散信任,区块链并没有在实际上消除信任。它们做的事情是最小化系统中任意一个行动者所要求的信任的数量。他们是通过在系统中的不同的行动者之间分散信任来做这件事的。
有一个机制使得系统中的所有参与者都可以对什么是一贯的事实形成一个共识。权力和信任在网络的股东(例如:开发者、矿工、消费者)之间是分布式的(或者说:被共享的),而不是集中在单个个体或说实体(例如:银行、政府、或者金融机构)上的。
区块链的系统建立在分散化信任的基础上:我们是在信任集合中的每一个人。
数据库遇上区块链——去信任、可扩展、去中心化、共识性
区块链数据库的特征(随便看看得了):
- 描述性的接口
- 可编程去信任机制
- 共识性语义
- 可扩展性
- 并发事务调度和高吞吐
区块链VS数据库
-
去中心化
区块链的优点:传统的数据库需要一定的访问权限去管理,也就是说你必须依赖人为的管理,一旦访问权限被黑或者管理员作恶,数据就有很大的危险性,或者存在被人篡改的可能性,区块链用数据加密学和工作量证明以及节点的共识的机制来保证数据的安全。 -
健壮性
区块链的优点:区块链的另外一个优点就是高容错,因为它内在的冗余机制,每个节点对于整个区块链网络而言,都是必不可少的,节点之间相互通信,即使一些节点因为一些原因出错,也不会导致整个网络垮掉,同时失败的节点,重启之后也总是能正确同步新的交互。 -
性能
中心数据库的优点:区块链比传统的数据库要慢,并不是因为区块链技术本来就慢,而是因为区块链本身就是新生事物,依然处于早期阶段,性能优化仍然有一定的空间,同时因为区块链除了像传统数据库那样运行,还要做额外的负载:1、签名机制2、共识机制3、冗余性4、透明性(在区块链的交易都是透明的)
区块链在以下场景应该会更擅长:a、公司内部审计b、来源追踪c、轻金融系统
数据库的一致性 vs 区块链的共识性
区块链的共识性就是一种去中心、去信任的数据一致性
保持数据一致性是系统实现基本要求:
一是逻辑一致性:关系依赖的数据保证某种约束条件,用一些约束、断言。
二是多副本的一致性:数据的多个副本保持一致性。
随着互联网技术进一步发展,互联网的去中心化宗旨逐渐得到重现。在去中心化,数据的一致性有重新的定义和诠释,需要在参与主体间保持数据的一致性形成共识,这就需要解决故障攻击外的恶意攻击,即拜占庭协议和sybil攻击。从形式上看,数据的共识性要求更多副本的一致性,从而在参与主体上实现存在性证明,而这种证明可以应用于数字货币和交易以及支付等具有价值属性的人类活动。这是目前比较成功的应用案例。
数据的一致性和共识性是在去中心化环境下对数据一致性的不同语义,目前多共识性的基本实现方法通过在每个节点的完全冗余备份实现数据的共识性,也有一种实现方法是在通过paxos协议实现备份的一致性,再通过拜占庭协议实现共识性,就可以回归到分布式数据存储系统上实现共识性,从而实现数据共识性,这个过程实现从数据一致性到数据共识性。
因此也就解释了数据库遇到区块链要解决的根本问题是:将中心化环境中的数据一致性拓展到去中心化环境中的数据共识性,从数据库发展的历史中,当前数据库遇到区块链:
一方面,数据库需要解决的问题是从一致性拓展到共识性的技术方法;
另一方面,数据的技术方法可以促进当前的区块链技术发展,数据对共识性的理解是对一致性的拓展,一是副本数目的飙升和恶意攻击;二是要扩充区块链中仅仅关于存在性共识的语义,需要实现在关系模型语义下的一致性、共识性,这种思路有希望解决通过完全冗余副本来实现存在性共识的低效机制。
关于存在性证明
打个比方,上图VB手拿最新以太坊区块链高度和地址,再配以他的图片很好的证明了他于区块生成后的那个时点的存活证明,其实这并不新鲜,以往我们很多时候用的是发行量大的报纸和真人照片进行存在性证明。
其实区块链和报纸在存在性证明上有很多相似之处,主要有三点:
首先是数据篡改困难,如果把当日的报纸看成一个节点,那么区块链和报纸一样有着巨大的数量,如果要篡改需要重新发行巨大的数量的节点(这点和修改所有节点区块数据一样具有很大的难度);
其次,报纸和区块链一样具有天然的时序性,报纸都会有当天的发行时间,区块链一样具有时序性,区块的生成时间会被记录;
第三,具有公开验证方式,你可以买一张当日的报纸进行时间验证,区块链可以通过浏览区块信息进行验证。
神经网络计算模型的基本原理
本质上一个神经网络就是一个大的函数,给输入得输出,是用一层又一层的简单函数对高维复杂函数的精简逼近,对高维不确定性依赖关系的表示。
特点:高维、不确定、隐式结构。
应用:深度学习。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发发现数据的分布式特征表示。
数据库遇上深度学习——可扩展、动态模式、语义丰富化、多模态
深度学习对数据库
深度学习对数据库中的数据进行分析,可以更好的发现哪些数据更重要,哪些数据的作用没有特别大,这样对于数据库的进一步优化会起到十分关键的作用。
具体对于数据库中的某些非确定性问题,如知识融合,众包,查询推导等可能优化的较好。比如:
- 自然语言查询接口:自然语言查询接口因为其在非专家系统中的美好应用前景和大量的需求而一直被讨论,但难点在于如何让数据库系统来理解自然语言查询的语义。而深度学习的RNN模型在解析自然语言领域有很好的表现,因此可以将RNN模型用于将自然语言查询语句解析为SQL查询语句,加以提炼用于数据库查询
- 查询执行计划:对于QueryPlan 的优化是一个传统的数据库难题,我们可以训练一个Query Planner可以通过学习大量的SQL查询语句及其最优的执行顺序对新输入的SQL查询语句也可以产生相似的最优解。查询执行计划:对于QueryPlan 的优化是一个传统的数据库难题,我们可以训练一个Query Planner可以通过学习大量的SQL查询语句及其最优的执行顺序对新输入的SQL查询语句也可以产生相似的最优解。
数据库对深度学习:
大量的训练集和数据模型提高了深度学习的准确性,但是副作用却是训练过程的代价的增大。正因如此数据库社区累积的大量的系统优化的经验可以用于深度学习训练集的优化。
例如分布式的计算和存储在深度学习的应用,
-
优化调度:通过优化数据库的事务执行和查询方法,来提高深度学习中相互独立问题的计算速度。例如数据库通过代价模型来评估查询计划的好坏。我们也可以建立一个深度学习代价模型来查找最优的计算次序。
-
储存管理:深度学习需要大量的存储空间,可以通过优化页面和cache来优化调度;通过添加数据库日志取代静态的进行深度学习的运行分析,通过垃圾回收机制来优化GPU存储管理。
-
并发性和一致性:数据库技术可以提供灵活的一致性用于深度学习的分布式训练。
最后
以上就是仁爱歌曲为你收集整理的数据库遇上知识图谱、区块链、深度学习的全部内容,希望文章能够帮你解决数据库遇上知识图谱、区块链、深度学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复