目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル 近くにいる人の数はどのように計算されますか?

近くにいる人の数はどのように計算されますか?

Jun 17, 2016 am 08:30 AM
500

例: Ele.me は近くのレストラン、QQ、WeChat に接続されている人々を検索します。バックエンドはどのように検索しますか?
ユーザーが接続されたレストランを開くと、ユーザーのレストランの座標レコードが 10,000 件あります。座標は、たとえば、ある店舗の場合、2 点の座標を計算するのは簡単です。問題は、10,000 店舗ある場合、500 メートル、1000 メートルのアタッチメントをどのように見つけるかです。 2000 メートル....

返信内容:

多くの実装ソリューションがあります:
mysql 空間データベース: Mysql gis 空間データベース関数の詳細な調査
2. Solr 空間インデックスは緯度および経度インデックス、場所によるクエリ、距離による並べ替え。

3. Redis の新しいバージョンは geohash もサポートします。Redis GEO 機能の概要ジオハッシュ 一般的には Geohash アルゴリズムですが、このアルゴリズムの問​​題点は、非常に近いグリッドでも、周囲の 8 つのグリッドを選択して計算することです。 ○○メートル付近など、範囲に応じて検索するのは簡単ではありません。 2つ目のアルゴリズムは、xxメートルの近くに円があり、その円に外接する正方形の経度、緯度の範囲を計算します。これは、中心辺の長さが次の正方形の経度、緯度の範囲です。現在位置のxx*2をデータベースに保存します。大なり小なりの条件を使用して四角形に該当するPOI(店舗)を検索し、厳密にしたい場合は四隅のデータを削除します。 (距離を計算するだけです。現時点では、データ量が非常に少ないため、テーブル全体をスキャンする必要はありません。非常に高速です) 精度の要件が高くない場合は、そのまま使用できます。この方法では、データベース内の経度と緯度のフィールドにインデックスを付けるだけで済み、一般的なデータ量に対処するのに十分です。
質問の主題には 10,000 個のデータしかありません。データなので、この方法が適切です。
3 番目の方法は、データベースの空間インデックスを使用する方法で、MySQL 自体がこれをサポートしており、R Tree で実装されているため、より効率的です。 1. 緯度と経度を整数に変換します。
2. 円形をカウントせずに正方形を計算し、平方根演算を避け、経度間と緯度間を直接使用します。 3. この四角形内の人々を決定した後、指数で並べ替えるだけです (ルート記号は開かずに)。 1000 メートル以内にいる人を見つけるには、データベースの設計とクエリでこの機能をどのように実装できるでしょうか? - データベース設計 オープン ソース ツールをすぐに使用してください、おいおい、おい、ソース コードを開いてください、おいおい。 この種のアルゴリズムが付属する mongodb を使用してください 全員の座標を保存し、自分の座標と他の全員の座標の間の距離を見つけます。 ジオハッシュ | 解決策: geohash + redis set
時間計算量: O(1)
空間計算量: O(n)、redis のキーは非常に短いため、非常に経済的です。を参照してください。以下の表:



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

500内部サーバーエラーとは何を意味しますか? 500内部サーバーエラーとは何を意味しますか? Feb 21, 2023 pm 03:39 PM

500内部サーバー エラーは、HTTP 500 内部サーバー エラーを意味します。これは、サーバーがリクエストを実行できない予期しない状況に遭遇したことを意味しますが、特定のエラーやエラーの根本原因を説明することはできません。エラーが発生した場合、アクセスした Web サイトではエラーが表示されます。

英国人は2500ポンド相当の希少な50ペンス硬貨がないか自宅で調べるよう呼び掛けた 英国人は2500ポンド相当の希少な50ペンス硬貨がないか自宅で調べるよう呼び掛けた Oct 28, 2024 pm 04:20 PM

ある専門家によると、2011年の作品は2012年のロンドンオリンピックを記念して鋳造されたという。

イーサリアム(ETH)価格は2,320ドルを超えて回復、しかしペースを上げるのに苦戦 イーサリアム(ETH)価格は2,320ドルを超えて回復、しかしペースを上げるのに苦戦 Sep 10, 2024 pm 03:20 PM

イーサリアム価格は2,250ドルの水準を超えて回復の波を始めた。 ETHは2,280ドルのレジスタンスゾーンをクリアしてプラスゾーンに移行することができましたが、ビットコインに比べて勢いが弱かったです。

BetMGM ミシガン ボーナス コード MLIVEMGM: $1,500 の初回ベット オファーを獲得 BetMGM ミシガン ボーナス コード MLIVEMGM: $1,500 の初回ベット オファーを獲得 Nov 18, 2024 am 03:36 AM

新規プレイヤーは、プロモーション コード MLIVEMGM を使用することで、BetMGM ウェルカム ボーナスを獲得し、ボーナス ベットで最大 1,500 ドルの払い戻しを受け取ることができます。

ビットコイン (BTC) 価格分析: BTC が大幅な上昇を開始、目標は 60,000 ドルマーク ビットコイン (BTC) 価格分析: BTC が大幅な上昇を開始、目標は 60,000 ドルマーク Sep 12, 2024 pm 06:35 PM

ビットコインは大幅な上昇を開始し、57,500ドルの抵抗レベルを超え、現在60,000ドルのマークに到達する可能性がある有望な兆候を示しています。

レアなバージョンには250万ポンドの巨額の価値がある可能性があるため、英国人は50ペンス硬貨をチェックするよう促した レアなバージョンには250万ポンドの巨額の価値がある可能性があるため、英国人は50ペンス硬貨をチェックするよう促した Oct 28, 2024 pm 04:24 PM

2012年のロンドンオリンピックを記念して鋳造された2011年のコインは、「アクアティクス」デザインとして知られ、水泳選手のイメージが特徴です

Rexas Finance (RXS): Solana (SOL) および Ethereum (ETH) の潜在的な競合相手 Rexas Finance (RXS): Solana (SOL) および Ethereum (ETH) の潜在的な競合相手 Nov 04, 2024 pm 06:44 PM

このブロックチェーン技術の終わりのない競争の中で、ソラナ (SOL) とイーサリアム (ETH) の 2 つが傑出し、投資家の注目を集めることに成功しました。

ソラナの価格は4,500ドルに達する可能性がある ソラナの価格は4,500ドルに達する可能性がある Oct 22, 2024 am 06:42 AM

SOL は週足チャートでカップアンドハンドルパターンを形成しており、Solana 価格が 2,600% 急騰し、4,500 ドルまで上昇する可能性があることを示しています。

See all articles