Firebase Modülleri - 2 (Realtime Database)

Yusuf Çakal
Bilişim Hareketi
Published in
3 min readJan 20, 2018

--

Firebase modül serisine kaldığımız yerden devam ediyoruz. Bu yazıda sizlere Firebase’in gözde modülü olan ve ilk çıktığı zamanlardan beri büyük ilgi gören bölümünden bahsedeceğim.

Firebase’in modülleri bazı seviyelere kadar ücretsiz buradan modül fiyatlandırmalarına bakabilirsiniz.

Neden mi Realtime Database ?

Şöyle düşünelim bir mimari tasarlıyorsunuz ve birçok client bulunmakta. Mobil , Web , Desktop vs. tüm istemciler aynı anda asenkron bir şekilde bilgi alışverişi yapabiliyor ve zaten ismi buradan geliyor. Bulutta çalışan bir NoSql veritabanı düşünün ve veritabanı olarak alışık olduğumuz tablo ve kolonlar yok.

Nasıl mı ?

Bu yapıyı bir json ağacı şeklinde düşünebilirsiniz. En önemli avantajlarından biri de şu; normalde veritabanını başka bir sunucuya aktarırken çoğunlukla yaptığımız şey dışarı bir sql dosyası aktarıp onu aktarmak istediğimiz sunucuya içeri aktar diyerek aktarmaktı.

Burada Google bize şöyle bir kolaylık sunmakta veri aktarma işlemini json yapısı üzerinden yapabildiğiniz gibi harici bir json dosyasını da veritabanına eklemeniz veya var olan yapıp dışarı aktarmanız söz konusu.

Bu konuda baştan Firebase entegrasyonu yapmayacağım sadece Realtime Database modülünün entegrasyonunu anlatacağım. Firebase entegrasyonu için aşağıdan bir önceki yazıyı takip edebilirsiniz.

Firebase entegrasyonunu gerçekleştirdikten sonra ilk olarak build.gradle dosyasına bağımlılığı ekliyoruz.

Basit bir örnek ile anlatmaya başlıyorum. Kitap yazar ilişkisi üzerinden anlatacağım;

Aşağıda göreceğiniz üzere iki tane sınıf oluşturduk. Bunlar; Book ve Author ve mantık çerçevesinde baktığımız zaman bir kitabın birden fazla yazarı olabilir düşüncesiyle book sınıfında author tipinde bir liste bulunmakta.

Burada FirebaseDatabase sınıfını göreceğiniz üzere singleton pattern’a uygun bir şekilde türettik ve yazının başında bahsettiğimiz üzere json ağacını doldurmak üzere bir child oluşturduk, akabinde yeni oluşacak olan referans değerini json ağacına push ettik.

Aşağıdaki gibi verileri ağaca yerleştirmiş olduk.

Gördüğünüz üzere gayet sade ve basit bir kullanımı mevcut olup geliştirici tarafında olduğunda esnek bir yapı sağlıyor. Bu şekilde bir obje referans edip kaydedebileceğiniz gibi string bir ifadeyi ya da herhangi bir primitif değeri de kaydedebilirsiniz.

İyi hoşta hani nerede Realtime.?

Şimdi veritabanındaki değerin değişmesi uygulamaya ne şekilde yansıyacak ona bakalım.

Burada bir callback interface kullanarak verideki herhangi bir değişikliği anlık olarak view tarafına bind edebiliyoruz. Zaten asıl realtime meselesi burada karşımıza çıkıyor.

Dedim dedim inanmadınız ne oldu şimdi ..

Firebase console tarafında herhangi bir değişikliği şu şekilde görselleştirdim.

Firebase’in güzel taraflarından birisi ise mobil tarafta ya da herhangi bir client tarafında internet bağlantısı kesildiği zaman veriyi en son halinde gösterebiliyorsunuz ve internet bağlantısı geldiği zaman veri tekrar güncel halini alabiliyor. (aşağıdaki persistence yapı sayesinde)

Veri güncelleme ve silme işlemleri de buradan bakabilirsiniz. Yazının çok uzamaması için bu kısımları pas geçiyorum.

Projenin tamamına buradan erişebilirsiniz.

Umarım faydalı bir içerik olmuştur. Aklınıza takılan bir yer ya da sormak isediğiniz herhangi bir şey olursa yazmaktan çekinmeyin. 🙂

Hoşçakalın ..

--

--