Autosuggest sulla scala - trie sharding

2

Durante la lettura del progetto per l'implementazione automatica di sistemi su larga scala (come google), sono in grado di comprendere l'utilizzo di trie e il modo in cui i termini "n" vengono memorizzati su ciascun nodo per recuperare rapidamente l'elenco. Tuttavia, non sono in grado di comprendere la logica del modo efficiente di "condividere" il trie in un sistema distribuito. Sharding sulla prima lettera / prime due lettere non è ovviamente una soluzione chiara e ho letto da qualche altra parte sull'utilizzo di un hash del termine - ma ciò richiede un server di aggregazione che recuperi i risultati da tutti i server e li aggreghi. Non sembra una cosa efficace da fare in scala "web".

L'approccio ideale sarebbe qualcosa come calcolare la densità effettiva e scomporre l'albero di conseguenza (una sorta di shard / partizionamento gestito dall'applicazione?) - ma pensate che potrebbe comportare molta manutenzione e riequilibrio?

Qualcuno può consigliarmi o indicarmi qualsiasi riferimento?

Una domanda correlata a questo - cosa succede se volevo memorizzare i risultati "n" migliori per finestre temporali diverse. Ad esempio, la top 10 dell'ultimo giorno, la top 10 del mese scorso, la top 10 di tutti i tempi. Qual è la soluzione migliore? - Memorizza la lista puntatori sul nodo dell'albero per ogni finestra temporale? Cosa succede se il set di finestre non è finito?

Grazie

    
posta user2599672 05.11.2018 - 02:41
fonte

0 risposte

Leggi altre domande sui tag