jwarkentin / flaky
用于生成短、固定长度、顺序UUID的模块,非常适合在各种基于树的结构中索引
v0.0.9
2016-12-20 00:07 UTC
Requires
- ext-gmp: *
This package is not auto-updated.
Last update: 2024-09-14 18:31:41 UTC
README
Node.js模块,用于生成短、固定长度、顺序UUID,非常适合在各种基于树的结构中索引。它可以在服务器/实例之间(即使在同一台机器上的多个实例)无需协调的情况下创建ID,可以放心使用而不会发生冲突,同时仍保持大部分顺序且始终递增。它也抵抗系统时钟可能的大时间跳跃(容忍度取决于您生成10万个ID所需的时间)。
所有Flaky ID都是使用64位数据创建的。Flaky还提供了很大的灵活性,可以让你选择想要的基编码和编码字符集。默认情况下,它会进行基64编码并使用标准字符集。
动机
我想有一个UUID生成器,它可以与常见的数据库索引技术配合使用,以提供索引和查找的最佳性能,同时在空间效率(即短ID)方面也很高效。这是基于我对Elasticsearch BlockTree索引工作原理的理解设计的,如Mike McCandless所解释(http://blog.mikemccandless.com/2014/05/choosing-fast-unique-identifier-uuid.html)。它松散地基于flake ID的概念。在我的基准测试中,这些ID已被证明比Elasticsearch分配的标准ID更快、更高效。它也应该与MySQL的InnoDB索引格式很好地配合使用(尽管我没有测试过)。
要了解更多关于flake ID的信息,请参阅
- http://www.boundary.com/blog/2012/01/flake-a-decentralized-k-ordered-unique-id-generator-in-erlang/
- 在HN上也有一些值得注意的评论:https://news.ycombinator.com/item?id=3461557
- http://engineering.custommade.com/simpleflake-distributed-id-generation-for-the-lazy/
- 页面底部的“使用auto ID或选择一个好ID”部分:https://elastic.ac.cn/blog/performance-considerations-elasticsearch-indexing/
更具体地针对Elasticsearch,请参阅