2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

为什么总是需要无意义的 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:33889

评论

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

LED透明屏为什么能透明?

Dylan

AR vr 虚拟 LED显示屏 led显示屏厂家

华为云HBase冷热分离最佳实践

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号9月PK榜

低代码引擎 TinyEngine 正式发布!

Kagol

开源 前端 低代码

艺术与区块链的融合—NFT开发的创意之旅

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

【有奖体验】轻点鼠标,让古籍数字化“重生"

Serverless Devs

Serverless 云原生 托管 AIGC

文心一言 VS 讯飞星火 VS chatgpt (100)-- 算法导论9.3 6题

福大大架构师每日一题

福大大架构师每日一题

噢耶!字节后端Offer,拿到了!

王中阳Go

Go 面试题 面经 校招 大厂面经

F5为OpenTelemetry项目提供降本增效的技术支持

科技热闻

软件测试/测试开发丨利用人工智能ChatGPT自动生成PPT

测试人

人工智能 软件测试 PPT ChatGPT

国产化运维安全审计系统哪家好?支持信创吗?有哪些功能?

行云管家

国产化 安全运维 运维审计 国产化平台

支持国产基础硬件的云管平台哪家好?为什么?有哪些功能?

行云管家

云计算 云安全 云管平台 行云 云成本

高级编程计算工具MATLAB R2023a激活中文版附密钥

胖墩儿不胖y

Mac软件 数学计算工具

NFTScan | 09.18~09.24 NFT 市场热点汇总

NFT Research

NFT\

一文带你实现云上部署轻量化定制表单Docker

华为云开发者联盟

开源 云原生 华为云 华为云开发者联盟 企业号9月PK榜

开源项目专访 | XuperCore——让信任的链接更加便捷

开放原子开源基金会

GPT 被曝重大缺陷;腾讯侦破国内首个 AI 游戏外挂;特斯拉人形机器人再进化丨 RTE 开发者日报 Vol.56

声网

【PPT下载】杭州 Atlassian 社区四周年活动

跟YY哥学Jira

Jira ACE #研发效能 Atlassiam Jira Service Management

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