Daftar Database Dalam Memori

1. Ikhtisar

Database dalam memori bergantung pada memori sistem sebagai lawan dari ruang disk untuk penyimpanan data. Karena akses memori lebih cepat daripada akses disk, database ini secara alami lebih cepat.

Tentu saja, kami hanya dapat menggunakan database dalam memori dalam aplikasi dan skenario di mana data tidak perlu disimpan atau untuk tujuan menjalankan pengujian lebih cepat. Mereka sering dijalankan sebagai database tertanam, yang berarti mereka dibuat ketika proses dimulai dan dibuang ketika proses berakhir yang sangat nyaman untuk pengujian karena Anda tidak perlu menyiapkan database eksternal.

Pada bagian berikut, kita akan melihat beberapa database dalam memori yang paling umum digunakan untuk lingkungan Java dan konfigurasi yang diperlukan untuk masing-masingnya .

2. Database H2

H2 adalah database open source yang ditulis dalam Java yang mendukung SQL standar untuk database yang disematkan dan yang berdiri sendiri. Ini sangat cepat dan berisi JAR hanya sekitar 1,5 MB.

2.1. Ketergantungan Maven

Untuk menggunakan database H2 dalam sebuah aplikasi, kita perlu menambahkan dependensi berikut:

 com.h2database h2 1.4.194 

Versi terbaru database H2 dapat diunduh dari Maven Central.

2.2. Konfigurasi

Untuk menghubungkan ke database dalam memori H2 , kita dapat menggunakan String koneksi dengan mem protokol , diikuti dengan nama database. Properti driverClassName, URL, nama pengguna, dan kata sandi dapat ditempatkan dalam file .properties untuk dibaca oleh aplikasi kita:

driverClassName=org.h2.Driver url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 username=sa password=sa

Properti ini memastikan database myDb dibuat secara otomatis saat aplikasi dimulai .

Secara default, ketika koneksi ke database ditutup, database juga ditutup. Jika kita ingin database bertahan selama JVM berjalan, kita dapat menentukan properti DB_CLOSE_DELAY = -1

Jika kita menggunakan database dengan Hibernate, kita juga perlu menentukan dialek Hibernate:

hibernate.dialect=org.hibernate.dialect.H2Dialect

Database H2 dipelihara secara teratur dan menyediakan dokumentasi yang lebih rinci di h2database.com.

3. HSQLDB ( Database HyperSQL )

HSQLDB adalah proyek open source, juga ditulis di Java, mewakili database relasional. Ini mengikuti standar SQL dan JDBC dan mendukung fitur SQL seperti prosedur dan pemicu yang tersimpan.

Ini dapat digunakan dalam mode dalam memori, atau dapat dikonfigurasi untuk menggunakan penyimpanan disk.

3.1. Ketergantungan Maven

Untuk mengembangkan aplikasi menggunakan HSQLDB , kita membutuhkan ketergantungan Maven:

 org.hsqldb hsqldb 2.3.4 

Anda dapat menemukan versi terbaru HSQLDB di Maven Central.

3.2. Konfigurasi

Properti koneksi yang kita butuhkan memiliki format berikut:

driverClassName=org.hsqldb.jdbc.JDBCDriver url=jdbc:hsqldb:mem:myDb username=sa password=sa

Ini memastikan bahwa database akan dibuat secara otomatis saat startup, berada di memori selama aplikasi, dan dihapus saat proses berakhir.

The Hibernate dialek properti untuk HSQLDB adalah:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

File JAR juga berisi Manajer Basis Data dengan GUI. Informasi lebih lanjut dapat ditemukan di situs hsqldb.org.

4. Basis Data Apache Derby

Apache Derby adalah proyek open source lain yang berisi sistem manajemen database relasional yang dibuat oleh Apache Software Foundation .

Derby didasarkan pada standar SQL dan JDBC dan terutama digunakan sebagai basis data tertanam, tetapi juga dapat dijalankan dalam mode klien-server dengan menggunakan kerangka kerja Server Jaringan Derby .

4.1. Ketergantungan Maven

Untuk menggunakan database Derby dalam aplikasi, kita perlu menambahkan dependensi Maven berikut:

 org.apache.derby derby 10.13.1.1 

Versi terbaru database Derby dapat ditemukan di Maven Central.

4.2. Konfigurasi

String koneksi menggunakan protokol memori :

driverClassName=org.apache.derby.jdbc.EmbeddedDriver url=jdbc:derby:memory:myDb;create=true username=sa password=sa

Untuk database yang akan dibuat secara otomatis saat startup, kita harus menentukan create = true dalam string koneksi. Basis data ditutup dan dijatuhkan secara default saat keluar JVM.

Jika menggunakan database dengan Hibernate , kita perlu mendefinisikan dialek:

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Anda dapat membaca lebih lanjut tentang database Derby di db.apache.org/derby.

5. Basis Data SQLite

SQLite adalah database SQL yang hanya berjalan dalam mode tertanam, baik dalam memori atau disimpan sebagai file. Itu ditulis dalam bahasa C tetapi juga bisa digunakan dengan Java.

5.1. Ketergantungan Maven

Untuk menggunakan database SQLite , kita perlu menambahkan driver JDBC JAR:

 org.xerial sqlite-jdbc 3.16.1 

Ketergantungan sqlite-jdbc dapat diunduh dari Maven Central.

5.2. Konfigurasi

Properti koneksi menggunakan kelas driver org.sqlite.JDBC dan protokol memori untuk string koneksi:

driverClassName=org.sqlite.JDBC url=jdbc:sqlite:memory:myDb username=sa password=sa

Ini akan membuat database myDb secara otomatis jika tidak ada.

Saat ini, Hibernate tidak menyediakan dialek untuk SQLite , meskipun kemungkinan besar akan tersedia di masa mendatang. Jika Anda ingin menggunakan SQLite dengan Hibernate , Anda harus membuat kelas HibernateDialect .

Untuk mengetahui lebih lanjut tentang SQLite , buka sqlite.org.

6. Database Dalam Memori di Spring Boot

Spring Boot membuatnya sangat mudah untuk menggunakan database dalam memori - karena dapat membuat konfigurasi secara otomatis untuk H2 , HSQLDB, dan Derby .

Yang perlu kita lakukan untuk menggunakan database dari salah satu dari tiga jenis di Spring Boot adalah menambahkan ketergantungannya ke pom.xml . Ketika framework menemukan ketergantungan pada classpath, itu akan mengonfigurasi database secara otomatis.

7. Kesimpulan

Dalam artikel ini, kami telah melihat sekilas database dalam memori yang paling umum digunakan di ekosistem Java, bersama dengan konfigurasi dasarnya. Meskipun berguna untuk pengujian, perlu diingat bahwa dalam banyak kasus, keduanya tidak menyediakan fungsionalitas yang sama persis dengan yang berdiri sendiri asli.

Anda dapat menemukan contoh kode yang digunakan dalam artikel ini di Github.