RxDB Nedir? (NoSQL Veritabanı)

Abdulkerim Karaman
alBarakaTech Global
3 min readOct 22, 2019

Merhaba bu yazımızda RxDB NoSQL veritabanından bahsederek örnek bir uygulama ile inceleyeceğiz.

RxDB web, mobil, hibrit, nodejs uygulamaları için NoSQL veritabanı hizmeti sunmaktadır. RxDB ile client tarafında javascript uygulamalarınız için local NoSQL database çözümü sağlayabilirsiniz. RxDB’nin sunduğu ve güçlü olduğu bir kaç özelliğe göz atalım.

  • Oluşturduğunuz koleksiyonların içinde mongoDB ve mongoose (mquery) query yapılarını kulanabilirsiniz.
  • Şüphesiz en güçlü yanlarından birisi de PouchDB, CouchDB ve IBM Cloudant client-server veritabanları arasında eşzamanlı kopyalama (Replication) imkanı sağlamaktadır.
  • Kullanıcı verilerini korumak için veri alanlarında şifreleme imkanı sağlamaktadır.
  • Typescript desteği sunmaktadır.
  • Veriler arasındaki ilişkileri kolay yönetebilmek için çeşitli ORM yetenekleri sunmaktadır.

Client uygulamalarımızda nasıl kullanırız bir örnek ile inceleyelim. Önce yeni bir react native uygulaması oluşturalım.

react-native init RxDBClient

İlgili paketimizi (RxDB) npm üzerinden yükleyelim

npm i rxdb --save

Uygulama ana dizininde bulunan App.js dosyasını ekleyerek ilgili paketimizi import edelim.

import * as RxDB from 'rxdb';
RxDB.plugin(require('pouchdb-adapter-asyncstorage').default);

./src dizinine Schema.js dosyası oluşturarak içine ilgili database in schema’sını oluşturalım.

Veri tabanında tablo yapısına benzetebilirsiniz. İki adet alan ekliyoruz. (description, status) description alanını primary olarak belirliyoruz.

Şemamız hazır şimdi database’imizi oluşturacak methodumuzu yazıyoruz.

Ardından ilgili methodumuzu componentDidMount’da çağırıyoruz.

Burada ilgili database’e subscribe olarak sub değişkenine atıyoruz. Ardından sayfa constructor’ında oluşturduğumuz subs dizisine push ediyoruz. Bu işlemi yapma nedenimiz işlemlerimiz bittiğinde kolayca subscribe olduğumuz db’lerden unsubscribe olabilmektir.

Buradaki subscribe işlemimizin görevi database üzerine eklediğimiz todo collection’ına data eklediğimizde veya sildiğimizde eşzamanlı olarak bu veriyi state’de güncelleyecemektir.

Örneğimize devam edecek olursak.

Bir method daha yazarak ilgili collection’ına data (todo) ekleme işlemi yapıyoruz.

Description değişkenine UI’dan aldığımız todo itemı ekliyoruz. Status değişkenine ise defaul olarak todo item’ın statusunu false olarak atıyoruz.

UI’da ise ekrana bir tane textimput ve buton ekliyoruz. Ardından basit bir map işlemi (map fonksiyonu typscript ile gelmiştir.) ile state’de bulunan todoList dizimizi ekrana yazdırıyoruz. (Hatırlarsanız bu todoList dizimiz RxDB’deki data’larımızdan oluşmaktaydı.)

Evet uygulamamızı test ettiğimizde gayet başarılı şekilde çalıştığını görüyoruz.

Github Repo:

Faydalı olması dileğiyle hoşçakalın..

--

--