Jawaban Matt Sheppard sangat bagus (mod up), tetapi saya akan mempertimbangkan faktor-faktor ini ketika memikirkan spindle:
- Struktur: apakah jelas pecah berkeping-keping, atau apakah Anda membuat pengorbanan?
- Penggunaan: bagaimana data akan dianalisis / diambil / grokked?
- Seumur hidup: berapa lama data berguna?
- Ukuran: berapa banyak data yang ada?
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".