APP开发业务 ID主键如何选
发布日期:2024-08-22 13:52 点击次数:144
媒介:APP开发业务
ID主键的选型看似相等小的事情,却影响着扫数这个词系统架构狡计的地基,以及后续的竖立爱戴代价。这篇著作咱们就来凝视评释一下ID主键的类型、各自优过失,以及选型提议。
ID主键的类型:
咱们竖立中常用的ID主键类型一般有以下3种:
主键类型 示例
数据库自增ID 1001
UUID 550e8400-e29b-41d4-a716-446655440000
雪花算法ID 1610219533249941504
各自优过失
1. 数据库自增ID (Auto-increment):
优点:
存储空间和性能:自增ID占用空间小,有序索引后果高。
简单:易于结束,数据库系统不错胜仗生成。
过失:
安全性:自增ID可能会败露业务信息,如通过ID不错推算出用户增长趋势。
推广性:依赖数据库,不易迁徙。散布式系统中难以保证唯独性。
指示提议:
明锐数据若是用自增ID,必须加数据权限过滤,谨防数据败露;
需要跟外部系统数据对接时慎用,自增ID无法保证唯独性,会加多复杂度;
2. UUID (Universally Unique Identifier):
优点:
全局唯独性:在散布式系统中,UUID不错保证全局唯独。
安全性好:不败露业务信息,因为UUID是赶快生成的。
不依赖数据库:不错在左右层生成,不依赖数据库。
过失:
存储空间和性能:存储空间较大(时常36),UUID无序导致索引性能不如有序ID
app开发爱戴未便:步地中(或数据库客户端)显现记载,必须集结创建本事排序身手有序
比如通过数据库解决器用排查问题检察数据时,记载显现是无序的,必须先按“创建本事”字段排序后再检察。通常,前端列表中显现时也需要先按“创建本事”排序后展示,这就需要很是给“创建本事”添加索引。而有序ID则不错胜仗以ID排序即等效于本事规则。
指示提议:
需要借助本事戳字段排序后取得有序适度,软件开发服务本事戳字段需要索引;
注:Diboot 低代码竖立框架 中的文献记载表收受的是UUID类型主键,谨防ID被算计,晋升安全性。
3. 雪花ID (Snowflake ID):
优点:
全局唯独性:相宜散布式系统,不错生玉成局唯独的ID。
高效性:集结了自增ID和UUID的优点,既有序又全局唯独,安全性也介于二者之间。
百位:2024177期-2024181期出号:45092,振幅为9点,分布比较分散,本期预计百位走大,参考8。
福彩3D历年第182期同期分别开出奖号:092、938、190、433、949、518、865、288、266、353、861、944、804、417、489、148、329、351、845、472、351、702,详细统计见下表:
过失:
依赖本事:依赖本事:依赖于本事戳,若是本事回拨或有扭曲影响ID的生成。
指示提议:
若是后端是Long型,序列化到前端时需要转String,不然会出现JS精度丢失问题;
提议收受String类型,幸免许多不必的调理,更好的适配数据集成中的其他类型ID;
注:Diboot 低代码竖立框架 中的系统表均收受的是String类型雪花ID的主键,晋升后果的同期也侧目了许多坑。
除了以上常用的ID类型APP开发业务,还有针对海量并发场景的散布式ID生成算法,如 好意思团的 Leaf,此处不外多先容。
发布于:江西省