分布式数据库系统(1)——概述
(一)分布式数据库是什么?
分布式数据库系统:一个粗略的定义是“分布式数据库由一组数据组成,这些数据物理上分布在计算机网络的不同节点上(亦称场地)上,逻辑上是属于同一个系统。” 这里强调两点:
(1)分布性:数据库中的数据不是存储在同一场地,更确切的说,不存储在同一计算机的存储设备上,这就可以和集中式数据库相互区别。
(2)逻辑整体性:这些数据逻辑上是互相联系的,是一个整体(逻辑上如同集中数据库)。
精确的分布式数据库定义:分布式数据库是由一组数据组成的,这组数据分布在计算机网络中的不同的计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),可以执行局部应用。同时,每个节点也能通过网络通信子系统执行全局应用。与之前的定义相比,更注重场地自治性以及自治场地之间的协作性。
(二)分布式数据库系统的特点
分布式数据库系统是在集中式数据库系统技术的基础上发展起来的。它具有自己的特性和特征。集中式数据库的许多概念和技术,如数据独立性、数据共享性和减少冗余度、并发控制、完整性、安全性和恢复等。
(1)数据独立性
在集中式数据库系统中,数据独立性包括两个方面:数据的逻辑独立性和数据的物理独立性。其含义是用户程序与数据的全局逻辑结构及数据的存储结构无关。在分布式数据库系统中除了数据的逻辑独立性和物理独立性外,还有数据分布独立性亦称为分布透明性。分布透明性是指用户
不必关心数据的逻辑分片
,
不必关心数据物理位置分布的细节
,也
不必关心重复副本(冗余数据问题)一致性问题
,同时也
不必关心局部场地上数据库支持哪种数据模型
。
(2)集中于自治相结合的控制结构
数据库是多个用户共享的资源,在集中式数据库系统中,为了保证数据库的安全性和完整性,对共享数据库的控制是集中的,并有DBA负责监督和维护系统的正常运行。
在分布式数据库系统中,数据的共享有两个层次:
(1)局部共享。即在局部数据库中存储局部场地各用户的共享数据,这些数据是本场地用户常用的。
(2)全局共享。即在分布式数据库系统的各个场地也存储其它场地的用户共享的数据,支持系统的全局应用。
因此,相应的控制机构也具有两个层次:集中和自治。
(3)适当增加数据冗余度
在集中式数据库系统中,尽量减少冗余度是系统目标之一。其原因是,冗余数据不仅浪费空间,而且容易造成各数据副本之间的不一致性,为了保证数据的一致性,系统要付出一定的维护代价,减少冗余度的目标是用数据共享来达到的。
而在分布式数据系统中却希望存储必要的荣誉数据,在不同的场地存储同一数据的多个副本,其原因是:
1、提高系统的可靠性、可用性:当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因为一处故障而造成整个系统的瘫痪。
2、提高系统性能:系统可以选择用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。冗余副本之间数据不一致的问题是分布式数据库系统必须着力解决的问题。
(4)全局一致性、可串行性和可恢复性
分布式数据库系统中个局部数据库应满足集中式数据库的一致性、并发事务的可串行性和可恢复性。除此以外还应保证数据库的全局一致性、全局并发食物的可串行性和系统的全局可恢复性。
今天就写这么多,也算是我对分布式数据库理解的第一课,之后续更!
分布式
数据库
其实没有一个官方的定义,只是技术人员提出的一个约定俗成的说法。在
数据库
领域,当产品不断演进逐渐被大家认识和认可后,就会成了一个标准,比如说微软的 SQL Server
数据库
,其他
数据库
都喜欢拿它作为对比,那 SQL Server
数据库
就会成为一个标准。但是
分布式
数据库
也是最近几年才被大家提出,还是比较新的,也没有参照。不过可以通过这些大厂大牛们总结的经验来认识
分布式
数据库
。
分布式
数据库
就是用
分布式
架构实现的
数据库
。
凡在程序中,自己命名的部分,类如:类名,变量名,方法名等,需要用到一些字符组成的序列来表示,他们就是标识符。列如:java.lang包,Java.util包,自己写的报名不要用java. 开头,习惯用公司域名,列如:conm.atguigu.xxx。~所有的包名:所有单词都小写,如果有多层包,多个单词之间使用.链接,形式:xxx.yyy.zzz,~所有常量名:所有单词都大写,如果有多个单词,使用下划线链接,形式:xxx_yyy_zzz,关键字:是指在程序中,Java已经定义好的单词,具有特殊含义。
分布式
数据库
习题 第一章 1.1请用自己的语言定义下列
分布式
数据库
系统
中的术语: 全局/局部数据 全局数据是指参与全局应用,可被多个站点上的应用访问的数据; 局部数据是指只提供本站点的局部应用所需要的数据。 全局/局部用户(应用) 在
分布式
数据库
系统
中,一个用户或一个应用如果只访问他注册的那个站点上的数据称 为局部用户(应用)。 如果访问涉及两个或两个以上站点中的数据,称为全局用户(应用)。 全局/局部DBMS 全局
数据库
系统
是协调全局事务的,协调各局部DBMS以完成全局应用,保证
数据库
的 全局一致性,执行并发控制,实现更新同步,提供全局恢复功能的
数据库
管理
系统
。 局部
数据库
管理
系统
位于局部场地上,是为建立和管理局部
数据库
,提供场地自治能 力,执行局部应用及全局查询的子查询的
数据库
管理
系统
。 全局/局部DB 全局
数据库
(GDB)是指从整个
系统
角度出发,由全局
数据库
管理
系统
进行管理的
数据库
,它由各个局部
数据库
逻辑组合而成; 局部
数据库
(LDB)是指从各个站点的角度出发,由局部
数据库
管理
系统
进行管理的数据 库,它由全局
数据库
的某种逻辑分割而成。 全局外模式 是全局应用的用户视图,是全局概
自从互联网进入了 web2.0 时代以来,
数据库
作为核心的底层基础设施软件也经历了蓬勃的发展期,从早期的单机关系型
数据库
到NoSQL 再到如今的 NewSQL,
数据库
领域不管是技术还是场景都发生了巨大的变化。在当下云原生时代,任何软件
系统
拥有
分布式
能力似乎成了标配。特别是在目前基础软件国产化的浪潮下,国产
数据库
百花齐放,大有弯道超车的趋势。在这个领域里面,
分布式
数据库
无疑是当今最热门的赛道,本期就带大家来了解什么是
分布式
数据库
。回答这个问题之前,我们暂且不去考虑各种官方定义,不妨换个思路入手把这个名词做下拆
分布式
数据库
,从名字上可以拆解为:
分布式
+
数据库
。用一句话总结为:由多个独立实体组成,并且彼此通过网络进行互联的
数据库
。
理解新概念最好的方式就是通过已经掌握的知识来学习,下表对比了大家熟悉的
分布式
数据库
与集中式
数据库
之间主要的 5 个差异点。
分布式
数据库
的核心——数据分片、数据同步。
1. 数据分片
该特性是
分布式
数据库
的技术创新。它可以突破中心化
数据库
单机的容量限制,从而将数据分散到多节点,以更灵活、高效的方式来处理数据。这是
分布式
理论带给
数据库
的一份礼物。
分片方式包括两种。
水平分片:
不用担心分片数量太多,因为分片 1 个还是 1000 个,管理方式都是一样的,但是 1000 个,意味着可以扩容到 1000 个实例上,对于一般业务来说,1000 个实例足够满足业务的需求了(BTW,网传阿里某核心业务的
分布式
数据库
分片数量为 10000个)。但是表stock是库存品,是商品维度的数据,没有用户ID的信息。更重要的是,
分布式
数据库
中的表,要能选出一个统一的分片键,即大部分表都能根据这个分片键打散数据,这样当后续业务进行访问数据时,可以在一个分片中完成单元化的闭环操作,不用涉及跨分片的访问。
shared-Everything:一般针对于单机而言,完全透明的共享 CPU、内存和IO等资源,并行能力差
shared-Disk:每个单元的CPU和内存是独立的,共享磁盘
系统
,典型产品有Oracle RAC,它是数据共享,可以通过增加节点来提高并行处理能力,扩展能力较好。当存储器接口达到饱和时,增加节点并不能获得更高的性能
shared-Nothing:每个处理单元所拥有的资源都是独立的,单元之间通过协议通信,并行处理和扩展能力更好。各个节点