私の 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 回クエリを実行するだけで、どのユーザーが一致する資格があるかを非常に迅速に確認できます。
これらのソリューションのうち、パフォーマンスの点で最も優れているのはどれですか?
前もって感謝します。