Как db4o поддерживает параллелизм и транзакции? - PullRequest
0 голосов
/ 24 марта 2011

Мы ищем db40 для большого сайта электронной коммерции, использующего Java на стороне сервера.Параллелизм и транзакционная поддержка очень важны для нас.Когда покупатель покупает товар, нам нужно заблокировать товар и объекты покупателя, чтобы обновить историю запасов и покупок, соответственно, в одной транзакции.Это возможно с db4o?Я хочу убедиться, что он поддерживает транзакции с несколькими объектами.

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Здесь уже есть похожие вопросы, например one . И мой ответ более или менее одинаков.

О веб-сайте электронной коммерции большого объема: db4o никогда не создавался как большая база данных большого объема, а скорее для встроенных вариантов использования, таких как настольные и мобильные приложения. Ну, это зависит от того, что означает «большой объем». Я предполагаю, что это означает сотни или одновременные транзакции. Это определенно выходит за рамки db4o.

Параллелизм и поддержка транзакций. Ядро db4o по-прежнему является однопоточным и поэтому может обслуживать только небольшое количество параллельных операций. db4o поддерживает транзакции с изоляцией фиксации чтения . Это означает, что транзакция может видеть только зафиксированное состояние других транзакций. На практике это очень слабая гарантия.

К вашему примеру: вы можете обновить покупку товара и потребителя за одну транзакцию. Однако другая транзакция может обновить любой из этих объектов и зафиксировать. Затем выполняющаяся транзакция, которая уже прочитала некоторые объекты, может выполнить вычисления со старым значением и сохранить его. Так что слабая изоляция «портит» ваше состояние. Вы можете использовать блокировки, чтобы предотвратить это, но db4o не имеет какого-либо приятного механизма блокировки объектов. И это приведет к дальнейшему снижению производительности.

В целом, я думаю, вам, вероятно, нужна «большая» база данных, которая лучше поддерживает параллелизм и обработку транзакций.

0 голосов
/ 25 марта 2011

Похоже, вам нужно использовать семафоры db4o .

...