5 puan yazan GN⁺ 2025-03-13 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Flat file, veri analizinde çok yaygın bir biçimdir
  • Bu kapsamlı rehber, flat file'ın ne olduğunu, hangi türlerinin bulunduğunu ve hangisinin seçilmesi gerektiğini; ayrıca kullanım senaryolarını, format özelliklerini ve non-flat file veritabanları ile ilişkisel DBMS'lerle karşılaştırmalarını açıklar

Tanımlaması zor

  • Flat File, çoğunlukla veritabanından veri çıkarılıp işlenirken kullanılır
  • CSV gibi basit metin dosyası biçimindedir; her satır bir kaydı temsil eder ve alanlar virgülle ayrılır
  • Ancak "Flat File" tanımı net değildir ve şu ortak özelliklere sahiptir:
    • Yalnızca metin: İkili veri (Blob) yerine yalnızca metin ve sayı saklar
    • Tablo biçimi: Dosya başına tek tablo, satır tabanlı kayıt yapısı
    • Taşınabilir: Özel bir yazılım olmadan kolayca çıktılanabilir, düzenlenebilir ve işlenebilir
    • Yapısız: Genellikle kayıtlar arasında hiyerarşi veya ilişki yoktur
    • Sıkıştırmasız: Varsayılan olarak akıllı sıkıştırma yoktur (ancak DuckDB, Spark vb. zip dosyalarını kabul eder)
    • İndekssiz: Belirli kayıtları bulmak için yerleşik indeks yoktur
    • Kendini açıklamaz: Genellikle metadata veya şema bilgisi içermez
  • JSON ve YAML, hiyerarşik yapı ve şema içerebildikleri için bu tanımın dışına çıkar
  • Çok çeşitli kullanım senaryolarında kullanılabilmesi de pratikte pek yardımcı olmaz
    • CSV: Veri saklama ve değişim formatı
    • JSON: Büyük ölçekli veri değişimi, yapılandırma yönetimi, API dönüş formatı
    • YAML: Yapılandırma yönetimi ve pipeline tanım dosyaları

Flat File türleri

  • Verinin nasıl düzenlenip saklandığına göre farklı türler vardır
  • Alan ve kayıt düzenleme biçimi
    • Yapısız Flat File: CSV gibi tek tablo yapısı
    • Yapısal Flat File: JSON, YAML, XML gibi formatlarda hiyerarşik yapı bulunur
  • Alan ayırıcı türü
    • Satır bir kaydı temsil eder ve alanlar ayırıcılarla ayrılır
    • Virgül(,), sekme(\t), pipe(|) kullanılabilir
  • Sabit genişlikli vs değişken genişlikli formatlar
    • Sabit genişlikli formatlarda alanlar aynı uzunluktadır → işleme hızı yüksektir
    • Değişken genişlikli formatlar daha esnek işlemeye imkan tanır
  • Veri ayırıcıları
    • CSV, sekme ve satır sonu saklayabilir (escape işlemiyle)
    • TSV, sekme ve satır sonunu desteklemez
  • İnsan tarafından okunabilirlik
    • Flat file'lar çoğu zaman insanlar tarafından okunabilir
    • Bazı platformlar Excel dosyalarını da flat file olarak sınıflandırır
  • Metadata içerip içermemesi
    • CSV gibi dosyalarda metadata yoktur
    • JSON, kendi metadata'sını ve şemasını içerebilir

Flat File kullanım senaryoları

  • Saklama ve değişim
    • Veri değişimi: CSV ve JSON, farklı platformlar arasında veri değişimi için kullanışlıdır
    • ETL'de veri entegrasyonu: Flat file'lar ETL süreçlerinde kaynak ve hedef veri olarak sık kullanılır
    • Arşiv ve yedekleme: Flat file'lar metin tabanlı oldukları için uzun süreli saklamaya uygundur
  • Araçsal kullanım
    • Yapılandırma yönetimi: YAML, JSON, INI vb. ortam değişkenleri, veritabanı bağlantıları gibi alanlarda kullanılır
    • Veri pipeline tanımı: JSON, YAML vb. pipeline yapısını tanımlamak için kullanılır
    • Veri kümesi metadata'sı: JSON, CSV dönüşümlerini ve doğrulama kurallarını tanımlayabilir

Flat File örnekleri

CSV (Comma-Separated Values)

  • Uzantı: .csv
  • Ayırıcı: virgül ,
  • Yapı: düz (Flat)
  • İnsan tarafından okunması kolaydır
  • Örnek:
    name, country, age  
    Alice, USA, 22  
    Bob, Canada, 34  
    Charlie, UK, 28  
    
  • Tercih etme kriterleri:
    • Yapılandırılmış tablo biçimindeki veriler için uygundur
    • BI sistemlerine, Excel/Google Sheets'e çıktı verirken kullanışlıdır
  • Kaçınma kriterleri:
    • Karmaşık hiyerarşik yapı gerektiğinde uygun değildir
    • Virgül içeren verilerde sorun çıkarabilir

TSV (Tab-Separated Values)

  • Uzantı: .tsv
  • Ayırıcı: sekme \t
  • Yapı: düz (Flat)
  • İnsan tarafından okunması kolaydır
  • Örnek:
    name	country	age  
    Alice	USA	22  
    Bob	Canada	34  
    Charlie	UK	28  
    
  • Tercih etme kriterleri:
    • Virgül içeren verilerin işlenmesi gerektiğinde kullanışlıdır
    • Unix CLI araçlarıyla kolayca işlenebilir
  • Kaçınma kriterleri:
    • Sekme içeren verilerde sorun çıkarır

JSON (JavaScript Object Notation)

  • Uzantı: .json
  • Yapı: hiyerarşik
  • İnsan tarafından okunması kolaydır
  • Örnek:
    [  
      {"name": "Alice", "country": "USA", "age": 22},  
      {"name": "Bob", "country": "Canada", "age": 34},  
      {"name": "Charlie", "country": "UK", "age": 28}  
    ]  
    
  • Tercih etme kriterleri:
    • Hiyerarşik veri yapısı gerektiğinde uygundur
  • Kaçınma kriterleri:
    • Hız öncelikliyse uygun değildir

YAML (YAML Ain’t Markup Language)

  • Uzantı: .yaml
  • Yapı: hiyerarşik
  • İnsan tarafından okunması kolaydır
  • Örnek:
    name: Alice  
    country: USA  
    age: 22  
    
  • Tercih etme kriterleri:
    • İnsan tarafından okunması kolay yapılandırma dosyaları gerektiğinde uygundur
  • Kaçınma kriterleri:
    • Büyük ölçekli veri saklama için uygun değildir

ENV dosyaları

  • Uzantı: .env
  • Yapı: düz (Flat)
  • İnsan tarafından okunması kolaydır
  • Örnek:
    APP_NAME=MyApp  
    ENVIRONMENT=production  
    
  • Tercih etme kriterleri:
    • Deployment ve yerel ortamlar için yapılandırma dosyası gerektiğinde uygundur
  • Kaçınma kriterleri:
    • Karmaşık veri yapılarının saklanması için uygun değildir

Flat File vs Non-Flat File vs DBMS karşılaştırması

Flat File'lar sık sık ilişkisel veritabanlarıyla (RDBMS) karşılaştırılır; ayrıca Avro, Parquet ve ORC gibi ara formatlar da vardır. Aşağıda başlıca formatların özellik karşılaştırması yer alır:

  • Kayıt düzenleme biçimi

    • CSV: Satır (Row) tabanlı veri saklama
    • JSON: Anahtar-değer çiftlerine dayalı saklama
    • Parquet: Sütun (Column) tabanlı saklama
    • İlişkisel DBMS: Satır (Row) tabanlı saklama
  • İnsan tarafından okunabilirlik

    • CSV ve JSON: Metin tabanlı → okunması kolay
    • Parquet ve DBMS: İkili tabanlı → okunması zor
  • Taşınabilirlik (Portability)

    • CSV, JSON, Parquet: Platformlar arası uyumluluk yüksektir
    • DBMS: Yalnızca belirli yazılımlarda kullanılabilir
  • Hiyerarşik yapı desteği

    • CSV: Hiyerarşik yapı yok
    • JSON: Hiyerarşik yapı desteği var
    • Parquet: İç içe geçmiş yapıları destekler
    • DBMS: Birden fazla tabloyu ve ilişkisel yapıları destekler
  • Ölçeklenebilirlik (Scalability)

    • CSV, JSON: Ölçeklenebilirlik düşüktür
    • Parquet, DBMS: Ölçeklenebilirlik yüksektir
  • İndeks desteği

    • CSV, JSON: İndeks yok
    • Parquet: Dosya ve sütun düzeyindeki metadata sayesinde hızlı arama mümkündür
    • DBMS: İndeks desteği vardır
  • Şema desteği

    • CSV: Şema yok
    • JSON: Şema içerebilir
    • Parquet, DBMS: Şema zorunlu olarak uygulanır
  • Parquet, B-Tree veya hash indeksleri kullanmaz. Bunun yerine dosya, satır grubu ve sütun düzeyindeki metadata ile veri arama hızını artırır

Doğru Flat File formatını seçmek

  • CSV, TSV → veriyi arşivlemek veya platformlar arasında taşımak gibi basit veri değişimi ve saklama işleri
  • JSON → hiyerarşik yapıya sahip, kendini açıklayan bir dosya formatı gerektiğinde
  • YAML → yapılandırma ve pipeline ayarları için uygundur
  • Parquet → küçük dosya boyutu, hızlı sorgular ve karmaşık veri türü desteği gerektiğinde değerlendirilmelidir

Henüz yorum yok.

Henüz yorum yok.