浅谈关系型数据库主键设置策略

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 几乎大多数的应用都会使用关系型数据库进行数据存储,而主键一定是标配。那么,在您的应用中,通常使用什么方案来满足业务扩张呢?下面简单介绍普遍做法以及改进之道

   几乎大多数的应用都会使用关系型数据库进行数据存储,而主键一定是标配。那么,在您的应用中,通常使用什么方案来满足业务扩张呢?下面简单介绍普遍做法以及改进之道。

   第一层:业务布局之初。众所周知,企业业务刚开始,需要进行快速试错,而彼时的数据量不会太多,而且暂时不会存在瓶颈,主要是快速打开市场,提供可运行的软件系统,此时不会太多的去关注存储。(言外之意:创业之初会有技术欠债,随着企业发展壮大,会比较痛)。

   这时,数据一般采用自增型主键,比如mysql或者sqlserver、postgresql的自增型主键,oracle的序列等都可以很好的满足初期技术架构。当然,如果想用UUID等唯一值做主键也是可以的。不过需要注意的是,使用uuid的可读性会比较差,同时使用字符串做主键,其索引比较大,检索效率稍差。推荐用long类型主键。第一层数据库存储如下图所示:


image.png

第二层:快速扩张期。业务经过几轮迭代,数据量也在极度飞升,单机较难满足业务增长,数据库连接常常第一时间产生瓶颈。因此为了提升数据的存储速度,还有快速扩张,技术会选择分库分表。彼时第一阶段会根据业务内容进行垂直分库,比如电商中常见的按照用户、订单、交易、评论等进行拆分。这时的架构也还是当个数据库,只是按照具体业务内容拆分,其主键依然可以采用第一层次的方案。


image.png

而随着交易、订单的进一步增长,单库也无法满足性能要求。只能从水平方向上拆分,简单的评估方案是,未来数据存储需要按一亿来计算,单表支撑1千万条数据,最起码需要10张表进行存储。此时会将单库扩张成多张表。此时未考虑到数据库之间的主键不能同步,并同时兼容数据查询高效性。其主键通常会采用分布式ID生成策略,经典有的雪花算法等。此时,单库的自动生成已不再满足业务要求,而uuid等字符型主键因为性能瓶颈也不适合。此时的数据存储架构如下:


image.png

第三层:未来扩展期。通过良好的分库分表可以友好的解决存储问题,但是使用这种方案对于数据库的前移工作量比较大。如果是比较新的应用,可以采用newsql的方式解决这种方式,业界比较常见的有TiDB,这种数据存储模式避免了分库分表的一些坑,对于上层应用来说就是单体的存储。业务进行到这个地步,主键推荐采用long类型的主键生成器,避免采用字符型主键。


综上所述,文章简单说明了应用迭代中,主键的一些选型推荐及选择依据。朋友们目前处于什么阶段,当前阶段你们的主键采用什么方式进行生成,欢迎交流。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
监控 关系型数据库 MySQL
轻松入门MySQL:主键设计的智慧,构建高效数据库的三种策略解析(5)
轻松入门MySQL:主键设计的智慧,构建高效数据库的三种策略解析(5)
|
2月前
|
DataWorks NoSQL 关系型数据库
DataWorks常见问题之鉴权数据库设置失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
存储 搜索推荐 关系型数据库
深度探讨数据库索引的数据结构及优化策略
深度探讨数据库索引的数据结构及优化策略
|
1月前
|
关系型数据库 MySQL 数据库
mysql添加用户并设置数据库权限
mysql添加用户并设置数据库权限
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
11天前
|
存储 SQL 缓存
构建高效的矢量数据库查询:查询语言与优化策略
【4月更文挑战第30天】本文探讨了构建高效矢量数据库查询的关键点,包括设计简洁、表达性强的查询语言,支持空间操作、函数及索引。查询优化策略涉及查询重写、索引优化、并行处理和缓存机制,以提升查询效率和准确性。这些方法对处理高维空间数据的应用至关重要,随着技术进步,矢量数据库查询系统将在更多领域得到应用。
|
11天前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之dataworks为子账号创建DataWorks访问密钥的基本步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
27 0
|
11天前
|
DataWorks 安全 数据库
DataWorks产品使用合集之在DataWorks中,使用Power BI Desktop来连接Hologres数据库需要设置白名单如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
32 2
|
12天前
|
关系型数据库 MySQL 测试技术
【专栏】PostgreSQL数据库向MySQL迁移的过程、挑战及策略
【4月更文挑战第29天】本文探讨了PostgreSQL数据库向MySQL迁移的过程、挑战及策略。迁移步骤包括评估规划、数据导出与转换、创建MySQL数据库、数据导入。挑战包括数据类型不匹配、函数和语法差异、数据完整性和性能问题。应对策略涉及数据类型映射、代码调整、数据校验和性能优化。迁移后需进行数据验证、性能测试和业务验证,确保顺利过渡。在数字化时代,掌握数据库迁移技能对技术人员至关重要。
|
13天前
|
数据库 开发者 UED
优化数据库性能的六大策略
在当今数字化时代,数据库性能对于系统的稳定运行至关重要。本文将介绍六大策略,帮助开发者优化数据库性能,提升系统效率和用户体验。