.NET Ordina le richieste concorrenti in una coda

-1

L'ho chiesto a Stack Overflow, ma visto che non era tanto un problema di programmazione quanto un problema di teoria, non è stato accolto bene.

Ho un programma che emette un codice ascendente unico ogni volta che ne viene richiesto uno. Tutto è costruito lato client nella console e non ci sono problemi.

Tuttavia sto cercando di integrare il programma con un database SQL che memorizza i codici univoci. Non ho un problema con la programmazione ma la teoria dietro la gestione di più richieste simultanee e l'ordinamento in una coda.

Qualsiasi feedback sarebbe molto apprezzato e sono felice di seguire e spiegarmi qui se necessario.

    
posta Max Goddard 10.08.2017 - 07:07
fonte

1 risposta

1

Questo è noto come problema dello spazio dei nomi.

Se hai identificatori che sono "unici", possono anche essere considerati unici all'interno di uno spazio dei nomi. Uno spazio dei nomi deve essere di proprietà di un singolo sistema per garantire l'unicità.

Per risolvere il tuo problema ci sono alcuni approcci:

  1. Dai a ogni client il proprio spazio dei nomi. Ad esempio, cambia l'identificativo da {crescente intero} a {identificatore unico cliente} + {numero crescente}. Puoi anche invertirlo se ne hai bisogno per essere ordinabile, ad es. {numero crescente} + {identificativo cliente}.

  2. Assegna la proprietà dello spazio dei nomi al server. Ogni cliente dovrebbe inviare un record senza un identificatore; il server genererebbe l'identificatore, memorizzerà il record e restituirà l'identificatore al client.

  3. Usa GUID che sono globalmente unici. Il lato negativo è che non sono ordinabili.

  4. Utilizza un quasi-GUID, ad es. un timestamp che include millisecondi. Utilizzare una data ordinabile ISO. Un identificatore di esempio sarebbe 20170809125521356, emesso il 8/9/17 alle 12:55:21 e 356 millisecondi. Sono carini perché sono ordinabili, ma c'è ancora una piccola possibilità di collisione.

risposta data 10.08.2017 - 18:46
fonte

Leggi altre domande sui tag