Сравнение производительности Derby и PostgreSql - PullRequest
11 голосов
/ 26 января 2010

Мы сейчас исследуем вопрос о том, нужно ли переключать нашу базу данных postgresql на встроенную базу данных Derby. Оба будут использовать glassfish 3 для нашего слоя данных. У кого-нибудь есть какие-либо мнения или знания, которые могут помочь нам решить?

Спасибо!

edit: мы сами сейчас пишем несколько тестов производительности. Поиск ответов, основанных на опыте / знаниях из первых рук

Ответы [ 6 ]

14 голосов
/ 12 июня 2013

Я знаю, что опоздал, чтобы опубликовать здесь ответ, но я хочу убедиться, что никто не сделает ошибку, используя Derby в будущем для любой базы данных производственного качества. Заранее извиняюсь за то, насколько отрицательным является этот ответ - я пытаюсь уловить дурные чувства всей команды инженеров в кратком ответе на вопросы и ответы.

Наш опыт использования Derby во многих небольших клиентских развертываниях заставил нас серьезно усомниться в том, насколько он полезен для чего-либо, кроме тестовых сред. У нас были некоторые проблемы:

  • Дедлоки, вызванные эскалацией блокировок - это самая большая проблема, которая случается с одним клиентом примерно раз в неделю или две
  • Прерванные операции ввода-вывода приводят к тому, что Derby сразу выходит из строя на Solaris (возможно, это не проблема на других платформах) - нам пришлось создать прокладку для защиты от этих сбоев
  • Не может обрабатывать сложные запросы, которые MySQL / PostgreSQL легко обрабатывает
  • Ошибка в журнале транзакций привела к повреждению таблицы, что потребовало от нас экспорта базы данных и ее повторного импорта (не удалось просто удалить поврежденную таблицу), и мы все еще потеряли таблицу в процессе - слава богу, у нас была резервное копирование
  • Нет LIMIT Синтаксис
  • Низкая производительность для сложных запросов
  • Низкая производительность для больших наборов данных

Из-за того, что он встроен, Derby является более конкурентом SQLite, чем PostgreSQL, который является чрезвычайно зрелой базой данных производственного качества, которая используется для хранения многопетабайтных наборов данных некоторыми из крупнейших веб-сайтов в мир. Если вы хотите быть готовыми к росту и не хотите, чтобы вас отлавливали при отладке чужого кода базы данных, я бы рекомендовал не использовать Derby. У меня нет никакого опыта работы с SQLite, но я не могу себе представить, что он гораздо менее надежен, чем Дерби, для нас, и все еще так же популярен, как и он.

Фактически, мы сейчас находимся в процессе портирования на PostgreSQL.

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

Дерби все еще относительно медленен в производительности, но ... куда бы вы ни отправляли ваше Java-приложение, ваш сервер баз данных полностью независим от платформы. Вам даже не нужно думать об установке сервера БД, на который копируется ваше Java-приложение.

Я использовал MySQL с Java, но встроенная реализация вашего сервера баз данных, расположенная прямо в моем приложении Java, просто потрясающая и беспрецедентная производительность, свобода и гибкость.

Всегда иметь сервер БД всегда и везде на любой платформе для меня - просто рай !!!

3 голосов
/ 14 октября 2010

Если посмотреть на сайт статистики по базам данных H2, стоит ознакомиться с последующим обсуждением, которое идет в пользу Дерби, по сравнению с выводами H2. http://groups.google.com/group/h2-database/browse_thread/thread/55a7558563248148?pli=1

3 голосов
/ 26 января 2010

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

1 голос
/ 26 января 2010

Существует ряд тестов производительности, которые включены как часть самого дистрибутива исходного кода Derby; они используются разработчиками Derby для проведения собственного тестирования производительности Derby. Поэтому, если вам нужны примеры тестов производительности или вам нужны дополнительные, вы можете рассмотреть возможность их использования. Посмотрите в подкаталог с именем java / testing / org / apache / derbyTesting / perf в дистрибутиве исходного кода Derby.

1 голос
/ 26 января 2010

Некоторые статистические данные с сайта базы данных H2 здесь: http://www.h2database.com/html/performance.html

...