Mengapa Windows / Linux tidak menggunakan database relasional ( RDBMS )?
Saya tahu mereka menggunakan sistem file untuk menyimpan semua data tetapi bukankah menurut Anda lebih efisien menggunakan database seperti yang kami gunakan di situs web / aplikasi web?
Harap uraikan penggunaan sistem file di atas basis data untuk penyimpanan.
Ini bukan duplikat Kapan sebaiknya penggunaan basis data lebih disukai daripada parsing data dari file teks? Saya berbicara dalam konteks konteks sistem operasi saja, dan pertanyaan itu digeneralisasi.
database
windows
linux
operating-systems
Pratik
sumber
sumber
Jawaban:
Saat ini, sebagian besar sistem manajemen basis data (mis. PostGreSQL , MongoDB , dll ...) secara internal menyimpan data mereka di dalam file OS (di masa lalu, beberapa DBMS menggunakan partisi disk mentah secara langsung).
Pada komputer baru-baru ini masih menggunakan hard disk berputar , disk sangat lambat - relatif terhadap CPU atau RAM - yang menambahkan beberapa lapisan perangkat lunak tidak relevan. Teknologi SSD mungkin berubah sedikit, dan beberapa sistem file dioptimalkan untuk SSD.
File ada di sebagian besar OS secara umum untuk alasan historis dan sosial (khususnya, kompiler C dan sebagian besar alat - editor, penghubung - file yang diinginkan, jadi ada masalah ayam dan telur), dan karena ada banyak file yang sangat bagus implementasi sistem .
BTW, beberapa fasilitas sistem penting dapat menggunakan database. Misalnya pada Linux PAM dapat dikonfigurasi untuk menggunakan informasi dalam database (tetapi ini jarang dilakukan dalam praktiknya). Juga, beberapa server email mungkin menyimpan sebagian atau sebagian besar datanya dalam basis data (mis. Exim ).
File adalah abstraksi yang sedikit lebih rendah daripada database, sehingga mereka dapat lebih mudah diimplementasikan (seperti sistem file & lapisan VFS di kernel Linux) dan lebih cepat digunakan. Secara khusus, operasi pada file jauh lebih terbatas daripada pada database. Bahkan, Anda bisa melihat file atau sistem file karena beberapa database sangat terbatas!
Anda dapat merancang sistem operasi tanpa file , tetapi dengan beberapa mesin persistensi ortogonal lainnya (mis. Memiliki setiap proses persisten, maka Anda tidak terlalu peduli secara eksplisit tentang penyimpanan, karena OS mengelola sumber daya persisten). Ini telah dilakukan di beberapa sistem operasi akademik (1) (dan juga di mesin Smalltalk dan Lisp tahun 1980-an, entah bagaimana di IBM System i , alias AS / 400 , dan di beberapa proyek mainan yang terhubung dari osdev), tetapi ketika Anda mendesain OS Anda dengan cara ini Anda tidak dapat memanfaatkan banyak alat yang ada (mis. Anda juga perlu membuat kompiler dan antarmuka pengguna Anda dari awal, dan itu banyak pekerjaan).
Perhatikan bahwa sistem operasi microkernel mungkin tidak memerlukan file yang disediakan oleh lapisan kernel karena sistem file hanya server aplikasi (misalnya penerjemah Hurd yang berjalan di userland). Lihatlah juga di unikernel pendekatan di hari ini MirageOS
Linux (dan mungkin Windows, yang mendapatkan sebagian besar inspirasinya dari VMS & Unix ) memerlukan file untuk berfungsi. Paling tidak, program init (program pertama dimulai oleh kernel) harus dapat dieksekusi yang disimpan dalam file (sering
/sbin/init
, tetapi bisa jadi systemd hari ini), dan (hampir) semua program lain dimulai dengan execve (2 ) syscall jadi harus disimpan dalam file. Namun, FUSE memungkinkan Anda untuk memberikan semantik seperti file untuk hal-hal yang bukan file.Perhatikan juga bahwa di Linux (dan mungkin bahkan Windows, yang saya tidak tahu dan tidak pernah digunakan) sqlite adalah perpustakaan yang mengelola beberapa database SQL dalam file dan menyediakan API untuk itu. Telah diketahui secara luas bahwa Android (varian Linux) menggunakan banyak file sqlite (tetapi masih memiliki sistem file mirip POSIX).
Baca juga tentang pemeriksaan aplikasi (yang, pada banyak OS saat ini, diterapkan untuk menulis status proses dalam file). Didorong ke ekstrem, pendekatan itu tidak perlu secara manual menulis file aplikasi (tetapi hanya untuk mempertahankan seluruh proses menggunakan mesin pemeriksaan).
Sebenarnya, pertanyaan yang menarik adalah mengapa sistem operasi saat ini masih menggunakan file, dan jawabannya adalah warisan, dan alasan ekonomi dan budaya (sayangnya, sebagian besar bahasa pemrograman dan perpustakaan saat ini masih menginginkan file).
Catatan 1: OS akademis yang persisten mencakup Lisaac & Grasshopper , tetapi proyek akademik ini tampaknya tidak aktif. Lihat juga di http://tunes.org/ ; itu tidak aktif, tetapi telah banyak berdiskusi tentang topik-topik seperti itu.
Catatan 2: gagasan file telah banyak berubah dari waktu ke waktu (lihat jawaban ini tentang pengalaman pemrograman pertama saya): MSDOS pertama pada PC IBM tahun 1980-an (tanpa direktori!), VMS -pada 1978 Vaxen - (keduanya memiliki catatan tetap file dan file berurutan, dengan sistem versi primitif), mainframe tahun 1970-an ( IBM / 370 dengan OS / VS2 MVS ) memiliki gagasan yang sangat berbeda tentang file dan sistem file (khususnya karena pada waktu itu rasio waktu akses hard disk ke waktu akses memori inti adalah beberapa ribu - jadi pada saat itu disk berjalan relatif lebih cepat daripada hari ini, bahkan jika disk saat ini benar - benarlebih cepat dari abad sebelumnya, hari ini rasio kecepatan CPU / disk sekitar satu juta; tapi kami sekarang memiliki SSD). Juga, file kurang (atau bahkan tidak) berguna ketika memori persisten (seperti pada drum magnetik CAB500 , 1960-an; atau komputer masa depan menggunakan MRAM )
sumber
Meskipun ini berdasarkan pendapat, saya pikir itu hanyalah artefak sejarah. OS Awal menggunakan desain sistem file sederhana untuk kinerja yang cukup kuat terkait dengan karakteristik perangkat keras yang tersedia pada saat itu, dan itu sudah menjadi cara yang sama sejak itu. Sulit untuk mengubah API baca / tulis file lama untuk kueri / masukkan API transaksional yang lebih banyak setelah API dibuat.
Semua sistem file saat ini memiliki persyaratan untuk kompatibel dengan API lama ini.
Microsoft memang berpikir tentang mengganti sistem file dengan yang berbasis RDBMS , dalam pengembangan Longhorn . Itu terlalu banyak perubahan bagi mereka untuk melakukan, tetapi Anda melihat upaya mereka terus dalam bentuk Pencarian Windows (di mana RDBMS digunakan untuk menyimpan salinan metadata) dan fitur seperti sistem Filestream SQL Server (di mana tabel database data file diekspos ke OS sebagai direktori biasa yang memungkinkan Windows Explorer mengakses data, dan query SQL dari data yang sama).
OS lain memang memiliki sistem file RDBMS. AS / 400 dulu punya ini, meskipun saya tidak pernah cukup belajar tentang mereka; Saya ingat betapa anehnya itu muncul pada saat itu). Saya pikir sistem mainframe lainnya memiliki pendekatan yang sama.
sumber
Alasan sebenarnya adalah kurangnya kebutuhan untuk itu. Meletakkan basis data di atas file, daripada menggabungkannya, menangani sebagian besar situasi setidaknya serta solusi gabungan dengan kompleksitas yang jauh berkurang. Dalam beberapa situasi yang disebutkan orang lain, kami juga melapisi bagian file di atas basis data (seperti struktur izin). Dalam hal ini, basis data yang mengelola izin tersebut jauh lebih sederhana daripada RDBMS komersial.
Ada keuntungan untuk menggabungkannya, tetapi sejauh ini hanya sedikit dan cukup jauh di antara gerakan itu yang tumbuh perlahan. Pertimbangkan betapa jarangnya orang mengatakan "Beri saya kolom ke-3 dari setiap faktur yang saya terima sejak 2010, dan jumlahkan semuanya," atau "jangan biarkan saya menghapus file ini sampai saya menghapusnya dari Excel spreadsheet juga. "
Sistem file memiliki beberapa keunggulan dibandingkan database relasional yang membuat mereka tetap berjalan:
sumber
sync
mode I / Os. Ie .) +1 untuk semua poin Anda yang lain, esp. kinerja hierarki yang cepat di mana banyak hal dalam satu subdir tidak memperlambat kinerja di subdir lainnya. Kecuali setiap dir atau file adalah tabel yang berbeda ...Saya pikir jawaban lain memberikan spektrum alasan yang luas mengapa sistem operasi tidak bergantung pada basis data relasional secara internal / eksklusif jadi saya hanya akan berbagi informasi menarik yang pernah saya temui.
Rupanya, ada teknologi yang memungkinkan Anda untuk me-mount database relasional sebagai sistem file ketika penggunaannya dibenarkan. Oracle DBFS (Database File System) adalah contohnya. Cuplikan dari dokumentasi ini menjelaskan alasan di baliknya dengan cukup baik:
Solusi ini menyediakan satu set antarmuka (klien baris perintah, pustaka kode) untuk data LOB yang disimpan dalam tabel database. Ini dapat digunakan pada sistem operasi Windows dan Linux (walaupun sejauh yang saya tahu, tingkat integrasi bervariasi di antara mereka)
Sumber: docs.oracle.com
Menurut dokumentasi, sistem file harus dapat digunakan secara transparan di Linux
Oleh karena itu, jawaban atas pertanyaan Anda adalah bahwa, secara umum, tidak ada alasan bagi sistem operasi untuk menggunakan basis data relasional sebagai sistem file (dan jika komponen inti OS, ini sebenarnya akan merepotkan). Pada saat yang sama dimungkinkan bagi seseorang untuk melakukannya ketika beberapa masalah membutuhkannya.
sumber
Fungsi utama dari setiap OS adalah untuk memfasilitasi interaksi antara aplikasi, perangkat keras dan pengguna.
Jadi .. mengapa Windows / Linux OS tidak menggunakan Database relasional (RDBMS)? Ini adalah pertanyaan tentang proporsi Alkitab, tetapi jawaban singkatnya adalah: Tidak ada manfaat nyata yang dapat diperoleh dari menggunakan struktur yang kompleks seperti rdbms sebagai sistem file.
"Relational" adalah kata yang digunakan dalam "Relational Database" dan sebagian besar data yang disimpan dalam sistem file tidak terkait dengan data lainnya. Sistem file umumnya diimplementasikan sebagai basis data terbatas, tidak hanya yang relasional.
sumber