Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Indicizza i tuoi dati

Firebase ti consente di eseguire query ad hoc sui tuoi dati utilizzando una chiave figlio arbitraria. Se sai in anticipo quali saranno i tuoi indici, puoi definirli tramite la regola .indexOn nelle regole di sicurezza del database in tempo reale Firebase per migliorare le prestazioni delle query.

Definizione di indici di dati

Firebase fornisce potenti strumenti per ordinare e interrogare i tuoi dati. In particolare, Firebase ti consente di eseguire query ad hoc su una raccolta di nodi utilizzando qualsiasi chiave figlio comune. Man mano che la tua app cresce, le prestazioni di questa query diminuiscono. Tuttavia, se comunichi a Firebase le chiavi che interrogherai, Firebase indicizzerà quelle chiavi sui server, migliorando le prestazioni delle tue query.

Indicizzazione con orderByChild

Il modo più semplice per spiegarlo è attraverso un esempio. Tutti noi di Firebase concordiamo sul fatto che i dinosauri sono piuttosto interessanti. Ecco uno snippet da un database di esempio di fatti sui dinosauri. L'useremo per spiegare come .indexOn funziona con orderByChild() .

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

Immaginiamo che nella nostra app, spesso abbiamo bisogno di ordinare i dinosauri per nome, altezza e lunghezza, ma mai in base al peso. Possiamo migliorare le prestazioni delle nostre query comunicando a Firebase queste informazioni. Poiché il nome dei dinosauri sono solo le chiavi, Firebase ottimizza già le query in base al nome del dinosauro, poiché questa è la chiave del record. Possiamo usare .indexOn per dire a Firebase di ottimizzare le query anche per altezza e lunghezza:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

Come altre regole, puoi specificare una regola .indexOn a qualsiasi livello nelle tue regole. Lo abbiamo posizionato a livello di radice per l'esempio sopra perché tutti i dati sui dinosauri sono memorizzati nella radice del database.

Indicizzazione con orderByValue

In questo esempio, dimostreremo come .indexOn funziona con orderByValue() . Diciamo che stiamo creando una classifica dei punteggi sportivi dei dinosauri con i seguenti dati:

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

Dato che stiamo usando orderByValue () per creare la classifica, possiamo ottimizzare le nostre query aggiungendo una regola .value al nostro nodo /scores :

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}