2015-01-23 3 views
2

Я оцениваю несколько баз данных NoSQL, включая OrientDB. Я новичок OrientDB, пытаясь написать многопоточный тест, который подчеркивает транзакции OrientDB.Ошибка транзакции OrientDb

Вот код (имхо слишком долго, чтобы быть здесь включено): https://github.com/PeterKnego/nosql-benchmark/blob/master/orientdb/src/main/java/net/nosql_bench/OrientDbSimpleTransact.java

Это простой тест автономного, который использует ряд параллельных потоков, которые считывают сущность, увеличивает значение number поля и их сохранить сущность, все внутри транзакции.

Это создает много разногласий на одном объекте - вот и все. Это своего рода работа, чаще всего выявляет конфликт и должным образом откатывает транзакцию.

Я тестирую это на локально установленном OrientDB 2.0-rc2, клиент подключается к нему через протокол remote.

Любые идеи, почему иногда происходят столкновения транзакций, а иногда они проходят?

+0

Вашего ответа здесь [OrientDB многоуровневого управление версиями параллелизма] (https://github.com/orientechnologies/orientdb/wiki/Java-Multi-Threading#multi-version- контроль параллелизма) – zella

+0

К сожалению, это не так. В коде используются транзакции, описанные в документах. Проблема в том, что иногда это работает, а иногда и нет. –

ответ

1

В вашем случае я бы рекомендовал использовать пул . API ThinkerPop включает в себя заводскую реализацию как для документооборота, так и для графических соединений. Каждый раз, когда вы создаете новый поток, вы должны, вероятно, приобрести экземпляр в пуле соединений.

Для документов у вас есть

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

Смежные вопросы