Récemment, j'ai regardé Cassandra du point de vue de notre nouveau projet et j'ai beaucoup appris de cette communauté et de son wiki. Mais je n'ai rien trouvé sur la façon dont les mises à jour sont gérées dans Cassandra en termes de gestion de l'espace disque physique bien qu'elles semblent être très similaires à la gestion des suppressions d'enregistrements en utilisant le compactage. Supposons qu'il y ait 100 enregistrements avec 5 valeurs de colonne chacune. Lorsque toutes les modifications seront vidées, tous les enregistrements seront écrits de manière adjacente et lorsque l'opération de suppression est terminée, elle est marquée dans la table Mémoire et l'enregistrement physique est supprimé après un certain temps. mettre en configuration ou quand il est plein. Et le processus de compactage revendique l'espace. Maintenant, la question est que d'un côté étant schema moins il n'y a pas de nombre fixe de colonnes au début mais de l'autre côté quand le processus de compactage a lieu alors ... met-il des disques adjacents sur disque comme RDBMS traditionnel pour accélérer le processus de lecture comme pour SGBDR est facile car ils doivent allouer une quantité d'espace fixe selon le type de données de déclaration de colonnes.gestion de l'espace disque physique de cassandra
Mais comment Cassandra effectue-t-il exactement le placement des enregistrements sur le disque dans le processus de compactage (à la fois pour la mise à jour/suppression) pour accélérer les lectures? Une autre question liée au compactage est que lorsqu'il n'y a pas de requêtes de suppression mais qu'il y a une requête de mise à jour qui met à jour un enregistrement existant avec des données de longueur variable ou insère une nouvelle colonne alors comment le compactage rend son espace disponible sur disque lignes de données déjà existantes?
Ensuite, comment se déroule la lecture lorsqu'une partie de la ligne éditée est dans deux SSTables différents? Est-ce que ces deux SStables sont fusionnés ou l'enregistrement de ligne complet est écrit en SSTable simple tout en supprimant la partie d'autre SSTable? –
Les SSTables sont immuables une fois écrits. Lorsqu'une ligne existe sur plusieurs SSTables, ils sont fusionnés en lecture. Pensez à la compression (comme expliqué ci-dessus) en tant que défragmentation - en gardant le nombre de SSTables pour une famille de colonnes donnée et en fusionnant des colonnes fragmentées d'une ligne donnée en un seul SSTable. – zznate