java - 使用票证服务器生成主 ID?

标签 java mysql web-applications primary-key

我正在 Java 和 Cassandra 之上构建分布式应用程序。要生成唯一的顺序 32 位和 64 位 ID,是一种类似于使用 Flickr's ticket servers 的方法。生成主 ID,一个好吗?我对此特别兴奋,因为它可以帮助我根据需要将 ID 的大小减少到 32 位或 64 位,否则 UUID 可能会达到 128 位。我不希望这些 ID 完全连续,但至少要增加!

然而,使用单个数据库服务器可能会引入单点故障,而这一点已被 Cassandra 消除。然而,这对于我们应用程序的初始阶段可能没问题。稍后我们可能会引入两个服务器来缓解这些问题。

这听起来是个好策略吗?简而言之,我们在一个应用程序中混合了 MYSQL 和 Cassandra。我知道,如果 mySQL 由于某种原因宕机,那么我们就不能单独使用 Cassandra。

我们已经研究过雪花等其他解决方案,但它并不完全符合我们的要求。

编辑:我正在就使用 MySQL 生成唯一主 ID 来为存储在 Cassandra 数据库中的数据/实体设置 key 是否是一种好方法寻求建议。像 Flickr 的 Ticket 服务器这样的方法有什么缺点(如果有的话)?

最佳答案

我不太喜欢尝试为代理键赋予意义(如果您希望它们随着时间的推移而增加,您就会尝试这样做)。如您所见,它使生成 key 的问题变得更加复杂。假设您希望键随着时间的推移而增加,以便您可以对数据进行排序,为什么不包含对象创建时间的时间戳并将其存储在数据存储中呢?这显着简化了 key 生成,并允许您使用随时间增加的 key 执行几乎所有操作,还有一个额外的好处,即对于必须维护您的代码的人来说,应该如何对对象进行排序是非常清楚的。

关于java - 使用票证服务器生成主 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144849/

相关文章:

java - Java中的各种类型的图像

java - 能够创建多个Spring单例实例

php - 连接数据库时防止SQL注入(inject)

javascript - AngularJS、MySQL、PHP、JSON - 数据库中未显示的数据

grails - Grails Controller 类错误

google-apps-script - ScriptApp.getService().getUrl() 的行为似乎已经改变

java - 如何从 eclipse juno 调用 lib.so

php - 为动态输入数组插入空值

java - 升级到 javaserver faces。轻松的任务?

java - 如何根据注释值动态创建类的实例?