Typy operacji bazy danych czasu rzeczywistego Firebase

Polecenie profilera bazy danych czasu rzeczywistego Firebase

Aby wygenerować raport dotyczący szybkości i wykorzystania przepustowości dla operacji w instancji bazy danych Realtime Database, użyj następującego polecenia:

firebase database:profile
Opcje flagi Opis
-h, --help Wyjście informacji o użyciu.
-o, --output FILENAME Zapisz dane wyjściowe w określonym pliku.
-i, --input FILENAME Wygeneruj raport na podstawie określonego pliku zamiast logów strumieniowych z serwera.
-d, --duration SECONDS Zbieraj informacje o użyciu bazy danych przez określoną liczbę sekund.
--raw Wyprowadź zebrane surowe statystyki w formacie JSON rozdzielanym nowymi wierszami.

Typy operacji

połączenie współbieżne

Ta operacja odzwierciedla połączenia z bazą danych w czasie rzeczywistym (na przykład, gdy nowy klient łączy się za pośrednictwem zestawu SDK). Połączenia RESTful nie są odzwierciedlane w operacjach łączenia współbieżnego.

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

jednoczesne rozłączenie

Równoczesne rozłączenia odzwierciedlają połączenie, które zostało rozłączone z bazą danych (na przykład, gdy klient rozłącza się lub wylogowuje).

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

pisz w czasie rzeczywistym

Zapisuj żądania z połączeń w czasie rzeczywistym. Na przykład operacje set() i push() dla klientów internetowych. Żądania usunięcia są również liczone jako operacje realtime-write i odzwierciedlają zapisy o wielkości 0 bajtów.

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

transakcja w czasie rzeczywistym

Ten typ operacji obejmuje transakcje przeprowadzane poprzez połączenia w czasie rzeczywistym. Powtarzające się transakcje mogą być wynikiem nieudanych prób i ponownych prób.

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

aktualizacja w czasie rzeczywistym

Te operacje aktualizacji w czasie rzeczywistym odzwierciedlają nadpisywanie określonych danych, a nie bardziej ogólne operacje zapisu w realtime-write .

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

słuchacz-słuchaj

Operacje te odzwierciedlają początkowe żądanie danych od klienta w określonej lokalizacji. Na przykład metody on() lub once() dla klientów internetowych.

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

transmisja słuchacza

Ta operacja obejmuje dane wysyłane z serwera do wszystkich klientów nasłuchujących w danej lokalizacji po każdej operacji zapisu i aktualizacji. Zmiana danych prowadzi do operacji rozgłaszania. Jeśli jednak żaden klient nie słucha, możesz zobaczyć 0 aktualizacji.

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

słuchacz-niesłuchaj

Operacje te odzwierciedlają klientów nasłuchujących, którzy wylogowują się lub przestają nasłuchiwać za pomocą metod odłączania (na przykład off() w przypadku sieci Web lub removeAllObservers w przypadku systemu iOS).

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

przeczytaj resztę

GET żądania za pośrednictwem interfejsu API REST.

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

odpoczywaj-pisz

Żądania PUT i POST za pośrednictwem interfejsu API REST. Żądania DELETE odzwierciedlają operacje rest-write o wielkości 0 bajtów.

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

transakcja reszta

W przypadku zachowania przypominającego transakcję użyj żądań warunkowych . Operacja rest-transaction przechwytuje żądania przy użyciu nagłówków Etag lub if-match .

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

aktualizacja reszta

Aktualizacje za pośrednictwem interfejsu API REST odzwierciedlają żądania PATCH .

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

przy rozłączaniu

Operacje te odzwierciedlają dodanie odbiorników onDisconnect do operacji zapisu. Na przykład, gdy używasz onDisconnect().setValue() .

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

aktualizacja po rozłączeniu

Operacje te odzwierciedlają dodanie odbiorników onDisconnect w celu operacji aktualizacji. Na przykład, jeśli używasz onDisconnect().updateChildren() .

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

on-rozłącz-anuluj

Operacje te odzwierciedlają usunięcie słuchaczy onDisconnect. Na przykład, gdy używasz onDisconnect().set().cancel() .

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

działanie po rozłączeniu

Operacje te odzwierciedlają wyzwalanie odbiorników onDisconnect . Gdy klient czasu rzeczywistego rozłącza się po dodaniu co najmniej jednego odbiornika onDisconnect , profiler rejestruje pojedynczą operację run-on-disconnect , aby odzwierciedlić zagregowane bajty i czas wszystkich wyzwolonych odbiorników onDisconnect .

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