Firebase gerçek zamanlı veri tabanı,bulut tabanlı NoSql(Not Only Sql) bir veri tabanı sistemidir.Hiç bir sql sorgusuna gerek duymadan json parametreleri ile yönetebilirler. Veri depolamanın yanı sıra asenkron çalışması ile veri değişimlerinin anlık olarak takip edilmesine olanak sağlar.
Firebase Veri Tabanı Yapısı
Firebase Realtime Database,bütün verileri JSON(JavaScript Object Notation) objesi olarak tutar.Firebase Realtime yapısını genel olarak bulut tabanlı bir json ağaç yapısı olarak düşünebilirsiniz.Json ağacına veri eklediğinizde veriniz JSON formatında bir node(düğüm) haline gelir.
Bu düğümler anahtar-değer (key-value) yapısına sahiptir. Kullanıcı ID veya semantik isimler gibi kendi anahtarlarınızı oluşturabilirsiniz. JSON yapısı içerisinde anahtar değerler String tipinde ve eşsizdirler. Anahtarın aldığı değerler String,Integer,Boolean gibi çeşitli tiplerde olabilirler.
Aşağıdaki Json yapısında “notlar” isimli bir ana düğüm ve bu düğüm altında “not1”, ”not2” alt düğümleri bulunmaktadır.Bu düğümler ile veriler arasında gezerek arama,listeleme işlemleri gerçekleştirilir.
Push ID
Bu yapıda “not1” ve “not2” isminde iki adet numaralandırılmamış statik düğüm bulunuyor.
Peki iki kullanıcı eş zamanlı olarak mesaj eklemek isterse bir sonraki mesaj hangi kullanıcı tarafından eklenir?
Bu sorunun gerçekleşmemesi için eşsiz bir not ID oluşturuyoruz.Bu eşsiz ID Firebase üzerinde Push ID olarak ifade edebiliriz.Push ID metodu ile çoklu kullanıcılarda gerçekleşen işlemlerde çakışma yaşamamış oluyoruz.
Child ve Parent Kavramı
Json yapınız üzerinde child ve parent olmak üzere iki ana kavram vardır. Aşağıdaki yapıda “not1” ve “not2” düğümleri “notlar” düğümünün child düğümleri yani alt düğümleri olarak ifade edilir.Child ifadesi ana düğümün verileri arasında okuma yazma gibi işlemlerinizi gerçekleştirebilmenize olanak sağlar.
Child düğümüne erişebilmek için web üzerinde Url formatına benzer bir path yapısı kullanılır. Örneğin “notlar” düğümüne ‘/notlar/-KR9sEMNfsl9quueJDet’ ile erişebiliriz.
Json formatında ağaç yapısı array tipini desteklemektedir.İşlemlerinizde verileriniz arasında dolaşabilmek için child by child yapısını kullanabilirsiniz.
‘/notlar/-KR9sEMNfsl9quueJDet’ düğümü iki adet anahtar-değer eşleştirmesine sahiptir.
Bir sonraki yazımızda Realtime Database projemize dahil ederek örnek bir uygulama geliştireceğiz.