Operationstypen der Firebase-Echtzeitdatenbank

Firebase Realtime Database-Profiler-Befehl

Um einen Bericht über die Geschwindigkeit und Bandbreitennutzung für Vorgänge in Ihrer Realtime Database-Instanz zu erstellen, verwenden Sie den folgenden Befehl:

firebase database:profile
Flag-Optionen Beschreibung
-h, --help Nutzungsinformationen ausgeben.
-o, --output FILENAME Speichern Sie die Ausgabe in der angegebenen Datei.
-i, --input FILENAME Generieren Sie den Bericht basierend auf der angegebenen Datei und nicht auf Stream-Protokollen vom Server.
-d, --duration SECONDS Sammeln Sie Informationen zur Datenbanknutzung für die angegebene Anzahl von Sekunden.
--raw Geben Sie die gesammelten Rohstatistiken als durch Zeilenumbrüche getrenntes JSON aus.

Operationsarten

gleichzeitige Verbindung

Dieser Vorgang spiegelt Echtzeitverbindungen zur Datenbank wider (z. B. wenn ein neuer Client eine Verbindung über ein SDK herstellt). RESTful-Verbindungen werden in gleichzeitigen Verbindungsvorgängen nicht berücksichtigt.

{
    "name": "concurrent-connect",
    "timestamp": 1484776334900
}

gleichzeitige Trennung

Concurrent-Disconnects spiegeln eine Verbindung wider, die von der Datenbank getrennt wurde (z. B. wenn ein Client die Verbindung trennt oder sich abmeldet).

{
    "name": "concurrent-disconnect",
    "timestamp": 1484776341844
}

Echtzeit-Schreiben

Schreibanfragen von Echtzeitverbindungen. Zum Beispiel set() und push() Operationen für Web-Clients. Löschanfragen werden auch als realtime-write gezählt und spiegeln Schreibvorgänge von 0 Byte wider.

{
    "allowed": true, // If security rules allow the operation
    "bytes": 1,
    "millis": 2,
    "name": "realtime-write",
    "path": [
        "foo"
    ],
    "timestamp": 1484776538763
}

Echtzeit-Transaktion

Dieser Vorgangstyp umfasst Transaktionen, die über Echtzeitverbindungen durchgeführt werden. Wiederholte Transaktionen können das Ergebnis fehlgeschlagener Versuche und Wiederholungsversuche sein.

{
    "allowed": true,
    "bytes": 20,
    "millis": 2,
    "name": "realtime-transaction",
    "path": [
        "foo"
    ],
    "timestamp": 1484776854610
}

Echtzeit-Update

Diese Echtzeitvorgänge für Aktualisierungen spiegeln das Überschreiben bestimmter Daten wider, nicht die allgemeineren Schreibvorgänge in realtime-write .

{
    "allowed": true,
    "bytes": 5,
    "millis": 2,
    "name": "realtime-update",
    "path": [
        "foo"
    ],
    "timestamp": 1484776538769
}

Zuhörer-zuhören

Diese Vorgänge spiegeln die anfängliche Anforderung von Daten an einem bestimmten Standort durch einen Client wider. Zum Beispiel die Methoden on() oder once() für Webclients.

{
    "allowed": true,
    "bytes": 0,
    "millis": 26,
    "name": "listener-listen",
    "path": [
        "foo"
    ],
    "querySet": [],
    "timestamp": 1484776335024,
    "unIndexed": false
}

Hörersendung

Dieser Vorgang umfasst die Daten, die nach jedem Schreib- und Aktualisierungsvorgang vom Server an alle Clients gesendet werden, die an einem bestimmten Standort lauschen. Die Änderung der Daten führt zu einem Broadcast-Vorgang. Allerdings werden möglicherweise 0 Updates angezeigt, wenn keine Clients zuhören.

{
    "bytes": 56, // Total bytes sent across clients
    "clientsUpdated": 3, // This may be 0 if no clients are listening
    "millis": 17,
    "name": "listener-broadcast",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969928
}

Zuhörer-nicht zuhören

Diese Vorgänge spiegeln Überwachungsclients wider, die sich über die Detach-Methoden abmelden oder die Überwachung beenden (z. B. off() für Web oder removeAllObservers für iOS).

{
    "name": "listener-unlisten",
    "path": [
        "foo"
    ],
    "timestamp": 1484776335044
}

Rest-Lesen

GET Anfragen über die REST-API.

{
    "allowed": true,
    "bytes": 348, // This would be 0 if the read data was null
    "millis": 26,
    "name": "rest-read",
    "path": [],
    "querySet": [
        {
            "default": true,
            "endIndexValue": "[MAX_NAME]",
            "equality": false,
            "index": {},
            "limit": null,
            "range": false,
            "simpleLimit": false,
            "startIndexValue": "[MIN_NAME]",
            "viewFrom": null
        }
    ],
    "timestamp": 1484775747416
}

Rest-Schreiben

PUT und POST Anfragen über die REST-API. DELETE Anfragen spiegeln rest-write von 0 Bytes wider.

{
    "allowed": true,
    "bytes": 13,
    "millis": 116,
    "name": "rest-write",
    "path": [],
    "timestamp": 1484775917216
}

Rest-Transaktion

Für transaktionsähnliches Verhalten verwenden Sie bedingte Requests . Der rest-transaction erfasst Anforderungen mithilfe Etag oder if-match Headern.

{
    "allowed": true,
    "bytes": 13,
    "millis": 116,
    "name": "rest-transaction",
    "path": [],
    "timestamp": 1484775917216
}

Rest-Update

Aktualisierungen über die REST-API spiegeln PATCH Anfragen wider.

{
    "allowed": true,
    "bytes": 5,
    "millis": 11,
    "name": "rest-update",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

on-disconnect-put

Diese Vorgänge spiegeln das Hinzufügen von onDisconnect Listenern zu Schreibvorgängen wider. Zum Beispiel, wenn Sie onDisconnect().setValue() verwenden.

{
    "allowed": true,
    "bytes": 4,
    "millis": 2,
    "name": "on-disconnect-put",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

On-Disconnect-Update

Diese Vorgänge spiegeln das Hinzufügen von onDisconnect Listenern zu Aktualisierungsvorgängen wider. Zum Beispiel, wenn Sie onDisconnect().updateChildren() verwenden.

{
    "allowed": true,
    "bytes": 4,
    "millis": 2,
    "name": "on-disconnect-update",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

on-disconnect-cancel

Diese Vorgänge spiegeln das Entfernen von onDisconnect-Listenern wider. Zum Beispiel, wenn Sie onDisconnect().set().cancel() verwenden.

{
    "millis": 2,
    "name": "on-disconnect-cancel",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

Nachlauf-Trennung

Diese Vorgänge spiegeln die Auslösung von onDisconnect Listenern wider. Wenn ein Echtzeit-Client die Verbindung trennt, nachdem er mindestens einen onDisconnect Listener hinzugefügt hat, zeichnet der Profiler einen einzelnen run-on-disconnect Vorgang auf, um die aggregierten Bytes und die Zeit aller ausgelösten onDisconnect Listener widerzuspiegeln.

{
    "bytes": 4,
    "millis": 2,
    "name": "run-on-disconnect",
    "timestamp": 1484775969930
}