Saya telah melihat beberapa aplikasi yang pada dasarnya adalah perangkat lunak aplikasi yang berjalan secara lokal ke sistem (sehingga mereka tidak banyak berkomunikasi melalui jaringan). Aplikasi ini tampaknya bergantung pada server database untuk menyimpan datanya.
Contoh aplikasi adalah Amarok (pemutar musik populer di Linux). Saya tidak tahu apakah mereka masih melakukan ini, tetapi saya ingat ada waktu di mana menginstal Amarok berarti Anda harus menginstal server MySQL dan menjalankannya di latar belakang setiap saat.
Apa keuntungan menggunakan server untuk penyimpanan lokal dibandingkan dengan menggunakan solusi SQL tertanam yang lebih kecil seperti sqlite? Saya berbicara tentang perangkat lunak aplikasi secara umum, belum tentu amarok (itu hanya contoh). Apakah ada situasi di mana menggunakan server database masuk akal dibandingkan dengan database tertanam?
sumber
Jawaban:
SQLite menawarkan ikhtisar yang bagus tentang kapan harus menggunakannya atau tidak vs alternatif:
https://www.sqlite.org/whentouse.html
Baris ringkasan ini menangkap kasus penggunaan SQLite dengan sangat baik dalam pengalaman saya:
Artikel ini membahas panjang lebar tentang hal ini. Ini juga memiliki bagian berjudul "Situasi Di Mana Seorang Klien / Server RDBMS Dapat Bekerja Lebih Baik". Singkatnya, mereka adalah:
sumber
Bahkan untuk sistem tunggal dengan satu pengguna, server database "nyata" masuk akal:
Kelemahan utama adalah perlu menginstal dan memelihara perangkat lunak server database, yang agak rumit untuk pengguna nonteknis (dan bahkan banyak pengguna teknis). Sistem operasi seperti Linux membuat ini lebih mudah: Saya memiliki PostgreSQL dan MySQL yang berjalan di sistem Linux saya. Saya telah menginstal aplikasi yang menghubungkan mereka dengan sedikit atau tanpa interaksi di pihak saya.
sumber
Saya pikir itu ada hubungannya dengan inersia.
Amarok didasarkan pada XMMS yang berasal dari tahun 1997. Untuk harus memiliki kemampuan database yang baik Anda harus menggunakan server, karena itu jauh lebih kuat daripada solusi berbasis file, yang sama sekali tidak memiliki kemampuan database yang baik.
Yang akan datang dan mendapatkan popularitas dari database embedded lokal yang bagus seperti SQLlite adalah sesuatu yang cukup baru.
sumber
Fitur diskriminatif yang paling penting adalah konkurensi .
Jika Anda hanya memiliki satu aplikasi yang berjalan dalam satu contoh untuk pengguna, solusi tertanam (apakah sqlite atau penyimpanan objek) biasanya OK.
Namun jika Anda memiliki beberapa instance yang perlu memanipulasi database secara bersamaan, Anda harus memiliki server untuk menyinkronkannya. SQLite hanya memungkinkan satu penulisan pada satu waktu, di seluruh basis data, dan begitu juga sebagian besar solusi tertanam lainnya. Dan jika Anda bahkan memiliki beberapa aplikasi, Anda cenderung memerlukan spesifikasi kendala yang lebih terperinci yang umumnya tidak diizinkan oleh solusi tertanam.
sumber
Banyak jawaban lain berbicara tentang konkurensi sebagai keuntungan, tetapi juga karena db berjalan sebagai server, basis data dapat menjalankan tugas tanpa perlu menjalankan aplikasi. Ini bisa berupa pemeliharaan, pencadangan, sinkronisasi dengan server lain atau tugas terjadwal lainnya.
Jika Anda merasa aplikasi Anda bisa berubah menjadi aplikasi klien / server, Anda mungkin ingin memulai dengan menggunakan RDBMS dari awal alih-alih memindahkannya nanti.
Saya tidak tahu apakah contoh yang diberikan mengambil keuntungan dari ini atau tidak.
sumber
Kecuali Anda menjalankan sistem tertanam dengan memori dan cpu rendah, saya tidak berpikir bahwa menjalankan server di latar belakang akan membahayakan Anda.
Menjalankan server basis data secara lokal tidak masalah. Basis data dimaksudkan untuk mengakses dan memanipulasi data. Akses jaringan merupakan nilai tambah, yang mungkin atau mungkin tidak diperlukan. Ada beberapa alat teknik dan ilmiah yang melakukan ini.
Katakanlah Anda menggunakan data, pada aplikasi lokal. Mengapa Anda tidak menggunakan database? sebagai lawan dari apa?
sumber
Itu tergantung pada abstraksi data Anda dan keseluruhan ruang aplikasi, persyaratan manajemen akses, investasi yang Anda rencanakan pada pemeliharaan data, urgensi prototipe yang diperlukan, di mana Anda berada dalam kurva pembelajaran, dll.
Jika Anda ingin memastikan basis data yang terintegrasi erat dengan aplikasi yang tidak memerlukan akses dari aplikasi lain, buat pulau-pulau dari basis data yang tertanam. Implementasi Mozilla Firefox Web Storage dengan SQLite dapat diberikan sebagai contoh.
Jika Anda membutuhkan efisiensi yang lebih besar dengan data yang terbatas, pemilihan desain In-Memory Database lebih disukai.
Di sisi lain, jika Anda memiliki banyak aplikasi yang menjalankan beberapa kueri pada data yang sama, dan itu membutuhkan penataan penyimpanan data yang lebih baik untuk mengoptimalkan kinerja, diperlukan DBMS terpusat. Saya benar-benar akan lebih suka untuk penelitian ilmiah, ketika itu membutuhkan sejumlah besar data dan di mana waktu respons kueri akan memengaruhi pengalaman pengguna secara keseluruhan secara drastis.
Untuk kasus Amarok, saya kira itu adalah pilihan DBMS open-source pada saat itu, sebelum mereka memilih jalur database tertanam.
Jika ada definisi sistem khusus di tangan Anda, akan lebih mudah untuk kontra dan pro.
V / r, Umut
sumber