OrientDb交易错误

时间:2015-01-23 18:53:42

标签: java transactions orientdb

我正在评估几个NoSQL数据库,包括OrientDB。我是OrientDB的新手,试图编写一个强调OrientDB事务的多线程测试。

以下是代码(imho太长,不能包含在这里):https://github.com/PeterKnego/nosql-benchmark/blob/master/orientdb/src/main/java/net/nosql_bench/OrientDbSimpleTransact.java

它是一个简单的独立测试,它使用许多读取实体的并行线程,增加number字段的值,并在事务中保存实体。

它在一个实体上产生了很多争论 - 这就是重点。它有点工作,大部分时间检测争用并正确回滚事务。

我在本地安装的OrientDB 2.0-rc2上对此进行测试,客户端通过remote协议连接到它。

有时为什么有时会检测到事务冲突的想法,有时它们会通过?

1 个答案:

答案 0 :(得分:1)

在您的情况下,我建议您使用连接池。 ThinkerPop API包括文档和图形连接的工厂实现。每次创建新线程时,您都应该获取连接池的实例。

对于您拥有的文件

ODatabaseDocumentPool pool = new ODatabaseDocumentPool("plocal:/temp/mydb");
OrientGraph g = new OrientGraph(pool.acquire());

对于图形数据库,它甚至更简单

OrientGraphFactory factory = new OrientGraphFactory("plocal:/temp/mydb").setupPool(1, 10);
OrientGraph txGraph = factory.getTx();

我尝试使用池连接到数据库以查看此错误是否仍然存在,并记得在使用完毕后关闭数据库实例。

请查看此链接http://orientdb.com/docs/2.0/orientdb.wiki/Graph-Factory.html