速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

java技术培训机构哪里好

小谷哥

一文盘点,ZBC的应用场景与通缩场景

西柚子

物联网首选协议,关于MQTT你需要了解这些

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 消息传输

BATMAN:将双边注意力用于视频对象分割

Zilliz

计算机视觉

2023-02-13:力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号 它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群 其中连接 connections 是

福大大架构师每日一题

算法 rust 福大大

ChatGPT:“Hello Alluxio,我为你写了一首诗!”

Alluxio

presto 分布式, Alluxio 大数据 开源 ChatGPT

Innodb 的RR 是否彻底解决了幻读?

想要飞的猪

innodb 隔离级别 幻读

日日顺供应链|想要看清供应链发展趋势,先回答这三个问题!

联营汇聚

Multicoin Capital资本2023展望

股市老人

【漏洞真实影响分析】Apache Kafka Connect 模块JNDI注入(CVE-2023-25194)

墨菲安全

SCA 代码安全检测 软件供应安全

前端开发如何选择培训机构

小谷哥

前端培训机构哪家比较适合学习

小谷哥

文盘Rust -- 领域交互模式如何实现

京东科技开发者

rust 逻辑 交互 企业号 2 月 PK 榜 interactcli-rs

手写一个前端存储工具库

jump-jump

JavaScript typescript 缓存 性能优化 工具库

瓴羊Quick BI报表分析工具,专业数据分析人员的“神辅助”

对不起该用户已成仙‖

2023年1月国产数据库大事记-墨天轮

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

“唤醒”闲物、“童”心共享

最新动态

信息论绪论

timerring

信息论 信息论与编码

Smart Finance 热启动创世开启,参与质押瓜分SMART资产

鳄鱼视界

Smart Finance 热启动创世开启,参与质押瓜分SMART资产

股市老人

MQTT协议快速体验

EMQ映云科技

开发 物联网 IoT mqtt 企业号 2 月 PK 榜

热启动预示生态起航的Smart Finance,与深度赋能的SMART通证

股市老人

【Redis故障排查】「连接失败问题排查和解决」带你总体分析和整理Redis的问题故障实战开发指南及方案

洛神灬殇

redis 故障排查 2月日更 故障排查/诊断

ChatGPT是什么?怎么用?如何提效?怎么赚钱变现?

王中阳Go

深度思考 高效工作 学习方法 AI ChatGPT

某财税集团:使用进步的技术,对业务降本提效

OceanBase 数据库

数据库 oceanbase

架构7作业

梁山伯

热启动预示生态起航的Smart Finance,与深度赋能的SMART通证

鳄鱼视界

什么是极速文件传输,极速文件传输如何进行大文件传输

镭速

能取代90%人工作的ChatGPT到底牛在哪里

慕枫技术笔记

人工智能 后端 ChatGPT

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