【云驻共创】数据库邂逅企业开发,看DTSE专家三招击穿应用痛点
一、企业开发者最关注的三件事:数据库的成本、性能和安全
1. 成本
提高资源投入产出比
- 如何能降低数据库的整体费用?
- 怎样能最大化的利用数据库的资源?
- 如何根据自己的业务情况选择性价比最高的方案?
2. 性能
应对业务快速扩展场景
- 什么情况下我需要关注数据库的性能问题?
- 有哪些方案能提前让我规避数据库的性能瓶颈问题?
- 请求访问慢
- 数据库空间不足
- 连接数不足
- 并发能力弱
3. 安全
业务连续性的红线
- 人工误操作
- 自然灾害
- 恶意攻击
- 数据库审计
- 数据加密
二、数据库成本控制
1. 提高资源利用率
弹性扩缩容方案
场景:业务潮汐型波动(固定时间段流量较大),如每天定时分析数据。
方案:GaussDB(for MySQL)Serverless版本。
说明:在资源整体规格不改变的情况下,提高资源的使用率。GaussDB(for MySQL)会根据资源负载情况自动进行扩缩容,如cpu使用率大于80%并持续五秒即触发扩容。
多租实例(提高利用率)
场景:业务多租的情况下,多数据库实例部署,资源实际使用率不高的情况。
方案:GaussDB(for MySQL)实例多租能力。
说明:在多实例的情况下,如果每个实例的资源使用率不高,但为了业务高峰考虑又不得不购买高规格实例时,
可以使用GaussDB(for MySQL)的实例多租能力,最大化的利用实例的资源。
2. 根据业务选择合适的实例类型
选择性价比实例(Flexus RDS)
场景:业务并不是对性能要求特别高的情况下,如小规模的开发环境的数据库,个人博客等。
方案:使用Flexus RDS实例。
说明:Flexus RDS是最具性价比的一款实例,但性能相较于其他数据库稍弱,扩展性不强,可以用做对性能要求不高的业务。
写场景较多的场景选择GaussDB(for MySQL)
场景:业务写多读少情况下,如一些I0T信息,日志,股票系统等。
方案:选择GaussDB(for MySQL)。
说明:GaussDB(for MySQL)相较于开源MySQL写性能提升7倍,因此同样的业务场景下可以选择更低的规格来满足业务诉求。
3. 降低存储成本
读写分离情况下,读实例较多场景选择GaussDB(for MySQL)
场景:如果你开启了读写分离且读实例较多的情况下,同时存储空间占用较多。
方案:GaussDB(for MySQL)共享存储。
说明:GaussDB(for MySQL)底层做了共享存储,因此每次增加读实例的时候只增加计算节点,存储共用这样省下了存储的费用(读实例数*存储空间),且GaussDB(for MySQL)底层使用DFV存储池,存储空间压缩20%。
有不常用的表格,可以使用GaussDB(for MySQL)的冷热数据存储分离功能
场景:不常用的表,查询频次不高,如一些历史数据的统计报表。
方案:使用GaussDB(for MySQL)冷热数据存储分离能力。
说明:不常用的数据通过修改表属性可以把它下沉到OBS中使得存储的费用大大降低。
三、数据库性能瓶颈
1. 问题有哪些
首先,从硬件替换到方案改造再到SQL调优。技术实现难度越来越高,成本逐渐降低。
而性能瓶颈主要有三大类:
- 资源不足
- 慢SQL
- 架构瓶颈
接下来的章节将介绍有那些解决方案处理上述性能瓶颈。
2. 资源不足,硬件升级
资源不足主要有以下情况:
- CPU、内存不足
- 磁盘不足
- 连接数不足
根据上述情况,可根据使用的需求选择不同的实例的类型,如下图所示:
3. 慢SQL调优
慢SQL主要有以下情况:
- 复杂SQL查询缓慢
- 并发量大查询缓慢
- 其他原因
复杂SQL查询(统计聚合)缓慢
利用GaussDB(for MySQL)HTAP的能力基于代价自动切换AP,提升并行查询、算子下推提高查询能力。
并发量大查询缓慢
使用读写分离的能力,使用更多的读实例。可以使用RDS、GaussDB(for MySQL)和DDM来实现。
其他原因
- 开启慢SQL日志定位问题。
- 查看查询索引是否生效。
- 避免复杂join和子查询。
- 调整相关系统参数,如査询缓存大小,并发连接数,日志文件大小等等。
- 使用redis进行缓存,减少数据库压力。
- 列存储等。
4. 架构瓶颈
架构瓶颈主要有以下情况:
- 单表过大(超过2000w条)
- 表数量过多(单库超过200张表)
- 数据冗余
单表过大
- 采用DDM水平分表的方式把单个表拆分成多个分区表。但带来的问题与使用限制较多。
- 使用分布式数据库Gaussdb,提升数据库承载能力。
单库表数量过多
数据库包含了所有库表,此时可根据具体情况进行分库分表,例如下图所示,可将商城数据库拆分为不同的库表进行使用。
数据冗余
数据冗余的主要有以下几个方面的缺点:
1.占用存储空间:数据冗余需要存储多个副本,因此会占用更多的存储空间。
2.增加数据管理的复杂性:多个副本需要进行同步和管理,这会增加数据管理的复杂性。
3.增加成本:数据冗余需要更多的存储设备和硬件,这会增加成本。
4.数据一致性问题:多个副本可能会发生数据一致性问题,例如,一个副本上的数据更新可能不及时地同步到其他副本上。
5.安全性问题:多个副本可能会增加数据泄露的风险,因为副本可能会被复制到不安全的位置。
四、数据库的安全风险
数据库的安全风险主要有:SQL注入、流量攻击、勒索病毒、自然灾害、人工误操作、隐私泄露、删库跑路等等。
可按风险类型分为:外部风险、内部风险、物理层面风险。
1. 外部风险
外部风险主要有:
- 流量攻击:攻击者的目标是让数据库因负载过高瘫痪。例如执行一些复杂SQL。
- SQL注入:“注入”恶意的SQL代码片段,干扰应用程序的正常SQL查询逻辑,进而达到未经授权访问或篡改数据的目的。
- 勒索病毒:通过对受感染系统中的数据库文件进行加密或限制访问,然后向用户勒索赎金来获取利润。这种病毒通常会在用户打开恶意邮件或文件时被下载到计算机上,一旦开始运行,就会立即开始加密用户的数据库文件。
针对上述风险可有对应的防治措施:
- 流量攻击:使用DDOS防护、利用缓存减少数据库压力、云数据库SQL限流能力。
- SQL注入:使用WAF、DBSS、参数化查询V、ORM框架。
- 勒索病毒:使用主机防护HSS、提升密码复杂度、不使用自建数据库、访问控制(端口)、定期备份
2. 内部风险
内部风险主要有:
- 人工误操作:如运维、DBA交接不清楚,新人对资源不熟悉。导致误删数据库表、或其他误操作。
- 删库跑路:掌握着重要信息的系统研发人员,在离开公司时由于各种不满情绪等原因,在未经公司许可的情况下,对数据库进行恶意破坏,删除其中的数据或整个数据库,从而造成公司巨大损失。
- 隐私泄露:内部人员出于个人利益泄露数据,拖库开放API被滥用,导致泄露;黑客入侵收集数据等等。
针对上述风险可有对应的防治措施:
- 人工误操作:使用DBSS、防治措施、数据库备份、数据库审计、权限管控。
- 删库跑路:使用DBSS、防治措施、数据库备份、数据库审计、权限管控。
- 隐私泄露:使用GaussDB TED 透明加密、DEW数据加密、DSC数据安全中心。
3. 物理层面保障
在面对故障时,系统能否以“最快”的速度进行恢复,就成为系统可用性的关键。云数据库具有业界容灾架构方案,确保系统可用性,在物理层面进行保障,我们可根据使用需求而进行选择。
同城灾备
两地三中心
异地多活
五、云数据库保障开发者数据安全
① 免费的全方位安全防护,让黑客无从下手
- 强制的高复杂度密码
- SSL管道
- VPC、安全组和IAM
② 7*24小时实时备份,可帮企业找回被删除的数据
- 最多可保留2年,可随时下载到本地
- 恢复被删除的数据耗时分钟级
③ 回收站,可帮企业找回被删除的数据库实例
- 被删除的实例至少保留1天,最多可保留7天
- 任何人无权清空回收站
- 恢复被删除的数据库实例耗时分钟级
④ 审计日志让对数据库的所有操作无所遁形
- 记录所有用户对数据库的所有操作
- 任何人无权清理审计日志
- 最多可保留2年,可随时下载到本地
2023年华为云数据库服务
- 客户数据丢失事故0次
- 通过实时备份恢复,帮助客户找回被误删除的数据97次
- 通过回收站,帮助客户找回被误删除的数据库实列23次
- 通过审计日志,帮助客户定位到对数据库的异常操作115次
六、总结
- 深入剖析数据库领域痛点,击穿成本控制、突破性能瓶颈、打造数据库安全等核心问题,从而根据使用需求选择合适的数据库类型和对应的产品。
- GaussDB是华为自主创新研发的关系型数据库,基于华为在数据库领域20多年的战略投入,通过多维度的技术创新,在行业实践中构筑了高可用、高安全、高性能、高弹性、高智能的技术优势,在数据库替换场景中,具备易部署、易迁移的特性。
本文参与华为云社区【内容共创】活动第27期。
【内容共创】活动第27期活动详情:https://bbs.huaweicloud.com/blogs/430812
- 点赞
- 收藏
- 关注作者
评论(0)