Carbonado es una capa de abstracción de persistencia extensible de alto rendimiento para aplicaciones Java, que proporciona una visión relacional de la tecnología de persistencia subyacente. La persistencia puede ser proporcionada por una base de datos relacional SQL accesible de JDBC, o puede ser un Berkeley DB. También se puede replicar completamente entre los dos.
Incluso si la base de datos de respaldo no se basa en SQL, Carbonado todavía admite muchas de las características centrales que se encuentran en cualquier tipo de base de datos relacional. Admite consultas, uniones, índices y realiza la optimización de consultas. Cuando se usa de esta manera, Carbonado no es simplemente una capa para una base de datos relacional, es la base de datos relacional. SQL no es un requisito para implementar bases de datos relacionales.
La definición de nuevos tipos en Carbonado implica crear una interfaz o clase abstracta que siga las convenciones de Java Bean. Se especifica información adicional insertando anotaciones especiales. Por lo menos, se requiere una anotación para especificar la clave principal. Las anotaciones son una característica disponible por primera vez en Java 5, y como resultado, Carbonado depende de Java 5.
En la superficie, puede parecer que los tipos de carbonado se definen como Pojos. La diferencia es que en Carbonado, los tipos son representaciones de objetos de las relaciones. No es una base de datos de objetos ni un puente relacional de objetos. Además, las definiciones de tipo de datos son simplemente interfaces, y no hay archivos de configuración externos. Todo el código para implementar los tipos es automático, pero no hay pasos de tiempo de compilación adicionales.
Carbonado puede lograr un alto rendimiento imponiendo una sobrecarga muy baja al acceder al almacenamiento real. La sobrecarga baja se logra en parte mediante la generación automática del código crítico de rendimiento, a través de la Biblioteca CoJen.
Carbonado 1.2 agrega muchas características nuevas, que se resumen aquí y en las notas de lanzamiento.
Características generales
Repositorios
Características de JDBC
Características del motor de consulta
Carbonado se divide en varios paquetes de paquetes para una mejor gestión de dependencia. La forma más fácil de comenzar con Carbonado es usar el repositorio respaldado por Berkeley DB JE. Para esto, debe obtener los paquetes de paquetes de Carbonado y Carbonados Dreepycatje.
El código de Carbonado Carbonado de Carbonado, depende de Apache Commons Logging, Joda-Time y Cojen.
CarbonadoseLepycatje contiene un repositorio para apoyar la edición SleepyCat/Oracle, Berkeley DB Java. El código Berkeley DB JE debe descargarse e instalarse por separado.
CarbonadoseLepyCatDB contiene un repositorio para soportar el SleepyCat/Oracle Berkeley DB. El código DB de Berkeley debe descargarse e instalarse por separado.
Mapeo suelto de la terminología de Carbonado a la terminología SQL:
Carbonado | Sql |
---|---|
Repositorio | base de datos |
Almacenamiento | mesa |
Definición almacenable | definición de tabla |
Instancia almacenable | fila de mesa |
propiedad | columna |
Consulta | Declaración Seleccionar/Eliminar |
Cursor | conjunto de resultados |
Las consultas de Carbonado no son tan expresivas como SQL selecciona. A diferencia de SQL, las consultas de Carbonado no admiten el procesamiento de datos o las funciones agregadas.
Carbonado admite la capacidad de consulta mínima que hace posible la selección automática del índice. Se pueden emular otras características disponibles en SQL en el código. Si la base de datos es local, esto no ofrece pérdida de rendimiento.
Las aplicaciones que deseen usar Carbonado solo como una capa conveniente sobre SQL no podrán usar funciones SQL completas. Carbonado de ninguna manera es un reemplazo para JDBC. Este tipo de aplicaciones puede elegir una mezcla de Carbonado y JDBC. Para facilitar esto, se admite el acceso a la conexión JDBC en uso por la transacción actual.
Los repositorios de Carbonado respaldados por Berkeley DB utilizan un optimizador de consulta basado en reglas para crear un plan de consulta. Los optimizadores basados en costos son generalmente mucho más efectivos, ya que estiman los costos de E/S. Carbonado tiene un optimizador basado en reglas principalmente porque es más fácil de escribir.
Carbonado es capaz de apoyar muchos tipos diferentes de tecnologías de persistencia. Sin embargo, se requiere un conjunto mínimo de características para proporcionar suficientes características de Carbonado para justificar el esfuerzo:
Idealmente, la tecnología de persistencia debería respaldar las transacciones. Si no es así, entonces sus transacciones deben implementarse mediante actualizaciones de la memoria. Las actualizaciones no se persisten hasta que se comete la transacción. Si se admiten actualizaciones de lotes atómicos, entonces el repositorio puede informar que admite un nivel de aislamiento de "lectura comprometida". De lo contrario, solo puede admitir el nivel más bajo de "leer no comprometido".
Características adicionales que son agradables, pero no se requieren estrictamente: