Apa itu Flat File?
(evidence.dev)- Flat file adalah format yang sangat umum dalam analisis data
- Panduan lengkap ini menjelaskan apa itu flat file, jenis-jenisnya, cara memilihnya, hingga use case, karakteristik format, serta perbandingannya dengan database non-flat-file dan DBMS relasional
Sulit untuk didefinisikan
- Flat file terutama digunakan saat mengekstrak dan memproses data dari database
- Biasanya berbentuk file teks sederhana seperti CSV, di mana setiap baris merepresentasikan record dan field dipisahkan dengan koma
- Namun, definisi "flat file" tidak sepenuhnya jelas, meski memiliki karakteristik umum berikut:
- Text-only: hanya menyimpan teks dan angka, bukan data biner (Blob)
- Format tabular: satu tabel per file, dengan susunan record berbasis baris
- Portabel: mudah ditampilkan, diedit, dan diproses tanpa perangkat lunak khusus
- Tidak terstruktur: umumnya tidak memiliki hierarki atau relasi antarreferensi record
- Tanpa kompresi: pada dasarnya tidak memiliki kompresi cerdas bawaan (meski DuckDB, Spark, dll. dapat menerima file zip)
- Tanpa indeks: tidak memiliki indeks bawaan untuk mencari record tertentu
- Tanpa deskripsi: umumnya tidak memiliki metadata atau informasi skema
- JSON dan YAML berada di luar definisi ini karena dapat memiliki struktur hierarkis dan skema
- Fakta bahwa format ini bisa dipakai untuk sangat banyak use case juga tidak banyak membantu
- CSV: format penyimpanan dan pertukaran data
- JSON: pertukaran data skala besar, manajemen konfigurasi, format respons API
- YAML: manajemen konfigurasi dan file definisi pipeline
Jenis-jenis Flat File
- Ada berbagai jenis tergantung cara data disusun dan disimpan
- Cara field dan record disusun
- Flat file tidak terstruktur: struktur tabel tunggal seperti CSV
- Flat file terstruktur: JSON, YAML, XML, dan lainnya memiliki struktur hierarkis
- Jenis delimiter field
- Setiap baris merepresentasikan satu record, dan delimiter digunakan untuk memisahkan field
- Dapat menggunakan koma(
,), tab(\t), atau pipe(|)
- Format lebar tetap vs lebar variabel
- Format lebar tetap memiliki panjang field yang konsisten → lebih cepat diproses
- Format lebar variabel menawarkan fleksibilitas pemrosesan yang lebih tinggi
- Pemisah data
- CSV dapat menyimpan tab dan baris baru (dengan escape)
- TSV tidak dapat menyimpan tab dan baris baru
- Kemudahan dibaca manusia
- Flat file sering kali dapat dibaca manusia
- Di beberapa platform, file Excel juga diklasifikasikan sebagai flat file
- Ada tidaknya metadata
- File seperti CSV tidak memiliki metadata
- JSON dapat menyertakan metadata dan skema sendiri
Use case Flat File
- Penyimpanan dan pertukaran
- Pertukaran data: CSV dan JSON berguna untuk pertukaran data antarplatform yang berbeda
- Integrasi data dalam ETL: flat file sering digunakan sebagai data sumber maupun tujuan dalam ETL
- Arsip dan backup: flat file berbasis teks sehingga cocok untuk penyimpanan jangka panjang
- Penggunaan utilitas
- Manajemen konfigurasi: YAML, JSON, INI, dll. digunakan untuk variabel lingkungan, koneksi database, dan lainnya
- Definisi pipeline data: JSON, YAML, dll. digunakan untuk mendefinisikan struktur pipeline
- Metadata dataset: JSON dapat mendefinisikan transformasi dan validasi untuk CSV
Contoh Flat File
CSV (Comma-Separated Values)
- Ekstensi:
.csv - Delimiter: koma
, - Struktur: datar (Flat)
- Mudah dibaca manusia
- Contoh:
name, country, age Alice, USA, 22 Bob, Canada, 34 Charlie, UK, 28 - Kapan dipilih:
- Cocok untuk data terstruktur berbentuk tabel
- Berguna saat diekspor dari sistem BI, Excel/Google Sheets
- Kapan dihindari:
- Tidak cocok jika membutuhkan struktur hierarkis yang kompleks
- Dapat menimbulkan masalah saat menangani data yang berisi koma
TSV (Tab-Separated Values)
- Ekstensi:
.tsv - Delimiter: tab
\t - Struktur: datar (Flat)
- Mudah dibaca manusia
- Contoh:
name country age Alice USA 22 Bob Canada 34 Charlie UK 28 - Kapan dipilih:
- Berguna saat harus menangani data yang mengandung koma
- Mudah diproses dengan tool CLI Unix
- Kapan dihindari:
- Bermasalah jika data mengandung tab
JSON (JavaScript Object Notation)
- Ekstensi:
.json - Struktur: hierarkis
- Mudah dibaca manusia
- Contoh:
[ {"name": "Alice", "country": "USA", "age": 22}, {"name": "Bob", "country": "Canada", "age": 34}, {"name": "Charlie": "UK", "age": 28} ] - Kapan dipilih:
- Cocok jika membutuhkan struktur data hierarkis
- Kapan dihindari:
- Tidak cocok jika kecepatan pemrosesan menjadi prioritas
YAML (YAML Ain’t Markup Language)
- Ekstensi: .yaml
- Struktur: hierarkis
- Mudah dibaca manusia
- Contoh:
name: Alice country: USA age: 22 - Kapan dipilih:
- Cocok saat membutuhkan file konfigurasi yang mudah dibaca manusia
- Kapan dihindari:
- Tidak cocok untuk penyimpanan data skala besar
File ENV
- Ekstensi: .env
- Struktur: datar (Flat)
- Mudah dibaca manusia
- Contoh:
APP_NAME=MyApp ENVIRONMENT=production - Kapan dipilih:
- Cocok saat membutuhkan file konfigurasi di lingkungan deployment maupun lokal
- Kapan dihindari:
- Tidak cocok untuk menyimpan struktur data yang kompleks
Perbandingan Flat File vs Non-Flat File vs DBMS
Flat file sering dibandingkan dengan database relasional (RDBMS), dan ada juga format perantara seperti Avro, Parquet, dan ORC. Berikut perbandingan karakteristik format-format utama:
-
Cara penyusunan record
- CSV: penyimpanan data berbasis baris (Row)
- JSON: penyimpanan berbasis pasangan key-value
- Parquet: penyimpanan berbasis kolom (Column)
- DBMS relasional: penyimpanan berbasis baris (Row)
-
Apakah formatnya dapat dibaca manusia
- CSV dan JSON: berbasis teks → mudah dibaca manusia
- Parquet dan DBMS: berbasis biner → sulit dibaca manusia
-
Portabilitas
- CSV, JSON, Parquet: kompatibilitas antarplatform tinggi
- DBMS: hanya dapat digunakan dalam perangkat lunak tertentu
-
Dukungan struktur hierarkis
- CSV: tidak ada struktur hierarkis
- JSON: mendukung struktur hierarkis
- Parquet: mendukung struktur bertingkat
- DBMS: mendukung banyak tabel dan struktur relasional
-
Skalabilitas
- CSV, JSON: skalabilitas rendah
- Parquet, DBMS: skalabilitas tinggi
-
Dukungan indeks
- CSV, JSON: tidak ada indeks
- Parquet: pencarian cepat dimungkinkan lewat metadata pada level file dan kolom
- DBMS: mendukung indeks
-
Dukungan skema
- CSV: tidak memiliki skema
- JSON: dapat menyertakan skema
- Parquet, DBMS: skema diterapkan secara ketat
- Parquet tidak menggunakan indeks B-Tree atau hash. Sebagai gantinya, Parquet meningkatkan kecepatan pencarian data melalui metadata di level file, row group, dan kolom
Memilih format Flat File yang tepat
- CSV, TSV → untuk pertukaran dan penyimpanan data sederhana, seperti saat mengarsipkan data atau memindahkannya antarplatform
- JSON → digunakan saat membutuhkan format file self-describing dengan struktur hierarkis
- YAML → cocok untuk konfigurasi dan pengaturan pipeline
- Parquet → patut dipertimbangkan saat membutuhkan ukuran file kecil, query cepat, dan dukungan tipe data yang kompleks
Belum ada komentar.