10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

为什么总是需要无意义的 ID?

  • 2019-12-27
  • 本文字数:1072 字

    阅读完需:约 4 分钟

为什么总是需要无意义的 ID?

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


标识符 ID 是我们作为软件工程师再熟悉不过的字段和概念了,我们经常打交道的 MySQL 就经常使用 ID 作为主键,ID 在软件工程甚至生活中都是一个非常常见的概念,我们为什么总是需要在业务或者系统中引入『无意义』的 ID 呢,在这里先来看两个有意义的 ID:


  • 日常生活中使用的 18 位身份证号;

  • 支付票据上面的 20191002XXXXXXX


上述的两个 ID 是否会有重复的可能?这对于今天想要分析和讨论的事情密切相关,在这篇文章中作者就会分析『为什么总是需要无意义的 ID』。

概述

我们首先需要解决的问题是 ID 到底是什么,ID 一般会被认为是 identifier 的缩写,在 Wikipedia 上我们能够找到这样的定义:


An identifier is a name that identifies (that is, labels the identity of) either a unique object or a unique class of objects, where the “object” or class may be an idea, physical [countable] object (or class thereof), or physical [noncountable] substance (or class thereof). The abbreviation ID often refers to identity, identification (the process of identifying), or an identifier (that is, an instance of identification). An identifier may be a word, number, letter, symbol, or any combination of those.


标识符(identifier)就是一个可以唯一识别一个对象或者物体的名称,被识别的对象可能是一些想法、物理上可数的对象或者物理上的不可数物质。它的前缀 ID 经常被用来表示身份、鉴定过程或者标识符,其中的标识符可能是一个单词、数字、字母、符号或者上述元素的任意组合。


在标识符的定义中我们需要特别注意的是『唯一』这个词,这个词是其定义中最关键的信息,标识符一定能够帮助我们识别唯一一个的对象或者物体,如果它不能实现这个作用,就不是标识符。唯一这个词帮助我们确定了标识符的特性,也为我们后面的分析过程铺平了道路。

设计

在这一节中我们将开始分析为什么很多业务或者场景中都需要一个唯一 ID,例如:消息队列、TCP 通信等场景,我们可以将这一问题归结到两个原因上:


  • 需要通过唯一的标识符对数据或者事件进行识别或者去重;

  • 只有无意义的标识符才会绝对唯一的,任何携带其他信息的标识都可能重复;


本文转载自 Draveness 技术博客。


原文链接:https://draveness.me/whys-the-design-meaningless-identifier


2019-12-27 11:33946

评论

发布
暂无评论
发现更多内容

望繁信科技创始人索强出席2022福布斯中国·青年海归菁英100人评选颁奖典礼

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 望繁信科技

Claude 大更新,AI 可模仿人类访问电脑;月之暗面招募微软亚研院谭旭,研发类 GPT- 4o 的端到端语音模型

声网

可观测日北京|观测云:可观测性需要做到“三个一”

观测云

观测云

微博热搜API:实时数据获取与处理

幂简集成

API 微博

MatrixOne 助力 StoneCastle 打造高性能金融分析系统

MatrixOrigin

数据库 金融 HTAP

HarmonyOS NEXT华为音乐焕新升级,打造高品质沉浸式“音乐厅”

最新动态

《使用Gin框架构建分布式应用》阅读笔记:p127-p142

codists

golang gin 编程人 codists

低代码开发:数字化转型,轻松“点”到为止!

不在线第一只蜗牛

低代码

第71期 | GPTSecurity周报

云起无垠

喜报丨时序数据库 IoTDB 荣获“创客北京 2024”创新创业大赛专项赛优胜奖

Apache IoTDB

ETLCloud搭配MySQL | 让关系型数据库更智能

谷云科技RestCloud

MySQL 数据库 sql ETL 数据集成

下一代 AI 陪伴 | 平等关系、长久记忆与情境共享 | 播客《编码人声》

声网

征程 6 环视快启 sample

地平线开发者

自动驾驶 算法

Apache Calcite 快速入门指南

端小强

Calcite

免费报名!第五届“医疗大数据学术交流及 Datathon 活动”诚邀您的参加

ModelWhale

揭秘1024程序员节彩蛋:致敬鸿蒙生态一日千里的幕后英雄

最新动态

麦杰科技携手小伙伴,一起做那些“难而正确的事”

麦杰研究院

2025深圳国际耐火材料及工业陶瓷展会(6月)

秋硕展览

指标工厂赋能数据资产,实现标准化管理与高效利用

奇点云

大数据 互联网 数据资产 制造业

氢健康用品展|2025第36届广州国际大健康博览会

秋硕展览

系统数据安全解决方案(医疗行业Word原件)

金陵老街

信息安全 数据安全 数据互联互通

软件需求分析报告完整版(软件项目套用原件)

金陵老街

软件设计 需求分析 软件需求设计

2025滋补品展-2025第六届深圳国际保健养生展会

秋硕展览

适老化产品展|2025广州国际老年人残疾人辅具展会

秋硕展览

浅谈活动中台系统技术债管理实践

vivo互联网技术

技术债 效能提升 项目质量 系统稳定

为什么总是需要无意义的 ID?_语言 & 开发_Draveness_InfoQ精选文章