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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 数据库设计是整体软件应用系统的根基,必须受到高度重视。培养良好的数据库设计习惯,是一个合格软件工程师应该必备的基本素质。

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


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


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


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

1.支持高并发

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

2.支持负载均衡

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

3.实现数据读写分享

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

4.实现数据库的高可用

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


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


image.png

一、表设计规范

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


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

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

• 引擎: 存储引擎尽量使用 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



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

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
18天前
|
存储 人工智能 数据管理
|
11天前
|
存储 人工智能 数据管理
媒体声音|专访阿里云数据库周文超博士:AI就绪的智能数据平台设计思路
在生成式AI的浪潮中,数据的重要性日益凸显。大模型在实际业务场景的落地过程中,必须有海量数据的支撑:经过训练、推理和分析等一系列复杂的数据处理过程,才能最终产生业务价值。事实上,大模型本身就是数据处理后的产物,以数据驱动的决策与创新需要通过更智能的平台解决数据多模处理、实时分析等问题,这正是以阿里云为代表的企业推动 “Data+AI”融合战略的核心动因。
|
5月前
|
存储 SQL 关系型数据库
数据库开发设计规范(通用)
数据库开发设计规范(通用)
512 0
|
3月前
|
算法 大数据 数据库
云计算与大数据平台的数据库迁移与同步
本文详细介绍了云计算与大数据平台的数据库迁移与同步的核心概念、算法原理、具体操作步骤、数学模型公式、代码实例及未来发展趋势与挑战。涵盖全量与增量迁移、一致性与异步复制等内容,旨在帮助读者全面了解并应对相关技术挑战。
67 3
|
3月前
|
SQL 缓存 大数据
C#高效处理大数据的批次处理,以及最好的数据库设计
C#高效处理大数据的批次处理,以及最好的数据库设计
116 0
|
3月前
|
大数据 关系型数据库 数据库
python 批量处理大数据写入数据库
python 批量处理大数据写入数据库
184 0
|
5月前
|
关系型数据库 MySQL 大数据
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
128 1
|
5月前
|
存储 分布式计算 大数据
大数据架构管理规范
8月更文挑战第18天
99 2
|
5月前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之ODPS数据怎么Merge到MySQL数据库
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
88 0