我正在构建一个使用分布式NoSQL DB的Web应用程序。但是,为了为新实体生成Ids,我使用MySQL作为Flickr's ticket server生成主键:通过从存储的Ids中提取,保存在Web应用程序的应用程序层
我只是坚持让Ids的库存保持在应用程序层的想法,以便更新的实体可以很容易地以快速方式分配ID ,而不需要从数据库中逐一提取每个数据库。相反,我可以从数据库中提取大约1000个Ids,并使用它们,直到堆栈达到剩余Ids的一定限制时,我会从DB中抽取更多Ids以再次填充堆栈。
您的想法和想法,赞赏。
谢谢。你完全理解我的观点..!另外为什么即使有需要的堆栈,它也可能只是一个静态计数器,因为Ids的库存是连续的。 – 2011-03-12 09:37:48
那么这个ID必须是全球唯一的。所以你需要确保你使用的任何实现至少是线程安全的,并且全局一致。 “静态计数器”听起来不太好,因为它们通常不是线程安全的(取决于语言,上下文,原子性保证或缺失等)。但是有很多实现它的方法,不需要复杂的队列或堆栈类型结构。 (你可能不在线程环境中。) – Mat 2011-03-12 09:43:17