4

私の Android アプリでは、(今のところ) 場所、年齢、性別に基づいてユーザーを一致させようとしています。GeoFire を使用して、指定されたエリア内のすべてのユーザーについて Firebase データベースにクエリを実行しています。

前述の基準に基づいて、照会されたユーザーをフィルター処理するための最速/最良の方法を見つけようとしています。

私の最初のアイデアは、現在他のユーザーを検索しているユーザーのリストを照会することでした。ユーザー ノードは次のように構成されています。ここに画像の説明を入力

GeoFire が age_range と性別の追加された子をロードする必要があるため、この実装はかなり遅くなると思います。さらに、この実装は、データベースでデータと場所を分離する必要があることを指定する GeoFire ガイドラインに準拠していません。

私の2番目のアイデアは、このようにデータベースを構成することでした(スクリーンショットではなくJSON形式)

-queue_locations
    -uid
        -g
        -l
            -lat
            -lon

-queue_users
    -uid
        -age_range
        -gender

この構造は GeoFire ガイドラインに準拠していますが、解決には時間がかかるようです。データベースに 2 回クエリを実行する必要があります。場所に基づいて適格なユーザーを返す 1 つのクエリと、適格なユーザーの指定された条件を返す別のクエリです。

私の最後の解決策は信じられないほどハックですが、非常に速いようです:

ここに画像の説明を入力

この実装では、GeoFire が場所に関連付けるキーに基準を含めました。このソリューションを使用すると、データベースに 1 回クエリを実行するだけで、どのユーザーが一致する資格があるかを非常に迅速に確認できます。

これらのソリューションのうち、パフォーマンスの点で最も優れているのはどれですか?

前もって感謝します。

4

0 に答える 0