我正在编写一个提供facebook API的应用程序;分享,比如等。我在数据库中保留了我的应用程序中的所有共享对象,如果已经共享,我不想共享同一个对象。
考虑到我将在不同的服务器上部署应用程序,可能会出现两个实例都试图将同一个对象插入表的情况。
如何通过完全阻止应用程序来管理此并发问题?我的意思是两个线程将尝试插入相同的对象,他们必须同步,但他们不应该阻止第三个线程,它插入完全不同的对象。
答案 0 :(得分:0)
如果有从数据本身获取数据输入主键的方法,数据库将自行解决此类并发问题 - 第二次插入将失败,主键约束违反'。也许,Facebook API提供的数据已经有了一些独特的ID?
或者,您可以考虑一些分布式锁定解决方案,例如,基于Hazelcast或类似的数据网格。这将允许不同JVM共享记录状态,因此可以避免不需要的INSERTS
。