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