云计算基础与应用 第六章 数据库
以下为自己个人做的笔记,不带有商业性质,纯粹交流分享学习资料,如有侵权,请联系作者,作者看到会第一时间删除,如有侵权敬请见谅。(回想起之前学过的内容,我开始我明白了,这门课程的目的是什么:是为了培养一个腾讯云的产品经理而开设的课 )文章目录6.1 数据库概述6.2 数据库分类6.3 数据库设计6.5 云数据库运用场景和实例6.1 数据库概述数据库,数据库是指长期存储在计算机内的,有组织可共享的数据
以下为自己个人做的笔记,不带有商业性质,纯粹交流分享学习资料,如有侵权,请联系作者,作者看到会第一时间删除,如有侵权敬请见谅。
(回想起之前学过的内容,我开始我明白了,这门课程的目的是什么:是为了培养一个腾讯云的产品推销经理而开设的课 )
6.1 数据库概述
数据库,数据库是指长期存储在计算机内的,有组织可共享的数据的集合。
数据库中的数据按一定的数学模型组织描述和存储,因此它具有较小的冗余性,并且有较高的数据独立性,方便为各种用户所共享。
数据库管理系统是数据库系统的核心软件,它的主要功能包含了数据的定义功能,数据操纵功能,数据库的运行管理,以及维护等功能。
应用程序,应用程序是指基于数据库所开发的各种面向用户的实际的应用程序,例如学生管理系统、图书管理系统等等,这些都称为是应用程序。
数据库管理员主要是负责数据库的总体信息控制,数据库管理员也称为是dba具体的职责就包含了对数据的信息内容结构的定义,决定数据库的存储结构存取策略,定义数据库的安全性要求以及完整性约束条件,监控数据库的使用和运行等等。
从这张图上我们就可以看到数据库系统的组成,红色的4个部分就描述了数据库系统包含的4个部分,分别是数据库管理系统、数据库管理员以及应用系统。
数据管理技术的产生和发展。数据管理是指对数据进行分类、组织编码、存储检索和维护,它是数据处理的中心问题。
在应用需求的推动下,在计算机硬件软件发展的基础上,数据管理技术经历了人工管理阶段、文件系统阶段和数据库系统阶段,人工管理阶段当时的数据是不保存的,计算机主要是用于科学计算,一般不需要长期保存数据,应用程序负责管理数据,包含定义数据的存储结构、存储方式、输入方式等。当时的数据也是不共享的,也不具有独立性。因此当数据的逻辑结构或者物理结构发生变化时,应用程序也必须发生改变,数据完全依赖于应用程序,缺乏独立性。
在文件系统阶段,数据可以以文件的方式长期保存,而且有了专门的文文件系统对数据进行管理,
但是不同的应用程序使用相同的数据时,必须建立各自的文件,因而不能共享同样的数据,这样会导致数据的冗余度太大,浪费存储空间。另外数据的独立性也会很差。
为了解决这些问题,方便多用户多应用共享数据的需求,使数据为尽可能多的应用服务,出现了统一管理数据的专门的软件系统。
数据库管理系统,数据库系统有以下4个特点,一数据结构化,数据库系统实现了整体数据的结构化,这是数据库的主要特征之一,也是数据库系统和文件系统的根本区别。
数据库中的数据不再是仅仅针对某一个应用,而是面向整个组织或企业,不仅数据内部的是结构化的,而且整体也是结构化的,数据之间是具有联系的。
第二个特点,数据的共享度高,冗余度低且易扩充,数据的共享可以大大减少冗余,节约存储空间。数据的共享还能够避免数据之间的不相容性以及不一致性。
三数据的独立性高,数据的独立性主要包括物理独立性和逻辑独立性,物理独立性是指当数据的物理存储结构发生变化的时候,应用程序不需要改变,逻辑独立性是指当数据的逻辑结构改变的时候,应用程序也可以不变。
四数据由数据库管理系统统一管理和控制,数据库的共享将会带来数据库的安全隐患。因此数据库管理系统统一对数据库进行了安全性的保护,完整性的检查,并发控制以及数据恢复等等功能。
从这张图上我们可以看到,数据库内长期存储着在计算机内有组织的可共享的数据,数据库中的数据共享度高,不再仅仅针对某一个应用,而是面向多个应用程序。
下面给大家介绍一个数据库管理的例子,假设现在我们有这样的一个需求,需要存放学生的基本信息以及这些学生的奖励情况,那么我们可以在数据库里面建立两张表,一张表称为学生表,student的表专门用来存放学生的基本信息,另外一张表称为award表,奖励表用来存放学生的奖励情况,我们可以使用插入命令来完成学生的基本信息和奖励情况的数据录入,也可以使用相应的查询功能来实现。查找哪个学生获得了哪些奖励。
从这里我们可以看到我们刚才建立了两张表,上面一张表就是学生基本信息表,里面包含了学号姓名等等学生相关的基本信息。第二张表我们把它称为是奖励表,在这个奖励表里面包含了学生的学号以及学生所获得的奖励,因此我们可以通过这两张表来实现对学生的相关信息的查询。例如10余名这个学生,我们可以查到他的学号是201,0001通过他的学号,我们可以通过两张表的连接查询来找到这个学生所获得的奖励是2019校奖学金。
数据库系统的构成不包括下列哪项?A.数据库B.数据库管理员C.数据库管理系统D.操作系统
D
数据管理技术的发展阶段不包括下列哪项?A.人工管理阶段B.数据孤岛阶段C.数据孤岛阶段D.数据库系统阶段
B和C一样(
以下哪项是数据库系统的特点? A.数据完全依赖于应用程序B.有专门的软件文件系统对数据进行管理C.数据不共享D.数据结构化
A和B是以前数据的特点
这题选D
6.2 数据库分类
数据库分类,数据库主要分为两大类,第一类是关系型数据库,第二类是非关系型数据库。
关系模型中数据的逻辑结构是一张二维表,它由行和列组成。例如在学生登记表里面,我们就是用一张二维表来描述学生的信息,学生的相关属性,我们把它称为是列名,例如学号、姓名、年龄等等,在二维表里面的行的内容就称为是元素,就记录了每一个学生的具体的信息。
在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,在大型数据库中通常有多个表构成,且表之间有各种关系,实际使用就是对这些关联的表格分类,合并连接或者选取等运算来实现数据库的管理。
而非关系型数据库,键值存储数据库,键值存储数据库将数据存储为键值对集合,其中键作为唯一标识符,主要用于处理大量数据的高访问负载,也用于一些日志系统等等,它比关系型数据库存储拥有更好的读写性能,能够解决关系型数据库无法存储数据结构的问题。
如图所示某个公有云的键值存储示意图,其中件包含分区键和排序件儿直的数据是无结构化的,通常只被当做字符串或者是二进制数据。
键值存储数据库,没有通过值查询的途径,他也不能通过两个或者两个以上的键来关联数据查询。
另外键值存储数据库不支持事务的回滚。
列式存储数据库也是一种非关系型数据库,列式存储相对于传统的关系型数据库的行式存储来说的,简单来说两者的区别就是对表中的数据的存储形式的差异。
从图上我们可以看出,传统的关系型数据库是按照行来存储数据库的,各行放入连续的物理位置,这很像传统的记录,或者是文件系统。
而列存储的方法是将数据按照列存储到数据库中,跟行存储类似,因此列存储数据库读取多条数据的同一列时效率很高,因为这些列都是存储在一起的,一次磁盘操作可以把数据指定的列全部读取到内存中。
文档数据库也是一种非关系型数据库,文档数据库可以存放并获取文档,可以是xml、JASON、 Python的格式,数据库中的文档彼此相似,但不必完全相同。
文档数据库中所存放的文档就类似于键值数据库中存放的值,但是文档数据库又类似于键值数据库的一个升级版本,因为它的值是可以查询的。
对于文档数据库来说,它的优点是数据结构要求不用很严格,表的结构是可以变的,不需要像关系型数据库一样,预先定义表结构,但是缺点就是查询性能不高,而且缺乏统一的查询语法。
非关系型数据库中还有一种图形数据库,图形数据库是一种存储图形关系的数据库,它应用图形理论存储实体之间的关系信息,
关系型数据库主要是用于存储明确的关系数据,但是对于复杂关系的数据存储却有些力不从心。
例如在图中这种人物之间的关系,如果用关系型数据库表示则非常复杂,而用图形数据库表示将会相对简单。
图形数据库的一般应用场景主要是用来描述社交网络推荐系统等等,专注于构建关系图谱,
它的数据模型是采用的是图结构,我们可以使用图结构的相关算法,例如最短路径寻址n度关系来查找这种图形数据库,但是对于图形数据库来说,很多时候要对整个图做计算才能得到需要的信息,而且这种图形结构不太好,做分布式的集群方案。
以下说法错误的是?A.键值存储数据库中提供了通过值查询的功能B.关系型数据库对数据的操作几乎全部建立在一个或多个关系表格上C.键值存储数据库比关系型数据库存储拥有更好的读写性能D.列存储数据库读取多条数据的同一列时效率很高
A(通过键查询值
关于键值存储数据库说法正确的是?A.支持事务的回滚B.可以通过两个或以上的键来关联数据C.可以用于处理大量数据的高访问负载D.提供了通过值查询的功能
C
关于图形数据库说法不正确的是?A.属于非关系型数据库B.可以应用于存储具有复杂网络关系的数据C.可以利用图结构相关算法进行查找D.很容易实现分布式的集群方案
D
6.3 数据库设计
第三节我们主要介绍数据库设计的特点,以及数据库设计的基本步骤。
数据库设计是指对于一个给定的应用环境,设计出优化的数据库逻辑模式和物理存储结构,并据此建立出数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
信息管理要求是指在数据库中我们应该存储和管理哪些数据对象,数据操作要求包括了对数据对象要进行哪些操作,例如查询、增加、删除、修改以及统计等等。数据库设计的目的是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。高效率的运行环境是指数据的存取效率要高,数据的存储空间的利用率要高,以及在运行管理中的效率要高。
大型数据库设计是涉及到多个学科的综合性技术,又是一项庞大的工程项目,他要求多方面的知识和技术,主要包括了要有计算机的基础知识,软件工程的相关知识程序设计的方法和技巧,以及数据库领域的相关设计知识。
数据库设计的基本步骤,数据库设计分为6个阶段,一需求分析,需求分析阶段是否做得充分和准确,决定了构建数据库的速度和质量。
二概念结构设计,概念结构设计是通过对用户的需求进行综合归纳抽象,形成一个独立于具体数据库管理系统的概念模型。通常在这个阶段,我们会采用实体联系途径的工具来实现。
三,逻辑结构设计,逻辑结构设计阶段是将概念结构阶段产生出的概念模型转化为某个数据库管理系统所支持的数据模型,并对其进行优化。如果我们采用的是关系型数据库,我们是把上一阶段设计出的实体联系图转换成了二维表。
四物理结构设计阶段,物理结构设计阶段是为逻辑结构选取一个最适合的应用环境的物理结构,其中包括了存储结构和存取方法。
五数据库的实施阶段,根据逻辑设计和物理设计的结构来构建数据库,编写相应的调试和应用程序,并且组织数据入库进行试运行。
最后一个阶段是数据库的运行和维护,通通过试运行后即可投入正式的运行。我们在运行过程中还必须不断地对其进行评估调整和修改。
在这6个阶段中,需求分析和概念设计独立于任何数据库管理系统,而逻辑设计和物理设计与选用的数据库管理系统有着密切的关系。
数据库设计的基本步骤,数据库设计分为6个阶段。
一需求分析,需求分析阶段是否做得充分和准确,决定了构建数据库的速度和质量。
二概念结构设计,**概念结构设计是通过对用户的需求进行综合归纳抽象,形成一个独立于具体数据库管理系统的概念模型。**通常在这个阶段,我们会采用实体联系途径的工具来实现。
三逻辑结构设计,逻辑结构设计阶段是将概念结构阶段产生出的概念模型转化为某个数据库管理系统所支持的数据模型,并对其进行优化。如果我们采用的是关系型数据库,我们是把上一阶段设计出的实体联系图转换成了二维表。
四物理结构设计阶段,物理结构设计阶段是为逻辑结构选取一个最适合的应用环境的物理结构,其中包括了存储结构和存取方法。
五数据库的实施阶段,根据逻辑设计和物理设计的结构来构建数据库,编写相应的调试和应用程序,并且组织数据入库进行试运行。
最后一个阶段是数据库的运行和维护,通通过试运行后即可投入正式的运行。我们在运行过程中还必须不断地对其进行评估调整和修改。
在这6个阶段中,需求分析和概念设计独立于任何数据库管理系统,而逻辑设计和物理设计与选用的数据库管理系统有着密切的关系。
下列哪项不属于数据库实施阶段的主要工作?A.对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型B.根据逻辑设计和物理设计的结果构建数据库C.编写与调试应用程序D.组织数据入库并进行试运行
A
数据库设计的目标不包括下列哪项?A.数据库数据的存取效率高B.数据库存储空间的利用率高C.数据库系统运行管理的效率高D.部署数据库的硬件越贵越好
D
以下说法错误的是? A.需求分析和概念设计独立于任何数据库管理系统B.逻辑设计和物理设计与选用的数据库管理系统无关C.需求分析是否做得充分与准确,决定了构建数据库的速度和质量D.在数据库运行过程中仍然需要不断地对其进行评估、调整与修改
B
(我第一次错选了A 但是上面的笔记有讲到。
6.4 云数据库服务类型
然后我们看一下腾讯云的数据库服务,把它主要分为三个类别,第一个 earthquake还有tDC和30tb然后非关联性数据库有radius,还有MemCached、MongoDB、CTSDB,还有就是数据库服务,比如说数据库传输服务,dts数据库一体机。dda塔下面我们会对这些数据库进行详细的讲解。
My SQL其实就是相当于让用户在云端使用my SQL数据库,那么它主要有以下几个优势或者特点,第一个就是它是百%借用 my circle协议的,那就是你传统企业中心用的my circle,你要迁移到云上,这是非常容易的,首先可以数据传输过去,而且整个运维管理也是非常简单的。
第二个腾讯做了一些优化,比如说我们针对马赛克内核进行了优化,同时使用的硬件也是比较好的硬件,比如说我们pci-e ssd来提升 I O的性能,还有它单实例的 qps每秒钟的事物数可以达到24万,而且可以达到6tb的存储空间,还是比较厉害的,然后来支持一组多重支持读写分离。
这就是针对开源的基础上,其实腾讯云做了很多优化,来提升它的性能,来保证它可靠性。然后同时这个数据在云上有些客户会担任安全性,其实也是没问题的,我们会对这个数据进行加密,然后对数据库的操作进行审计,就是有谁做过什么操作全部都有记录的。那么第4点就是高可用性,首先作为一个实时的热备,而且基于冰logo可以5天内进行这种无损的数据恢复,而且还支持这种自动容灾,自动过渡过程检测,能够主动去切换这些过程节点,这个过程是对业务是透明的。
然后我们看一下mysql主要应用场景,比如说一些游戏应用的场景,主要的业务需求,一个是资源要随着玩家的数量变化而飞快资源,然后还需要多时间点的数据保留与回答。等因为游戏玩家玩的过程中从关过去了那就过去了,没过去他好像还要回到原点重新来。这个时候玩的过程中数据就必须要回到原点,所以它回档的需求是比较要求比较高的,所以我们的应对方案一个就是通过弹性扩容,第二位这是快速回档。可以看到我们通过负载均衡搭建游戏服务器,那么后端MySql数据库,如果玩家增加的时候可以对MySQL进行弹性的扩容,然后如果玩家玩的过程中需要回档操作,也可以很容易的去执行回档操作,你这里还有一些游戏数据里面还有一些热门的数据,我们可以用弹性法则用release来存取 MAC和存取,它主要就是一些常规的数据,没应用。
第二个场景是这种移动APP的场景,那么移动APP它主要的特点是什么?第一个就是高频化的访问,因为它有大量的这种用户,而且它是多读少写,很多用户都是去读的,像我们看什么APP,我们拿手机大部分时间是在阅读在观看,但是我们很少会去写,所以是多读少写,这个时候我们应对方案就是说首先像读写分离,然后再针对读写进行性能优化。那么mySQL的作用就是我把读和写分离之后,我对读的我就进行增加缓存,增加优化,保证读的能力有保障。写比较少我就会把它独立出来,写的流量和读的流量分离展实现性能优化的同时也实现了最佳的性价比。
第二个是云数据库sql server,这个时候是微软推出的一个关系型数据库,它主要是用在 Microsoft的windows平台上,那么腾讯云这个时候他其实是获得了微软的正版授权的,所以你可以在云端去部署和使用,你不需要再偶尔去买这个lesson室了,因为数据库lesson你单独去买的话其实是非常昂贵的,腾讯云相当于是整体去买了它云端版本的lesson,按照用户的话你只管使用就好了。目前我们支持下面的三个版本。
然后我们可以看一下它这个优势有什么,第一个优势就是它通过预配置参数,其实如果传统的SQL server的话,你自己需要去装sql server还做很多参数配置,反正这个过程首先比较繁琐。第二个如果你不熟悉的话,有可能装出来参数性能它可能不是最优的,你还要去做一些这种参数的优化调优,这个就比较麻烦,在云里面,因为我们提前已经做了参数的默认配置,这些参数都是最佳实践优化过的参数,你可以减少这部分工作,你可以直接几分钟就可以部署一个实例,能够快速的启动和连接,能够迅速的使用起来,就避免了你去搭建去,说实话数据库这些繁琐的工作。
然后它的第二个优势就是那么它支持的数据库镜像,一般是提供一组一镜像,那么这样子的话,如果数据出现问题进行还可以实时的提供服务,避免业务不可用数据丢失这个情况,同时它还支持这种当机质检,能够在秒级去切换节点的服务。备份回档一般是定时的自动备份默认是可以保留7天的,然后你可以随时回档到指定的时间,这样也是很方便,如果你数据库有些什么操作错误,或者有些什么问题,你可以及时回答到之前正常的版本。我们可以看一下SQL Server它的径向的机制,有一个主库,1个镜像库基本上默认情况下,一组库一镜像库,镜像的最关键点就是说他要实现数据的同步,可以看到首先,事务下来的时候,第一步他写到主库上面4个字上面,然后写日志,写完日志之后同时也会传到重复过去继续写日志,两边的日志写完了,接下来就是写数据,把这个数据写到硬盘上去进行一个持久化。好吧,这句话两边都是一样的,这边也是进行数据也是私有化的。好,完成持久化之后,镜像数据库会返回这个状态,返回到主数据库,最后主数据库再返回给应用程序就写完了,
所以你看它这个过程实际上它是一个强同步的过程,通过镜像保证日志数据一定是一致的,
保证有进项的时候肯定会进项会出现这个节点有问题怎么办呢?实际上有个监控机制,就是每一个库它会有一些监控的这种代理agent,如果发现哪一个节点出现问题了,那么他可以在秒级的时间对信箱的节点进行切换,然后进行数据的重建,看从进主机主镜像切换到重镜像,然后进行数据的同步与修复,而且切换过程的话,他对业务是透明的。
那么还有一种情况就是它发现这个节点是没办法恢复的,通过修复不了,他就会把这个节点踢出去,踢出去之后那会重新补充新的节点备份的数据来恢复新的镜像,
所以它整个机制可以保证数据的实时同步,而且发生故障的时候也会保证业务可用性。
sql server应用场景主要就是基于windows平台的,
因为它是微软开发的,所以只要是在windows平台上需要用关系程序,数据库的地方一般用sql它能够得到很好的性价比。
你比如说我们用来做一些什么额外系统, ERP系统、销售管理系统或者一些移动办公平台的。
下一个是云数据库Postgre SQL,那么我们前面已经说过了,Postgre SQL的数据库它实际上是一种开源的new sql数据库,它结合了sql和nosql的特性,基本上现在开源的数据库要商用的话,很多厂商都会选pos科学社科,腾讯、 pos科学社科就是让用户在云端轻松的配置和操作,主要有以下一些特性,你比如说他有更多的功能特性支持,因为它整合了sql,又整合了nosql特性,就增加了很多的功能支持。
第二个数据库一致性,达到商用级的相当于是金融行业它数据一致性都是有保障的,然后它有性能,因为性能保障分布式,然后通过这种nosql口的一些机制来实现性能保障,之后还有高可靠性的保障。那么我们看一下 Postgre SQL的应用场景一般会用于这种需要处理复杂sql数据这种olAP、oltp的场景就是他可以用在olAP也可以用在oltp。
然后主要的场景比如说企业的核心系统,像ERP系统、交易系统、财务系统,还有这种教育这种lBS的带这种地理空间地理数据的这种情况,比如一些大型的游戏,还有这种020这种服务,比如说这种大众点评,还有这种在线推荐的一些东西。
那么第三类的话就是基于这种数据仓库和大数据,因为它和这种连接数据分析,那就会支持多种类型的数据,还有提供这种高级分析的功能,就适合这种大数据分析。
最后一种就是什么建站 APP,它有些什么自定义函数,这是多种数据格式,而且还支持全文搜索,对建站和APP来说都是非常好的一些特性。
那么前面提到这个olIpooltp这里其实我们可以做一个对比,首先oltp它主要的产品就是日常交易的处理数据,么oled重点是强调数据的分析,主要是数据来统计来进行分析发现它的价值难道主要面临的这样的业务, oltp主要是面临实时交易类的,比如说电商的交易订单金融行业这种实时交易系统,然后 olap主要是面向统计分析的有这种ERP系统还有商业智能分析系统。
(又来了又来了,又是这种商品对比,感觉这种东西讲完了根本记不住啊,
然后对于性能消耗的话,ol T主要就是IO操作角度实时的处理分析,读取磁盘I要求比较高。 O l a p因为他这种数据分析对 CPU的计算能力要求比较高,那么对实时性 o l t p实时性的一个读写要求非常高, oled实时性的读写要求会相对低一些。
那么现在就是我们Postgre SQL,它其实这两种场景它是可以用的,数据库同时都可以把这两种整合成一个系统,这里面实时的去梳理,实时的去分析。
第4部分是maria db td sql把这两个数据放在一起就是相关联的,因为实际上ttsql就是 db的分布式版本。我们可以先看一下六马六亚Db 的话,实际上它是由梅赛克的创始人模拟创立的,他最大特点就是承诺永远开源,而且它是高度建筑卖,之所以出现马路的低迷,实际上有比较大的背景,就是卖的版权是被咱们oracle收购了。 Oracle收购之后,虽然现在还是开源的,但是咱们偶尔他是一家商用数据库厂商,指不定哪一天他要求买水果要收license费用。所以现在有很多企业的数据不是基于买,他就会担心万一有一天mysql要求收费用的时候,这是一笔很多的钱,然后对厂商来说那就是一个很尴尬的事情。所以创始人它就冲进了新的mIdb为了帮助这些客户重新可以去引用这种开源的数据库,腾讯的分布式数据库,ttsql,相当于是针对这种金融级的分布式架构去对内核进行了优化,然后他支持一些什么业务的水平拆分,就是说业务感受的是一种完整的逻辑表,但是实际上数据在物理上是采取了不同的分片中进行存取的,让他解决了几个难题。
第一个难题就是说单机数据库它的性能达到一个瓶颈,营销云环境里面像一些金融业务,比如说腾讯的这种微信支付,
在发红包的时候那是上亿连接数,如果你单机数据库的话是很难去扩展,哪怕你一些小的集群都没法承担这么大的数据量,所以需要一些分布式的这种数据库来来提升它的处理性能和并发性。
那么第二个是说如果要做数据库这种分片,拆分有一种情况就是我在应用层面去做拆分,我的应用里面拆分之后把不同的数据分到这个部门数据库上。第二个层面在这个数据库层面来拆分,就是我们的分布式数据库全体CK,就应用层面发下来是同一个数据,我在数据层面处理的时候把它分配到不同的物理节点上去处理,那么这个好处就是说如果你在应用层面去拆分的话,第一个你应用层面需要实现相应的处理机制,它也会占用应用服务器的处理的服务器资源,其实对应用来说其实还是有帮助的这样子,如果我们在数据库层面实现这种拆分,它就可以避免应用层面去产生这些额外的消耗,所以这个是非常好的一个实现方法。然后最后一点它能够保证了这种开源能运维支持不足,你比如说我们在用开源数据库性能维护,还有一些入院问题是比较尴尬。但是在腾讯上面,首先我们是对开源的数据库,它的性能内核,还有它的可维护性各方面可能性做了一些优化,而且如果遇到问题,你可以随时去找腾讯云的技术支持,这样子它的运维支持保障还是比较充足的。所以一般在这种商业领域对运维支持他还是比较看重的。
好,我们可以看一下玛瑞低的产品优势,最主要三个优势,第一个就是强同步,因为看到我们落地它主要用那些金融行业场景吗?传统不就是必须的,强同步其实最尴尬的他主要是会影响性能,所以我们通过这些改造线程池的模型来提升那些人,就是我在同城同步的同时能够保障性能是非常高的,这样子它能保证性能,同时也可以保证一致性,所以会用满足这种金融性的一些强制性要求,像腾讯云的金融系统、计费系统、微信支付有很多都是基于买卖DVD,经过实战去检验过的。
那么第二个是叫高可用架构,高可用的话主要是它有支持一主多重,对吧?就是一个主数据库加上多个重数据库,而且主数据库出现故障的时候,它的切换非常快,而且是对业务透明的业务并不需要知道你后端的切换的情况,同时它可以实时的去自动去监控这些实例的情况,如果发现故障它也会去修复支持修复,还有它支持多可用区部署以及备份回答,都可能去部署很重要,你像金融行业它一般要求高的可能性,有些时候它会要求两地三中心的部署对吧?我同样的数据我要求在不同的数据中心的部署,那么这个时候我们通过 TCL就可以实现这种跨可用区的部署,实现这种机房级的可用性。
然后它的高性能并发处理,因为分布式的可以符合这种olip的场景,而且内核进行了优化,也通过读写的分离实现性能的优化与扩展。
提到这个数据的复制方式,我们给大家讲一下数据的复制方式,一般有三种复制方式,首先要异步复制,一步复制我们可以看它的过程,就是应用写数据的时候他写到主数据库,然后数据会反馈用书我就写完了,返回应用之后应用就去做其他事情上。然后他再把数据库写到从数据库从数据后再返回过来,那么这里就会有一个问题对吧?我已经返回应用车写之后万一这里出故障了,这就可能出现一个数据不一致的情况,对吧?这是异步数据库的情况,
那异步数据库的好处就是说我因为及时去反馈给应用了,对应用来说这个性能就很好,因为很快我只写一份,我就反馈说写完了,但是它的因为如果这里出现故障的话,就会出现数据不一致的情况
,这是异步复制,所以在一些对一致性要求高的场景,比如说一些金融行业或者一些核心系统不能用异步复制,这个时候用什么同步复制,或者说强同步复制它的情况怎样子?首先我写数据写到主数据库,好,主数据库它先把数据写到从数据库,写到从数据库之后,从数据库写完之后,然后再回到主数据库,主输入才去返回给应用,
这个时候你会发现如果这里有问题的话,它肯定不会返回给应用的,可能就会引发数据的重启,这样就保证了这个数据是一致的。
但有个问题是因为我要等待这里的数据库的写和返回,这样子会影响它的性能,那么腾讯做这种强一致性的数据库,实际上我不仅要保证数据一致,我还要去对性能进行优化,这是腾讯云资源的这种强同步复制方案。
他有4个比较大的优点,第一个是数据库强一致,必须保证每个节点都包含了完整数据库副本,这样我才会反馈到应用去。那么哪怕其中某一个副本出现问题,我可以随时切换随时修复。第二个是业务层的透明,就是业务层不需要这种读写分离或者同步强化工作,实际上在数据库层面去完成的,而且我们还做了性能的优化,将创新同步的进程进行优化,同时引入线程异步化的能力。
这样子我既达到了数据库强烈自信,又保障了数据库的性能,最后它还可以进行自动的管控,就是自动化的进行成员的监控控制调度,而且能够自动的去从集群中心节点的修复移除之前做了一个测试。可以看到我们的TDSQL的强同步半同步它性能提升还是比较大的,基本上比sql、mysql异步的情况都还快,mysql异步是这个样子。那么用了mysql半同步提升了300%多,那么用强同步提升了更多,当然和其他友商的一些对比我们其实也是更高。
我们前面说到 t DC口它有高性能高并发,那么它是怎么做?实际上就是通过水平拆分的机制。我们可以看一下水平拆分和垂直切拆分,首先垂直拆分其实就是按业务应用不同的内容分配到不同的数据库中,比如说我电商为例,垂直拆分我是基于业务情况来,那么比如说我的会员的数据库,我分配个会员数据库里面,交易的数据我放到交易数据库里面,这样就是在业务功能层面去做了分离,那么分离的逻辑是做的应用层的业务层面的,那么水平拆分是什么呢?
实际上我不管你是什么样的数据,把它同一个类型的数据把它分到不同的库里面去,有交易都是交易数据库对不对?我把交易数据库分到不同的物理存储,就逻辑上它还是一个表,但是物理上它其实分配到不同的物理分片中,这样就可以实现这种高并发,还有这样快速的达成的东西,而且还可以避免说你在应用层实现这种拆分的时候,消耗应用层的处理资源。
那么TDsql它还有一个很大的优势叫相当层的架构。这里我们可以看一下,首先这个也是数据库架构的发展的过程,原来叫希尔顿,数据库上都在同一个主题上,数据库,它的计算力存储和处理量全部都是从同一个组织上,所有一些都是共享的。
第二种叫CS orange后计算服务器上面,但后端的存储是共享的,用存储的善共享存储,这个时候可以实现更好的共享,就是存储级别的可靠性得到提升,共享性也得到提升,那么在 TDSQL里面它share nothing。现在那就是我首先有一个数据库,它会拆分掉不同的物理节点,不同的物理节点,它有独立数据库,有独立的磁盘,这样拆分下去就整合成一个整体。物理上是拆分的,逻辑上是整体的这样子这些数据库它相互之间是用了独立的处理资源,独立的存储资源并不会产生征用,并也不会产生这种资源的耗费,但从整体上来说,它实际上是一个整体可以实现这种共享,这样子的好处就可以保证高并发,而且能够可靠性有很大的提升。
好,我们可以看一下mariadb应用场景,主要用金融业务有一些强一致性要求比较高的,高性能并发还有高安全性的,他和他用马瑞db可以实现实时的同步,而且有大规模的计算高性能并发的场景。我们可以看到他一般用的可以延伸一下有几种大型的应用,要求这种超高并发实时交易的产品。还有一些物联网数据最大特点就是大量的大量数据的话要存取的话比较麻烦,我们就按照分布式的机制,如果节点不够,我可以动态去扩展节点,这也是对于这种大量数据处理情况比较好的。然后对着文件索引,比如说像万亿级这种数据,进行毫秒级的程序,还有一些什么高性价比的这种商业客户数据库解决方案,基本上提这个可以理解为非常强大的能够保证数据库一致性,也能够保证高性能高并发的数据库方案。
最后一个我们讲一下云数据库Cynosdb前面我们讲过从传统的架构我们要延伸到云架构深度db其实就是腾讯云自研的,就是基于云架构的延伸的架构,它设计就是针对云环境来设计的。主要有几个特点,首先就是高性能,它单节能的毒性能可以达到130万qps,现在可能业界最高的能够达到100万这是比较高的,我们可以达到130万,而且它的可以性能可以达到这种mysql的8倍,postgresql的4倍。因为它其实实际上是针对这种内核优化,还有这种硬件优化,还有这种机制的优化。第二个是支持大容量,最高可以达到128tv的容量,就海量存储,而且可以自动的进行收容或者第三个就是低成本,它的价格还非常低,性能好,大容量价格还只是商业数据库的1/15,对吧?它其实就是为了企业上云专门去打造的一个优化的数据库,而且他金融性很好,百%兼容mysql,因为大家知道mysql是目前最流行的商用的关系数据库,我百%兼容将达到好处,就是客户可以轻易上去的时候可以无缝切换,非常轻松的就建立到云上去了。目前它提供了有两个版本就是金融sql,我们circle版本当前用的是mysql5.7的版本,金融pos的16%是poss K时的版本
好我们说它有这么多优势,那么它的优势是怎么带来的?其实主要还是因为它架构上的优化。有几个主要的特点,第一个叫内核定制优化,其实我们是针对这些数据库内核进行了60多项的数据库,就内核优化很多,增加了很多这种企业级的特性,可靠性性能都有提升。而且还有很重要的一点叫日字级数据库,传统的话我们写数据库我们首先要写日志,然后再日字再去写存储对吧?
那么现在的话我们把日志就当成数据库,它直接下传到存储层,就避免了从日志到存储层大量的数据传输和处理,网络Io也进行了大幅度的减少。
第二个就是软硬件的优化,比如说我们使用这种spdk还有这种rdma这种零拷贝的技术,就可以保证系统切换的时候减少这些拷贝,而且可以实时的去访问,就直接访问内存,这样系统的性能损耗也会大幅度的降低。
第4个就叫弹性扩展,实际上CSDB里面我们专门做了这种一个文件系统,叫Cynosfs它就要靠计算的智能存储,就是它可以自动的计算你的实力的存储的状态情况,然后自动的去触发扩容机制,还有还可以进行功能的检测和恢复。所以基本上这4项是最核心的思想优化,但是都是针对云环境里面去做优化的。
所以我们再看一下Cynosdb的应用场景,第一个就是企业的核心应用上云有高性能高可用,而且低成本。第二个是一些互联网游戏的业务,它对这种大容量要求比较多,而且要求弹性的扩展,要求秒级的备份回答,基本上也是可以用d b的,可以说 cynosd b就是为了企业上云能够达到高性能高可靠,同时低成本一个最佳的解决方案。
mongodb前面其实我们已经讲过了,芒果db它属于这种分布式文档数据库服务,那么具体的细节我们这里就不重复了。主要讲一下腾讯云的蒙古db主要有以下几个特点,首先它是兼容开源的mongodb协议,以及dynamodb协议,如果客户之前使用了这些企业做数据库的话,可以无缝的迁移到腾讯云上。
第二个呢,腾讯还自然蒙古db的分布式集群,这样子其实从性能上可用性上做了很大幅的优化。那么蒙古DV最大的优势其实是它模式自由叫scheme Free,对于关系型数据库讲的不需要提前定义表的结构,你存取数据的时候可以存取不同格式不同类型的数据,而且可以非常方便灵活的去调整和更新。
最后一点就是支持自动容灾,还有备份回档的机制来保障数据库的可靠性,这种在我们有主从灾备还有自动去做数据的备份,如果真的发生故障的时候,可以快速的去回答,恢复到之前的状态。
我们现在可以看一下芒果db的容灾架构,从右边这个图可以看到,首先它只是一个主从热备,如果主节点不可怕,她可以分配他重节点,整体来看一下它这个机制是怎样运作的,首先它有个心跳检查的机制,每一个集群里面有主的数据库重的数据库,还有一个仲裁期,那么轻调会检查每一个节点的状态,如果某一个节点不可用,他会尝试去拉起或者去补充新的节点,然后仲裁期的作用就是进行判断和验证,选择主节点或者去进行调度。如果主节点不给他,这个时候没有主节点了,这个时候仲裁期就会发挥作用,它会从新的这些可用的从节点里面选出一个主节点,选出出节点之后,它同样会尝试去修复主节点,这个时候主节点被修复重新拉起了,现在里面已经有主节点了,那么之前的故障后被重新修复的节点它就会变成节点,如果他尝试去拉起故障的节点没有成功,这个时候她就会补充新的节点定制集群,而补充的节点它也是从节点,这它就是可以保证说任何时候里面都有一个主节点,那如果是从节点发生故障了,这个时候会比较简单一些,他就主动去尝试去拉起去修复,如果能拉起修复,他继续从节点成本继续服务,如果不能拉起或者修复,那么他就会重新补充新的节点,然后他就继续作为从节点,所以这就是整个那么低的融资的架构,它其实是高可靠性的一个最核心的保障。那么某某db的应用,
我们只是取一个比较主要的场景来看一下,就是游戏开发的产品,那么游戏开发产品主要的特点就是一个是游戏的需求,它变化是比较大的,版本的迭代也比较快,而且需要频繁的去修改这个表的结构,因为你游戏的话不同的版本,它这个功能特性角色有很多不一样的东西,如果我们用传统的关系型数据库就会遇到很大的麻烦,你第一版本定了一个表,第二个版本你要往这个表里面增加一些东西,删除一些东西,这样子就非常的麻烦。所以用某个db,因为它具有这个是根本Free的,就是没有固定的模式,而且它可以灵活的去调整修改,这样子可以就很方便的去进行版本的开发,大幅的缩短迭代的周期。
第二个是云数据库redis,睿驰的话前面也提到它其实就是一个弹性的缓存和存储服务,可以理解为它就是内存数据库,那么我们腾讯提供了瑞迪斯数据库,它金融是开源的瑞迪斯协议,也是支持这种主从设备自动容灾切换,数据库备份故障实例等等一套全方位的这种数据库服务,用户可以在云端非常方便的使用 release数据库。那么目前腾讯云提供两个版本的radius数据库引擎,第一个是基于社区的开源的绿色引擎,那么它支持的是ready是2.8和ready是4.0。在社区的基础上,腾讯云又自己研究开发了新的sql引擎,它金融的是3.2版本的,我们可以看一下两个版本有哪些差异。
从下面的表中我们可以对release两个版本的引擎进行对比,社区版和腾讯云的CKv版首先看知识的版本,社区版支持单机版,主从版和集群版,然后腾讯云的QQ云以前只支持主从版和集群版,并没有单机版,这里其实单机版主要是一些实验一些比较很小的环境,你真正的商业环境肯定都是要用这种竹虫买继续买,它的性能各方面的容量能够得到很好的保障。第二个是从价格上来说,社区网主要是通过单线程处理,然后腾讯 c q引擎支持多线程,这样子它的并发能力性能也会更加的提升。第三个从 q p s美好的数据事物处理来看,社区8~10%万,腾讯云的可以到12万,所以也是更强的,冷热分离和强之后,目前两个版本都暂不支持,未来就不确定了。然后从数据备份上来看,社区版是需要bgc的组件来进行备份,它就需要两倍的内存,额外的内容来进行备份。那么腾讯的版本它的备份是有的,但是它是不需要额外的内存的。而且从平滑升级来看,社区的单机版和主动版是没办法平滑升级的,集群是可以升级。腾讯云的cqu引擎的主动版和集群版,它都是可以平滑升级的,而且从启动性来说社区版的启动会更慢一些。那么腾讯云因为它是做了优化,基于内存来共享数据启动就会非常快,一般在一秒之内就可以启动单节点容量来看,社区版是0.25级到60级,而腾讯这个字眼版可以达到4级到384级。所以你可以看到就是说腾讯资源版实际上在社区版的基础上做了大幅的优化,能力性能都做了很多提升。
好,那么内存数据库除了release,还有一个memcached,它也是弹性缓存存储服务也是支持这些基本的这些数据库服务。原来这个memcached开启的和 release的主要差异就是memcache开启的是不能持久化的,不能这句话意思就是说他只是跑在内存里面,都能写到磁盘上去实现持久化,内存关系的话可能数据就没了。但是目前腾讯云实现的版本里面,其实慢慢开始的也是支持持久化的。
我们可以看一下它的自动容灾机制和雷迪斯稍微有一点点不同。首先三个实例让它保存多个节点,也是双机热备主机备机,然后如果这个节点故障的时候,它是可以通过系统自动化和人工切换的,你比如说主节点故障接入机,他就会把请求发送到从节点新增一个节点,他就会从新的主机拷贝数据,然后完成组成的同步。如果从节点故障呢,他会直接加入新的从节点这个和 release有一点不一样,它没有逐渐的自动选择的机制。实际上就是主节点故障重节点马上就变成主节点。
因为开始的在线扩容的目的就是为了保障你随时都至少有20%以上的可能空间。那么过程的时候有两种可能,一种叫纵向扩容,一种叫横向扩容。纵向扩容其实就是他去检查一下本地的存储节点上有没有空间,如果本地存储节点上有空间,我就在本地上本地扩容,这样就可以了,这个叫纵向扩容,那么如果本地存上没有空间的话,它就需要增加新的节点,增加更多的节点,这个叫横向扩容,而整个扩容过程它其实是自动化的。
好,我们可以看一下,redis/memcached的都是内存数据库,所以它的应用场景也是比较相似的,一般会用在一种比较需要这种高速访问有热点数据的这种情况。那么我们的热点数据就放在内存数据库里面,提供那种高性能高并发的访问主要的应用场景,比如说游戏行业,像游戏里面的一些这种积分排行榜对吧?所有玩家都要去访问积分排行榜,这个时候你就需要把它放在这个redis里面,这样子的话就可以保证用户可以快速的获取他想要的数据。但是一些普通的这种玩家数据,你还是可以放在这种mysql或者其他的一些普通的数据库里面。
你看互联网行业电商行业也是的,这些这种热点的访问数据下载数据都要放在memcached,或者 radius里面还有电商产品,主要就是那种你购买商品的时候,那些商品的数据图片搜索结果,因为这些都是用户经常需要看的,而且有大量的用户去看是吧?你需要通过内存数据库保存来保证效能性能和体验。
第4个叫时序数据库ctsdb我们先了解一下什么叫持续数据库,我们普通的数据库你只保存了数据,但是这一些场景比如说一些视频监控或者一些这种日志的场景,这个数据它其实与这个时间是有关系的。比如说你昨天的视频和今天的视频,这个是需要记录这个时间标签的,所以我们就把这种带有时间标签的这种数据叫持续数据保存,处理这种持续数据的数据库就叫持续数据库。它其实就专门针对这种需要带时间标签这种数据存储进行优化的数据库。那么腾讯云 c t s t b它尽管这种高性能分布式的云端的持续数据库服务,主要有三个比较大的优势,第一个是支持高并发的读写,他首先会写内存,然后写完内存之后再通过弹幕把它写到持续化的程度上去,最后他可以通过批量的去写入这样的高并发高性能。另外它还有低成本的存储,它可以通过 roll up机制实现数据集合,把历史的数据这种数据化的数据整合在一起,然后再进行数据的压缩,这样子你存的数据量就更少。而且他还提供这种机遇和分析的能力,提供相关的一些查询分析的工具和方式。聚合分析实际上就是一些把相关的东西整合在一起分析,然后出现一些报表,对于数据分析来说也是非常关键的。
我们可以看一下 ctsDb的应用场景,这里主要比如说 lot的健康环境,就是物联网里面的特点就是说它有大量的终端会收集很多的数据,而且这些数据它会有些需要记住这个时间了。那么这个时候我们就通过 ct保存这个时间标签,而且可以实时的写入查询和分析,也非常的高效和快速。那么第二个场景是在互联网业务监控分析这种场景,我们会收集互联网的运行状态,网络延迟用户访问的情况,业务组指标的数据,还有系统的调动日志等等信息全部收集起来,那么采集起来之后放到 c t s t v里面,那么对它会进行一个实时的去分析去检查,而且我们这些级别的聚合分析能力查询每一段日志的最大值、最小值、平均值还有异常值,这些能力都可以作为我们业务状态趋势分析、故障排查、问题解决,还有这种预测与容量规划等等的一个很重要的依据,所以这个是实训数据库的重要两个应用场景。
那么下一个是数据库,一体机,机队的前面讲数据库发展趋势的时候,我们讲到有其中一个趋势就是软件与硬件的融合,这也就是这是这个趋势的体现。那么数据库一体机它其实融合了这种高性能计算,还有这种热插拔的产生也什么?音飞一般的网络形成了软硬件一体化的数据和解决方案。我们可以来看一下,在汽车厂里面它会有那么几个部分,首先它会有存储节点,存储节点是负责数据存取的,那么存储节点还有计算计算节点是负责应用的处理的,那么存储节点计算节点之间怎样通信,通过 a b交换机引分离瓣的交换机,那么它的目的实际上就是为了大幅的提升计算节点和存储节点之间的 l的性能,它在硬件层和协议层都做了相应的优化,数据可以达到56GB,比传统的 l总线结构的l结构速度还是大幅上升了几百倍,实际上传统的总线结构的它的 l其实相当于是相互影响的,而且只能是串行的某一个节点,在发出去的时候,另外一个节点只能等待,因为它是共享总线型,在IP交换机里面它实际上是点对的结构,就是每个节点之间点对点的去通信,互相是互相不干扰的,这个就是增强了它并发性和高性能。同时在协议层也做了一些优化,保证 l能够达到最佳的性能,然后除了底层的硬件节点、计算节点、交换机存储节点,这是硬件部分,上层会有数据库引擎,可以是oracle circle server或者my circle的。它这些硬件也是做了针对性的这种优化,相关的参数进行配置,能够保证在这种硬件的基础上它能够达到最佳的性能。所以是专门优化过的,然后它还有一个专门的这种监控管理,运维它也整合到这个里面了,就变成一个整体,就是替代卡可以理解为包含了硬件软件以及监控管理的一个整机柜的解决方案。交付的时候也非常简单,可以整个机柜搬上去插电做简单的配置初始化就可以使用了,
那么TData上有哪些优势我可以看一下。首先是金融的安全与合规性,我们要求数据多副本备份要做数据库的容灾,确保数据库不会丢失,数据能够保障可靠性可用性。在金融行业要求非常高的,比如我们后面讲到第三季的时候,我要求我的数据库能够跨出一种新的存在,这样子用我们的T卡就是一个很好的方案。第二个是高可靠性,就是不仅仅是在硬件层面、软件层面,还有在协议层面都能够保证高可靠,数据不会丢失多副本、高性能,高性能,我们刚刚说了硬件层面的高性能,还有协议层面的高性能,能够保证我们满足olIpoltp的对性能要求高比较大的场景,而且它的性价比也非常高。因为我做了一些整合,同时可以快速的部署,因为它被打包以后就变成一个整机构的方案,我们把一个机构搬过去,它就是一个数据库的节点,再办一个基本数据,它可以形成一个两个的形成改革的方案,这样是非常的快,非常的方便。
D data的应用场景第一种就是可以满足olAPoltb这种混合负载的场景,比如说oled主要是数据分析它要求有大容量,那么oled要求高性能实时处理,通过 tdata我们做优化之后,我们可以保证大容量,同时也可以保障高性能和高吞吐,能够让两个产品能够很好的融合起来。
第二个我们讲的金融行业,它会有一些这种两地三中心的要求,要同城双活异地灾备,比如说同城的数据中心在主数据中心,我有一个主库,我专门办了一台替代打过去,它就是你的主库。然后在同层我有一个双活的数据中心,我再办一台过去组合和备库之间是实时同步的,就是这个时间是零这样子,他也可以达到高可靠,那么我要做备份,异地做备份,我同样的道理,我在异地再搬一台替代打过去这样子,三个替代卡其实组成一个两地三中心的解决方案。这就是一个在金融行业里面,其实为了满足它的高可靠,还有满足它的合规性,对两地三中心的要求非常高,我们通过DJ塔不仅能保证高可靠高性能,还能够非常方便非常简单的去快速部署。
腾讯的数据传输服务,dts提供的话是一体化的数据库传输与管理服务,它支持以下三个核心功能。第一个就是数据迁移,就是支持不同环境的不同类型的数据库迁移,然后支持数据同步,就是支持不同的数据库实例之间的数据实时同步。你比如说我们买circle的数据和实例要实现异地融资,就可以用 d t s实现数据库的实时同步。第三个是支持数据订阅功能,基于冰冷就数据库日志,可以实时的获取同步数据库的增量更新,而且他可以可视化的去管理,及时的去配置,灵活的去调整订阅服务的配置。
我们可以看一下dts迁移的要求,首先原数据的类型支持Mexico radius芒果db,maria DV post great DV拍空了,其实就是Mexico的一个优化版本,我们还支持普通的这种服务提供商,包括甚至阿里云的 r d s我们也是支持的。从接入类型上来看,我们支持两类,第一类自建的数据库就是你在传统数据中心自建的数据库,想要迁移到云端,那么这种情况下你可以通过公网接入、专线接入或者微屏接入或者云联网这样子,只要能够联通,我们就可以帮你做迁移。那么第二种就是你的数据本来就在云端,或者说你在云端的cm里面自建的数据库,这种情况也是可以迁移的,而且它会相对传统的这种在企业数据中心更容易更简单一些。所以可以看到这里dts是一个在线数据库迁移服务,相比我们之前在存储部分讲的cdm它是一个离线的,只是在数据层面的迁移,这个是在线的数据库迁移,然后从目标数据库上来看,目前我们只支持迁移到同类型的数据库,也就是说比如说你选的原数据库是Mexico,目标数据库就是Mexico,如果你原数据库选ready时有某个db,那么目标数据库也是对应的,不能易购迁移。在你现在注意一下。然后dts的应用场景,第一个场景其实就是数据库的灾备,
比如说我们本地数据库要实现灾备,我从原有的数据库通过dts传输到新的数据库,那么平时两边可以做负载均衡,同时提供服务。那么如果发生故障了,比如主数据库不可用的时候,可以把流量访问放到被数据库上,或者通过被数据库来恢复主数据库,这是本地数据库的灾备。那么另外一种灾备的方式就是在云端数据库,灾备,也就是说这个时候主数据库依然在你的数据中心,但是从数据库可以在云端,在腾讯云上也是通过 dts实现数据库的同步与传输。
dts应用的第二个场景实际上是数据库上云或者数据的归档的场景,你比如说我们传统的数据库要迁移的云端,那么我可以通过把数据迁移到云端的数据库,而且知识的单位也是比较多的,你也可以无妨的迁移过去。这是第一种情况。第二种是数据库的存储归档,比如说我有大量的这些数据,近期也不会使用,但是又不能删除,这个时候我就可以把它迁移到归档数据库,通过数据传输服务把数据传输到这些归档数据库里面,实现这种长期的归档,那么低成本同时也能满足这些合规的要求。
Postgre SQL电子商务网站某些数据访问量非常高,数据库响应存在延迟,为提高访问速率可以选择哪些数据库产品?A.MySQLB.RedisC.Memcached D.MongoDB
BC
某公司业务需求如下:强一致性、高性能高并发、高安全的金融业务可以选择腾讯云的哪个关系型数据库产品?A.MySQLB.SQL ServerC.MariaDBD.MongoDB
C
腾讯云数据传输服务DTS支持以下哪些服务?A.数据迁移B.数据同步C.数据订阅D.数据创建
ABCD
6.5 云数据库运用场景和实例
本章我们主要给大家介绍的是这些数据库它的应用场景有哪些?
那么对于第一个我们会给大家介绍,那么常见的这种关系型的数据库他分别用在什么地方?我们先来看一下,那么游戏的应用。
,那么它就是有这种数据激增,你像随着玩家越来越多对不对?那么这样的话就是数据回答,比如说游戏今天好不容易升了一级,当时出了问题,那么又回到了一级,啊这是不可能的事情。所以说用户的数据对游戏来说很重要,发生故障的时候你就尽可能少的有带来这种损失。
那么这个的话就说我们来看,那么难点和挑战有哪些?数据量越来越大,我到底把数据放在哪里呢?那么多时间节点的去保留副本是怎么去做?那么数据量越来越大,弹性扩容是怎么做的?怎么去及时的去响应服务器的需求?
我们来看这样一个典型的场景,首先弹性扩容这个问题,对于我们cdb服务满塞口也不存在问题,因为这个本身就是自带的功能,然后我们分分钟就可以去部署和扩容我们的游戏区的这样一些数据库。那么再一个就是快速回档,我们好不容易升了一级是吧,我们不希望出了任何的问题,所以我们借助GDP任意时间点回档的功能,包括说支持批量操作,我们可以随时随地的去恢复任意时间节点,为游戏回档提供这种技术支持。
那么再一个的话就是我们的互联网,互联网和移动APP,我们知道移动APP那么这个强调的是咱们的装机量。好的,那么现在我们说装机量上来了,有的时候大家都在手机上安装了,比如说我们的腾讯视频、QQ微信,那么现在已经有14亿人在访问咱们的微信,在访问咱们的QQ,现在问题在于这么高的并发应该怎么处理呢?并且都是在白天访问对不对?而且大家都是读的多还是写的多,比如说这是个论坛,这是个新闻的APP,当然大家都是看新闻,那么对这些读取的请求远大于写入的请求造成的数据库压力很大,这个应该怎么办呢?那么它的一个主要的难点和挑战在于性能优化,你这么多人这么多并发对不对?你数据库要配的要高,要性能优化。
那么再有说我们说读的多,看新闻的多,只有小编辑才会去写,就是说你要去实现数据库的读写分离,把读性能给它提高。
那么我们看这种典型的场景,那么本身大家都通过负载均衡去反问他服务器,那么服务器再去连接咱们的数据库。那么刚才我们谈到并发好大,这个时候应该怎么办?那么就在中间加上我们的radius,我们会把咱们的热数据全部作用于radius上。好的,现在读的那么高,写的没有多少应该怎么做呢?我们实现咱们的读写分离,那么你看新闻就全部走这样的一些只读实例,那么你小编去写的时候就走咱们的一些后台,然后走咱们写的那一条,那么写到咱们的主题上。
那么针对咱们弹性缓存的使用请求,比如说我们刚刚谈到的咱们的一些高速缓存的场景,电子商务的女生,商品的分类,搜索的结果的列表,产品的这样一些比如说介绍业,这些都是我们经常要访问到的,但是我们说造成的数据库压力非常大,我们就可以在前面去加上一个弹性缓存,那么使得大家先访问到radius,那么这样的话我们再经过一道的压力承载之后,再把沉淀下来的数据返回到我们的后台的数据库。
那么我们来看这样一个场景,你其实直接访问到的其实就是我们的crs然后经过crst到过滤,比如说你提交了个订单,好的,那么crs先接下,那么再把订单的数据给它回传到咱们后端的cdb中。
那么对分布式的来说,实际上在这里什么时候会用到分布式?比如说咱们的车联网,物联网、摄像头,比如说我们现在说智能设备,甚至说我们说各种智慧的几个方案,那么我们都会做到几点,第一个就是数据非常大,我们的安防然后再的话就是传感器非常多,那么这个时候我们应该如何的快速集中的去上传呢?其实没有什么好的办法。因为就像我们在这里说到,那么视频的安防监控,我们做了一个全国的这样的一些视频安防监控,那么这个视频应该上传到哪里去呢?或者说我们这个网站是一个全国性的的城市都有这个网站,我要去做数据的存储,我应该去放到哪里去呢?是集中存放吗?那么集中存放首先那么不在当前地域的这样一些站点,那么去存放的时候它就会有延迟。
那么集中存放如果说数据库坏了,将会导致全国各地的这样一些设备或者说业务就会停滞。那么再有就是说他会造成一个瓶颈的存在。
那么这个时候我们就要求最好使用分布式各地管各地的,然后最后数据再去把它汇总成那么这就是我们的cdb去做的一个事情,那么这个d就是分布式。我们来看一下,用户通过负载均衡反馈到服务器,然后服务器再通过负载均衡把这样的一些业务的数据给它存储在不同的数据库中,那么这个叫做水平的扩展。你会看到后边的我们的数据库服务器有业务的数据,有大数据的存储等等,那么这些都是分布式去存储。
那么再一个就是我们来看这样一些场景下,像在金融业务上手机银行、网上理财区块链,尤其是区块链,这就是一个非常好的分布式的数据库。我们这个特点就是每笔交易很小,但是次数是很多,并且说区块链它没有中心,对不对?去中心化,那任何地方都是数据库,那么这就是非常典型的一个代表。
那么再就是我们来看水平扩展,那么水平扩展在这里的话,dcdb提供这种线性的水平扩展能力,能够实时的去提升我们的数据库的处理能力,轻松的去提高访问的效率。像在这里我们的QPS可以达到1500多万。
再一个就是我们的MongoDB,然后对Mongodb来说,在这里将会适用于咱们的像游戏开发版本迭代,那么它需要频繁的去修改表的一个数据库的结构,那么这个就要求你不能够把库表的结构给定死,这个时候需要频繁的修改,那么这个就是我们的芒果db它天生的一个特点。
比如说它本身就是一个scheme Free的,它就没有什么架构。再一个就是我们的h type,在这里它的一个使用场景,首先它要去解决单机的瓶颈,并且它有这种实时分析的需求,以及跨省跨国的这种数据中心,那么以及说我们数据技术服务的一个需求。
在这我们来看一下单机瓶颈这块,我们说在当今的互联网和大数据时代是坚决不能够有的,因为有这个的话将会增加我们大量的一个房子延迟跟业务的效率。那么实时分析这一块,我们说传统的业务需要将数据加载到后台,然后再去分析,那么这个会有延迟。那么我们现在通过htap的数据库,我们可以去做到这种无需等待的数据实时分析,那么以及说我们传统的这种数据中心,它是做数据复制到备份的方案,这种会比较造价高,而我们的h type去支持分布式的事物,通过简单配置即可实现多数据中心百分百的同步。
那么再有说说我们的用户往往是因为数据的类型,存储量和计算能力的不足,需要去投入大量的资源去做扩充升级。那么我们的htype那么在这里的话,我们就是真正的云数据库,这种图形的监控管,这样的自动恢复,从包括我们的滚动升级,使得说我们的数据及服务的体现的淋漓尽致。
那么再一个就是我们一体机了,一体机首先我们可以去避免掉你这种机房故障,像这个风险主要是说我们业务是需要7×34小时运行,但是你机器老出故障,比如说网络老师中断,那么怎么去解决这个问题?
主要就是说我们通过这样的一些同城高可用,那么Tdata它主要是解决金融的行业,像在拥抱云计算潮流所面临的一些痛点。比如说物理机它用高可用高性能低延迟这种服务去助力用户去做创新,自动化快速部署,应用这样的一些扩展的能力,使得说管理起来成本会比较低。
那么我们来看这样一个两地三中心的方案,那么同城的备库,异地的备库,也就是说同城,然后同城咱们采取实时的同步,那么异地咱们采取异步的同步。那么这个的话就说我们会实现两地三中心这样一些容灾的方案,但是这些所有的工作都不是由我们去完成的,我们直接去在网页中去下载我们的命令。
再一个就是我们的数据传输服务的应用场景有哪些?像我们在数据库上,我们说语音数据库的异地灾备,那么再就是把本地的数据库给迁到云上,或者说我们他本地的数据库有问题,我们直接要做数据的归档存。
那么第一个就是说我们的云数据库的异地灾备,我们毕竟说这个也是怕单个地域之间它有什么问题,那么这个时候我们就需要做一些容灾的考虑,我们就通过dts做数据传输,那么故障的时候你可以快速去接到另外一个地方去,那么这样的话他机房之间的传输默认它就会存在这样一些问题,这样存在一定的延迟,激发之后获取不到最新的数据等等。‘
而现在我们通过dts是就可以完美的去解决这个问题。像我们的业务都是cdb所以他通过腾讯云的高速内网去做实时同步完全没有问题。刚才说的延迟,然后咱们这些抖动获取不到新的数据,这个完全就不会存在的。
再有一个就是说我们的数据迁移的上云,我们在本地机房有时候用,我们在云上买了cdb做一个扩充,有几种办法,一种的话就是说你在本地导出,然后在云上导入,再做一些实时的增量的更新。但是这种操作非常复杂,而且工作量非常大,而且还容易遗漏。
那么现在说我们有了这样一些GPS之后,那么用户只需要做什么事情?我们在网页中去做数据的订阅,我们在网易中选择我要迁移好的选择本地,然后把本地的IP然后密码输上去,然后我们的dts就开始去做迁移,然后把数据迁移到我们云数据库,那么我们就可以在cvm上直接使用咱们的数据。
这个就说本地的机房容灾,我这个要求是7×24小时运行,但是我觉得我机房可能会断电。那么出现非预期的事件,那么这个时候我需要把本地的数据库给他在云上也有一个副本,比如说我要再去做一个机房,又觉得预算不够是吧?存在单点故障怎么解决非常好的一个方案,就是在云上一个副本,比如说这样的一个方案,那么本地的数据中心是主要的实力,当我们本地数据中心断网断电,那么这个时候用户就直接访问云上的环境就行了。因为云上的环境它也拥有一个实时的备份,所以我们会看到下面的主库备库,然后通过我们的dts去传输到我们云上,云上的图库和被控制电。
那么再一个就是说我们的数据归档,数据归档那么就直接理解我们,咱们定期把咱们的运营商的数据库给它做一些在线的归档。但是我们知道首先你是要定期的去操作,而且数据量非常大,耗时耗力,那么我们就可以去使用咱们的一些数据归档的存储。我们来看一下用户通过负载均衡反应到云服务器,然后再挂接到咱们的数据库上。其实这个方案我们产生了大量的一些数据,通过dts数据订阅的方式就可以定期的我们就不再需要人工去操作了。然后会有一个自动化的。
分布式HTAP数据库使用场景有哪些?A.单机瓶颈B.实时分析C.金融级跨数据中心D.数据即服务
ABCD
如果客户需要使用Oracle数据库管理系统,可以选择腾讯云的哪个数据库服务?A.DCDB B.HTAP C.TDSQL D.数据库一体机TData
D
在游戏开发过程中,版本迭代快,修改数据建库表结构的情形较多,鉴于此场景,选择腾讯云的哪个数据库产品可以较好地适应游戏开发任务?A.MongoDBB.MySQLC.数据库一体机TdataD.Redis
A
第四节太长了(晚点更新吧(老拖延症了
制作不易,既然都看到这里了,不妨点个赞吧^ ^
更多推荐
所有评论(0)