Firebase Cloud Firestore

Timur Pehlivan
3 min readDec 20, 2020

Cloud Firestore; verileri kolayca saklamak, sorgulamak amacıyla geliştirilen, Google’ın döküman tabanlı NoSQL veritabanıdır. Yani hiçbir SQL sorgusu yazmadan gerekli tabloları oluşturup document formatı ile kontrol etmemizi sağlamaktadır. Veriler document adı verilen yapılarda saklanır ve document topluluğuna ise collection adı verilir.

Öne Çıkan Özellikleri

  • Gerçek zamanlı okuma-yazma özelliği sayesinde verilerde herhangi değişiklik olması durumunda, otomatik senkronizasyon yapılarak kullanıcıya her zaman en güncel veriyi sunar.
  • Internet olmadığı durumlarda cihazın lokalinden veriler okunabilir-yazılabilir. İnternet geldiği zaman otomatik olarak cloud veritabanına senkronizasyon yapılabilir.
  • Firebase Authentication ile tam uyumluluğu sayesinde istenirse kullanıcılar sadece yetkileri dahilindeki verilere erişebilir.
  • Veriler Key-Value şeklinde saklanır ve her dokumanın bir id’si olmalıdır. Id’yi kendiniz verebilir veya Firestore oluşturtabilirsiniz.

Firestore Veri Yapısı

Firestore, her biri veri içeren belge koleksiyonlarından oluşan NoSQL belge tabanlı bir veritabanıdır. Bir NoSQL veritabanı olduğundan, ilişkisel bir veritabanında bulacağınız tabloları, satırları ve diğer öğeleri değil, bunun yerine belgelerin içinde bulacağınız key/value çifti kümelerini elde edersiniz. Verileri bir belgeye atayarak dolaylı olarak belgeler ve koleksiyonlar oluşturursunuz ve belge veya koleksiyon yoksa, koleksiyonun her zaman kök (ilk) düğüm olması gerektiğinden sizin için otomatik olarak oluşturulur.

Fiyatlandırma

Proje Entegrasyonu

Firestore’u projemize entegre edebilmemiz için öncelikle bir firebase hesabımız ve bu hesaba bağlı bir projemiz olması gerekmektedir.

Hesabımızı ve projemizi oluşturduktan sonra Android Studio üzerinden projemizi açarak önce Firebase’ e bağlanıp daha sonra Firestore’u projemize ekleyerek ilk verimizi cloud’ a gönderebiliriz.

Veri Yazma

Yukarıdaki kod parçasında; telefon ekrandaki “btnCreateList” butonuna basıldığı zaman kullanıcıdan alınan inputlar (liste başlığı ve ürün listesi) “shoppyList” collection ismi ile Firestore veritabanımıza real time olarak yazılır. Yazılan verileri Firebase konsolumuzdan kontrol edebilir, yeni koleksiyon veya dosya ekleyebilir/silebiliriz.

Veri Okuma

Yukarıdaki kod parçası ile Firestore’ a daha önceden yazmış olduğumuz verileri collection’nın ismi ile okuyabiliriz.

Verilere Erişilebilirlik Kuralları

Firebase konsola girdikten sonra sırasıyla Cloud Firestore -> Kurallar sekmesine tıklayarak, oluşturduğumuz veritabanına hangi kullanıcıların, hangi koşullarda erişebileceğini verdiğimiz kurallar ile belirleyebiliriz. Eğer herhangi bir kısıtlama olmaksızın verilerin herkese açık olmasını istiyorsak aşağıdaki gibi “allow read, write: if true;” kuralını yazmamız yeterli olacaktır.

Eğer sadece login kullanıcıların erişimine açık bir veritabanı kuralı yazmak istiyorsak aşağıdaki gibi kullanıcı id’si kontrolü koyabiliriz. Burdaki document=** tüm dökümanlar için bu işlemi uygulanacağı anlamına gelmektedir.

service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}

Document veya collection bazlı kural yazmak istediğimizde ise aşağıdaki gibi bir kural yeterli olacaktır. Aşağıdaki örnekte shoppyList collection’nına read ve write için ayrı arı conditionlar yazabiliriz.

service cloud.firestore {
match /databases/{database}/documents {
match /shoppyList {
allow read: if <condition>;
allow write: if <condition>;
}
}
}

#firebase #firestore #android

--

--