由于一些模糊的原因,我们正在为我们的应用程序使用复制的orient-db。
我们可能会遇到两次创建单个记录的情况。以下是它的发生方式:
user_document
,它们具有用户ID和文档ID - 用户和文档都在另一个应用程序中管理并存储在另一个数据库中; user_document
和user_id
创建另一个document_id
。如果我理解正确,我们应该对这些ID对使用UNIQUE
索引,并依赖于分布式事务。
但是由于某些原因(我们在应用程序和数据库之间有另一个团队写入层),我们可能无法使用UNIQUE
,尽管它可能听起来很愚蠢:)
那么我们有什么机会?
例如,我们是否允许所有实例创建冗余记录,并在创建后立即选择user_id
和document_id
,如果找到多个,请删除具有lexicografically higher own {{1 }}?
答案 0 :(得分:0)
当然,你可以这样做。 您可以尝试使用类似
的内容DELETE FROM (SELECT FROM user_document where user_id=? and document_id=? skip 1)
但是,请注意,如果不创建索引,此方法可能会占用服务器上的一些额外资源,如果 user_document 有大量记录,则可能会显着减慢。