sql >> Database >  >> NoSQL >> Redis

Algoritme voor gebruikersovereenkomst

Het zou goed zijn om te weten over wat voor soort gegevens we het hebben. Hoeveel gebruikers zijn er? Hoeveel zullen er gemiddeld online zijn? Hoe is de verhouding van "geziene gebruikers" in vergelijking met alle gebruikers (dun versus dicht)?

Wijziging van uw algoritme Pop niet de eerste, maar kies een willekeurig element uit de reeks online gebruikers. Dit zou de balans moeten verbeteren en kan helpen bij de afgeschreven complexiteit, afhankelijk van de verhouding van deze twee sets!

Alternatief algoritme (meer gestructureerd; nog steeds slecht in het slechtste geval; zou goed moeten zijn als het schaars gezien )

  • Blijf gezien als een evenwichtige boom (O(log n) invoeging)
  • Blijf online als een evenwichtige boom.
  • Hoewel niet genoeg gebruikers gekozen:
    • Zoeken naar eerste gat in gezien (bijv. [0,1,3,7] -> 2; O(log n) volgens SO-link)
    • Zoeken naar eerste gebruiker>=gap-value (O(log n))
    • Als gebruiker
    • -> kiezen
    • Anders
    • -> voeg gekozen-gap-waarde tijdelijk toe (voor dit moment; modelbeslissing hoe vaak online moet worden bijgewerkt ) tot gezien OF beperk zoeken op de een of andere manier tot> gekozen-gap-waarde (O(log n))

Afhankelijk van de gegevens zou dit heel goed moeten werken als de gegevens enorm zijn en gezien is schaars!




  1. mongoDB array paginering

  2. nginx uwsgi websockets 502 Slechte gateway upstream voortijdig gesloten verbinding tijdens het lezen van responsheader van upstream

  3. 5 manieren om de seconden van een date te krijgen in MongoDB

  4. 7 manieren om documenten te tellen in MongoDB