5 poin oleh GN⁺ 2025-03-13 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.