2010-01-26 20 views
8

Estamos investigando ahora si debemos cambiar nuestro db postgresql a un db de Derby incrustado. Ambos usarían glassfish 3 para nuestra capa de datos. ¿Alguien tiene alguna opinión o conocimiento que pueda ayudarnos a decidir?Comparación de rendimiento de Derby vs PostgreSql

Gracias!

corregir: estamos escribiendo algunas pruebas de funcionamiento nosotros mismos ahora. Buscando respuestas más basado en el conocimiento de la experiencia/primera mano

+2

Mi predicción: correctamente ajustado PostgreSQL fumará Derby en absoluto, pero las consultas más triviales. ¿Por qué quieres alejarte de PostgreSQL? ¿Has pasado el tiempo para ajustar tu base de datos? – intgr

Respuesta

3

no han comparado directamente PostgreSQL para Derby. Sin embargo, habiendo usado ambos en diferentes circunstancias, he encontrado que Derby es altamente confiable. Sin embargo, deberá prestar atención a la configuración de Derby para asegurarse de que se adapte a las necesidades de su aplicación.

+1

+1. Fiabilidad sólida, bajo espacio de memoria y elasticidad de implementación (integrado, servidor de red, servidor de red + integrado) son sus mejores puntos fuertes. –

+0

Sé que Postgresql es más maduro db. Sin embargo, he estado usando Derby para una aplicación de procesamiento de db para trabajo pesado y no parece encontrar ninguna limitación desde el punto de vista del rendimiento, el tamaño y la confiabilidad. – donlys

1

Hay una serie de suites de pruebas de rendimiento que se incluyen como parte de la distribución del código fuente de Derby; los utilizan los desarrolladores de Derby para realizar sus propias pruebas de rendimiento de Derby. Por lo tanto, si necesita ejemplos de pruebas de rendimiento, o desea pruebas adicionales, podría considerar usarlas. Busque en el subdirectorio llamado java/testing/org/apache/derbyTesting/perf en la distribución fuente de Derby.

6

Derby sigue teniendo un rendimiento relativamente lento, pero ... dondequiera que vaya su aplicación Java, su servidor de base de datos funcionará, completamente independiente de la plataforma. Ni siquiera necesita pensar en instalar un servidor de bases de datos donde se está copiando su aplicación de Java.

Estaba usando MySQL con Java, pero tener una implementación incrustada de su servidor de base de datos dentro de mi aplicación Java es simplemente impresionante y una productividad, libertad y flexibilidad sin precedentes.

Siempre tener un servidor de bases de datos incluido siempre y en cualquier lugar en cualquier plataforma para mí es simplemente el paraíso!

13

Sé que llego tarde para publicar una respuesta aquí, pero quiero asegurarme de que nadie cometa el error de utilizar Derby en cualquier base de datos de calidad de producción en el futuro. Me disculpo por adelantado por lo negativa que es esta respuesta. Estoy tratando de capturar los sentimientos negativos de todo un equipo de ingeniería en una breve respuesta de Q &.

Nuestra experiencia en el uso de Derby en muchas implementaciones de clientes pequeños y pequeños nos ha llevado a dudar seriamente de lo útil que es para todo menos para entornos de prueba.Algunos de los problemas que hemos tenido:

  • interbloqueos causadas por las extensiones de bloqueo - este es el más grande y pasa a un cliente una vez cada semana o dos
  • interrumpido E/S Derby causa a fallar absoluta de Solaris (puede que no sea un problema en otras plataformas) - tuvimos que construir una cuña para protegerlo de estas fallas
  • No se pueden manejar consultas complicadas que MySQL/PostgreSQL manejaría con facilidad
  • La ejecución de errores de la tabla provocó una tabla corrupta lo que requería que exportáramos la base de datos y luego la volviéramos a importar (no podíamos soltar la tabla dañada), y todavía perdido la tabla en el proceso - Gracias a Dios que teníamos una copia de seguridad
  • Sin LIMIT sintaxis
  • bajo rendimiento de las consultas complicadas
  • bajo rendimiento para grandes conjuntos de datos

Debido al hecho de que está incrustado, Derby es más un competidor de SQLite que de PostgreSQL, que es una base de datos de calidad de producción extremadamente madura que se usa para almacenar conjuntos de datos de varios petabytes en algunos de los sitios web más grandes del mundo. Si quiere estar listo para el crecimiento y no quiere que lo descubran depurando el código de la base de datos de otra persona, le recomendaría no usar Derby. No tengo ninguna experiencia con SQLite, pero no puedo imaginar que sea mucho menos confiable de lo que Derby ha sido para nosotros y sigue siendo tan popular como lo es.

De hecho, estamos en el proceso de migrar a PostgreSQL ahora.

Cuestiones relacionadas