2017-03-10 16 views
6

Firebaseは最近、独自のサーバを必要とせずにJavascriptの機能をアップロードするためのクラウド機能への統合をリリースしました。検索エンジンにFirebase Cloud Functionsを使用できますか?

これらの機能を使用して検索エンジンを構築することはできますか?私の考えは、ローカルディスク(tmpfsボリューム)を使用してインデックス付きデータをメモリに保存し、書き込みイベントごとに新しいデータをインデックス化することです。 tmpfsは関数呼び出し(インスタンス)間でデータを保持しますか?

この目的のためにクラウド関数を使用できますか、データをインデックスするために専用のサーバーを使用する必要がありますか?

これに関連するもう1つの質問は、次のとおりです。クラウド関数がFirebase Realtime Databaseからデータを取得するとき、ネットワークを消費するのか、ディスクの読み込みだけを消費しますか?プリンテイングではどのように計算されますか?

おかげ

+1

@downvoter:理由を教えてください。 –

+0

検索の質問と価格に関する質問はどちらも有効です。しかし、別々に投稿することはできますか?私は検索に関する質問に答えて刺すようにしたので、あなたは価格に関する別の質問を開いた方がいいようです。 –

+0

@FrankvanPuffelen私はStackoverflowで価格についてちょうど質問を開くことができますか? – Oswaldo

答えて

9

あなたは確かにそれを試みることができます。クラウドファンクションには、実行中に状態を維持するために通常使用されるローカルファイルシステムがあります。 Write temporary files from Google Cloud Function

しかし、私の知る限り、あなたの関数の実行の間に状態が維持されるという保証はありません。あるいは、その機能が次回同じコンテナで実行されることさえあります。次回に新しく作成したコンテナで実行している可能性があります。呼び出しにスパイクがある場合、関数は複数のコンテナで同時に実行されている可能性があります。したがって、関数の実行ごとに検索インデックスを再作成する必要があります。

代わりに、この例ではAlgoliaなどの外部専用検索エンジンを統合することを検討します:https://github.com/firebase/functions-samples/tree/master/fulltext-search。コードを見てください:コメントとライセンスでさえ55行しかありません!

また、永続ストレージサービス(FirebaseデータベースとFirebase Storageの2つの例)を使用して、検索インデックスを永続化することができます。だから、クラウド機能の検索インデックスを更新するコードを実行しますが、結果のインデックスファイルをより永続的な場所に保存します。

+2

So .. 1)メンテナンス状態の保証方法どうしたら終了しない無限関数を実行しようとする可能性があります(この方法ではtmpfsは必要ありません、配列になる可能性があります)、2)アイデアが気に入らない私のプロジェクト(AlgoliaやElasticsearchなど)に3番目の部分検索エンジンを追加する、3)データベースやストレージにインデックスデータを保存すると、大きなネットワークフットプリントが作成されます。私は(1)と私自身のサーバーを持っています – Oswaldo

4

GCFチームメンバー+元Google検索メンバー。クラウド機能は、いくつかの理由で、メモリ内検索エンジンには適していません。

  1. 検索エンジンは、インデックス作成とサービングマシンを分離するのが非常に賢明です。大規模では、ホットスポットの読み書きを別々に心配したいと思うでしょう。

  2. フランクさんが指摘したように、複数のリクエストで同じインスタンスを取得する保証はありません。私は彼の心配を強化したいと思います。決しては、2つの異なるクラウド機能にわたって同じインスタンスを取得します。各クラウド機能には独自にプロビジョニングされ、スケーリングされた独自のバックエンドインフラストラクチャがあります。

私はそれが依存関係を切り詰めるのが魅力的だと知っていますが、永続的な記憶域を削除するのは方法ではありません。サービングレイヤーはキャッシュ機能を使用してリクエストを高速化できますが、耐久性のあるストレージを使用すると、クラウド機能がクラッシュした場合や更新をデプロイする場合に、コーパス全体を再インデックスする必要がなくなります(インスタンス全体が破棄され再作成されることを保証します)。