Apakah CSV dianggap sebagai opsi yang baik terhadap XML dan JSON untuk bahasa pemrograman?
Saya biasanya menggunakan XML dan JSON (atau terkadang file teks biasa) sebagai penyimpanan file datar. Namun, baru-baru ini saya menemukan implementasi CSV di PHP . Saya biasanya melihat CSV digunakan untuk input dalam file Excel , tetapi saya tidak pernah menggunakannya dengan pemrograman. Apakah akan lebih baik daripada XML atau JSON dengan cara apa pun?
programming-practices
csv
Wisnu G
sumber
sumber
Jawaban:
Jawabannya adalah, tergantung.
CSV sangat bagus untuk kasus penggunaan tertentu. Misalnya sebagai format "streaming" untuk kumpulan data besar, lebih mudah untuk streaming daripada XML / JSON, dan file CSV mengambil lebih sedikit ruang penyimpanan. Saya menggunakannya untuk mengalirkan kumpulan data dalam rentang gigabyte di mana format lain tidak praktis.
Ini juga sangat umum di industri tertentu ketika berhadapan dengan sistem lama dan alur kerja. Coba impor JSON ke dalam MS Excel.
ODI baru-baru ini berkomentar tentang CSV, menyebut 2014 "Tahun CSV"
Untuk pemformatan CSV "benar", pertimbangkan untuk menggunakan tipe mime CSV dalam respons HTTP Anda.
sumber
Jelas tidak.
CSV adalah format tabel yang memetakan dengan sangat baik ke kumpulan data atau data tabular lainnya. Tetapi tidak semua data berbentuk tabel! Secara umum, kami ingin membuat serial objek grafik . Ini bisa sulit dalam kasus-kasus berikut:
Kami selanjutnya ingin dapat menderailkan objek secara andal dari format penyimpanan kami.
XML
Terutama merupakan bahasa markup yang dapat dikembangkan . Ini dapat bertanduk sepatu untuk menyimpan struktur data umum juga. Dukungan bahasa untuk ID berarti bahwa grafik kompleks dapat dibuat, meskipun paling baik digunakan untuk pohon. Suatu dokumen dapat diuji kebenarannya terhadap suatu spesifikasi. Ada berbagai masalah dengan format ini yang dapat membuatnya tidak praktis, seperti verbositas ekstrim.
JSON
Terutama merupakan cara untuk menyimpan pohon objek sederhana . Tidak ada dukungan untuk grafik umum. JSON tidak memiliki konsep tipe di luar string primitif , integer , float , boolean , null dan array tipe koleksi dan objek .
YAML
Paling mudah dipahami sebagai perpanjangan JSON. Memiliki gagasan tentang alias yang memungkinkan grafik objek dengan kompleksitas sewenang-wenang dibuat. Memiliki konsep tag mirip metadata yang dapat digunakan untuk mengetik dengan benar.
CSV
Tidak memiliki apa pun, kecuali satu meja. Jika kita ingin menyimpan grafik objek, kita harus menggunakan skema seperti
Ada banyak dialek CSV yang tidak setuju pada pembatas, terminator garis, mengutip, karakter melarikan diri, dan banyak masalah lain yang membuatnya tidak cocok untuk data umum (biner). Semua ini membuatnya agak sulit untuk memproses data CSV.
Jadi pada dasarnya, hal-hal mudah sulit atau tidak mungkin dengan CSV saat menggunakannya sebagai format serialisasi umum.
Kritik ini tidak berlaku ketika menggunakannya untuk menyimpan data yang benar-benar tabular seperti lembar waktu atau serangkaian pengukuran. Di sini, CSV (sering dalam varian nilai yang dipisahkan tab) biasanya lebih ringkas dan lebih mudah digunakan daripada format data lainnya.
sumber
Saya juga harus mengatakan bahwa itu tergantung pada apa yang ingin Anda capai. Untuk banyak masalah, tidak masalah apa yang Anda pilih jika masalahnya cukup kecil dan pilihan Anda cocok dengan sistem yang ada.
Mengambil sistem lawas dan mencoba menyisir dalam format baru kadang-kadang bisa menjadi masalah karena Anda telah memperkenalkan lebih banyak kompleksitas dan memiliki sistem input baru untuk debug. Saya sering melihat ini ketika orang baru lebih suka sesuatu yang berbeda dari yang ada, atau ketika format baru muncul dan mereka ingin bereksperimen dengannya. Ini mungkin atau mungkin bukan ide yang baik, tergantung pada keadaan.
Bertahun-tahun yang lalu saya bekerja pada sistem basis data grafik penelitian yang bergantung pada file CSV dari berbagai format. Pengimpor file CSV akan membuat grafik untuk kami dan telah bertahun-tahun bekerja untuk debug dan mengoptimalkan kode. Itu cepat dan fleksibel dan kami dengan senang hati menggunakannya untuk mem-bootstrap proyek penelitian besar. Ketika XML muncul di tempat kejadian kami menambahkan importir XML tetapi itu tidak selalu merupakan peningkatan dalam hal kecepatan atau mengekspresikan kompleksitas, dan tentu saja XML tidak lebih baik dalam mengekspresikan struktur grafik daripada CSV. JSON jauh lebih bagus (dan terser) daripada XML tetapi serupa dalam banyak hal, jadi saya berharap hasil yang sama ketika membuat importir baru pada sistem itu.
Pada satu titik waktu kami memiliki pelanggan membawa sejumlah besar data dalam format "cobol", file dengan garis panjang variabel yang berisi penanda yang menunjukkan cara menafsirkan byte yang diikuti pada baris itu. Itu datang dari waktu ketika penyimpanan mahal sehingga kekompakan adalah persyaratan. Kami mengimpor data itu dengan mengonversinya ke dalam format CSV dengan cepat dan memasukkannya ke importir CSV. Itu mudah dilakukan dan meminimalkan jumlah debugging dan pemeliharaan, yang merupakan hal yang baik. Jika kami harus mengimpor data semacam itu sepanjang waktu, kami mungkin telah memasukkannya ke dalam sistem secara langsung untuk mendapatkan peningkatan kinerja dan efisiensi.
Jadi, itu tergantung pada apa yang Anda lakukan dan apa yang dilakukan sistem yang mendasarinya. Dalam contoh saya importir CSV direkayasa secara solid dan dapat diandalkan. Saya ragu untuk memberi tahu Anda bahwa satu format lebih baik atau lebih buruk tanpa memahami apa yang terjadi di lapisan lain yang saya bangun. Saya suka JSON dan lebih menyukainya, tetapi saya tahu bahwa dengan struktur data yang kompleks dan set data yang cukup besar, file CSV dapat dibuat bekerja dengan sangat baik juga.
sumber
Tidak.
CSV sebenarnya bukan format tunggal. Ada berbagai gaya untuk melarikan diri, pemisah, dan masalah pemformatan lainnya yang dimiliki oleh banyak file CSV.
Jika Anda akan menggunakan ini sebagai penyimpanan file datar, menggunakan JSON akan memberi Anda jauh lebih baik. JSON memetakan ke dan dari objek-objek dengan kerumitan yang jauh lebih sedikit daripada Anda akan memiliki CSV kludging untuk melakukannya.
sumber
Saya akan sangat menyarankan untuk tidak melakukannya. Saya mungkin OK untuk output CSV di beberapa titik (jika pengguna memintanya). Tapi itu cocok untuk penyimpanan / tujuan impor. Ini sebagian besar disebabkan oleh fakta bahwa "CSV" sangat tidak jelas. Apakah "C" menunjukkan "koma" atau "karakter" terpisah? Bagaimana Anda memperlakukan string teks yang berisi karakter escape seperti "? Setiap implementasi CSV terkutuk memperlakukan karakter escape dll. Berbeda, yang mengarah ke file yang bisa ex- tetapi tidak diimpor dll.
Excel adalah demonstrasi yang baik: Dalam versi bahasa Inggris menggunakan "," sebagai pemisah. Di Jerman, ia menggunakan ";". Jadi versi Jerman tersedak file CSV bahasa Inggris, dan sebaliknya ...
Kekuatan utamanya adalah keterbacaan manusia, yang tidak boleh diabaikan. Tapi saya tidak akan mengandalkan itu sebagai format penyimpanan, terlalu rapuh untuk tujuan itu. Jika Anda harus mengekspor file untuk manusia, Anda mungkin menggunakan CSV tetapi bahkan kemudian saya akan mencoba menggunakan perpustakaan yang menulis ke file xlsx (mereka tersedia secara bebas).
sumber
Secara umum NO. Mengapa? JSON dan XML pada dasarnya ada untuk menyingkirkan CSV yang ditakuti. Mereka adalah pendekatan terstruktur dari apa yang telah dilakukan tanpa terstruktur dengan CSV untuk waktu yang lama. Ya, ada beberapa kasus penggunaan di mana CSV masih disukai tetapi secara umum dalam 9 dari 10 kasus Anda lebih baik tidak menggunakan CSV.
sumber