Bosh sahifa Wiki Tombstone

Tombstone

Tombstone — ma’lumot saqlash tizimida yozuv o‘chirilganini bildiruvchi maxsus belgi yoki yozuvdir. U qiymatni barcha nusxa va qatlamlardan darhol jismonan olib tashlash o‘rniga, o‘chirish hodisasini oddiy yangilanish singari qayd etadi. Tombstone ayniqsa LSM daraxtlari va taqsimlangan bazalarda muhim, chunki eski qiymat boshqa SSTable, replika yoki vaqtincha uzilgan tugunda saqlanib turishi mumkin.

O‘chirishning yozuv sifatida ifodalanishi

LSM tizimida ma’lumot diskdagi o‘zgarmas fayllarda turadi. Bitta kalitni o‘chirish uchun katta SSTable faylini joyida o‘zgartirish samarasiz va ko‘pincha mumkin emas. Shuning uchun tizim memtablega kalit, versiya va “o‘chirilgan” holatini qo‘shadi, uni WALda mustahkamlaydi va keyin SSTablega chiqaradi.

O‘qish yo‘li bir kalitning bir nechta versiyasini topganda eng yangi ko‘rinadigan yozuvni tanlaydi. Eng yangisi tombstone bo‘lsa, foydalanuvchiga kalit mavjud emas deb javob beradi. Eski qiymat diskda turgan bo‘lsa ham mantiqan yashiriladi. Shu ma’noda tombstone ma’lumot emas, avvalgi ma’lumotni bekor qiluvchi versiyalangan ko‘rsatmadir.

Jismoniy tozalash

Compaction tombstone va undan eski qiymatlarni bir vaqtda ko‘rganda ularni yangi faylga ko‘chirmasligi mumkin. Biroq belgi faqat undan eski qiymat boshqa tekshiriladigan qatlamda qolmaganiga ishonch bo‘lsa olib tashlanadi. Snapshot eski holatni ko‘rishi kerak bo‘lsa, tombstone yoki oldingi versiya snapshot tugaguncha saqlanadi.

Taqsimlangan bazada masala murakkabroq. Replika o‘chirish paytida ishlamagan bo‘lsa, unda eski qiymat qoladi. Tombstone sog‘lom tugunlardan juda erta tozalansa, keyingi repair jarayoni eski qiymatni yana yangi ma’lumotdek tarqatishi mumkin. Bu hodisa ma’lumotning “tirilishi” deb tasvirlanadi. Shu sababli ayrim tizimlar tombstone uchun grace period belgilaydi va o‘chirish belgilarini yo‘qotishdan oldin replikalar tuzatilganini talab qiladi.

Turlari va muddati

Point tombstone bitta kalit yoki katakni o‘chiradi. Range tombstone esa kalitlar oralig‘ini yoki vaqt diapazonini bitta mantiqiy yozuv bilan bekor qiladi. Range belgisi saqlashni tejashi mumkin, ammo interval kesishuvlarini o‘qish va compaction vaqtida to‘g‘ri talqin qilishni talab qiladi.

TTL tugaganda ham tizim yozuvni mantiqan o‘chirilgan deb ko‘rishi mumkin. Ayrim implementatsiyalar muddati tugagan qiymatni tombstonega aylantiradi, boshqalari vaqt metama’lumoti asosida uni ko‘rsatmaydi va keyin compactionda tozalaydi. Har ikki holatda soat, snapshot va replika qoidalari natijaga ta’sir qiladi.

Ishlashga ta’siri

Ko‘p tombstone o‘qish vaqtida qo‘shimcha versiyalarni tekshirishga majbur qiladi. Keng diapazonli so‘rov foydali satr topmasdan minglab o‘chirish belgilaridan o‘tishi mumkin. Bu protsessor sarfi, disk o‘qishi va yuqori percentildagi kechikishni oshiradi. Shu bilan birga, agressiv tozalash izchillik xavfini tug‘diradi; demak, masala faqat joyni bo‘shatish emas.

Kuzatuvda tombstone soni va yoshi, o‘qishda uchragan belgilar, compaction backlogi, repair holati va eng uzoq snapshot umri ko‘riladi. Katta diapazonni muntazam o‘chirish talab qilinsa, vaqt bo‘yicha bo‘limlash va butun partition yoki faylni xavfsiz chiqarib tashlash alohida tombstonelar oqimidan samaraliroq bo‘lishi mumkin.

Xavfsiz boshqaruv

O‘chirish belgilarini kamaytirish uchun saqlash muddatini qisqartirishdan oldin eng uzoq uzilish, repair davri va zaxira nusxadan tiklash tartibi hisobga olinadi. Aks holda eski nusxa tizimga qaytarilganda undagi qiymatlar tombstonesiz qolishi mumkin. Operatorlar avval replikalar bir xil holatga kelganini tasdiqlaydi, keyin tozalash chegarasini o‘zgartiradi. Mantiqiy o‘chirish va maxfiy ma’lumotni fizik yo‘q qilish talablari ham bir xil emas; ikkinchisi shifrlash kalitlarini yo‘qotish yoki maxsus sanitizatsiya siyosatini talab qilishi mumkin.

Bog‘liq tushunchalar

Compaction, Log-Structured Merge-tree, SSTable, MVCC, TTL, Snapshot, Replikatsiya