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 usando una chiave figlio arbitraria. Se sai in anticipo quali saranno i tuoi indici, puoi definirli tramite la regola .indexOn nelle regole del database in tempo reale di Firebase per migliorare le prestazioni delle query.

Definizione degli indici dei dati

Firebase offre potenti strumenti per ordinare e interrogare i tuoi dati. In particolare, Firebase 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 di cui eseguirai le query, Firebase indicizzerà tali chiavi sui server, migliorando le prestazioni delle tue query.

Indicizzazione con orderByChild

Il modo più semplice per spiegare questo è attraverso un esempio. Tutti noi di Firebase siamo d'accordo sul fatto che i dinosauri siano piuttosto fighi. Ecco un frammento di un database di esempio di fatti sui dinosauri. Lo 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 anche le query 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 archiviati nella radice del database.

Indicizzazione con orderByValue

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

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

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

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