- SQLite ile birkaç gün uğraştıktan sonra fark ettiğim bazı şaşırtıcı dezavantajlar
ALTER COLUMN desteklenmiyor. Bir kolonu değiştirmek için resmî öneri: "yeni tablo oluştur"
DROP CONSTRAINT desteklenmiyor. Bir kısıtı kaldırmak için resmî öneri: "yeni tablo oluştur"
- SQLite'ta kolonların veri tipi yok. Veri tipleri (yalnızca 5 tane var) sadece değerlerde bulunduğu için her şey her yere girebiliyor
- Desteklenmeyen ya da var olmayan tiplerde kolon isterseniz, uyarı veya hata vermeden yanlış bir işlem yapıyor.
CREATE TABLE my_table (id bigserial, messages jsonb[]) gibi bir şema oluşturmak çalışıyor gibi göründüğü için ilk gün SQLite'ın serial ve dizileri desteklediğini yanlış sanmıştım
CREATE TABLE my_table (...) STRICT kullanarak yalnızca desteklenen 5 tipten birine izin verebilirsiniz: integer, real, text, blob, any
- SQLite'ın yeni
jsonb desteği son dönemde çok ilgi gördü. Ancak Postgres'ten farklı olarak jsonb aslında bir veri tipi değil; yerleşik jsonb* fonksiyonlarına girdi/çıktı olan bir biçim. Kalıcı olarak saklandığında, 5 temel tipten biri olan blob oluyor
timestamptz gibi başka çok önemli tipler de eksik. Tarih/saat istiyorsanız Unix timestamp integer ya da ISO8601 biçiminde string olarak saklıyorsunuz ve bu işlemler için çeşitli yerleşik fonksiyonlar sunuluyor
- SQLite'ın streaming ile ilgili etkileyici yetenekleri var ve bunları denemek istiyorum, ama ilk DX deneyimi kesinlikle biraz rahatsız ediciydi
- Bazen bir anlatıya ne kadar güçlü biçimde kapıldığımızı merak ediyorum. Örneğin, Postgres gerçekten dünyanın en iyi veritabanı mı? Bu deneyim kesinlikle benim kanaatimi daha da pekiştirdi. Evet, en iyisi Postgres
6 yorum
SQLite değil de daha çok SQLHeavy isteniyormuş gibi bir his veriyor.
Böyle veritabanları da var, şöyle veritabanları da var. SQLite'ın da kendine özgü bir felsefeyle yönetildiğini düşündüm.
Neden SQLite'ı Postgres gibi kullanmaya çalıştılar ki?
Bu, sanki Linux'u ilk kez kullanan birinin “Hancom Office de düzgün çalışmıyor, oynadığım oyunlar da açılmıyor. Demek ki işletim sistemi dediğin Windows!” demesi gibi bir his veriyor.
Hacker News’te ortaya çıkan SQLite abartısı (hype) biraz fazla değil mi? SQLite’ın ayrı olarak işletilen bir RDBMS’in yerini alabileceği iddiası, 2022’den beri Hacker News’te sık sık paylaşılıyor.
1: https://news.ycombinator.com/item?id=31318708
2. https://news.ycombinator.com/item?id=31152490
3. https://news.ycombinator.com/item?id=34812527
4. https://news.ycombinator.com/item?id=36208568
Diğerleri: https://hn.algolia.com/?dateEnd=1720854657&dateRange=custom&da…
Postgres ya da MySQL gibi veritabanı ürün ailelerini kullanmanın gereğinden fazla geldiği hissedilen durumlarda, SQLite'ın fazlasıyla cazip bir alternatif olabileceğini düşünüyorum.
Örneğin küçük servislerde managed DB maliyeti gereksiz derecede yüksek kalabiliyor; bunu doğrudan işletmek de ayrıca yük oluyor.
Buna karşılık SQLite'ın belli bir ölçeğe kadar performans açısından yetersiz kalmadığı söyleniyor; özellikle Litestream gibi araçlar kullanıldığında işletim yükü de neredeyse kalmadığı için avantajlı görünüyor.
Replikasyon özelliğine kadar gitmeye bile gerek yok;
sqliteyedekleme açısından da pratik ve yalnızca servis daemon durumunu yönetmek yeterli olduğu için gerçekten iyi, ama JPA'ya bağlamak için şunu bunu yapmak gerektiğinden başkasına devredilmesi gereken projelerde kullanamadığımı fark ettim. Yazıdaki gibi veri şemasını biraz daha sıkı ele alma iradesi varsa, o tür kullanım için de pek uygun değil.Az önceki yorumu yarım bırakmıştım;
sqlitehakkındaki asılsız söylentilerin sankisqliteher derde deva bir şeymiş gibi bir yanılsama yarattığını söylemek istiyordum.