Image for post
Image for post

Firebase Modülleri - 2 (Realtime Database)

Yusuf Çakal
Jan 20, 2018 · 3 min read

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.

Image for post
Image for post

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.

Image for post
Image for post

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 ..

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store