SQLite ile İlk Temas
(brandur.org)- SQLite ile birkaç gün uğraştıktan sonra fark ettiğim bazı şaşırtıcı dezavantajlar
ALTER COLUMNdesteklenmiyor. Bir kolonu değiştirmek için resmî öneri: "yeni tablo oluştur"DROP CONSTRAINTdesteklenmiyor. 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 (...) STRICTkullanarak yalnızca desteklenen 5 tipten birine izin verebilirsiniz:integer,real,text,blob,any- SQLite'ın yeni
jsonbdesteği son dönemde çok ilgi gördü. Ancak Postgres'ten farklı olarakjsonbaslında bir veri tipi değil; yerleşikjsonb*fonksiyonlarına girdi/çıktı olan bir biçim. Kalıcı olarak saklandığında, 5 temel tipten biri olanbloboluyor timestamptzgibi başka çok önemli tipler de eksik. Tarih/saat istiyorsanız Unix timestampintegerya da ISO8601 biçimindestringolarak 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.