Cos'è tombstone?
Pietra tombale (Tombstone)
Una pietra tombale, nel contesto dei sistemi distribuiti e dei database, si riferisce a un marcatore speciale utilizzato per indicare che un dato precedentemente esistente è stato cancellato. Invece di eliminare fisicamente i dati immediatamente (il che può essere costoso o problematico in ambienti distribuiti), viene inserita una pietra tombale che segnala alle future operazioni di lettura che quel dato è stato contrassegnato per la cancellazione.
Funzionalità Principali e Scopo:
- Cancellazioni Logiche: Le pietre tombali implementano le cancellazioni%20logiche invece delle cancellazioni fisiche immediate.
- Gestione della Consistenza: In sistemi distribuiti, le pietre tombali aiutano a mantenere la consistenza tra i diversi nodi. Permettono di propagare l'informazione che un dato è stato cancellato a tutti i nodi del sistema.
- Risoluzione dei Conflitti: Le pietre tombali aiutano a risolvere i conflitti che possono sorgere quando diverse operazioni (inserimento, aggiornamento, cancellazione) avvengono contemporaneamente sullo stesso dato in diversi nodi.
- Garanzia di Propagazione delle Cancellazioni: Assicurano che le cancellazioni siano propagate e applicate a tutti i nodi nel sistema nel tempo, anche se alcuni nodi sono temporaneamente non disponibili.
Come Funzionano:
- Quando un utente richiede la cancellazione di un record, invece di eliminare fisicamente il record dal database, il sistema crea una pietra tombale per quel record.
- La pietra tombale contiene in genere una chiave che identifica il record cancellato e un timestamp. Il timestamp indica quando la cancellazione è stata contrassegnata.
- Quando un'operazione di lettura incontra una pietra tombale, il sistema sa che il record corrispondente deve essere trattato come se non esistesse.
- Periodicamente, viene eseguito un processo di pulizia (compaction) per rimuovere fisicamente i record marcati con pietre tombali, liberando spazio e migliorando le prestazioni.
Considerazioni Importanti:
- Timestamp: Il timestamp della pietra tombale è cruciale per risolvere i conflitti. Una pietra tombale con un timestamp più recente indica che la cancellazione è la versione più recente del dato.
- Compaction (Pulizia): La compaction è un processo essenziale per rimuovere fisicamente i dati marcati con pietre tombali. Se non viene eseguita regolarmente, il database può riempirsi di pietre tombali, degradando le prestazioni di lettura.
- Over-Tombstoning: Creare troppe pietre tombali (ad esempio, cancellando e riscrivendo frequentemente gli stessi dati) può portare a problemi di prestazioni. Questo fenomeno è chiamato "over-tombstoning".
- Durata delle Pietre Tombali (TTL - Time-To-Live): Alcuni sistemi supportano un TTL per le pietre tombali. Dopo un certo periodo di tempo, la pietra tombale viene rimossa automaticamente durante la compaction. Ciò aiuta a prevenire l'accumulo eccessivo di pietre tombali.
Esempi di Utilizzo:
Le pietre tombali sono ampiamente utilizzate in database NoSQL come Apache Cassandra e ScyllaDB per gestire le cancellazioni in modo efficiente in ambienti distribuiti.