Firebase Realtime Database オペレーション タイプ

Firebase Realtime Database プロファイラ コマンド

Realtime Database インスタンス内のオペレーションの速度や帯域幅の使用状況に関するレポートを生成するには、次のコマンドを使用します。

firebase database:profile
フラグ オプション 説明
-h, --help 使用方法を出力する
-o, --output FILENAME 指定したファイルに出力を保存する
-i, --input FILENAME サーバーからのストリームログではなく、指定したファイルに基づいてレポートを生成する
-d, --duration SECONDS 指定した秒数の間、データベースの使用状況の情報を収集する
--raw 収集された生の統計情報を改行で区切られた JSON として出力する

オペレーション タイプ

concurrent-connect

このオペレーションは、データベースへのリアルタイム接続を反映します(たとえば、新しいクライアントが SDK 経由で接続する場合など)。RESTful 接続は concurrent-connect オペレーションに反映されません。

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

concurrent-disconnect

concurrent-disconnect は、データベースから切断された接続を反映します(たとえば、クライアントが接続解除またはログアウトした場合など)。

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

realtime-write

リアルタイム接続からの書き込みリクエストを表します。たとえば、ウェブクライアントの set()push() のオペレーションがこれに該当します。削除リクエストも realtime-write オペレーションとしてカウントされ、0 バイトの書き込みとして反映されます。

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

realtime-transaction

このオペレーション タイプには、リアルタイム接続を介して実行されるトランザクションが含まれます。 繰り返し発生するトランザクションは、ある処理が失敗して再試行されたことによるものである場合があります。

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

realtime-update

これらのリアルタイムの更新オペレーションは、realtime-write による一般的な書き込みオペレーションではなく、特定のデータの上書きを反映します。

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

listener-listen

これらのオペレーションは、特定の場所にあるデータに対するクライアントからの初期の問い合わせを反映します。たとえば、ウェブクライアント用の on() メソッドや once() メソッドがこれに該当します。

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

listener-broadcast

このオペレーションは、特定の場所にあるデータをリッスンしている任意またはすべてのクライアントに対して、データの書き込みや更新のオペレーションが実行された後にサーバーから送信されるデータを対象とします。データの変更はブロードキャスト オペレーションにつながります。ただし、どのクライアントもリッスンしていない場合は更新クライアント数が 0 になることがあります。

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

これらのオペレーションは、リッスン中のクライアントがログアウトした場合、またはデタッチ メソッド(たとえば、ウェブの off() や iOS の removeAllObservers など)によってリスニングが中止された場合を反映します。

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

rest-read

REST API による GET リクエスト。

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

REST API による PUT リクエストと POST リクエスト。DELETE リクエストには、0 バイトの rest-write オペレーションが反映されます。

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

rest-transaction

トランザクションのような動作を実現するには、条件付きリクエストを使用します。rest-transaction オペレーションは、Etag ヘッダーまたは if-match ヘッダーを使用してリクエストをキャプチャします。

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

rest-update

REST API による更新は PATCH リクエストを反映します。

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

on-disconnect-put

これらのオペレーションは、書き込みオペレーションへの onDisconnect リスナーの追加を反映します。たとえば、onDisconnect().setValue() を使用する場合です。

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

on-disconnect-update

これらのオペレーションは、更新オペレーションへの onDisconnect リスナーの追加を反映します。たとえば、onDisconnect().updateChildren() を使用する場合です。

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

on-disconnect-cancel

これらのオペレーションは、onDisconnect リスナーの削除を反映します。たとえば、onDisconnect().set().cancel() を使用する場合です。

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

run-on-disconnect

これらのオペレーションは、onDisconnect リスナーのトリガーを反映します。1 つ以上の onDisconnect リスナーを追加した後、リアルタイム クライアントが切断すると、プロファイラは 1 つの run-on-disconnect オペレーションを記録して、トリガーされたすべての onDisconnect リスナーの集計バイトと時間を反映します。

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