我是研究OrientDB的学术研究.我们应该关注的一个重要部分是ACID-paradigma.
OrienDB手册说:
OrientDB is an ACID compliant DBMS.
它还说:
When you create a property, OrientDB checks the data for property and type. In the event that persistent data contains incompatible values for the specified type, the property creation fails. It applies no other constraints on the persistent data.
所以外国RID不会检查是否指向现有记录?如果是这样,如果C无效,为什么Orient ACID合规?
例:
有一个类Writer和Blog与属性Blog.author LINK Writer.
Writer中只有一条记录,RID =#12:0.
在Relational数据库中,此插入应该发生错误:
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();
}
那么我是否有一个很大的误解或者为什么OrientDB ACID是否合规,如果没有外国RID检查,那么可能性不一致?
最佳答案 这是Document API的限制,没有检查RID一致性,因为当您删除文档时,查找链接到它的所有其他文档将意味着对数据库进行全面扫描,这通常需要很长时间才能完成.
要解决此问题,可以在应用程序级别使用双向链接或管理链接一致性.