引领未来的唯一标识符:Ecto.ULID
ecto-ulidEcto ULID项目地址:https://gitcode.com/gh_mirrors/ec/ecto-ulid
Ecto.ULID 是一个实现了ULID(Universally Unique Lexicographically Sortable Identifier)的Ecto.Type
库,它是对Ecto.UUID
的一种强大替代。无论在Ecto 2.x还是3.x中,它都与PostgreSQL和MySQL兼容,而且不支持Ecto 1.x。
项目介绍
ULID是一种128位的唯一标识符,与UUID兼容,因此可以直接存储在数据库的uuid
列中。Ecto.ULID设计的目标是在保持兼容性的同时提供更高的效率和更佳的排序特性。它的主要功能包括以Base32或二进制格式生成ULID,基于给定时间戳生成ULID,以及在作为主键时自动产生ULID等。
项目技术分析
Ecto.ULID强调性能优化,通过借鉴Ecto.UUID
中的高效技巧,大多数操作都能实现亚微秒级的时间性能。附带的基准测试套件可通过运行mix bench
进行本地性能测试,确保其在大量事件处理场景下的高性能表现。
AMD Ryzen Threadripper 1950X平台上的基准测试结果显示:
benchmark name iterations average time
cast/1 10000000 0.25 µs/op
dump/1 10000000 0.50 µs/op
load/1 10000000 0.55 µs/op
bingenerate/0 10000000 0.93 µs/op
generate/0 1000000 1.55 µs/op
应用场景
Ecto.ULID适用于任何需要全局唯一且可排序标识符的场合,如日志记录、分布式系统中的任务跟踪,甚至是物联网设备的身份识别。由于其与UUID的兼容性,可以无缝地替换现有的UUID系统。
项目特点
- 兼容性:与Ecto 2.x和3.x,Elixir 1.4及更高版本,以及PostgreSQL和MySQL数据库完美融合。
- 易用性:使用方式与
Ecto.UUID
类似,只需简单的配置即可将ULID用作模型的主键。 - 高性能:优化的算法使其在高吞吐量环境中表现出色。
- 灵活性:允许自定义生成策略,并能以Base32字符串或二进制形式生成和解析ULID。
开始使用
要安装Ecto.ULID,只需将它添加到你的mix.exs
文件依赖列表中:
defp deps do
[
{:ecto_ulid, "~> 0.2.0"}
]
end
迁移和模式定义也十分简单,参考项目的API文档获取更多信息。
Ecto.ULID 是提升你项目中唯一标识管理的利器,立即加入并体验它带来的便利和效率提升吧!更多详细信息,请参阅项目文档。
版权 © 2018 The RealReal, Inc.
发布于 MIT 许可证。详情见许可证文件。
ecto-ulidEcto ULID项目地址:https://gitcode.com/gh_mirrors/ec/ecto-ulid