Partizioni e distribuzione dei dati

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Con il rilascio della struttura dati MemoryStoreHashMap , Roblox ha rimosso tutti i limiti esistenti per le singole strutture di dati e li ha sostituiti con un singolo limite di soffocamento globale "per partizione".Il limite esatto varia in base ai valori interni e al modo in cui il processo di partizione automatica distribuisce i tuoi dati, ma generalmente consente un uso molto più elevato prima di rallentare, in particolare per le mappe di hash.Questo nuovo limite consente un uso flessibile dei depositi di memoria in tutte le strutture di dati.

Partizioni

L'API MemoryStores memorizza i dati su partizioni , che sono semplicemente sottodivisioni di storage.Ogni volta che scrivi un oggetto in un Negoziodi memoria, quell'oggetto viene archiviato su esattamente una partizione.Le partizioni sono completamente gestite dall'API MemoryStores; non è necessario gestirle manualmente.

Assegnazione della partizione

Lo storage di partizione è diverso a seconda della struttura dei dati su cui viene memorizzato un oggetto.Per le mappe e le code ordinate, ogni struttura di dati viene assegnata una singola partizione.

Ad esempio, considera un gioco di carnevale con una mappa ordinata chiamata PlayerScores e una coda chiamata PlayerLine di giocatori in attesa di giocare al Gioco:

A differenza di mappe e code ordinate, le mappe hash vengono assegnate più partizioni e i dati vengono distribuiti automaticamente tra queste partizioni.Se aggiungi una mappa di hash chiamata Prizes, le partizioni potrebbero sembrare così:

Nota come la mappa hash esista su tutte le partizioni e ogni partizione abbia alcuni sottinsiemi di oggetti.

Limitazioni

Avere un limite per partizione consente un maggiore throughput per tutte le strutture di dati.Inoltre favorisce le mappe hash, perché sono distribuite su tutte le partizioni.

Ad esempio, considera un limite per partizione di 150.000 richieste al minuto (RPM):

  • Nel caso migliore, una mappa ordinata e una coda sono limitate a 150.000 RPM, perché ognuna risiede su una singola partizione.
  • Le richieste di hashing delle mappe si diffondono sulle chiavi dell'oggetto, che a loro volta si diffondono sulle partizioni, quindi le mappe di hashing possono avere un limite effettivo molto più alto prima del throttling, molte volte quello delle altre strutture di dati.

Per questo motivo, se non hai bisogno di funzionalità di ordinamento o "primo arrivo, primo uscita", le mappe di hash sono di solito la scelta migliore per una struttura di dati del deposito di memoria.Per maggiori informazioni, vedi le migliori pratiche.