Carbonado adalah lapisan abstraksi persistensi berkinerja tinggi yang dapat diperluas untuk aplikasi Java, memberikan pandangan relasional ke teknologi persistensi yang mendasarinya. Kegigihan dapat disediakan oleh database relasional SQL yang dapat diakses JDBC, atau bisa menjadi Berkeley DB. Ini juga dapat direplikasi sepenuhnya di antara keduanya.
Bahkan jika database pendukung tidak berbasis SQL, Carbonado masih mendukung banyak fitur inti yang ditemukan dalam segala jenis database relasional. Ini mendukung kueri, bergabung, indeks, dan melakukan optimasi kueri. Ketika digunakan dengan cara ini, Carbonado bukan hanya lapisan ke database relasional, itu adalah database relasional. SQL bukan persyaratan untuk mengimplementasikan database relasional.
Mendefinisikan tipe baru dalam carbonado melibatkan menciptakan antarmuka atau kelas abstrak yang mengikuti konvensi java bean. Informasi tambahan ditentukan dengan memasukkan anotasi khusus. Paling tidak, anotasi diperlukan untuk menentukan kunci utama. Anotasi adalah fitur yang pertama tersedia di Java 5, dan sebagai hasilnya, Carbonado tergantung pada Java 5.
Di permukaan, mungkin tampak bahwa jenis carbonado didefinisikan seperti pojos. Perbedaannya adalah bahwa dalam carbonado, jenis adalah representasi objek dari hubungan. Ini bukan database objek atau jembatan objek-relasional. Selain itu, definisi tipe data hanyalah antarmuka, dan tidak ada file konfigurasi eksternal. Semua kode untuk mengimplementasikan jenis yang dihasilkan secara otomatis, namun tidak ada langkah waktu pembangunan tambahan.
Carbonado mampu mencapai kinerja tinggi dengan memaksakan overhead yang sangat rendah saat mengakses penyimpanan yang sebenarnya. Overhead yang rendah dicapai sebagian oleh Auto menghasilkan kode kritis kinerja, melalui perpustakaan Cojen.
Carbonado 1.2 menambahkan banyak fitur baru, yang dirangkum di sini dan dalam catatan rilis.
Fitur Umum
Repositori
Fitur JDBC
Fitur mesin kueri
Carbonado dipecah menjadi beberapa bundel paket untuk manajemen ketergantungan yang lebih baik. Cara termudah untuk memulai dengan Carbonado adalah dengan menggunakan repositori yang didukung Berkeley DB JE. Untuk ini, Anda perlu mendapatkan bundel paket carbonado dan carbonadosleepycatje.
Kode Carbonado Core Carbonado, tergantung pada Apache Commons Logging, Joda-Time, dan Cojen.
Carbonadosleepycatje berisi repositori untuk mendukung Sleepycat/Oracle, Berkeley DB Java Edition. Kode Berkeley DB JE harus diunduh dan diinstal secara terpisah.
CarbonadosleepycatDB berisi repositori untuk mendukung Sleepycat/Oracle Berkeley DB. Kode DB Berkeley harus diunduh dan diinstal secara terpisah.
Pemetaan longgar dari terminologi Carbonado ke terminologi SQL:
Carbonado | SQL |
---|---|
Gudang | database |
Penyimpanan | meja |
Definisi yang dapat disimpan | definisi tabel |
Instance yang dapat disimpan | baris meja |
milik | kolom |
Pertanyaan | Pilih/hapus pernyataan |
Kursor | set hasil |
Kueri Carbonado tidak seekspresif seperti SQL Selects. Tidak seperti SQL, kueri Carbonado tidak mendukung pemrosesan data atau fungsi agregat.
Carbonado mendukung kemampuan kueri minimal yang memungkinkan pemilihan indeks otomatis. Fitur lain yang tersedia di SQL dapat ditiru dalam kode. Jika database bersifat lokal, maka ini tidak menawarkan kehilangan kinerja.
Aplikasi yang ingin menggunakan Carbonado hanya sebagai lapisan yang nyaman di atas SQL tidak akan dapat menggunakan fitur SQL penuh. Carbonado sama sekali bukan pengganti JDBC. Aplikasi semacam ini dapat memilih campuran Carbonado dan JDBC. Untuk memfasilitasi ini, akses ke koneksi JDBC yang digunakan oleh transaksi saat ini didukung.
Repositori Carbonado yang didukung oleh Berkeley DB menggunakan pengoptimal kueri berbasis aturan untuk membuat rencana kueri. Pengoptimal berbasis biaya umumnya jauh lebih efektif, karena mereka memperkirakan biaya I/O. Carbonado memiliki pengoptimal berbasis aturan terutama karena lebih mudah untuk ditulis.
Carbonado mampu mendukung berbagai jenis teknologi kegigihan. Namun diperlukan serangkaian fitur minimum, untuk menyediakan fitur Carbonado yang cukup untuk membenarkan upaya:
Idealnya, teknologi kegigihan harus mendukung transaksi. Jika tidak, maka transaksinya harus diimplementasikan dengan pembaruan batching dalam memori. Pembaruan tidak bertahan sampai transaksi dilakukan. Jika pembaruan batch atom didukung, maka repositori dapat melaporkan mendukung tingkat isolasi "baca berkomitmen". Kalau tidak, itu hanya dapat mendukung level terendah dari "baca tidak berkomitmen".
Fitur tambahan yang bagus untuk dimiliki, tetapi tidak dibutuhkan secara ketat: