
Originariamente Scritto da
GrG
Scusate mi era sfuggita la risposta.
SimpleDB di solito prima di leggere qualcosa si assicura che si siano concluse tutte le scritture in corso su quella tabella o row o quello che è. E che la copia sia sincrona. Insomma, leggi l'ultima versione. Questo ha una latenza X.
Per abbattere la latenza si saltano questi "check". Ovvero io me ne frego delle scritture in corso o della sincronizzazione dei nodi, io prendo e leggo la prima cosa che trovo (sapendo comunque che nel giro di pochi secondi i nodi diventano sincroni).
Questo è disastroso in un ecommerce (che difatti sono gli unici sistemi per cui il modello relazionale a consistenza forte secondo me durerà a vita), perchè si può verificare questa situazione:
- Hai UNA copia di un libro
- La vendi ad A
- B fa una ricerca, un nodo non è sincronizzato e gli risulta ancora disponibile quel libro
- B lo compra
- Ho un libro venduto due volte
Ma per molte altre cose funziona da paura. Se ho un indice di ricerca basato su crawler (che quindi già per come è progettato non è in real-time) posso abbattere la latenza di lettura e i costi di cpu time con query simili. Ok forse non leggo proprio gli ultimi ultimi risultati, ma sono molto molto molto più veloce.
Non ho mai fatto test ma non oso immaginare se Google dovesse aspettare la fine di ogni put per fare una ricerca.
Segnalibri