为帮助开发者更好的了解和运用数据库,腾讯云数据库团队特出品《深入浅出理解云数据库》系列文章,从数据库的基本概念到云数据库特性及应用、从数据库基础原理知识到腾讯云经典实战案例解读,带你走进云数据库的世界。关注“腾讯云数据库”微信公众号,开启2020年的DB修炼之旅。

1

PartⅠ 数据库基本概念

举个简单的例子,我们会把买来的食物、零食等放到冰箱里去,冰箱就是用来存放东西的地方。那么当我们有很多数据的时候,存放的数据的“冰箱”就是数据库。当然,如果用过Excel的话,就更好理解了,数据库就可以类比为Excel。

那么既然有了Excel,为什么还把数据放到数据库里呢,那当然是数据库比Excel的功能更为强大,存储能力也更强等等诸多优点。

数据库也有很多分类,大家最常听到的是“关系型数据库”,怎么理解呢?我们还是来看刚才举的冰箱的例子,比如你是和别人合租的房子,冰箱是几个人一起公用的,我们来用图表看一下这个关系:

编号 姓名 性别 年龄
01 张三 25
02 李四 27
03 王五 30

合租表

比如有一天这三个人一起去逛超市买了很多东西,都放在了冰箱,我们一起看一下冰箱里有什么:

购买人 物品 花费
01 菜花 10
01 可乐 20
01 猪肉 50
02 雪糕 20
02 羊肉 60
03 芹菜 12
03 白菜 16

购买物品表

同时在超市有一个价格表,我们可以清晰的看到每个物品的单价:

物品 单价
菜花 4/斤
可乐 3/瓶
猪肉 28/斤
雪糕 2/个
羊肉 57/斤
芹菜 3.6/斤
白菜 1.4/斤

单价表

如上所示我们建立了三个表,如果我想知道合租表里张三(01)都购买了哪些东西,并且这些东西的单价是多少,我会这样操作:

• 在合租表里查到张三的编号是01

• 在购买物品表里找到所有购买人列里所有行为01的物品,我们发现有菜花、可乐、猪肉三样物品

• 如果我们还想进一步查看他们的单价是多少,就在单价表里分别找到物品列中菜花、可乐、猪肉三行的单价值。

这样我们的流程就走完了,我们会发现这三张表之间是相互有关系的,在不同表中可以通过一定的值匹配到你想要的值,在数据库语言中这个叫联结,即将两个文件甚至多个文件中,指定栏位内容相同的行连接起来。

总结来看,数据库用来存储数据,关系数据库=多张表+各表的联系,主流的关系数据库有oracle、db2、sqlserver、sybase、mysql等。

最后我们来用一张表来看一下各类型数据库及其优缺点:

数据库类型 释义 优点 缺点
关系型数据库 以行和列的形式存储,数据表直接彼此关联协助存储。简单来说是个二维表格模型+直接的联系 容易理解:二维表的结构理解起来更为容易使用方便:可以使用通用的sql语言进行操作便于维护:丰富的完整性减低了数据冗余和数据不一致的概率 • 针对海量数据读写,有效率低下的问题• 难进行横向拓展,当数据量需求变大时,需要进行迁移• 因为涉及到多表的关联查询,复杂的数据分析和查询会导致性能较低
非关系型数据库(NoSQL) 与关系型相反,分布式的,数据以整块存储,就像文档、键值和图结构 易拓展:自由添加,不像关系数据库需要查询各个表的关系查询速度快:数据存储在缓存中,查询速度远大于关系型数据库性能高:基于键值对,不需要经过SQL层的解析 只适合存储简单的数据,对于关系复杂的海量数据,不够持久

1

Part Ⅱ 云数据库的特性

我们明白了什么是云数据库,接下来就要看看云数据库能做什么。

根据概念介绍,云数据库具有以下几个特性:

• 实例快速创建

• 支持只读实例

• 故障自动切换

• 数据备份

• Binlog备份

• 访问白名单

• 监控与消息通知

下面我们来依次看一下这些特性的介绍。

1. 实例快速创建

首先来看一下什么是数据库实例:数据库实例是程序,是位于用户和操作系统之间的一层数据管理软件,用户对数据库中的数据做任何的操作,包括数据定义、数据查询、数据维护、数据库运行控制等等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

举个例子,数据库是由众多文件组成的,底层来看就是一堆二进制数,我们熟知的SELECT、DELETE、UPDATE这些操作,都不是直接对数据库进行操作的,而是通过实例来完成对数据库的操作。

云数据的第一大优点就是我们在选好服务和套餐后,控制台会自动为我们配置好实例。

2. 支持只读实例

首先我们来想一下为什么会有只读实例的这种存在,在数据库的应用场景中,读的请求要远远多于写的请求,和读和写共同存在的话有读写锁冲突(一个读写锁同时只能有一个写者或多个读者,但不能同时既有读者又有写者),针对这样的场景,一般读服务会成为数据库的瓶颈,为了能极大程度地提升数据库的读性能,设计了读写分离的架构,因此也就有了只读实例的这种存在。

云数据一般可以创建多个只读实例,来实现读取能力的弹性拓展,增加应用的吞吐量。

3. 故障自动切换

在讲这个特性的之前,我们先来理解另一个数据库术语——主从复制。主从复制就是指同样一份数据我用两个或两个以上的数据库来存储,其中一个数据库作为主库,其他的作为从数据库。在主库进行相关操作的时候,从库也进行同样的操作。那么为什么要这样操作呢,是因为当数据库如果遇到一些问题,主库无法使用了,为了维持业务正常进行,可以将从数据库代替主数据库,防止数据丢失。

因此云数据库的另一个特性就是当主数据库发生不可预知的故障时,可以自动切换该主数据库,保证业务正常进行。

4. 数据备份

数据备份是容灾的基础,防止因为出行误操作或系统故障引起数据丢失,将数据存储到存储介质中的一个过程。

云数据库针对数据备份可以提供多种能力,自动定时备份或手动备份。

5. Binlog备份

Binlog 是指二进制日志,用来记录数据发生或潜在发生更改的sql语句,并且以二进制的形式保存在磁盘中。Binlog的作用类似于Oracle的归档日志,可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)。

云数据库提供自动备份Binlog日志的能力,并可以长期保存日志,方便用户根据日志进行二次处理。

6. 访问白名单

云数据库提供设置IP白名单的功能来对控制对实例访问的权限。

7. 监控与消息通知

通过配置云数据库控制台可以达到数据库监控的目的,随时监控数据库动态,自定义设置监控不同指标阈值。当监控项触碰红线后,会立即收到短信等方式的通知,进一步加强数据库安全性。

扫描下方二维码关注“腾讯云数据库”,第二回即将开启;回复“迪B课堂”获得腾讯云高级产品经理原创数据库实战视频教程。

年终回馈

↓↓更多惊喜优惠请点这儿~

文章来源于腾讯云开发者社区,点击查看原文