Veritabanı Kurmayı Bırakın
(sqlsync.dev)Veri yönetiminin karmaşıklığı
- Frontend mühendisleri, API verilerini önbelleğe alma ihtiyacını fark eder.
- Başta basit veri depolamayla başlanır, ancak özellik talepleri arttıkça veri önbelleği, manuel indeksler, iyimser mutasyonlar (
optimistic mutations), özyinelemeli önbellek geçersizleştirme gibi yapılar uygulanmaya başlanır. - Bu özellikler veritabanlarının iç işleyişine benzer ve karmaşık frontend uygulamalarında sonunda alanına özgü bir veritabanı inşa edilmiş olur.
Önbelleğin temelleri
- API istek sonuçlarını yerel değişkenlerde saklamakla başlanır.
- Bildirimsel framework kullanan web uygulamalarında gereksiz API isteklerini önlemek için veriler değişkenlerde tutulur.
- Sonraki adım, önbelleği daha üst bir katmana taşımak veya UI ağacının dışına çıkarmaktır.
İndekslerle hız kazanma
- Veriyi belirli bir şekilde organize ederek uygulamanın yapması gereken iş azaltılabilir ve kullanıcı deneyimi iyileştirilebilir.
- Frontend veri optimizasyonunun, veritabanı depolama sistemlerinin iç işleyişine benzediği görülür.
- Veri yapısı; verileri ID'ye göre saklayıp, öğeleri tarihe göre hızlıca sorgulamayı sağlayan indeksler oluşturarak iyileştirilir.
İyimser mutasyonlar
- Sunucu yanıtını beklemeden, belirli bir işlemin etkisini yerelde simüle etmektir.
- Bu, kullanıcı arayüzünün anında tepki veriyormuş gibi görünmesini sağlar; ancak sunucuda farklı bir sonuç çıkarsa UI'ın değişiklikleri geri alması gerekir.
- İstemci ile sunucu arasındaki mantığı kopyalama, asenkron hataları ele alma ve uygulama yeniden başlatıldıktan sonra değişiklikleri uzlaştırma gibi zorluklar vardır.
Özyinelemeli önbellek geçersizleştirme
- Veri, önbelleğin birden çok yerinde görünebilir; bu yüzden güncellemeden sonra önbelleğin sunucuyla uyumlu olacak şekilde doğru biçimde geçersizleştirilmesi gerekir.
- UI'ın, her mutasyonla önbelleğin hangi bölümlerinin ilişkili olduğunu bilmesi gerekir ve bu yaklaşım ölçek büyüdükçe kırılgan hale gelebilir.
- İyimser mutasyonlarla birleştiğinde, sunucu değişikliklerini istemci tarafında tahmin etmek için sunucu mantığını kopyalamak daha da zorlaşır.
Veritabanı mı kuruyorsunuz?
- Yeterince karmaşık frontend uygulamalarında, sonunda çok sayıda veri yönetimi özelliği inşa edilir; bu da kullanıcıları memnun eden ve iş problemlerini çözen asıl işlerden zaman çalar.
- Yazı, frontend için optimize edilmiş bir veritabanı yığınına alternatif bir yaklaşım sunuyor.
SQLSync'e giriş
- SQLite tabanlı, frontend için optimize edilmiş bir veritabanı yığını olan SQLSync geliştirildi.
- SQLSync, veri yönetimi sorunlarını çözmek ve geliştiricilerin uygulamanın kendine özgü özelliklerine odaklanabilmesini sağlamak için tasarlandı.
- SQLSync; kalıcı önbellek, SQLite'ın tüm yetenekleri, iyimser mutasyonlar, akıllı önbellek geçersizleştirme ve reaktif sorgular sunar.
GN⁺ görüşü
Bu yazıdaki en önemli nokta, frontend uygulamalarının karmaşıklığı arttıkça geliştiricilerin veritabanına benzer işlevleri kendi başlarına uygulamak zorunda kalmasıdır. Bu tür işler geliştiricinin zamanını tüketir ve kullanıcıya gerçekten değer sunan özelliklerin geliştirilmesinden uzaklaştırır. SQLSync gibi frontend için optimize edilmiş veritabanı yığınları, bu sorunu çözmeye yönelik yenilikçi bir yaklaşım ortaya koyuyor. Yazıyı ilgi çekici kılan şey, mevcut veri yönetimi yöntemlerindeki temel soruna işaret etmesi ve geliştiricilerin daha verimli çalışabileceği yeni bir çözüm aramasıdır.
1 yorum
Hacker News görüşü
Projeyi ortaya çıkaran arkadaşın anlaşılması
Geçmişte bir şirkette kullanılan proje yönetim yazılımı deneyimi
SPA bırakılınca ortadan kalkan sorunlar
SQLSync yaratıcısının görüşü
Kullanıcıya gerçeklikten farklı bir zihinsel model vermemek
Ölçülebilenin yönetildiği ilkesi ve batık maliyet yanılgısı
İstemci ile sunucu arasında durum senkronizasyonu sorunu
ORM kütüphaneleriyle karşılaştırma
Frontend ve backend veritabanları arasındaki fark
SignalDB ile benzer bir deneme