Flat File nedir?
(evidence.dev)- 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.