Catch up on everthing we announced at this year's Firebase Summit. Learn more

Indexieren Sie Ihre Daten

Firebase ermöglicht es Ihnen, Ad-hoc-Abfragen Ihrer Daten mit einem beliebigen untergeordneten Schlüssel durchzuführen. Wenn Sie im Voraus wissen , was Ihre Indizes werden, können Sie sie über die definieren .indexOn Regel in Ihrer Firebase Realtime - Datenbank Sicherheitsregeln Abfrageleistung zu verbessern.

Definieren von Datenindizes

Feuerbasis bietet leistungsstarke Werkzeuge für die Bestellung und die Abfrage Ihrer Daten. Firebase ermöglicht es Ihnen insbesondere, Ad-hoc-Abfragen für eine Sammlung von Knoten mit einem beliebigen gemeinsamen untergeordneten Schlüssel durchzuführen. Wenn Ihre App wächst, nimmt die Leistung dieser Abfrage ab. Wenn Sie Firebase jedoch die abzufragenden Schlüssel mitteilen, indiziert Firebase diese Schlüssel auf den Servern und verbessert so die Leistung Ihrer Abfragen.

Indizierung mit orderByChild

Dies lässt sich am einfachsten anhand eines Beispiels erklären. Wir alle bei Firebase sind uns einig, dass Dinosaurier ziemlich cool sind. Hier ist ein Ausschnitt aus einer Beispieldatenbank mit Dinosaurier-Fakten. Wir werden es verwenden , um zu erklären , wie .indexOn arbeitet mit orderByChild() .

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

Stellen wir uns vor, dass wir in unserer App die Dinosaurier oft nach Name, Größe und Länge bestellen müssen, aber nie nach Gewicht. Wir können die Leistung unserer Abfragen verbessern, indem wir Firebase diese Informationen mitteilen. Da die Namen der Dinosaurier nur die Schlüssel sind, optimiert Firebase bereits für Abfragen nach Dinosauriernamen, da dies der Schlüssel des Datensatzes ist. Wir können verwenden .indexOn Firebase zu sagen , zu optimieren Abfragen in Höhe und Länge als auch:

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

Wie andere Regeln können Sie eine angeben .indexOn Regel auf jeder Ebene in Ihren Regeln. Wir haben es für das obige Beispiel auf Stammebene platziert, da alle Dinosaurierdaten im Stammverzeichnis der Datenbank gespeichert sind.

Indizierung mit orderByValue

In diesem Beispiel werden wir zeigen , wie .indexOn mit arbeitet orderByValue() . Nehmen wir an, wir erstellen eine Rangliste der Dino-Sportergebnisse mit den folgenden Daten:

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

Da wir orderByValue () verwenden die Rangliste zu erstellen, können wir unsere Anfragen optimieren , indem eine Zugabe von .value Regel in unserem /scores Knoten:

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