La progettazione di un database ACID è significativamente diversa da quella di un database BASE. ACID ti dà assicurazioni che una transazione sarà completa. La distribuzione di un database ACID aggiunge una notevole complessità. BASE e altri database non ACID sono più semplici da costruire e testare.
Concetti da testare (scegliere in base alla progettazione ACID / BASE):
- È possibile vedere parte di una modifica della transazione? (Dipende dal livello di isolamento.)
- Le modifiche vengono visualizzate in ordine?
- La vista del database è coerente con il livello di isolamento effettivo? (Il livello di isolamento effettivo potrebbe non essere il livello richiesto.)
- La transazione impegnata sopravvive a un riavvio?
- Le transazioni impegnate sopravvivono a un arresto anomalo del database?
- È possibile eseguire il rollback di una transazione?
- I dati appropriati vengono restituiti dopo un rollback?
- Le transazioni non salvate sopravvivono a un arresto anomalo del database o al riavvio? (Fail case)
- Un record con una modifica senza commit può essere aggiornato da una transazione anoouter?
- Le modifiche in conflitto sono gestite in modo appropriato?
- I risultati appropriati sono le modifiche non sono state convertite?
- Cosa succede se un'istanza di un'istanza di database distribuita viene arrestata (arresto anomalo o richiesta)?
- Cosa succede quando un'istanza di database distribuita si ricongiunge al cluster?
- Cosa succede se un'istanza di database distribuita non si ricongiunge mai al cluster?
Le tue aspettative sono per questi concetti guideranno il tipo di database che crei.