NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

graphpad prism for Mac(专业医学绘图工具) v10.2.0激活版

iMac小白

2024年,你应该知道的Linux新命令

伤感汤姆布利柏

Web3.0区块链技术开发方案:mint铭文铭刻制度开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

华为云软件开发生产线CodeArts前端DevOps实践

华为云PaaS服务小智

云计算 软件开发 华为云

听 GPT 讲 client-go 源代码 (12)

fliter

OpenAI Sora 关键技术详解:揭秘时空碎片 (Spacetime Patches) 技术

Baihai IDP

程序员 AI openai 白海科技 sora

CyberData镜像增量构建实践

数新网络官方账号

镜像增量 增量构建

AI技术革命下的平台能力升级:大模型时代的挑战与机遇

百度开发者中心

人工智能 大数据 计算 大模型

万界星空科技电子机电行业MES系统,2000元/年起

万界星空科技

制造业 mes 电子 电子mes 电子行业

2024年API经济的十大预测

幂简集成

API API经济

低代码平台源代码交付的重要性

互联网工科生

源码 软件开发 低代码

【前沿技术】 阿里开源搜索引擎Havenask的消息系统

阿里技术

搜索引擎 消息系统 Havenas 阿里开源

A Comprehensive Guide IPQ5018-IPQ6010-IPQ6018-IPQ8072-IPQ8074

wallyslilly

IPQ6010 ipq6018 IPQ8072

JavaScript 的新数组分组方法

EquatorCoco

JavaScript 数组 开发语言

Garden Planner for Mac(园林绿化设计软件) v3.8.58注册激活版

iMac小白

语言大模型的现状与未来趋势

百度开发者中心

深度学习 大模型 人工智能、

深耕人工智能技术创新,天翼云荣获AAAI 2024竞赛冠军

编程猫

不懂技术也能轻松搭建网站!美国虚拟主机的简易指南!

一只扑棱蛾子

虚拟主机 美国虚拟主机

SD-WAN如何降低运维成本、简化运维工作?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

Aiseesoft AnyCoord for Mac(GPS虚拟定位软件) v1.0.36激活版

iMac小白

漫谈数据分布可视化分析

百度Geek说

数据分析

专精特新“广东造” | 华大北斗:从“芯”出发 挺起产业“脊梁”

江湖老铁

听 GPT 讲 client-go 源代码 (11)

fliter

分享6个当下最受欢迎的 Vue UI 库

伤感汤姆布利柏

Metasequoia 4 for Mac(水杉3D建模器) v4.8.6e激活版

iMac小白

网络技术探析:SDN、SD-WAN、CDN和SDH的关联与演进

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

Google Adsense探索系列_第二弹(成功通过审核)

fkys

网站 Google 审核 adsense

什么是DevOps

华为云PaaS服务小智

DevOps 软件开发

真香!NineData SQL 开发全面适配 GaiaDB

NineData

数据库 百度云 数据源 NineData GaiaDB

Native Instruments Kontakt 7 for Mac v7.8.1激活版下载

iMac小白

跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)

汀丶人工智能

人工智能 自然语言处理 LLM 医疗大模型

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