为帮助开发者更好的了解和运用数据库,腾讯云数据库团队特出品《深入浅出理解云数据库》系列文章,从数据库的基本概念到云数据库特性及应用、从数据库基础原理知识到腾讯云经典实战案例解读,带你走进云数据库的世界。关注“腾讯云数据库”微信公众号,开启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课堂”获得腾讯云高级产品经理原创数据库实战视频教程。
年终回馈
↓↓更多惊喜优惠请点这儿~