db4o опыт?

голоса
31

Я в настоящее время опробовать db4o (Java-версия), и я довольно много, как то, что я вижу. Но я не перестаю удивляться, как это выполнить в реальной среде живой (web-). Кто-нибудь есть опыт (хорошие или плохие), чтобы разделить о запущенных db4o?

Задан 21/08/2008 в 22:12
источник пользователем
На других языках...                            


4 ответов

голоса
55

Бежим DB40 версию .NET в большом проекте клиент / сервер.

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

Тем не менее, вы действительно должны настроить свои объекты, чтобы получить этот вид деятельности. Например, если у вас есть список, содержащий большое количество объектов, активация db4o этих списков идет медленно. Есть несколько способов, чтобы обойти эту проблему, например, путем переворачивания отношения.

Другая боль является активация. При извлечении или удалить объект из db4o, по умолчанию он активирует все дерево объектов. Например, загрузка Foo будет загружать Foo.Bar.Baz.Bat, и т.д., пока не осталось ничего, чтобы загрузить. В то время как это хорошо с точки зрения программирования, производительность будет замедлять больше вложенности в ваших объектах. Для повышения производительности, вы можете сказать db4o сколько уровней в глубину, чтобы активировать. Это отнимает много времени, чтобы сделать, если у вас есть много объектов.

Другая область боли была поиска текста. поиск текста db4o является гораздо, гораздо медленнее, чем SQL полнотекстового индексирования. (Они вам скажу прямо на их сайте.) Хорошая новость заключается в том, что это легко установить текстовый поиск двигатель на вершине db4o. На нашем проекте, мы подключили Lucene.Net индексировать текстовые поля мы хотим.

Некоторый API не похож на работу, как, например ПолучитьПолеЗаголовок API, полезном при применении обновления базы данных. (Например, вы переименовали собственность, и вы хотите обновить существующие объекты в базе данных, необходимо использовать эти «отражение» API-интерфейсы для поиска объектов в базе данных. Другие интерфейсы, такие как [Index] атрибут надевает» т работа в стабильной версии 6.4, и вы должны вместо этого указать индексы, используя Configure (). Индекс ( «SomeField»), которая не сильно типизированных.

Мы стали свидетелями производительности деградировать большую базу данных. У нас есть база данных 1GB прямо сейчас, и все еще быстро, но не так быстро, как когда мы начали с небольшой базой данных.

Мы нашли еще один вопрос, где Db4O.GetByID закроет базу данных, если ID больше не существует в базе данных.

Мы нашли синтаксис Native Query (наиболее естественный, язык интегрированных синтаксис запросов) гораздо, гораздо медленнее, чем менее безвредных запросов SODA. Поэтому вместо того, чтобы печатать:

// C# syntax for "Find all MyFoos with Bar == 23".
// (Note the Java syntax is more verbose using the Predicate class.)
IList<MyFoo> results = db4o.Query<MyFoo>(input => input.Bar == 23);

Вместо этого хорошего кода запроса, вы должны уродливый запрос SODA, который является строкой на основе и не сильно типизированные.

Для .NET людей, они недавно представила LINQ-к-db4o поставщик, который предусматривает лучший синтаксис еще. Тем не менее, это еще предстоит увидеть, будет ли производительность всегда быть в неудовлетворительном с некрасивыми запросами SODA.

поддержка db4o была приличной: мы говорили с ним по телефону несколько раз и получили полезную информацию. Их пользовательские форумы находятся рядом с бесполезны, однако, почти все вопросы остаются без ответа. Их JIRA ошибка трекера получает много внимания, так что если у вас есть нытье ошибка, файл его на JIRA на это часто будет исправлена. (У нас было 2 ошибки, которые были исправлены, и еще один, который получил исправленную в пол-оценочный способом.)

Если все это не пугает вас, позвольте мне сказать, что мы очень довольны db4o, несмотря на проблемы, с которыми мы столкнулись. Производительность у нас уже сдувается некоторые рамки O / RM мы пробовали. Я рекомендую это.

обновить июля 2015 Имейте в виду, что этот ответ был написан еще в 2008 году В то время как я ценю upvotes, мир изменился с тех пор, и эта информация не может быть столь же надежными , как это было , когда она была написана.

Ответил 23/08/2008 в 20:03
источник пользователем

голоса
3

Большинство местных запросы могут и эффективно преобразуются в SODA запросы за кулисами , так что не следует делать различие. Использование NQ является предпочтительным , поскольку вы остаетесь в сферах сильного языка напечатанного. Если у вас есть проблемы с получением NQ использовать индексы , пожалуйста , не стесняйтесь отправлять вашу проблему в db4o форумов , и мы постараемся помочь вам.

Горан

Ответил 28/09/2008 в 11:10
источник пользователем

голоса
2

Основная проблема, которую я столкнулся с ней докладывает. Там просто не кажется, чтобы быть каким-либо образом запустить эффективные отчеты на основе источника данных db4o.

Ответил 18/09/2008 в 02:12
источник пользователем

голоса
0

Иуда, это звучит, как вы не используете прозрачные активации, которая является особенностью версии последней продукции (7.4)? Может быть, если вы определили, какую версию вы используете, как там могут быть и другие вопросы, которые в настоящее время решены в последней версии?

Ответил 05/10/2008 в 13:31
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more