从存储在 MYSQL 中的 C# 生成唯一 ID
Posted
技术标签:
【中文标题】从存储在 MYSQL 中的 C# 生成唯一 ID【英文标题】:Generate Unique Id from C# stored in MYSQL 【发布时间】:2014-12-17 22:48:37 【问题描述】:我需要为来自 c# 应用程序的记录生成 ID(以字符串为前缀的数字序列)并将其存储在 mysql 中,而当需要创建另一条记录时,会获取先前创建的记录 ID,它是递增。
我的问题是,当应用程序被多个用户使用时,我们如何保证不会同时访问同一个 id。此外,我假设我们将需要一些锁定机制,如果需要,那么实现它的最佳方法是什么。
谢谢,
【问题讨论】:
【参考方案1】:您需要一些策略来确保协调所有客户端对“下一个 ID”的请求。
在数据库级别,这通常由序列处理。有关在 MySQL 中模拟序列的讨论,请参阅
MySQL equivalent of Oracle's SEQUENCE.NEXTVAL
C# 应用程序将查询 MySQL 中的序列以获取下一个可用数字。请注意,并不能严格保证会分配所有编号。例如,如果 C# 应用程序获得下一个序列号但崩溃了,则该编号将被“分发”但最终不会被使用。
如果您不想让数据库成为协调点,则需要其他东西。在不了解您的架构的情况下,很难提出更好的选择。
如果 ID 可以很长并且不需要连续,只需唯一,您可以使用 GUID(实际上是 128 位数字)。
【讨论】:
以上是关于从存储在 MYSQL 中的 C# 生成唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章
按照 C# 中的“digitStringDigit”等特定模式生成唯一 ID
在 PL-SQL 存储过程中为 XML 中的每个段生成唯一 ID
如何在 Ruby on Rails 4 中为 post 生成唯一的随机 id?