写点什么

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

评论

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

合成数据加速机器视觉学习 合成数据即将改变人工智能。如今,机器学习被用于各种基于视觉的

3D建模设计

机器学习 机器视觉 合成数据 合成数据生成

目前软件定制app开发方式主要是那种?

Geek_16d138

app定制开发 软件开发定制

虚拟服务器的应用场景

Geek_f19a80

服务器

Macos网络文件安全共享工具:Dropshare 5 「支持M1」

彩云

Dropshare 5

Util应用框架核心(二)- 启动器

何镇汐

开源 后端

Util应用框架基础(三)- 对象到对象映射

何镇汐

开源 后端

Things 3 for Mac(日程和任务管理工具)

展初云

Mac软件 任务管理软件 待办记事软件 Things

Macos人工智能转录工具:AI Transcription for mac激活版 支持M1/M2

加油,小妞!

AI Transcription 人工智能语音转录工具

Mac电脑窗口辅助管理推荐 Magnet激活中文版

胖墩儿不胖y

Mac软件 窗口管理工具 窗口辅助软件

Get Backup Pro 3 注册密钥激活 附 安装教程 支持M1

彩云

数据备份 Get Backup Pro 3

Util应用框架基础(一)依赖注入

何镇汐

开源 后端

Util应用框架基础(四)- 验证

何镇汐

开源 后端

小程序是什么?如何开发小程序?

Geek_16d138

小程序开发,软件开发

一文读懂分布式 NFT数据网络 Bitscrunch

股市老人

Get Backup Pro 3 注册激活版 附 完整安装教程 支持M1

加油,小妞!

数据恢复 Get Backup Pro 3

英特尔CEO:将按计划或提前完成“四年五个制程节点”,明年将公布新计划

E科讯

Mac电脑触控板增强软件 Bettertouchtool激活中文版

mac大玩家j

Mac软件

Util应用框架核心(一)- 服务配置

何镇汐

开源 后端

鸿蒙组件化构建

SkyFire

鸿蒙 OpenHarmony

最高2000万元扶持!2024 年度宁波市甬江人才工程公告

科兴未来News

宁波甬江 甬江工程 人才政策 创业政策 创业资源

Util应用框架基础(二)- 面向切面编程(AOP)

何镇汐

开源 后端

运行ps\ai弹出This non-genuine Adobe app will be disabled soon,尝试解决办法

展初云

adobe Mac软件

完整的APP开发流程|软件定制

Geek_16d138

app定制开发 软件开发定制

tools-重命名

Util应用框架核心(三)- 服务注册器

何镇汐

开源 后端

Macos音乐制作工具:Ableton Live 11 Suite 附 完整安装教程

繁星

音乐制作 Ableton Live 11

Inklet for Mac(触控板绘画工具)

展初云

Mac软件 触控板增强 绘画工具

Util应用框架基础(五)- 异常处理

何镇汐

开源 后端

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