Firebase Realtime Database-Vorgangstypen

Firebase Realtime Database-Profiler-Befehl

Um einen Bericht über die Geschwindigkeit und Bandbreitennutzung für Vorgänge in Ihrem Realtime Database verwenden Sie den folgenden Befehl:

firebase database:profile
Flaggenoptionen Beschreibung
-h, --help Nutzungsinformationen ausgeben.
-o, --output FILENAME Speichert die Ausgabe in der angegebenen Datei.
-i, --input FILENAME Der Bericht wird anhand der angegebenen Datei statt anhand von Streamprotokollen vom Server erstellt.
-d, --duration SECONDS Es werden Datenbanknutzungsdaten für die angegebene Anzahl von Sekunden erfasst.
--raw Geben Sie die erfassten Rohstatistiken als durch Zeilenumbruch getrenntes JSON aus.

Vorgangsarten

gleichzeitige Verbindung

Dieser Vorgang spiegelt Echtzeitverbindungen zur Datenbank wider, z. B. wenn ein neuer Client über ein SDK eine Verbindung herstellt. RESTful-Verbindungen werden nicht in für gleichzeitige Verbindungen.

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

gleichzeitiges Aufheben der Verbindung

Gleichzeitige Trennungen spiegeln eine Verbindung wider, die vom (z. B. wenn ein Kunde die Verbindung trennt oder sich abmeldet).

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

Schreiben in Echtzeit

Schreibanfragen von Realtime-Verbindungen. Beispiel: set()- und push()-Vorgänge für Webclients. Löschanfragen werden ebenfalls als realtime-write-Vorgänge gezählt und entsprechen Schreibvorgängen mit 0 Byte.

{
    "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 Realtime-Verbindungen ausgeführt wurden. Wiederholte Transaktionen können das Ergebnis fehlgeschlagener Versuche und Wiederholungen sein.

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

Echtzeit-Update

Diese Echtzeitvorgänge für Aktualisierungen spiegeln Überschreibungen 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

Diese Operationen spiegeln die ursprüngliche Anforderung von Daten an einem bestimmten Standort von Kundschaft. Beispiel: die Methode on() oder once() für Webclients.

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

Listener-Übertragung

Dieser Vorgang umfasst die Daten, die nach jedem Schreib- und Aktualisierungsvorgang vom Server an alle Clients gesendet werden, die an einem bestimmten Ort lauschen. Die Änderung an den Daten führt zu einem Broadcastvorgang. Es kann jedoch sein, dass Sie keine Updates sehen. wenn keine Kundschaft zuhört.

{
    "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
}

listener-unlisten

Diese Vorgänge stehen für das Zuhören von Clients, die das Zuhören genehmigen oder beenden. mithilfe der Trennungsmethoden (z. B. off() für das Web oder removeAllObservers) für iOS).

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

Ausruhen

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-write

PUT- und POST-Anfragen über die REST API. DELETE Anfragen spiegeln wider rest-write-Vorgänge mit 0 Byte.

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

rest-transaction

Verwenden Sie für transaktionsähnliches Verhalten bedingte Anfragen. Der Vorgang rest-transaction erfasst Anfragen mit 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
}

Beim Trennen

Diese Vorgänge spiegeln das Hinzufügen von onDisconnect Zuhörern zu Schreibvorgängen wider. Wenn Sie beispielsweise 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 für Aktualisierungsvorgänge 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 die Entfernung von onVerbindung-Listenern wider. Zum Beispiel, wenn Sie onDisconnect().set().cancel() verwenden.

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

Run-on-Disconnect

Diese Vorgänge spiegeln das Auslösen von onDisconnect-Listenern wider. Wenn ein Echtzeit-Client die Verbindung trennt, nachdem mindestens ein onDisconnect-Listener hinzugefügt wurde, 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
}