我正在研究 OrientDB 进行学术研究。我们应该关注的一个重要部分是 ACID 范式。
OrienDB 手册说:
它还说:
因此,如果指向现有记录,则外国 RID 将不会检查?如果是这样,如果 C 无效,为什么 Orient ACID 兼容?
例子:
有具有属性 Blog.author LINK Writer 的 Writer 和 Blog 类。
Writer 中只有一条 RID=#12:0 的记录。
在关系数据库中,此插入应发生错误:
Insert into Blog CONTENT {"author" : "#12:1"}
没有 RID=#12:1 的记录,但是 OrientDBh 没有出现错误。即使在使用 Java API 的事务中:
ODatabaseDocumentTx db = new ODatabaseDocumentTx(...);
ODocument newBlog = new ODocument("Blog");
newBlog.field("author", new ORecordId(12,1) );
try{
db.begin();
newBlog.validate();
newBlog.save();
db.commit();
}
catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
db.rollback();
}
db.close();
}
那么我是否有很大的误解,或者如果没有外国 RID 检查以及不一致的可能性,为什么 OrientDB ACID 兼容?
最佳答案
这是 Document API 的一个限制,没有检查 RID 一致性,因为当您删除一个文档时,找到链接到它的所有其他文档意味着对数据库进行全面扫描,这通常需要很长时间才能完成。
为了解决这个问题,有双向链接或在应用程序级别管理链接一致性。
关于orientdb - OrientDB 真的符合 ACID 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34867509/