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:

  1. 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.
  2. La pietra tombale contiene in genere una chiave che identifica il record cancellato e un timestamp. Il timestamp indica quando la cancellazione è stata contrassegnata.
  3. Quando un'operazione di lettura incontra una pietra tombale, il sistema sa che il record corrispondente deve essere trattato come se non esistesse.
  4. 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.