File teks biasa dalam sistem file
- Sangat mudah dibuat dan diedit
- Mudah bagi pengguna untuk memanipulasi dengan alat sederhana (yaitu editor teks, grep dll)
- Penyimpanan dokumen biner yang efisien
File XML atau JSON pada disk
- Seperti di atas, tetapi dengan sedikit lebih banyak kemampuan untuk memvalidasi struktur.
File Spreadsheet / CSV
- Model yang sangat mudah bagi pengguna bisnis untuk mengerti
Subversion (atau sistem kontrol versi berbasis disk serupa)
- Dukungan yang sangat baik untuk versi data
Berkeley DB (Pada dasarnya, hashtable berbasis disk)
- Sangat sederhana secara konseptual (hanya kunci / nilai yang tidak diketik)
- Cukup cepat
- Tidak ada biaya administrasi
- Saya mendukung transaksi
DB Sederhana Amazon
- Sama seperti Berkeley DB, saya percaya, tetapi diselenggarakan
Google App Engine Datastore
- Host dan sangat terukur
- Penyimpanan nilai kunci per dokumen (yaitu model data fleksibel)
CouchDB
- Fokus dokumen
- Penyimpanan sederhana data semi-terstruktur / berdasarkan dokumen
Koleksi bahasa asli (disimpan dalam memori atau diserialkan pada disk)
- Integrasi bahasa yang sangat ketat
Mesin penyimpanan kustom (tulisan tangan)
- Kinerja yang berpotensi sangat tinggi dalam kasus penggunaan yang diperlukan
Saya tidak bisa mengklaim tahu banyak tentang mereka, tetapi Anda mungkin juga ingin melihat ke sistem basis data objek .
Jawaban Matt Sheppard sangat bagus (mod up), tetapi saya akan mempertimbangkan faktor-faktor ini ketika memikirkan spindle:
Satu keuntungan khusus dari file CSV dibandingkan RDBMSes adalah mereka dapat dengan mudah dipadatkan dan dipindah ke hampir semua mesin lain. Kami melakukan transfer data besar, dan semuanya cukup sederhana, kami hanya menggunakan satu file CSV besar, dan mudah menggunakan skrip alat seperti rsync. Untuk mengurangi pengulangan pada file CSV besar, Anda bisa menggunakan sesuatu seperti YAML . Saya tidak yakin saya akan menyimpan sesuatu seperti JSON atau XML, kecuali jika Anda memiliki persyaratan hubungan yang signifikan.
Sejauh alternatif yang tidak disebutkan, jangan diskon Hadoop , yang merupakan implementasi open source dari MapReduce. Ini akan bekerja dengan baik jika Anda memiliki TON data yang terstruktur secara longgar yang perlu dianalisis, dan Anda ingin berada dalam skenario di mana Anda bisa menambahkan 10 mesin lagi untuk menangani pemrosesan data.
Sebagai contoh, saya mulai mencoba menganalisis kinerja yang pada dasarnya semua nomor waktu dari berbagai fungsi yang dicatat di sekitar 20 mesin. Setelah mencoba memasukkan semuanya ke dalam RDBMS, saya menyadari bahwa saya benar-benar tidak perlu menanyakan data lagi setelah saya mengumpulkannya. Dan, itu hanya berguna untuk saya dalam format gabungan. Jadi, saya menyimpan file-file log di sekitar, dikompresi, dan kemudian meninggalkan data agregat dalam DB.
Catatan Saya lebih terbiasa berpikir dengan ukuran "besar".
sumber
Prety filesystem berguna untuk menyimpan data biner, yang tidak pernah bekerja dengan sangat baik di database relasional.
sumber
Coba Prevayler: http://www.prevayler.org/wiki/ Prevayler adalah alternatif untuk RDBMS. Di situs ada info lebih lanjut.
sumber
Jika Anda tidak membutuhkan ACID , Anda mungkin tidak memerlukan overhead RDBMS. Jadi, tentukan apakah Anda membutuhkannya terlebih dahulu. Sebagian besar jawaban non-RDBMS yang diberikan di sini tidak memberikan ACID.
sumber
http://www.hdfgroup.org/
Jika Anda memiliki kumpulan data yang sangat besar, alih-alih menggulirkan data Anda sendiri, Anda dapat menggunakan HDF, Format Data Hierarkis.
http://en.wikipedia.org/wiki/Hierarchical_Data_Format :
Ini juga hierarkis seperti sistem file, tetapi data disimpan dalam satu file biner ajaib.
Pikirkan petabyte data penginderaan jauh NASA / JPL.
sumber
Hari,
Satu kasus yang bisa saya pikirkan adalah ketika data yang Anda modelkan tidak dapat dengan mudah diwakili dalam database relasional.
Salah satu contohnya adalah database yang digunakan oleh operator telepon seluler untuk memantau dan mengontrol stasiun pangkalan untuk jaringan telepon seluler.
Saya hampir semua kasus ini, OO DB digunakan, baik produk komersial atau sistem linting yang memungkinkan pusaka benda.
Saya telah bekerja pada aplikasi pemantauan 3G untuk perusahaan besar yang akan tetap tanpa nama, tetapi yang logonya merupakan noda anggur merah (-:, dan mereka menggunakan OO DB seperti itu untuk melacak semua berbagai atribut untuk sel-sel individual di dalam jaringan.
Interogasi DB semacam itu dilakukan dengan menggunakan teknik berpemilik yang, biasanya, benar-benar bebas dari SQL.
HTH.
Bersulang,
rampok
sumber
Database objek bukan database relasional. Mereka bisa sangat berguna jika Anda hanya ingin memasukkan beberapa objek dalam database. Mereka juga mendukung versi dan memodifikasi kelas untuk objek yang sudah ada di database. db4o adalah yang pertama muncul di benak saya.
sumber
Dalam beberapa kasus (data pasar keuangan dan kontrol proses misalnya) Anda mungkin perlu menggunakan basis data waktu nyata daripada RDBMS. Lihat tautan wiki
sumber
Ada alat RAD bernama JADE yang ditulis beberapa tahun lalu yang memiliki OODBMS bawaan. Inkarnasi sebelumnya dari mesin DB juga mendukung Digitalk Smalltalk. Jika Anda ingin mencicipi bangunan aplikasi menggunakan paradigma non-RDBMS, ini mungkin permulaan.
Produk OODBMS lainnya termasuk Objectivity , GemStone (Anda perlu mendapatkan VisualWorks Smalltalk untuk menjalankan versi Smalltalk tetapi ada juga versi java). Ada juga beberapa proyek penelitian open-source di ruang ini - EXODUS dan keturunannya SHORE datang ke pikiran.
Sayangnya, konsep itu tampaknya mati, mungkin karena kurangnya standar yang terlihat jelas dan kemampuan permintaan ad-hoc yang relatif buruk relatif terhadap sistem RDMBS berbasis SQL.
OODBMS paling cocok untuk aplikasi dengan struktur data inti yang paling baik disajikan sebagai grafik node yang saling berhubungan. Saya biasa mengatakan bahwa aplikasi OODBMS yang klasik adalah Multi-User Dungeon (MUD) di mana ruangan akan berisi avatar pemain dan benda-benda lainnya.
sumber
Anda dapat pergi jauh menggunakan file yang disimpan dalam sistem file. RDBMS menjadi lebih baik dalam menangani gumpalan, tetapi ini bisa menjadi cara alami untuk menangani data gambar dan sejenisnya, terutama jika kueri sederhana (enumerasi dan pemilihan masing-masing item.)
Hal-hal lain yang tidak cocok dengan RDBMS adalah struktur data hierarkis dan saya menduga data geospasial dan model 3D juga tidak mudah untuk dikerjakan.
Layanan seperti Amazon S3 menyediakan model penyimpanan yang lebih sederhana (nilai kunci>) yang tidak mendukung SQL. Skalabilitas adalah kuncinya di sana.
File Excel dapat bermanfaat juga, terutama jika pengguna harus dapat memanipulasi data dalam lingkungan yang akrab dan membangun aplikasi lengkap untuk melakukan hal itu tidak layak.
sumber
Ada sejumlah besar cara untuk menyimpan data - bahkan "databse relasional" mencakup sejumlah alternatif dari pustaka kode sederhana yang memanipulasi file lokal (atau file) seolah-olah itu adalah database relasional pada basis pengguna tunggal, melalui sistem berbasis file daripada yang dapat menangani banyak pengguna ke banyak pilihan sistem berbasis "server" yang serius.
Kami banyak menggunakan file XML - Anda mendapatkan data yang terstruktur dengan baik, alat yang bagus untuk menanyakan sama kemampuan untuk mengedit jika perlu, sesuatu yang dapat dibaca manusia dan Anda tidak perlu khawatir tentang kerja mesin db (atau cara kerja dari mesin db). Ini bekerja dengan baik untuk hal-hal yang pada dasarnya hanya baca (dalam kasus kami lebih sering daripada tidak dihasilkan dari db di tempat lain) dan juga untuk sistem pengguna tunggal di mana Anda bisa memuat data dan menyimpannya sesuai kebutuhan - tetapi Anda menciptakan peluang untuk masalah jika Anda ingin mengedit multi-pengguna - setidaknya satu file.
Bagi kami hanya itu - kami akan menggunakan sesuatu yang akan melakukan SQL (MS menawarkan seperangkat alat yang dijalankan dari .DLL untuk melakukan hal-hal pengguna tunggal sampai ke server perusahaan dan mereka semua berbicara dengan SQL yang sama (dengan batasan di ujung bawah)) atau kita akan menggunakan XML sebagai format karena (bagi kita) verbositas jarang menjadi masalah.
Saat ini kami tidak perlu memanipulasi data biner di aplikasi kami sehingga pertanyaan itu tidak muncul.
Murph
sumber
Orang mungkin ingin mempertimbangkan penggunaan server LDAP di tempat database SQL tradisional jika data aplikasi sangat berorientasi kunci / nilai dan hirarkis.
sumber
File BTree seringkali jauh lebih cepat daripada database relasional. SQLite mengandung di dalamnya sebuah perpustakaan BTree yang ada di domain publik (seperti dalam 'domain publik' yang sebenarnya, tidak menggunakan istilah secara longgar).
Terus terang, jika saya menginginkan sistem multi-pengguna, saya akan membutuhkan banyak upaya untuk tidak menggunakan database relasional server yang layak.
sumber
Database teks lengkap, yang dapat ditanyakan dengan operator kedekatan seperti "dalam 10 kata," dll.
Database relasional adalah alat bisnis yang ideal untuk banyak tujuan - cukup mudah untuk dipahami dan dirancang, cukup cepat, memadai bahkan ketika mereka tidak dirancang dan dioptimalkan oleh seorang jenius yang bisa "menggunakan kekuatan penuh," dll.
Tetapi beberapa tujuan bisnis memerlukan pengindeksan teks lengkap, yang mesin relasional tidak berikan atau tempelkan sebagai renungan. Secara khusus, bidang hukum dan medis memiliki petak besar teks yang tidak terstruktur untuk disimpan dan dilalui.
sumber
Juga: * Skenario tertanam - Di mana biasanya diperlukan untuk menggunakan sesuatu yang lebih kecil daripada RDBMS yang lengkap. Db4o adalah ODB yang dapat dengan mudah digunakan dalam kasus seperti itu. * Pengembangan cepat atau bukti konsep - di mana Anda ingin fokus pada bisnis dan tidak khawatir tentang lapisan kegigihan
sumber
Teorema CAP menjelaskannya dengan ringkas. SQL terutama menyediakan "Konsistensi Yang Kuat: semua klien melihat tampilan yang sama, bahkan di hadapan pembaruan".
sumber
KISS: Keep It Small and Simple
sumber
Saya akan menawarkan RDBMS :) Jika Anda tidak ingin memiliki masalah dengan pengaturan / administrasi, gunakan SQLite. Dibangun pada RDBMS dengan dukungan SQL penuh. Bahkan memungkinkan Anda untuk menyimpan semua jenis data di kolom apa pun.
Keuntungan utama terhadap misalnya file log: Jika Anda memiliki yang besar, bagaimana Anda akan mencari di dalamnya? Dengan mesin SQL, Anda cukup membuat indeks dan mempercepat operasi secara dramatis.
Tentang pencarian teks lengkap: SQLite juga memiliki modul untuk pencarian teks lengkap ..
Nikmati saja antarmuka standar yang bagus untuk data Anda :)
sumber
Salah satu alasan bagus untuk tidak menggunakan basis data relasional adalah ketika Anda memiliki kumpulan data besar dan ingin melakukan pemrosesan paralel dan didistribusikan secara masif pada data. Indeks web Google akan menjadi contoh sempurna dari kasus seperti itu.
Hadoop juga memiliki implementasi Sistem File Google yang disebut Sistem File Terdistribusi Hadoop .
sumber
Saya akan sangat menyarankan Lua sebagai alternatif penyimpanan data jenis SQLite.
Karena:
Ini adalah opsi "koleksi bahasa asli" dari jawaban yang diterima. Jika Anda menggunakan C / C ++ sebagai level aplikasi, sangat masuk akal untuk melempar mesin Lua (100kB biner) hanya demi membaca konfigurasi / data atau menuliskannya.
sumber