Database için indexlemenin ne kadar önemli olduğunu bilirsiniz. Verinize ulaşmak istediğinizde harcanan zamanı en az a indirmek için indexleme yapmanız gereklidir. Eğer bu konuda fikriniz yok ise,http://www.w3schools.com/sql/sql_create_index.asp adresinden ve http://stackoverflow.com/questions/1108/how-does-database-indexing-work adresinden konu hakkında fikir sahibi olabilirsiniz. Verdiğim linklerdeki açıklamalar rdbm yani ilişkisel veritabanları için. Fakat mantığı kavradığınızda aynı şeyin noSql yani Firebase’ de kullanılan database içinde kullanılmasını anlayacaksınız.

“orderByChild”

Diyelimki dinazorların bilgilerini tuttuğumuz bir tablonuz var aşağıdaki gibi;

Ve bu dinazorları boylarına göre sıralayıp uygulamamızda listeliyoruz. Her listeme işleminde, dinazorların boylarını tek tek çekip, büyüklüğe göre hesaplatıp almamız belli bir süre alacaktır. Fakat dinazorların boyları üzerinde bir index kursak ve database de bu indexi herhangi bir boy değişikliğinde güncellese ve bu sayede, boylara göre sıralama yaptırdığımızda işlemler çok daha kısa süre güzel olmaz mı??? OLUR. Hadi yapalım.

Bunun için aşağıdaki kuralı yazıyoruz;

Şunu demiş olduk. dinasours tablosundaki kayıtları length özelliğine göre indexle! Bu sayede dinazorlar tablosundan orderByChild(‘length’) metodu ile veri çekerken, zaten length özelliğine göre indeximiz olduğu için, order yani sıralama işlemi sıfırdan yapılmayacak! zaman kaybedilmeyecektir.

 

“orderByValue”

Örneğin dinazorları oynadığımız oyunda skorlarına göre sıralamak istiyorum. Her kaydın sadece bir değeri var.

Bu durumda ise aşağıdaki kuralı yazıyoruz.

Bir sonraki yazımızda görüşmek üzere.

2 Comments Firebase Indexing Your Data | Verinizi İndeksleyin

  1. Fedai

    Merhaba, verilere ulaşırken.
    listelenecek verilere “url ile” limit, özel sıralama, filtreleme yaptırabilir miyiz.

    Örnek

    Ali
    id:1
    yaş:12
    not:80
    Veli
    id:2
    yaş:14
    not:80
    Ayşe
    id:3
    yaş:12
    not:95

    yaşı 12 olan – 2 adet veriyi rastgele göster.
    ../?orderby=random&yaş=12&limit=2

    Reply

Leave A Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir