Saya bermaksud mengembangkan aplikasi kecil (Java) untuk mengelola keuangan saya. Saya yakin saya perlu menggunakan database tertanam, tetapi saya tidak memiliki pengalaman terkait masalah ini. Saya mencoba melihat beberapa produk yang tersedia , tetapi saya tidak dapat memutuskan mana yang lebih cocok untuk saya. H2 , HSQLDB , Derby dan Berkeley DB tampaknya merupakan kandidat yang baik, tetapi saya masih belum melihat bagaimana mereka dibandingkan satu sama lain. Saya menghargai bantuan Anda untuk membandingkannya dan membantu saya memutuskan mana yang akan digunakan.
Saya bermaksud menggunakan Hibernate untuk aplikasi saya (kecuali Anda akan merekomendasikan menggunakan API yang disediakan DBMS), tetapi saya juga ingin memiliki kemampuan untuk mengedit database dengan mudah menggunakan alat penelusuran SQL (memodifikasi skema dan mengubah data).
Terima kasih.
sumber
Jawaban:
Antara
atau
Yang mana yang Anda gunakan terserah Anda, tergantung seberapa besar performa dan seberapa besar stabilitas yang Anda butuhkan.
Pengembang H2 telah memberikan evaluasi kinerja yang bagus:
http://www.h2database.com/html/performance.html
sumber
Saya menggunakan Apache Derby untuk hampir semua kebutuhan database saya yang disematkan. Anda juga dapat menggunakan Java DB Sun yang didasarkan pada Derby tetapi versi Derby terbaru jauh lebih baru. Ini mendukung banyak opsi yang didukung database komersial dan asli tetapi jauh lebih kecil dan lebih mudah untuk disematkan. Saya memiliki beberapa tabel database dengan lebih dari satu juta catatan tanpa masalah.
Saya dulu menggunakan HSQLDB dan Hypersonic sekitar 3 tahun yang lalu. Itu memiliki beberapa masalah kinerja utama pada saat itu dan saya beralih ke Derby dari itu karena masalah itu. Derby sangat solid bahkan saat masih dalam inkubator di Apache.
sumber
Saya perlu menggunakan database tertanam Java di salah satu proyek saya dan saya melakukan banyak penelitian untuk memahami pro dan kontra dari setiap database. Saya menulis blog yang mencantumkan pro dan kontra dari database java tersemat populer (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), Anda dapat melihatnya. Saya memilih H2 karena saya pikir itu paling sesuai dengan kebutuhan saya. Tautan untuk blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Semoga membantu!
sumber
Saya akan memilih H2, kinerjanya dimaksudkan untuk jauh lebih baik daripada Derby. Baca http://www.h2database.com/html/performance.html untuk info lebih lanjut.
sumber
HSQLDB adalah kandidat yang baik (fakta bahwa ini digunakan di OpenOffice mungkin meyakinkan sebagian dari Anda), tetapi untuk aplikasi personnal yang kecil, mengapa tidak menggunakan database objek (bukan database relasional klasik)?
Saya menggunakan DB4O di salah satu proyek saya, dan saya sangat puas dengannya. Karena berorientasi objek, Anda tidak memerlukan seluruh lapisan Hibernate, dan dapat langsung memasukkan / memperbarui / menghapus / kueri objek! Selain itu, Anda tidak perlu khawatir tentang skema, Anda langsung bekerja dengan objek dan DB4O akan mengerjakan sisanya!
Saya setuju bahwa mungkin perlu beberapa waktu untuk membiasakan diri dengan jenis database baru ini, tetapi periksa tutorial DB40 untuk melihat betapa mudahnya bekerja dengan DB!
EDIT: Seperti yang dikatakan di komentar, DB4O menangani secara otomatis versi kelas yang lebih baru. Selain itu, alat untuk menjelajahi dan memperbarui basis data di luar aplikasi tersedia di sini: http://code.google.com/p/db4o-om/
sumber
Java DB (distribusi Apache Derby dari Sun) sekarang dikirimkan di JDK 6!
Saya pernah ingin melakukan sesuatu seperti Jason Cohen dan berpikir ini sepertinya cara termudah berada di distro JDK (yang minggu lalu sekarang menjadi persyaratan untuk aplikasi saya). Atau mungkin saya hanya malas seperti itu.
sumber
Kami menggunakan HSQLDB dalam produksi sebagai opsi "tanpa konfigurasi" untuk aplikasi kami. Ini memungkinkan orang untuk mencoba tanpa perlu repot menyiapkan database yang sebenarnya.
Namun kami tidak mendukungnya untuk penggunaan normal. Alasannya ada beberapa:
Setidaknya untuk (2) dan (3), ada cara untuk mengatasinya tetapi sulit; jauh lebih mudah misalnya menginstal MySQL.
sumber
neo4j adalah:
Saya belum sempat mencobanya - tapi kelihatannya sangat menjanjikan. Perhatikan bahwa ini bukan database SQL - grafik objek Anda disimpan untuk Anda - jadi mungkin tidak sesuai untuk aplikasi Anda yang sudah ada.
sumber
Alat perbandingan yang baik dapat ditemukan di sini: http://www.jpab.org/All/All/All.html
Perhatikan juga Perbandingan Head to Head DBMS / JPA
sumber
Kebanyakan hal telah dikatakan, tetapi saya dapat menambahkan bahwa saya telah menggunakan HSQL, Derby dan Berkely DB di beberapa proyek hewan peliharaan saya dan semuanya bekerja dengan baik. Jadi saya rasa tidak terlalu penting untuk jujur. Satu hal yang perlu disebutkan adalah bahwa HSQL menyimpan dirinya sebagai file teks dengan pernyataan SQL yang cukup bagus. Sangat memudahkan saat Anda mengembangkan untuk melakukan pengujian dan menyiapkan data dengan cepat. Dapat juga melakukan pengeditan cepat jika diperlukan. Kira Anda dapat dengan mudah mentransfer semua itu ke database apa pun jika Anda perlu mengubahnya juga :)
sumber
HSQLDB dapat menyebabkan masalah untuk aplikasi besar, tidak terlalu stabil.
Yang terbaik yang pernah saya dengar (bukan pengalaman langsung) adalah berkleyDB. Tetapi kecuali Anda membukanya, itu akan membebani Anda dengan tangan dan kaki untuk digunakan karena lisensi ... lihat http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html ini untuk detailnya.
ps. berkleyDB bukanlah database relasional jika Anda tidak mengetahuinya.
sumber
Saya adalah penggemar berat DB4O untuk .Net dan Java .
Performa menjadi jauh lebih baik sejak rilis awal. Model lisensi juga tidak terlalu buruk. Saya terutama menyukai opsi yang tersedia untuk menanyakan objek Anda. Kueri dengan contoh sangat kuat dan mudah digunakan.
sumber
Kriteria apa yang akan Anda gunakan untuk mengevaluasi ini? Jika Anda belum tahu, Anda tidak perlu memutuskan sekarang. Cobalah untuk menjadikan aplikasi Anda sebagai database-implementasi-agnostik yang Anda bisa - menyediakan pembungkus yang sesuai, objek akses data, dll., Dan buat keputusan ini ketika Anda memiliki semua fakta yang ada dan Anda harus memutuskan.
Jika Anda menggunakan database relasional dan SQL maka cara di atas seharusnya tidak terlalu sulit (menggunakan JDBC dll). Pastikan Anda memiliki banyak pengujian di sekitarnya sehingga saat Anda ingin beralih antar database, Anda dapat menentukan bahwa fungsionalitas aplikasi Anda tetap sama.
Saya mengalami masalah yang sama beberapa waktu lalu. Saya tidak tahu database mana yang harus digunakan, jadi solusi pertama saya menggunakan Derby (atau HSQLDB?), Dan saya kemudian dapat beralih ke HSQLDB (atau Derby? Tidak dapat mengingat solusi mana yang berhasil) setelah saya menentukan di mana Saya memiliki masalah (terkait dengan kinerja) dan solusi mana yang benar-benar cocok untuk saya.
sumber
Saya telah menggunakan Derby dan saya sangat benci fungsi konversi tipe datanya, terutama fungsi tanggal / waktu. (Jenis Nomor) <--> Konversi Varchar itu menyakitkan.
Jadi jika Anda berencana menggunakan konversi tipe data dalam pernyataan DB Anda mempertimbangkan penggunaan DB tertanam lainnya, saya terlambat mempelajarinya.
Konversi tipe data Versi Derby terbaru
sumber
Saya pribadi menyukai HSQLDB, tetapi sebagian besar karena ini adalah yang pertama saya coba.
H2 dikatakan lebih cepat dan menyediakan antarmuka GUI yang lebih bagus (yang umum dan bekerja dengan driver JDBC mana pun).
Setidaknya HSQLDB, H2 dan Derby menyediakan mode server yang bagus untuk pengembangan, karena Anda dapat mengakses DB dengan aplikasi Anda dan beberapa alat secara bersamaan (yang biasanya tidak diizinkan oleh mode tertanam).
sumber
Saya kira saya agak terlambat (sangat terlambat ;-)) untuk posting ini, tetapi saya ingin menambahkan Perst, database tertanam berorientasi objek open source untuk Java & .NET. sebagai bahan pertimbangan. Perst adalah database tertanam open source / dual license untuk Java. Distribusi ini kompatibel dengan platform Google Android, dan juga termasuk Perst Lite untuk Java ME. Kami bahkan telah membuat tolok ukur Android dan membuat whitepaper tentang subjek ... Anda dapat melihatnya di sini: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
Semua yang terbaik, Chris
sumber
Jika saya benar, H2 berasal dari orang yang sama yang menulis HSQLDB. Jauh lebih baik jika Anda mempercayai tolok ukur di situs mereka. Juga, ada beberapa anggapan bahwa komunitas matahari melompat terlalu cepat ke dalam Derby.
sumber
Saya menyadari Anda menyebutkan penjelajahan SQL, tetapi semua hal lain dalam pertanyaan Anda membuat saya ingin menyarankan agar Anda juga mempertimbangkan DB4O , yang merupakan DB objek sederhana yang hebat .
sumber