OrientDB真的符合ACID吗?

时间:2016-01-19 02:22:25

标签: orientdb acid nosql

我正在研究OrientDB的学术研究。我们应该关注的一个重要部分是ACID-paradigma。

OrienDB手册说:

  

OrientDB是符合ACID标准的DBMS。

它还说:

  

创建属性时,OrientDB会检查数据的属性和类型。如果持久数据包含指定类型的不兼容值,则属性创建将失败。它不对持久数据应用任何其他约束。

所以外国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检查,那么可能会出现不一致的情况?

1 个答案:

答案 0 :(得分:2)

这是Document API的限制,没有检查RID一致性,因为当您删除文档时,查找链接到它的所有其他文档将意味着对数据库进行全面扫描,这通常需要很长时间去完成。 要解决此问题,可以在应用程序级别使用双向链接或管理链接一致性。