大数据时代下的存储技术---数据库设计规范

大数据时代,互联网中每天数以亿计的数据在产生和流转。那么,有用的数据如何被保存下来?如何用于归纳总结?如何用于支撑生产?这就需要大数据存储空间---数据库来完成。


数据库是应用系统中非常重要的一个组成部分,数据库的性能是否高效直接影响到应用系统的性能。在数字化时代,客户对应用系统的交互速度、整体性能的要求越来越高,这就对数据库整体设计提出较高的要求。


所以,数据库设计必须遵循一定的规则,良好的数据库设计与其系统应用设计是相辅相成的。好的数据库设计能够合理利用数据的存储空间、保证数据的完整性、减少数据冗余、方便进行数据库应用系统的开发、以及提高系统的使用性能。


大数据时代的数据库需要满足以下要求:

1.支持高并发

   根据实际应用的需要,数据库需要满足大数据量交互需求,估算使用接口压力和数据库并发需求。

2.支持负载均衡

    根据实际使用,制定数据库部署架构与负载均衡策略,制定超过支撑能力的快速扩容机制。

3.实现数据读写分享

   制定读写分离策略,确定写功能节点和读功能结点,设计读写功能的切换流程,保证数据库功能的正常使用。

4.实现数据库的高可用

    利用大数据集群技术、负载均衡策略和容灾计划,确保数据库读写无故障运行。


综上所述,数据库的设计规范是多方面的,其中特别需要注意的有三方面:表设计规范、索引设计规范、SQL语句规范。


大数据时代下的存储技术---数据库设计规范

一、表设计规范

数据库表是存放数据的地方,遵循一定规律设计的数据库表,才能进行快速有效的数据读取,方便数据管理,提高系统可维护性、可理解性。否则数据存储就会杂乱无章,存储和读取都会非常混乱。


数据库表主要指标项的要求:

• 命名: 库名、表名、字段名均小写,下划线风格 

• 引擎: 存储引擎尽量使用 InnoDB 

• 字符集:使用 utf8mb4 字符集 

• 列数: 建议40个以内 

• 必要字段:主键、添加时间、更新时间 


数据库表设计的注意事项: 

• 尽量不使用外键,如果有外键完整性约束,需要应用程序控制 

• 不用保留字,如 DESC、RANGE、MARCH 等 

• 把字段定义为 NOT NULL 并且提供默认值 

• 如果存储的字符串长度几乎相等,使用 CHAR 定长字符串类型 

• 在一些场景下,考虑使用 TIMESTAMP 代替 DATETIME


二、索引设计规范

数据库的索引,是指在一定范围内对数据进行排序,使之能对检索应用做出快速响应。索引是影响数据库应用性能的主要原因之一。


数据库索引设计细节:

索引数:表的索引数建议不要超过6个 

索引类型选择 

• Normal 普通索引 

• Unique 唯一索引 

• Full Text 全文索引 

• SPATIAL 空间索引 

索引方法 

• BTREE 

• HASH (=”,”IN”和”<=>) 

索引原则 

• 尽量选择唯一性索引 

• 为经常排序、分组、联合操作的字段建立索引 

• 区分度底的类型,不宜建立单独索引 

• VARCHAR 类型,尽量考虑索引长度,不进行全文建索引 

• 联合索引,将区分度更高的字段放在左边


三、SQL语句规范

使用标准化的SQL语言,使数据库的针对性操作更容易,并且学习成本是较低的。使用统一的SQL语言,能极大地减轻维护人员的工作量,也能辅助提高开发人员的开发效率,增加代码的复用性。SQL语句规范设计是数据库性能主要原因之一,同时也是数据安全使用的基础。


SQL语句规范细节要求:

减少面向数据库编程:减少使用自定义函数、存储函数、用户变量 

• Select * :在查询中指定所需的列,而不是直接使用“ *”返回所有的列 

• ORDER BY:要利用索引的有序性 

• JOIN :数据类型必须绝对一致(字段类型、字段长度、字符集、Collection ) 最多五个以内 

• Where : 

• 索引列是表达式一部分,不能使用索引 

• 不要使用属性隐式转换 

• 应尽量避免在 WHERE 子句中使用 or 作为连接条件,UNION ALL 

• 减少使用 % 开头的模糊查询,可以最左前缀匹配原则 

• 减少 != 、not in 操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN, IN,以及某些时候的LIKE



数据库设计是软件应用系统的根基,必须受到高度重视。培养良好的数据库设计习惯,是一个合格软件工程师应该必备的基本素质。

上一篇:新形式下,企业的数字化转型之路在何方?


下一篇:一点点鲜为人知的数字化转型基础理论