- Çoğu web uygulaması kalıcı veri depolamaya ihtiyaç duyar; bu yüzden yeni bir uygulama geliştirirken varsayılan olarak
Postgres seçmek iyi bir fikirdir.
Neden sqlite değil?
sqlite iyi bir veritabanıdır, ancak veriler tek bir dosyada saklanır.
- Bu da uygulamanın yalnızca tek bir cihazda çalıştığı anlamına gelir.
- Masaüstü veya mobil uygulamalar için uygundur, ancak web siteleri için uygun olmayabilir.
- Bir web sitesinde sqlite kullanılarak elde edilmiş başarılı örnekler vardır, ancak bunlar genellikle kendi sunucusunu ve altyapısını doğrudan kuran durumlardır.
- Platformun sunduğu otomatik veritabanı yedeklerinden ve birden fazla uygulama sunucusu yapılandırabilme imkanından vazgeçmeniz gerekebilir.
Neden DynamoDB, Cassandra veya MongoDB değil?
- Bu veritabanları çok iyi performans gösterir, ancak pek çok ön koşula sahiptir:
- Uygulamanın ne yapacağını ve erişim desenlerini tam olarak biliyor olmanız gerekir
- Çok büyük veri ölçeğine genişlemeniz gerekiyorsa
- Tutarlılığın bir kısmından vazgeçebiliyorsanız
- Bu veritabanları dağıtık hash map benzeri bir şekilde çalıştığı için, veri depolama biçimine sorgu deseni bilgisini yansıtmanız gerekir.
- Erişim (sorgu) desenleri değişirse tüm veriyi yeniden işlemeniz gerekebilir.
- İlişkisel veritabanlarında kolayca indeks ekleyip sorgu çalıştırabilirsiniz, ancak NoSQL veritabanlarında bu çok daha zordur.
- Analitik sorgular için uygun değildir.
- Bir üniversite öğrencisi ya da yeni mezun bir geliştirici MongoDB kullanıyorsa muhtemelen yardıma ihtiyaç duyacaktır.
Neden Valkey değil?
Redis adıyla bilinen bu veritabanı, son derece verimli bir cache olarak tanınır.
- Birincil veritabanı olarak kullanılabilir, ancak şu sorunlar vardır:
- Tüm veriyi RAM'de tutar; bu yüzden hızlıdır, ama RAM kapasitesi sınırlıdır.
- Veri modellemede bazı tavizler gerektirir.
Neden Datomic değil?
- Bunu zaten biliyorsanız size "altın yıldız" verelim.
Datomic, "önceden tasarım (Up-front Design)" sorununa sahip olmayan ilişkisel bir NoSQL veritabanıdır ve birkaç hoş özelliği vardır.
- Veriyi tablolar yerine EAVT(entity-attribute-value-time) çiftleri olarak saklar ve genel amaçlı indeksler kullanır.
- Sorgu yazarken yazarıyla koordinasyon kurmanız gerekmez. Belirli bir andaki 'o anki' veritabanını sorgulamanız yeterlidir. Yeni veri, hatta silmeler (veya 'retractions') bile gerçekte önceki veriyi silmez.
- Ancak bazı dezavantajları da vardır:
- Yalnızca JVM dillerinde çalışır.
Clojure dışındaki dillerde API'si iyi değildir.
- Kötü yapılandırılmış sorgulardan doğan hata mesajları son derece kullanışsızdır.
- SQL araç ekosistemi benzeri bir yapı olmadığından araç desteği yetersizdir.
Neden XTDB değil?
- Clojure kullanıcıları çok sayıda veritabanı yapıyor.
Datomic'e benzer, ancak şu özelliklere sahiptir:
- HTTP API sunar, dolayısıyla JVM'ye bağımlı değildir.
- "sistem zamanı" ve "geçerlilik zamanı" olmak üzere iki eksende sorgulanabilir.
- SQL API desteği vardır.
- Ancak en büyük sorun şu ki hâlâ "çok yeni". SQL API geçen yıl çıktı ve kısa süre önce tüm depolama modelini değiştirdi.
- 10 yıl sonra hâlâ ayakta olacak mı? Uzun vadeli destek belirsiz.
Neden Kafka değil?
Kafka, TB ölçeğinde veri işleme için uygun, çok iyi bir "append-only" log'dur.
- Birden fazla ekip tarafından yönetilen birden çok servisten gelen verilerle event sourcing benzeri işler yapmak istiyorsanız şaşırtıcı derecede iyi çalışır.
- Ancak
- Küçük ölçekte bunun yerini
Postgres tabloları rahatlıkla alabilir.
- Kafka consumer oluşturmak sanıldığından daha hataya açıktır. Sonuçta log içindeki kendi konumunuzu takip etmeniz gerekir.
- Yönetmeniz gereken ek altyapı getirir.
Neden ElasticSearch değil?
- Veri arama ürününüzün ana özelliğiyse ElasticSearch doğru üründür.
- Veriyi ETL sürecinden geçirmeniz ve tüm süreci yönetmeniz gerekir, ancak ElasticSearch arama için yapılmıştır ve bunu iyi yapar.
- Ancak arama ana özellik değilse
Postgres'in yerleşik metin arama özellikleri de yeterli olabilir.
- Daha sonra özel bir arama motoru ekleyebilirsiniz.
Neden MSSQL veya Oracle DB değil?
- Kendinize sormanız gereken gerçek soru şu: "Fiyatına değer mi?"
- Yalnızca lisans maliyetini değil, lock-in maliyetini de hesaba katmalısınız.
- Verilerinizi Oracle'a koyarsanız Oracle'a kalıcı olarak ödeme yapmanız ve geliştiricileri sürekli eğitmeniz gerekir.
- Kurumsal özelliklerle cüzdanınız arasında sonsuza kadar bir seçim yapmak zorunda kalırsınız.
- Belirli bir özelliğe gerçekten ihtiyaç duymuyorsanız kullanmaktan kaçınmak daha iyidir.
- MSSQL olmadan yaşayamayacağınız öldürücü bir özellik yoksa kullanmayın.
Neden MySQL değil?
- Bu kısımda biraz okuyucu desteğine ihtiyaç var.
MySQL, Oracle'ın mülkiyetindedir ve bazı özellikler enterprise sürümüne kilitlenmiştir.
- Elbette
MySQL uzun zamandır kullanılıyor ve yaygın kullanılan ücretsiz bir sürümü var.
- Ben
Postgres'in daha iyi bir tercih olduğuna inanıyorum, ancak MySQL hakkında daha fazla bilgiye ihtiyaç var.
Neden yapay zeka vektör veritabanları değil?
- Çoğu yapay zeka vektör veritabanı yeni bir teknoloji olduğu için kullanımında risk vardır.
- Yapay zeka balonuna dayalı işlere temkinli yaklaşmak gerekir.
- İşiniz bir başka AI grift olsa bile, muhtemelen sadece
import openai yeterli olacaktır.
Neden Google Sheets değil?
- Özel bir dezavantajı yok; ihtiyacınız varsa kullanabilirsiniz.
18 yorum
Firestore...
Bu kadar kesin konuşan makaleler genelde junior'ların yaptığı hatalardan biri ama..
Bunun yerine sevimli bir CSV vereceğim
zzz
İyi bilgi edinmek için dikkat çekin… diye bir şaka nedense aklıma geliyor haha.
Her neyse, çoğu backend geliştiricisinin ilk kullandığı şey
postgresqlolduğu için…Bence Postgres daha iyi bir seçim, ama MySQL hakkında daha fazla bilgiye ihtiyaç var
ahaha;;;;
MySQL Enterprise’ın asıl sorunu gerçekten lisans değil; ücretli satın alanlar için bile bir arıza patladığında desteğin berbat olması.
Daha önce MySQL indeksleri bozulup sistem açılmadığında destek talebi açsak da Oracle’ın yaptığı tek şey destek bileti açtırıp istersek telefon desteği verebileceklerini söylemekti.
Sonuçta müşteri tarafı bunun böyle olmayacağını söyleyince sorunu bizim çözmemiz gerekti.
Oracle’a güvenip Enterprise kullanmaktansa ücretsiz olan en iyisi..
Neden
mariadb,impala,hive,kududeğil?MySQL’ın enterprise özellikleri, kendi connection pool’u gibi aslında pek de gerekli olmayan özellikler...
Gerçekten enterprise bir ortamdaysanız bunu kullanmak yerine ön tarafa bir SQL proxy kurmak yük dağıtımı açısından daha etkili olur.
PgSQL’i seviyorum ama... MySQL’e dönüp bakmadan “bilmiyorum, umurumda değil” moduna girmek de ne bileyim... hahaha
Sadece MySQL kullanın…
Peki ya MariaDB?
Oldukça büyük bir tartışma yaratabilecek gibi görünen bir yazı...
Sqlite kullanmanın nedeni hem basit olması hem de belli bir ölçeğe kadar gayet iyi çalışmasıdır.
Önce sqlite ile geliştirip, sonra gerekirse postgres'e geçseniz de çok zor olmaz bence.
Unutulacak gibi olunca yine ortaya çıkan bir Postgres övgü yazısı. Artık tadını çıkarın!
Sadece her yerde Postgres kullanın
PostgreSQL yeterlidir
Postgres ne zamandan beri havalı oldu
Hacker News görüşleri
MongoDB hakkında çok sayıda olumsuz görüş var, ancak bunların çoğu yanlış bilgiye dayanıyor
SQLite'ın avantajları
Teknik kusurlara işaret etmenin bir anlamı yok
MySQL'den Postgres'e geçiş nedenleri
Postgres'in temporal table desteği yetersiz
SQLite kullanılma nedenini anlamıyorum
Rick Houlihan'ın adını yanlış anmaktan dolayı özür
Bildiğin şeyi kullanmak ve işe yarayanı dağıtıma almak önemlidir
MySQL, Javascript gibidir
Postgres, veri tutarlılığını korumaya yönelik daha fazla araca sahip
=> Acaba bir örnek verebilir misiniz?
Postgres'e kıyasla SQLite'ın bir dezavantajı da
schemadesteğinin olmaması galiba. Tablo sayısı onlarcayı aştığında tablolarıschemabazında ayırarak tasarlamak daha düzenli oluyor, ama SQLite'ta bu mümkün olmadığından tüm ayrımları tablo adlarına koymak gerekiyor.