首页 文章

OrientDB真的符合ACID吗?

提问于
浏览
4

我是研究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 回答

  • 2

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

相关问题