1 引言
1.1 文档目的
本文档旨在明确 MariaDB 数据库技术与应用的规划与设计、安装与部署、运行管理与维护等全生命周期各阶段的主要技术标准和指导原则,便于 MariaDB 数据库应用项目的统一建设和管理,增加 MariaDB 数据库技术应用的规范性、性能保障和可维护性。
1.2 预期读者
使用 MariaDB 的项目相关数据库设计、开发管理和运行维护人员。
2 设计规范
2.1 数据库设计原则
- MariaDB 面向的是 OLTP 的应用场景,并不适用于大多数复杂的 OLAP。
- 反范式设计:
不必强制满足第三范式,尽量少使用外键。
- 外键用来保护参照完整性,可在业务端实现。
- 适度的冗余设计,减少多表join查询,更适应 MPP 架构的横向扩展能力。
- 直接基于 I/O 和查询进行优化。
- 充分考虑业务逻辑和数据分离,数据库只作为一个保证 ACID 特性的关系数据的持久化存储系统,尽量避免使用自定义函数、存储过程、触发器和视图。
- 充分考虑数据库整体安全设计,数据库管理和使用人员权限分离。
- 充分考虑具体数据对象的访问频度及性能需求,结合主机、存储等需求,做好数据库性能设计。
- 充分考虑数据增长模型,决策是否采用“分布式(水平拆分)”模式。
- 充分考虑业务数据安全等级,设计合适的备份和恢复策略。
2.2 数据库模型设计规范
2.2.1 基础规范
- 只使用 InnoDB 存储引擎,避免使用 MyISAM 引擎,二者对比,InnoDB 具有如下特性:
- 完整的 ACID 支持。
- 崩溃自检恢复。
- 行级锁,高并发的保证。
- 更能发挥多核 CPU 的性能。
- 自带缓存池,更好的利用内存。
- 所有表使用统一的字符集,建议使用 UTF8 或 UTF8MB4 字符集。
- 不在数据库中存储图片、二进制文件等大数据。
- 提前规划好单表规模、行数和大小。
- 控制单行字段总长度,合理设置 innodb_page_size,尽量采用 COMPACT 行格式,避免行溢出。
2.2.2 数据库对象命名规范
数据库对象命名规范的适用范围为使用 MariaDB 的数据库设计、管理、开发人员,对于 MariaDB 产品自带的系统库表等对象不在本规范约束范围内。
数据库对象命名时整体遵循如下规范:
- 对象命名要使用富有意义英文词汇,除约定俗成外,避免使用缩写。
- 在索引约束等对象命名时会同时包含表名、字段名等多个名字,此时可以使用缩写,缩写规则和字符数要统一。
- 只使用小写字母、数字和下划线的组合。
- 名字长度不要超过32个字符。
- 不要使用 SQL 关键字。
- 对象名字至少包括:对象类型、父对象名、对象名。
·····
更多详见:https://cloud.tencent.com/document/product/237/4914