Carbonado est une couche d'abstraction de persistance extensible et haute performance pour les applications Java, offrant une vue relationnelle à la technologie de persistance sous-jacente. La persistance peut être fournie par une base de données relationnelle SQL accessible JDBC, ou il peut s'agir d'une DB de Berkeley. Il peut également être entièrement reproduit entre les deux.
Même si la base de données de support n'est pas basée sur SQL, Carbonado prend toujours en charge la plupart des fonctionnalités principales trouvées dans n'importe quel type de base de données relationnelle. Il prend en charge les requêtes, les jointures, les index et effectue une optimisation des requêtes. Lorsqu'il est utilisé de cette manière, Carbonado n'est pas simplement une couche d'une base de données relationnelle, c'est la base de données relationnelle. SQL n'est pas une exigence pour implémenter des bases de données relationnelles.
La définition de nouveaux types dans Carbonado implique la création d'une interface ou d'une classe abstraite qui suit les conventions Java Bean. Des informations supplémentaires sont spécifiées en insérant des annotations spéciales. À tout le moins, une annotation est nécessaire pour spécifier la clé primaire. Les annotations sont une fonctionnalité d'abord disponible dans Java 5, et en conséquence, Carbonado dépend de Java 5.
En surface, il peut sembler que les types de carbonado sont définis comme des pojos. La différence est que dans Carbonado, les types sont des représentations d'objets des relations. Ce n'est pas une base de données d'objets ni un pont commercial-relation. De plus, les définitions de types de données sont simplement des interfaces et il n'y a pas de fichiers de configuration externes. Tout le code pour implémenter des types est généré automatiquement, mais il n'y a pas de pas de temps supplémentaire.
Carbonado est capable d'obtenir des performances élevées en imposant des frais généraux très faibles lors de l'accès au stockage réel. Une faible surcharge est réalisée en partie par le code critique de performances générant automatiquement, via la bibliothèque Cojen.
Carbonado 1.2 ajoute de nombreuses nouvelles fonctionnalités, qui sont résumées ici et dans les notes de version.
Caractéristiques générales
Référentiels
Fonctionnalités JDBC
Caractéristiques du moteur de requête
Carbonado est décomposé en plusieurs forfaits pour une meilleure gestion de la dépendance. Le moyen le plus simple de commencer avec Carbonado est d'utiliser le référentiel soutenu Berkeley DB JE. Pour cela, vous devez obtenir les groupes de package Carbonado et CarbonadosleyPyCatje.
Le code carbonado carbonado du carbonado dépend de la journalisation des communes d'Apache, de Joda-time et de Cojen.
CarbonadosleepyCatje contient un référentiel pour soutenir Sleepycat / Oracle, Berkeley DB Java Edition. Le code Berkeley DB JE doit être téléchargé et installé séparément.
CarbonadosleepYPATDB contient un référentiel pour soutenir Sleepycat / Oracle Berkeley DB. Le code DB de Berkeley doit être téléchargé et installé séparément.
Mappage lâche de la terminologie de Carbonado à la terminologie SQL:
Carbonado | SQL |
---|---|
Dépôt | base de données |
Stockage | tableau |
Définition storable | Définition du tableau |
Instance storable | rangée de table |
propriété | colonne |
Requête | Déclaration de sélection / supprimer |
Curseur | Ensemble de résultats |
Les requêtes Carbonado ne sont pas aussi expressives que SQL sélectionnées. Contrairement à SQL, les requêtes Carbonado ne prennent pas en charge les fonctions de traitement des données ou d'agrégats.
Carbonado prend en charge la capacité de requête minimale qui rend possible la sélection automatique de l'index. D'autres fonctionnalités disponibles dans SQL peuvent être émulées dans le code. Si la base de données est locale, cela n'offre aucune perte de performances.
Les applications qui souhaitent utiliser Carbonado uniquement comme couche pratique sur SQL ne pourront pas utiliser les fonctionnalités SQL complètes. Carbonado n'est en aucun cas un remplacement de JDBC. Ces types d'applications peuvent choisir un mélange de Carbonado et JDBC. Pour faciliter cela, l'accès à la connexion JDBC utilisée par la transaction actuelle est pris en charge.
Les référentiels de Carbonado soutenus par Berkeley DB utilisent un optimiseur de requête basé sur des règles pour proposer un plan de requête. Les optimisateurs basés sur les coûts sont généralement beaucoup plus efficaces, car ils estiment les coûts d'E / S. Carbonado a un optimiseur basé sur des règles principalement parce qu'il est plus facile à écrire.
Carbonado est capable de soutenir de nombreux types de technologies de persistance. Un ensemble minimum de fonctionnalités est cependant nécessaire afin de fournir suffisamment de fonctionnalités de carbonado pour justifier l'effort:
Idéalement, la technologie de persistance devrait prendre en charge les transactions. Si ce n'est pas le cas, ses transactions doivent être implémentées en lotant les mises à jour par lots en mémoire. Les mises à jour ne sont pas persistées tant que la transaction n'est pas engagée. Si les mises à jour des lots atomiques sont prises en charge, le référentiel peut signaler en soutenant un niveau d'isolement de "Lire engagée". Sinon, il ne peut prendre en charge que le niveau le plus bas de "lire non engagé".
Caractéristiques supplémentaires qui sont agréables à avoir, mais pas strictement nécessaires: