sql >> Databáze >  >> NoSQL >> MongoDB

Jak Trello zpracovává přeuspořádání karet, seznamů, kontrolních seznamů atd

Každá položka je označena pos (číslo JavaScriptu, takže plovák s dvojitou přesností). Poté jsou vykresleny řazením podle pos .

Když je přidána nová položka, je to pos je založeno na tom, kde v seznamu je:

  • spodní část seznamu – maximálně pos aktuálně v seznamu + vyrovnávací paměť (myslím, že 1024 se používá)
  • začátek seznamu – minimum pos aktuálně v seznamu rozděleném dvěma
  • uprostřed seznamu – průměr pos ze dvou sousedních položek

Prostřední možnost by zadal klient; horní/dolní může být buď přiřazeno klientem, nebo předáno serveru jako řetězce "top" nebo "bottom" v takovém případě server provede logiku.

Na serveru po přiřazení pos k nové položce, jak je znázorněno výše, je položka zkontrolována vůči nejbližším sousedům z hlediska sousedství – pokud jsou od sebe menší než minimální vzdálenost (.01 Domnívám se, že se používá), jsou rozprostřeny (potenciálně kaskádovitě zvyšující se pos). z celého seznamu).

Nemyslím si, že je to ideální způsob, ale Trello to tak dělá.




  1. Aktualizujte dvojité vnořené pole mongodb

  2. Jak odeberu klíče?

  3. Jak používat příkaz SQL LIKE v MongoDB

  4. Jak zachytit výjimku redis.serializer.SerializationException