我正在研究 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/

10-11 17:24