sql >> データベース >  >> NoSQL >> Redis

ユーザーマッチングアルゴリズム

    私たちが話しているデータの種類について知っておくとよいでしょう。何人のユーザーが存在しますか?平均して何人がオンラインになりますか?すべてのユーザーと比較した「見たユーザー」の比率はどうですか(疎対密)

    アルゴリズムの変更 最初にポップするのではなく、オンラインユーザーのセットからランダムな要素を選択します。これにより、バランスが改善され、これら2つのセットの比率によっては、償却の複雑さが改善される可能性があります。

    代替アルゴリズム(より構造化されています。最悪の場合はまだ悪いです。まばらな場合は良いはずです

    • 見続ける バランスの取れたツリーとして(O(log n)挿入)
    • オンラインを維持する バランスの取れた木として。
    • 十分な数のユーザーを選択していませんが:
      • 見たの最初のギャップを検索する (例:[0,1,3,7]-> 2; SOリンクによるO(log n))
      • 最初のユーザーを検索>=gap-value(O(log n))
      • ユーザー
      • ->ピック
      • その他
      • ->chosen-gap-valueを一時的に追加します (現時点では、モデル-オンラインで更新する頻度を決定します )見た または、検索を何らかの方法で> selected-gap-value(O(log n))
      • に制限します。

    データによっては、データが巨大で見られる場合、これは非常にうまく機能するはずです。 まばらです!




    1. Ubuntu上のMongoDBはサービスとして起動せず、ログには何も記録されません

    2. 値と条件でグループ化

    3. Pythonを使用してMongoDBのbsondumpをJSONに変換するにはどうすればよいですか?

    4. GSSException:有効な資格情報が提供されていません(メカニズムレベル:Kerberos tgtが見つかりませんでした)