常用的几种全局唯一id方案

数据部
• 阅读 3287
  1. mysql自增

    优点:简单

    缺点:扩容复杂,业务增大时数据迁移困难

  2. 基于时间戳和随机字符串

    优点:对人比较友好

    缺点:随机数生成不易控制

  3. UUID

    优点:简单粗暴,性能好,全球唯一,基本不会有性能问题

    缺点:占用空间大,无序,查询效率低

    变种:COMB算法

  4. redis自增

    优点:简单,易实现,数字ID天然有序

    缺点:依赖redis,考验redis性能

  5. Twitter-Snowflake算法

    优点:

    • 不依赖数据库,性能高,单机有序
    • 灵活,支持多节点部署

缺点:

    • 无法做到全局递增
    1. 微信id生成算法

      万亿级调用下的优雅:微信序列号生成器架构设计及演变

      • 类似于批量生成多个id,性能好,避免每次访问库的压力
      • 可能会有单点故障,服务重启ID不连续
    2. 百度 - UidGenerator

      • 雪花算法变种
    3. Leaf——美团点评分布式ID生成系统- 美团技术团队
    4. wuid一个比 UUID 快百倍的唯一 ID 生成器
    5. vesta
    6. MongoDB — ObjectId
    本文由博客一文多发平台 OpenWrite 发布!
    点赞
    收藏
    评论区
    推荐文章
    Wesley13 Wesley13
    3年前
    SQL
    当数据库中数据量特别大的时候,查询的速度就比较慢,这时候需要添加索引,来提高查询速度。索引的优点1通过创建唯一索引,可以保证数据库表中每行数据的唯一性。2加快数据查询速度3在使用分组和排序进行数据查询时,可以显著的减少查询中分组和排序的时间索引的缺点1维护索引需要消耗数据库资源2索引需要占用磁盘空间,索引文件可能会比数据
    分布式id如何生成
    1.UUID生成通过网卡、时间、随机数来保证生成的唯一的字符串。优点:(1)本地生成,生成简单(2)速度快(3)高可用;缺点:(1)无序,如果存入mysq,影响B的操作性能,因为B树是需要排序的;(2)占用空间较大(36个
    Bill78 Bill78
    4年前
    python基础知识总结
    一、Python的优缺点优点:1.简单,易学,免费,开源2.高级语言,解释型语言3.可移植性,可拓展性,可读性4.面向对象,丰富的库缺点:1.执行效率慢2.GIL锁限制并发3.源代码加密困难二、Python的注释
    Wesley13 Wesley13
    3年前
    mysql自增id获取
    mysql自增id获取使用max函数:selectmax(id)fromtablename 优点:使用方便快捷。缺点:获取的不是真正的自增id,是表中最大的Id,如果有删除数据的话,那么该值和自增id相差比较大。如果有连表数据,有可能导致数据错乱。使用LAST\_INSERT\_ID
    Easter79 Easter79
    3年前
    Twitter的分布式自增ID算法snowflake (Java版)
    概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
    Stella981 Stella981
    3年前
    Redis 高可用及分片集群,说了你也不懂
    Redis简介Memcached:优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高Redis:优点:高性能读写、多数据类型
    Stella981 Stella981
    3年前
    Redis安装及前后置启动
    Redis简单介绍及在Linux上安装(这里测试用是版本:redis3.0.0.tar.gz)一:什么是Redis?redis就是C语言编写的一个高性能的键值存储(keyvalue)的非关系型数据库(NoSql)。二:非关系型数据库的优点与缺点优点:可以轻松地处理海量数据缺点:1.没有主外键,
    为什么mysql不推荐使用雪花ID作为主键
    作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
    分布式系统的主键生成方案对比 | 京东云技术团队
    UUID​UUID(通用唯一识别码)是由32个十六进制数组成的无序字符串,通过一定的算法计算出来。为了保证其唯一性,UUID规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。
    Vitess全局唯一ID生成的实现方案 | 京东云技术团队
    为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,Sn