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

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

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

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

   这时,数据一般采用自增型主键,比如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月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
149 6
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
110 13
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
853 11
|
7月前
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
582 4
|
3月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
170 0
|
5月前
|
存储 算法 关系型数据库
数据库主键与索引详解
本文介绍了主键与索引的核心特性及其区别。主键具有唯一标识、数量限制、存储类型和自动排序等特点,用于确保数据完整性和提升查询效率;而索引通过特殊数据结构(如B+树、哈希)优化查询速度,适用于不同场景。文章分析了主键与索引的优劣、适用场景及工作原理,并对比两者在唯一性、数量限制、功能定位等方面的差异,为数据库设计提供指导。
|
7月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
12月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
12月前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####

热门文章

最新文章