Typy operacji w Bazie danych czasu rzeczywistego Firebase

Polecenie narzędzia do profilowania Firebase Realtime Database

Aby wygenerować raport dotyczący prędkości i wykorzystania przepustowości na potrzeby operacji w instancji Realtime Database, użyj tego polecenia:

firebase database:profile
Opcje zgłaszania Opis
-h, --help Wyjściowe informacje o wykorzystaniu.
-o, --output FILENAME Zapisz dane wyjściowe w określonym pliku.
-i, --input FILENAME Generuj raport na podstawie określonego pliku zamiast logów strumienia z serwera.
-d, --duration SECONDS Zbieraj informacje o wykorzystaniu bazy danych przez określoną liczbę sekund.
--raw Przekazuj na wyjściu nieprzetworzone statystyki zebrane w formacie JSON rozdzielanym znakami nowego wiersza.

Typy operacji

połączenie równoczesne

Ta operacja odzwierciedla połączenia w czasie rzeczywistym z bazą danych (na przykład gdy a nowy klient łączy się za pomocą pakietu SDK). Połączenia REST nie są odzwierciedlane w operacji połączeń równoczesnych.

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

równoczesne rozłączanie

Równoczesne rozłączenie odzwierciedla połączenie, które zostało odłączone od w bazie danych (na przykład po rozłączeniu lub wylogowaniu klienta).

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

zapis w czasie rzeczywistym

Żądania zapisu z połączeń w czasie rzeczywistym. Na przykład: set() i push(). dla klientów internetowych. Prośby o usunięcie również są liczone jako realtime-write i odzwierciedla zapisy o rozmiarze 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 realizowane za pomocą połączeń w czasie rzeczywistym. Powtórne transakcje mogą być wynikiem nieudanych prób.

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

aktualizacja w czasie rzeczywistym

Operacje aktualizacji w czasie rzeczywistym odzwierciedlają nadużywanie konkretnych danych, bardziej ogólne operacje zapisu w funkcji realtime-write.

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

Słuchaj

Operacje te odzwierciedlają początkową prośbę o dane w konkretnej lokalizacji od klienta. Na przykład metody on() lub once() w przypadku klientów internetowych.

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

detektor-transmisja

Ta operacja obejmuje dane wysyłane z serwera do wszystkich klientów, którzy nasłuchują w danej lokalizacji po każdej operacji zapisu i aktualizacji. do transmisji. Możesz jednak otrzymywać 0 aktualizacji gdy nikt nie słucha.

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

Te operacje dotyczą słuchaczy klientów, którzy podpisują się lub przestają nasłuchiwać za pomocą metod odłączania (np. off() w przypadku witryny lub removeAllObservers w przypadku iOS).

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

przeczytane w spoczynku

GET żądań przesyłanych za pomocą 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
}

reszta-zapis

PUT i Żądania POST przesyłane za pomocą REST API. Pokazują one: DELETE Operacje: rest-write po 0 bajtów.

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

reszta-transakcja

W przypadku zachowania podobnego do transakcji użyj Żądania warunkowe. Operacja rest-transaction przechwytuje żądania za pomocą Etag lub if-match nagłówki.

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

aktualizacja w spoczynku

Aktualizacje za pomocą interfejsu API REST odzwierciedlają żądania PATCH.

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

on-disconnect-put

Te operacje odzwierciedlają dodanie detektorów onDisconnect do zapisu operacji. Jeśli na przykład używasz onDisconnect().setValue().

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

aktualizacja przy rozłączeniu

Te operacje odzwierciedlają dodanie detektorów onDisconnect do zaktualizowania operacji. Jeśli na przykład używasz onDisconnect().updateChildren().

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

anulowanie przy rozłączeniu

Operacje te odzwierciedlają usunięcie detektorów onRozłącz. Jeśli na przykład używasz onDisconnect().set().cancel().

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

działanie po rozłączeniu

Te operacje odzwierciedlają aktywowanie detektorów onDisconnect. Gdy klient czasu rzeczywistego rozłącza się po dodaniu co najmniej 1 elementu onDisconnect detektor, program profilujący rejestruje pojedynczą operację run-on-disconnect aby odzwierciedlać zagregowane bajty i czas wszystkich detektorów onDisconnect .

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