53 puan yazan xguru 2024-12-09 | 14 yorum | WhatsApp'ta paylaş
  • Farklı sorunları çözmek için dikkat etmeye değer 7 DB tanıtılıyor
  • Bu, "en iyi DB" listesi değil; yeni ve faydalı bakış açıları sunan araçların listesi
  • 2025'te bu veritabanlarının her birine birer hafta ayırmanız öneriliyor (7 DBs in 7 Weeks)

1. PostgreSQL: varsayılan veritabanı

  • PostgreSQL, fiilen varsayılan olarak kullanılan güvenilir bir teknolojidir
    • "Just use Postgres" ifadesi, yaygın bilinen bir meme ve güvenilirliğin simgesi haline gelmiş bir sözdür
    • ACID uyumludur ve fiziksel ile mantıksal replikasyon dahil güçlü özellikler sunar
    • Büyük sağlayıcılar arasında geniş destek gören, oturmuş bir veritabanıdır
  • PostgreSQL'in en büyük çekiciliği: genişletilebilirlik
    • Eklentiler (Extensions) aracılığıyla özgün işlevler eklenebilir
    • Öne çıkan eklenti örnekleri:
      • AGE: grafik veri yapıları ve Cypher sorgu dili desteği
      • TimescaleDB: zaman serisi verileriyle çalışma desteği
      • Hydra Columnar: sütun tabanlı depolama motoru sağlar
    • Eklentiler, PostgreSQL'i diğer veritabanlarından ayıran temel unsurdur
  • PostgreSQL'in kullanışlılığı ve genişletilebilirliği
    • Zengin bir ekosisteme sahiptir; varsayılan ayarları makul ve kullanıcı dostudur
    • PostgreSQL olmayan servisler bile istemci uyumluluğu için Postgres wire protocol kullanır
    • WebAssembly(Wasm) ortamında bile kurulabilecek kadar hafiftir
  • PostgreSQL öğrenmek tavsiye ediliyor
    • PostgreSQL'in imkânlarını ve sınırlarını anlamak için zaman ayırmaya değer
    • Örnek: MVCC(Multi-Version Concurrency Control) karmaşıklığını anlamak
    • Basit bir CRUD uygulaması geliştirmek veya PostgreSQL eklentileri yazmak öneriliyor

2. SQLite: local-first veritabanı

  • SQLite, bağımsız çalışabilen bir "local-first" veritabanıdır
    • İstemci-sunucu modelinin dışına çıkar ve uygulamayla aynı ortamda çalışır
    • Örnek: WhatsApp ve Signal, sohbet verilerini depolamak için cihaz içinde SQLite kullanır
  • SQLite'ın gelişmiş kullanım senaryoları
    • Temel bir ACID uyumlu veritabanının ötesinde yaratıcı kullanımlar mümkün
    • Yeni araçlar ve eklentiler:
      • Litestream: SQLite için streaming backup sağlar
      • LiteFS: dağıtık erişimi destekleyerek daha esnek topolojiler kurulmasına imkân verir
      • CR-SQLite: CRDT(Conflict-free Replicated Data Types) kullanarak değişiklik kümeleri birleştirilirken çakışma çözme ihtiyacını ortadan kaldırır
  • SQLite'ın yeniden yükselen popülaritesi
    • Ruby on Rails 8.0 sayesinde yeniden ilgi görüyor
    • 37signals: SQLite tabanlı Rails modülleri geliştiriyor (Solid Queue vb.)
      • Rails'in çoklu SQLite veritabanı yönetimi desteği (database.yml)
    • Bluesky: kullanıcı başına ayrı SQLite veritabanı kullanan Personal Data Servers yaklaşımı
  • SQLite kullanmayı öğrenmek tavsiye ediliyor
    • SQLite ile yerel odaklı mimariler üzerinde deneyler yapmak
    • Mevcut PostgreSQL tabanlı istemci-sunucu modelinin SQLite ile değiştirilebilir olup olmadığını denemek

3. DuckDB: her şeyi sorgulayabilen veritabanı

  • DuckDB, OLAP'e odaklanan gömülü bir veritabanıdır
    • SQLite gibi uygulamayla birlikte çalışır, ancak OLTP yerine OLAP iş yüklerine odaklanır
    • Veri analizi ve sorgu merkezli tasarlanmış bir sistemdir
  • DuckDB'nin "Query-Anything" özelliği
    • Çeşitli veri kaynakları doğrudan SQL ile sorgulanabilir:
      • CSV, TSV, JSON gibi yaygın dosya biçimleri
      • Parquet gibi gelişmiş dosya biçimleri desteği
    • Bu özellik esneklik sağlar; örneğin Bluesky veri akışını analiz etmek için kullanılabilir
  • Genişletilebilirlik ve ekosistem
    • DuckDB'de de eklentiler vardır, ancak Postgres kadar zengin değildir (nispeten genç bir proje)
    • Topluluk katkılı pek çok eklenti bulunur; gsheets (Google Sheets entegrasyonu) dikkat çekicidir
  • DuckDB kullanmayı öğrenmek tavsiye ediliyor
    • Python notebook'ları veya Evidence ile veri analizi ve işleme deneyleri yapmak
    • SQLite ile birleştirerek SQLite veritabanının analitik sorgularını DuckDB'ye devredip performansı artırmak

4. ClickHouse: sütun tabanlı veritabanı

  • ClickHouse, OLAP iş yüklerine odaklanan bir veritabanıdır
    • OLTP için PostgreSQL, OLAP için ClickHouse birleşimi ideal görülür
    • Büyük ölçekli analitik iş yüklerini işler; yatay ölçekleme ve sharding ile yüksek veri ekleme hızlarını destekler
  • ClickHouse'un başlıca özellikleri
    • Katmanlı depolama desteği:
      • "Hot data" ve "cold data" ayrı depolanabilir
      • Örnek: GitLab belgelerinde bunun kullanımına dair ayrıntılı bir vaka anlatılır
    • Büyük veri kümeleri ve gerçek zamanlı analiz:
      • DuckDB'nin işlemesinin zor olacağı boyuttaki veri kümeleri için uygundur
      • Gerçek zamanlı analiz gereken durumlarda güçlü performans sunar
  • Operasyonel kullanım kolaylığı
    • Dağıtım, ölçekleme, yedekleme gibi operasyon dokümantasyonu sistemli ve ayrıntılıdır
    • Örnek: uygun CPU ayarlarının nasıl yapılacağını bile anlatan belgeler sunulur
  • ClickHouse öğrenmek tavsiye ediliyor
    • Büyük analitik veri kümeleri üzerinde deney yapmak veya DuckDB'de yapılan analizleri ClickHouse'a taşımak
    • ClickHouse'un gömülü sürümü chDB ile SQLite'la daha doğrudan karşılaştırma yapmak

5. FoundationDB: katmanlı veritabanı

  • FoundationDB, "veritabanlarının temeli" gibi çalışan benzersiz bir sistemdir
    • Bir anahtar-değer deposu olarak tasarlanmıştır, ancak basit bir veritabanından çok veritabanı kurmak için bir "temel" görevi görür
    • Apple, Snowflake ve Tigris Data gibi büyük şirketlerde kullanılır
  • Başlıca özellikler ve sınırlamalar
    • Sınırlamalar:
      • İşlem verisi 10MB'ı aşamaz
      • İşlemler, ilk okumadan sonra 5 saniyeyi geçemez
    • Bu sınırlamalar sayesinde büyük ölçekli ortamlarda bile tam ACID işlemleri desteklenebilir
      • Örnek: 100TiB üzeri kümelerin işletildiği vakalar
  • FoundationDB'nin tasarımı ve testleri
    • Belirli iş yüklerine optimize edilerek tasarlanmıştır
    • Simülasyon testleri ile kararlılık ve ölçeklenebilirlik kanıtlanmıştır:
      • Antithesis ve diğer veritabanlarında da aynı test metodolojisi kullanılır
      • İlgili kaynaklar: Tyler Neely ve Phil Eaton'ın yazıları
  • "Katmanlı" veritabanı olarak FoundationDB
    • Depolama motoru ile veri modeli arasındaki bağ gevşektir:
      • Farklı katmanlarda depolama motoru yeniden eşlenebilir
      • Örnek: Record Layer, Document Layer (FoundationDB organizasyonu tarafından sağlanır)
    • Tigris Data'nın yazdığı katman tasarım örnekleri incelenmeye değerdir
  • FoundationDB öğrenmek tavsiye ediliyor
    • Eğitimleri takip edip RocksDB gibi sistemlerin yerine geçme potansiyelini araştırmak
    • Tasarım yöntemleri (Design Recipes) ve ilgili makaleleri okumak
    • Anti-Features ve Features belgeleriyle kullanım sınırlamalarını ve çözülebilen sorunları anlamak

6. TigerBeetle: tavizsiz doğruluk için veritabanı

  • TigerBeetle, finansal işlemlere odaklanan tek amaçlı bir veritabanıdır
    • Genel amaçlı veritabanlarından farklı olarak belirli bir amaca, özellikle de finansal işlemlere odaklanır
    • Açık kaynak olarak sunulur; yüksek güvenilirlik ve doğruluk hedefiyle tasarlanmıştır
  • Tavizsiz doğruluk için tasarım felsefesi
    • NASA'nın Power of Ten Rules yaklaşımını ve Protocol-Aware Recovery yöntemini uygular
    • Strict serialisability ve Direct I/O kullanarak kernel page cache ile ilgili sorunlardan kaçınır
    • Safety doc ve kendine özgü programlama tarzı "Tiger Style", bu titizliği açıkça gösterir
  • Zig diliyle geliştirilen yenilikçi yaklaşım
    • Zig, nispeten yeni bir sistem programlama dilidir; TigerBeetle'ın hedeflerine son derece uygundur
    • Sadelik ve performansı en üst düzeye çıkarmak için Zig'in avantajlarından yararlanır
  • TigerBeetle'ı öğrenme ve kullanma önerileri
    • Yerel dağıtım ortamında finansal hesap modelleme deneyleri:
      • Quick Start'ı izleyerek kurulum ve kullanım
    • System Architecture docs üzerinden genel amaçlı veritabanlarıyla birleştirme olasılıklarını incelemek
    • Örnek: PostgreSQL veya FoundationDB ile entegre ederek kullanım senaryolarını genişletmek

7. CockroachDB: küresel veritabanı

  • CockroachDB, küresel dağıtık bir veritabanıdır
    • PostgreSQL wire protocol ile uyumludur; yatay ölçekleme ve güçlü tutarlılık sunar
    • Google Spanner'dan ilham alan tasarımı, veritabanını çoklu bölgelere yaymayı mümkün kılar
  • CockroachDB'nin başlıca teknik özellikleri
    • Zaman senkronizasyon teknolojisi:
      • Google Spanner atomik saatler ve GPS saatleri kullanırken CockroachDB, sıradan donanımda da çalışacak şekilde tasarlanmıştır
      • NTP tabanlı senkronizasyon gecikmesi telafisi, düğümler arası clock drift karşılaştırması ve maksimum offset aşıldığında üyeliğin sonlandırılması
    • Çoklu bölge yapılandırması:
      • Table Localities özelliği sayesinde okuma/yazma trade-off'larına göre optimizasyon yapılabilir
      • Veriler kullanıcıların coğrafi konumuna göre dağıtılarak performans ve gecikme iyileştirilebilir
  • CockroachDB kullanmayı öğrenme önerileri
    • MovR örneğini yeniden uygulamak:
      • İstediğiniz dil ve framework ile MovR'ı (dağıtık uygulama örneği) geliştirmek
    • CockroachDB'nin çoklu bölge ve ölçekleme stratejilerini kullanarak küresel uygulama tasarımını denemek
  • CockroachDB'yi seçme nedeni
    • DynamoDB gibi diğer dağıtık veritabanlarının aksine yerel ortamda ücretsiz çalıştırılabilir
    • Güçlü tutarlılık ve küresel dağıtım desteği gibi ayırt edici özellikler sunar

Wrap Up

  • Tanıtılan veritabanları, farklı sorunları ve gereksinimleri çözmek için tasarlanmıştır
  • 2025'te bu veritabanlarını öğrenerek daha ilginç ve yaratıcı problem çözme yöntemlerini keşfedin!

14 yorum

 
wfedev 2025-11-28

Her Şeyi Sorgula! 😆🐤

 
budaestew 2024-12-16

DuckDB'nin analiz performansının beklediğimden çok daha iyi olmasına şaşırdım

 
halfenif 2024-12-09

Aylardır günlük bazda SQLite ile çalışıyorum. 2 milyon kayıt, 5 GB seviyesindeki veriyi işleyen bir iş yürütüyorum.

İşleme hızı tatmin edici ama.. bunu işledikten sonra yeniden Excel’e dönüştürüp paydaşlara sunmak çok uzun sürüyor.

Sanırım OpenPyXl kullanma yöntemi üzerine biraz çalışmam gerekecek.

 
kimjj81 2024-12-18

Ne tür bir sihir var bilmiyorum ama duckDB + sqlite kombinasyonunu kullandıklarını söylüyor.

 
channprj 2024-12-09

MongoDB'den bahsedilmemesi biraz şaşırtıcı.

 
felizgeek 2024-12-09

Geliştirici öğrenme eğrisinin sorun olabileceği bir ortamsa SQLite'ı öneririm. Dosya tabanlı olduğu için kolaydır.

 
savvykang 2024-12-09

Uzaktan erişim gereksinimi olmadığı kesinse gerçekten çok tatmin edici bir çözüm. DB yönetim yükü ortadan kalkıyor ve veri düzenleme ile yedekleme/kurtarma da kolay olduğu için iyi.

 
aer0700 2024-12-09

SQLITE kullanacağını söylersen küfür yemeye çok elverişli ama SQLITE kullandığını söyleyene kadar da kimse fark etmiyor... SQLITE düşündüğünüzden daha iyi.

 
jpumpkin94 2024-12-09

On yıllardır(??) sadece MySQL kullanıyorum,
PostgreSQL nasıl; iş hayatında production ortamında PostgreSQL kullananların çokça yorumunu bekliyorum.

 
zuppiy 2024-12-09

"Filler balinalardan üstündür"
Bu, çoğu durumda doğrudur

 
roxie 2024-12-11

🤣🤣🤣

 
kibae 2024-12-09

2001 yılında hatalarla dolu mysql'den (o zamanlar v3.x) pgsql'e geçtim.
Daha üstün olduğunu düşündüğüm birçok yön var ama.. gerçek hayatta en güçlü özellik olarak Partial Index'in varlığını görüyorum.

 
chanhee 2024-12-09

İş nedeniyle Oracle ve Sqlserver dışında sadece onları kullanırken MySQL kullanmayı deneyince gerçekten "Bu neden olmuyor?" dedirten şey çok fazlaydı. Ben de tam olarak hatırlamıyorum.
Sonunda Postgres'e geçtim.

 
bbulbum 2024-12-09

Postgres kullanırken MySQL kullanılan bir yere gelince, his olarak "neden bu olmuyor?" "neden burada performans çıkmıyor?" diye düşündüğüm epey şey var.
Tam olarak neler olduğunu pek hatırlamıyorum (önemsiz de olabilir, olmayabilir de)