Sebagai pengembang perangkat lunak, saya telah mengerjakan proyek mulai dari aplikasi kecil yang dibuat di rumah hingga aplikasi perusahaan berukuran sedang. Di hampir setiap proyek saya menggunakan database atau menyesal memilih untuk tidak menggunakannya sejak awal.
Sekarang, saya bertanya-tanya beberapa hal tentang database dan penggunaannya dalam aplikasi umum:
- Mengapa Windows itu sendiri tidak menggunakan database SQL "pusat"? Sebagai contoh:
- Data Pelaporan Kesalahan disimpan dalam banyak file,
- Pembaruan Windows menyimpan semuanya dalam file datar,
- Cache ikon disimpan dalam file tunggal yang sangat aneh yang sepertinya tidak dapat diakses melalui SQL, dll.
- Mengapa begitu banyak aplikasi besar menghindari penggunaan database? Misalnya, bukankah Microsoft Outlook akan mendapatkan dengan menggunakan database nyata alih-alih menciptakan kembali roda dengan memiliki format sendiri untuk file .pst dan menyimpan beberapa data dalam registri?
Jika database menambahkan lapisan tambahan dari kerumitan keseluruhan dan kerugian kinerja yang kecil, ini merupakan harga keuntungan yang sangat besar untuk membuat kode lebih sederhana di sebagian besar keadaan, terutama ketika menyangkut penyimpanan potongan data kecil yang terorganisir daripada biner besar. stream. Jadi mengapa begitu sedikit produk yang menggunakan basis data? Mungkin satu-satunya aplikasi yang saya tahu yang benar-benar menggunakan database Sqlite adalah Firefox, dan mungkin Microsoft Exchange (tapi yang terakhir bukan aplikasi desktop)?
Juga, tidak akan satu set aplikasi, seperti Microsoft Office atau Microsoft Expression, mendapat manfaat dari memiliki database SQL terpadu , membuatnya lebih mudah untuk menyebarkan aplikasi, untuk memperbarui / meningkatkan data, untuk berbagi data antara aplikasi tersebut, untuk membuat cadangan , dll?
Jawaban:
1) Secara umum overhead menjalankan RDBMS penuh terlalu besar dan itu akan menambah beban yang tidak perlu ke sistem dan kompleksitas.
Memiliki satu yang diinstal membuat hidup Anda lebih mudah sebagai pengembang tetapi membuat kehidupan pemilik mesin lebih buruk karena mesin mereka cenderung berjalan lebih lambat dan dengan lebih banyak masalah. Dalam konfrontasi pengembang vs pengguna, pengguna harus selalu menang.
2) Banyak penyimpanan data memiliki kebutuhan khusus yang tidak dipenuhi oleh sesuatu seperti SQL Server Express.
Misalnya, log kesalahan harus ditulis ke hal yang paling sederhana untuk memaksimalkan peluang penulisan akan terjadi dan data akan tersedia. SQL Server tidak akan sesederhana itu.
Untuk aplikasi yang lebih kompleks, argumennya cenderung lebih dioptimalkan untuk kasus pengguna yang sangat spesifik - file datar dapat kilat cepat.
sumber
Banyak aplikasi menanamkan SQLite . Mengutip dari situs web mereka:
Anda hanya menggunakan salah satu API yang tersedia, membuat database, tabel, dll dan mesin SQL akan menyimpan semuanya dalam file biner yang dapat Anda tempatkan di mana saja dalam sistem file pengguna. Yang terbaik dari semuanya, ini FLOSS.
sumber
Windows dikirimkan bersama dan menggunakan mesin basis data bernama Extensible Storage Engine (ESE) .
ESE digunakan oleh Active Directory, Exchange Server, Windows Mail dan Desktop Search di antara banyak layanan dan aplikasi Windows lainnya.
Untuk pengembangan, ada pembungkus ESE open source:
Dengan pengiriman ESE dengan setiap versi modern Windows Anda tidak memiliki masalah penyebaran database. ESE secara arsitektural mengisi peran yang mirip dengan database yang disematkan seperti SQLite.
sumber
Database relasional bukan struktur data yang paling efisien untuk setiap domain. Banyak aplikasi desktop yang menggunakan database tertanam, Anda tidak bisa dengan mudah mengatakan bahwa mereka melakukannya jika yang Anda lihat hanyalah beberapa file data.
sumber
Sebenarnya, ide ini telah dikembangkan di Microsoft selama beberapa waktu. Ini disebut WinFS . Ini adalah teknologi yang menarik, dan tersedia untuk pelanggan MSDN. Beberapa hari kemudian, saya akan menginstalnya di VM dan bermain-main dengannya.
sumber
Database menawarkan fleksibilitas dan seperti setiap fitur hampir pasti ada biayanya. Jika flat-file akan berfungsi, maka Anda dapat mengasumsikan tidak ada seorang pun yang perlu melakukan query data dengan cara yang tidak terduga seperti dalam laporan ad hoc.
Basis data juga melakukan pekerjaan yang baik dalam menangani beberapa koneksi / input. Sekali lagi, jika ini bukan persyaratan untuk aplikasi desktop Anda, mengapa menambahkan kompleksitas tambahan? Selain melalui antarmuka pengguna / instalasi Outlook yang sebenarnya, berapa banyak aplikasi atau pengguna lain yang mencoba menulis ke file Outlook di komputer Anda?
Akan lebih mudah jika semua data berada dalam database relasional dari perspektif "Saya ingin dapat meminta semua data dengan cara apa pun yang saya anggap cocok dengan satu bahasa seperti SQL", tetapi ini jarang menjadi prioritas dengan banyak aplikasi.
Sebagian besar programmer akan melihatnya dari:
Saya tahu apa yang harus dilakukan aplikasi, ini yang harus dilakukan
aplikasi saya adalah satu-satunya entitiy yang akan pernah mengakses dan / atau memanipulasi data ini
struktur file sederhana dari desain saya sendiri akan berfungsi
untuk setidaknya satu aplikasi saya ingin menghindari mengandalkan kode orang lain dan memiliki kontrol penuh.
sumber