SQLite–Database handal tanpa server

SNAGHTMLf16961

Kalau ngomong masalah database, maka MySQL, Oracle dan Microsoft SQL Server mungkin akan terlintas segera di pikiran kita, … ups saya lupa sebut MS Access juga. Meskipun mungkin bukan database untuk aplikasi besar, tapi MS Access masih lumayan laku lho untuk beberapa aplikasi.

Nah seiring dengan pertumbuhan teknologi. Baik dari sisi hardware dan software, juga boomingnya mobility dan cloud. Maka muncul pula konsep-konsep baru di dunia perdatabasean. Ada istilah NoSQL dimana database tidak memiliki struktur baku seperti MongoDb, CouchDB dan masih banyak lagi. Juga konsep embedded database yang diusung SQLite. Nah pada kesempatan ini saya akan coba bahas tentang SQLite.

Apa sih Embedded Database itu ?

Sebelum jauh ngomong tentang SQLite. Kita simak dulu apa sih Embedded Database itu. Ya simplenya sih database yang diembed (… yaelah itu sih anak TK juga tau, cuman translate doang hehehe ).

Ok, jadi gini. Kalau kita mau buat aplikasi yang menggunakan database, maka ladzimnya kita harus install aplikasi database tersebut pada sebuah mesin tersendiri, aplikasi dasar dari database ini kemudia kita sebut sebagai database footprint. Mesinnya sendiri kemudian kita sebut sebagai server database. Aplikasi yang diperlukan untuk menjalankan database di server tersebut umumnya besar dan membutuhkan resource yang amit-amit. Hal ini wajar, karena operasi database adalah operasi yang memang memerlukan kinerja Input-output hardware dengan intensitas tinggi seperti alokasi memori, baca tulis data ke storage, pengaturan index, kirim-kiriman data bolak balik antara storage – bus – prosesor dan lain-lain. Dan semua itu bisa terjadi ratusan, ribuan bahkan mungkin jutaan kali dalam frekuensi satu detik. Ya satu detik.

Nah embedded database mengurangi beberapa prosedural yang harus dilakukan oleh lazimnya database konvensional sehingga footprint yang harus disiapkan berukuran kecil. Yang menarik juga, embedded server ini tidak memerlukan kita untuk melakukan proses instalasi apapun. Kita cukup mengcopykan footprint tersebut dan mengintregrasikannya dengan aplikasi yang akan kita buat.

Karena kemudahan portabilitas yang diusung oleh konsep embedded database ini. Maka banyak aplikasi memanfaatkannya. Khususnya aplikasi berbasis mobile yang memang memerlukan footprint system yang memiliki fleksibilitas dan portabiliti tinggi.

SQLite

Nah SQLite ini adalah embedded database yang paling terkenal. SQLite bersifat open-source, sehingga lebih mudah bagi para pengembang aplikasi untuk menggunakan database ini tanpa harus risau memikirkan masalah paten dan biaya. Dan SQLite memiliki fitur-fitur yang memang diidamkan untuk sebuah database ideal.

  • no-depedency, SQLite library didesain untuk mandiri dan memerlukan bantuan yang minimal dari library lain sehingga bisa mudah diaplikasikan pada aneka platform
  • serverless dan zero-configuration, SQLite tidak memerlukan proses server yang tersendiri untuk mengakses data. Keseluruhan operasi di SQLite adalah berdasarkan konsep baca dan tulis langsung ke file di storage atau memory.
  • SQL compliance, SQLite mendukung 90% standard SQL syntax. Hal ini akan mempermudah kurva belajar para pengembang aplikasi yang sudah terbiasa dengan SQL Programming
  • dukungan banyak platform, SQLite memiliki kompatibilitas yang tinggi untuk diaplikasikan pada banyak platform dan beraneka jenis bahasa pemrograman.

Kelebihan dan Kekurangan

Nah, kalau begitu apa sih manfaat yang bisa kita ambil apabila menggunakan embedded database seperti SQLite ini ?

Yang pertama, karena hanya menggunakan operasi read/write tanpa adanya perantara proses server tesendiri, tentunya akan membuat performance yang ditawarkan oleh SQLite menjadi jauh lebih baik apabila dibandingkan dengan database yang lain.

Kedua, dengan sifat serverless dan zero confirguration, akan lebih memudahkan pengembang untuk melakukan migrasi dari satu environment ke environment yang lain. Cukup dengan copy paste file-file yang diperlukan maka aplikasi dan database kita akan termigrasi dengan mudah.

Weleh, kalau SQLite ini begitu ideal, kenapa kita ndak pindah saja segera ke SQLite ?? daripada harus pusing-pusing mikirin masalah instalasi server, koneksi sana sini, upgrade dan lain-lain, plus performance yang lebih maksimal. Tunggu dulu, karena ternyata SQLite juga punya downside lho …

Kekurangan pertama, ada beberapa syntaq SQL standard yang ndak disupport oleh SQLite. Perintah right outer join misalnya, ndak disupport oleh SQLite (paling ndak sampai saat post ini ditulis). Jadi ya kita harus pinter-pinter saja menggunakan query.

Security, karena berdasar operasi baca/tulis, maka security yang dimiliki oleh SQLite ya hanya read dan write yang didasarkan pada security file system environment yang digunakan. Jangan mikir untuk menggunakan konsep schema, grant ini grant itu dengan menggunakan SQLite. Semua security harus dimanage oleh business logic layer aplikasi.

Reliability, untuk ukuran data yang kecil, reliability/ketahanan database SQLite mungkin lebih baik daripada database konvensional. Tapi untuk data besar hal ini akan sulit. Kenapa ? Karena SQLite menggunakan operasi read/write secara langsung ke file. Sehingga ketika operasi write terjadi, seluruh file akan di-lock dan menyebabkan operasi yang lain tidak bisa berjalan. Meskipun proses locking ini terjadi hanya dalam hitungan mili bahkan mungkin micro second. Tapi kalau frekuensi pengaksesan data cukup tinggi bisa jadi akan menyebabkan turunya performansi aplikasi. Dalam beberapa kasus hal ini bisa diakali dengan memecah data menjadi beberapa file yang lebih kecil.

Oke, sekian dulu tentang Embedded Database SQLite. Kita akan lanjut pada post berikutnya tentang bagaimana menggunakan SQLite dan mengaplikasikannya dalam pemrograman.

3 thoughts on “SQLite–Database handal tanpa server”

  1. artikelnya bagus gan, jadi inspirasi buat saya yg lagi kebetulan sedang mencoba memahami konsep dari embedded DB dan cara kerja SQLite

Comments are closed.