Carbonado ist eine erweiterbare, hohe Leistungsdauerabstraktionsschicht für Java -Anwendungen und bietet eine relationale Sicht auf die zugrunde liegende Persistenztechnologie. Die Persistenz kann durch eine von JDBC zugängliche SQL Relational Database bereitgestellt werden oder kann eine Berkeley -DB sein. Es kann auch zwischen den beiden vollständig repliziert werden.
Auch wenn die Backing -Datenbank nicht auf SQL basiert, unterstützt Carbonado immer noch viele der Kernfunktionen, die in jeder Art von relationaler Datenbank zu finden sind. Es unterstützt Abfragen, Verbindungen, Indizes und führt die Abfrageoptimierung durch. Carbonado ist nicht nur eine Schicht für eine relationale Datenbank, sondern die relationale Datenbank. SQL ist keine Voraussetzung für die Implementierung von relationalen Datenbanken.
Das Definieren neuer Typen in Carbonado beinhaltet die Erstellung einer Schnittstelle oder eine abstrakte Klasse, die den Java -Bohnen -Konventionen folgt. Zusätzliche Informationen werden durch Einfügen spezieller Anmerkungen angegeben. Zumindest ist eine Anmerkung erforderlich, um den Primärschlüssel anzugeben. Anmerkungen sind zuerst in Java 5 erhältlich, und infolgedessen ist Carbonado von Java 5 abhängig.
Auf der Oberfläche scheint es, dass Carbonado -Typen wie Pojos definiert werden. Der Unterschied besteht darin, dass in Carbonado Typen Objektdarstellungen von Beziehungen sind. Es ist weder eine Objektdatenbank noch eine Objektrelationsbrücke. Darüber hinaus sind Datentypdefinitionen einfach Schnittstellen, und es gibt keine externen Konfigurationsdateien. Alle Code zum Implementieren von Typen sind automatisch generiert, aber es gibt keine zusätzlichen Build-Zeitschritte.
Carbonado ist in der Lage, eine hohe Leistung zu erzielen, indem er beim Zugriff auf die tatsächliche Lagerung sehr niedrige Overheads auferlegt. Ein niedriger Overhead wird teilweise durch die automatische generierende leistungskritische Code über die Cojen -Bibliothek erreicht.
Carbonado 1.2 fügt viele neue Funktionen hinzu, die hier und in den Versionshinweise zusammengefasst sind.
Allgemeine Merkmale
Repositorys
JDBC -Funktionen
Abfragemotorenfunktionen
Carbonado wird in mehrere Paketbündel unterteilt, um ein besseres Abhängigkeitsmanagement zu erzielen. Der einfachste Weg, um mit Carbonado zu beginnen, besteht darin, das Berkeley DB JE -Backed Repository zu verwenden. Dafür müssen Sie die Paketbündel von Carbonado und Carbonadosleepycatje erhalten.
Carbonado Core Carbonado Code hängt von Apache Commons-Protokollierung, Joda-Time und Cojen ab.
Carbonadosleepycatje enthält Repository zur Unterstützung von Sleepycat/Oracle, Berkeley DB Java Edition. Berkeley DB JE -Code muss separat heruntergeladen und installiert werden.
CarbonadoSleepyCatDB enthält Repository zur Unterstützung von Sleepycat/Oracle Berkeley DB. Berkeley DB -Code muss separat heruntergeladen und installiert werden.
Lose Mapping von Carbonado Terminologie bis SQL -Terminologie:
Carbonado | Sql |
---|---|
Repository | Datenbank |
Lagerung | Tisch |
Speicherbare Definition | Tabellendefinition |
Speicheres Instanz | Tabellenzeile |
Eigentum | Spalte |
Abfrage | Anweisung auswählen/löschen |
Cursor | Ergebnisset |
Carbonado -Abfragen sind nicht so ausdrucksstark wie SQL. Im Gegensatz zu SQL unterstützen Carbonado -Abfragen keine Datenverarbeitung oder aggregierende Funktionen.
Carbonado unterstützt die minimale Abfragefunktion, die die automatische Indexauswahl ermöglicht. Andere in SQL verfügbare Funktionen können in Code emuliert werden. Wenn die Datenbank lokal ist, bietet dies keinen Leistungsverlust.
Anwendungen, die Carbonado nur als bequeme Schicht über SQL verwenden möchten, können keine vollständigen SQL -Funktionen verwenden. Carbonado ist keineswegs ein Ersatz für JDBC. Diese Art von Anwendungen können eine Mischung aus Carbonado und JDBC wählen. Um dies zu erleichtern, wird der Zugriff auf die von der aktuelle Transaktion verwendete JDBC -Verbindung unterstützt.
Die Carbonado-Repositorys, die von Berkeley DB unterstützt werden, verwenden einen regelbasierten Abfrageoptimierer, um einen Abfrageplan zu erstellen. Kostenbasierte Optimierer sind im Allgemeinen viel effektiver, da sie die I/A-Kosten schätzen. Carbonado hat einen regelbasierten Optimierer, vor allem, weil es einfacher zu schreiben ist.
Carbonado kann viele verschiedene Arten von Persistenztechnologien unterstützen. Es ist jedoch eine Mindestfunktionenmengen erforderlich, um genügend Carbonado -Funktionen bereitzustellen, um den Aufwand zu rechtfertigen:
Idealerweise sollte die Persistenz -Technologie Transaktionen unterstützen. Wenn dies nicht der Fall ist, müssen seine Transaktionen durch Batching -Updates im Speicher implementiert werden. Die Aktualisierungen werden erst bestehen, wenn die Transaktion begangen wird. Wenn Atom -Batch -Updates unterstützt werden, kann das Repository eine Isolationsstufe von "Lesen engagiert" unterstützen. Andernfalls kann es nur die niedrigste Ebene von "Lesen ungezwungen" unterstützen.
Zusätzliche Funktionen, die schön sind, aber nicht ausschließlich erforderlich sind: