1

リレーショナル データベースを Firebase に移行しています。一般的に、私は労働者のためのプランナーを持っています。スケジュールに項目 (「予定」) を追加できます。FireBase のドキュメントを読み、インデックス作成に関するセクションを見つけました。

したがって、次の構造を作成しました (日付 =YYYYMMDDおよび時刻 = HHMMSS):

{ 
     appointments : 
         'id1' : { 'date' : '20141207', 'time' : '170000', worker : 'worker1' },
         'id2' : { 'date' : '20141208', 'time' : '170000', worker : 'worker1' }
}

日付、時刻、およびワーカーのインデックスを追加して、次のようなデータをクエリできるようにしました (たとえば、今日のすべての予定をフェッチします)。

curl -X GET 'https://myapp.firebaseio.com/appointments.json?orderBy="date"&equalsTo="20141207"'

これは期待どおりに機能し、うまく機能します。問題は、予約の数が指数関数的に増加する可能性があることです (約 1 年後には、100000 件以上の予約が発生する可能性があります)。これらのインデックスを使用するのは良い方法ですか? 別のオプションは、次のように、日付と時刻も別々に保存することです。

{
    '20141207' : 
        { '170000' : { 'id1' : true } },
    '20141208' : 
        { '170000' : { 'id2' : true } }
}

1 日あたりの予定を非常に高速に取得できるようにするためです。または、FireBase はインデックスを使用するだけでこれを処理できますか?

4

1 に答える 1

2

パス内のレコード数は問題になりません。Firebase は、数十万の同時接続と数百万のノードを処理するスケーラブルなリアルタイム バックエンドです。クエリは高速である必要があります。これがインデックスの要点であり、すべての Firebase と同様に、速度と卓越性の基準を満たす必要があります。

必ず「.indexOn」について読み、これをセキュリティ ルールに実装してください。

{
  "rules": {
     "appointments": {
        ".indexOn": ["date", "time", "worker"]
     }
  }
}

また、ここでの実際の制限は、チューブを介してデータを転送する帯域幅になるため、何らかの方法で結果を制限し、ページ付けしてください。

curl -X GET 'https://myapp.firebaseio.com/appointments.json?orderBy="date"&equalsTo="20141207"&limitToFirst=100'
于 2014-12-19T19:38:42.377 に答える