ご存知のように、Badooは新しい人を見つけるためのサービスです。 とりわけ、私たちはあなたが周りの人々を検索できるようにし、「ゲーム」ではあなたの近くにいる人々も表示します。 この「周り」の部分は非常に重要です。 結局のところ、ノボシビルスクの若者はウラジオストクではなく、彼から徒歩5分の距離に住んでいる女の子に会うのがはるかに面白いです。
これをどのように行うかについてはまだ公に話していない。 しかし、オーストリアの科学者の新しい発見により、私たちはとても喜んで、これを行うことにしました。 ビジネスに取り掛かろう。
Badooは世界中で機能し、世界中のどこにいても検索はまったく同じように機能します。 2億人以上のユーザーすべての中から周りの人を効果的に検索する方法は?
正直なところ、解決策は重要です。 何らかの種類のインデックス、検索をすぐに絞り込むための何らかの方法が必要です。 地球の場合、最も単純なパーティションは地理的な緯度と経度のグリッドです。 ただし、このグリッドの問題はその不均一性です。 北極のセルと赤道のセルの形状は非常に異なります。 このような非対称のパーティション分割は、検索クラスター全体に負荷を均等に分散する場合に大きな問題を引き起こします。
細胞が互いに等しくなるように地球の表面を破壊する方法は? 少なくともおよそ。 Badooでは、正多角形の1つである20面体を思い出しました。 その面は等しい正三角形です。 正二十面体の顔は20個しかないため、検索クラスターでの効果的な負荷分散には小さすぎます。 しかし、その面は三角形に分割することもできます。
二十面体の頂点とエッジを地球の球体に投影します。 二十面体で定義された三角形を4つの小さな三角形に再帰的に分割します。 そして2回。 合計320の顔を取得します。 残念ながら、それらはもはや平等ではありません。 次に-Pythonプログラムを使用して、変換lon / lat-> triangleを実行できる〜100,000行のCコードを生成します。
したがって、地球上の任意の座標を三角形、つまり地球上のこの領域に住んでいるすべてのユーザーを含むクラスターの破片と比較できます。
このような「大きな」三角形は、検索の目的の精度に応じて、三角形に分割し続けることができ、ますます「小さな」三角形になります。 三角形が地球の半径と比較して非常に小さくなった場合-既にそれらを「平ら」とみなし、メートルではなく「三角形の高さ」で距離を構築できます。
これらの「小さな」三角形はそれぞれ、トリプル(a、b、c)によって一意に定義されます。a、b、cは交差する線の数です。
座標系を使用して小さな三角形の人々を効果的に検索する方法は、将来興味があるかどうかを確実にお知らせしますが、今日戻って「大きな」三角形について詳しくお話ししたいと思います。
地球を分割するために提案した解決策には、不均一性と精度の両方に関連する欠点があります。 320個の破片にもかかわらず、負荷の歪みにしばしば遭遇します。
そして今、数週間前、私たちの友人が私たちに連絡しました- オーストリア科学技術研究所の従業員は彼らの発見について話しました。
彼らは、多次元格子の対称セクションの検索とリソース集約的なコンピューター計算のために開発した手法を使用して、十分な数の頂点を持つ六角形への球体の新しい対称パーティションを構築しました。 その結果、彼らは「ヘキサスフェア」と呼んだデザインを作りました。 このパーティションの対話型モデルは、記事の発表とともにサイトに投稿されました。 ここに挿入できませんでしたので、 リンクに従って操作してください 。
過去1週間、オーストリア人と緊密に協力し、アルゴリズムを完成させ、シャード間で完全に均一な負荷分散を達成しました。
Badooはユーザーにとってより正確になりました。私たちにとってシステムはより予測可能でストレスに強くなりました。オーストリアの科学者たちは、彼らのアイデアに興味深い応用を見ました。
次の記事では、このアルゴリズムがどのように機能するかを詳細に明確に説明し、達成した改善をグラフに示します。
Marco Kevats、研究開発者