Append-Only Log — yangi yozuvlar faqat oxiriga qo‘shilib, avvalgi yozuvlar joyida o‘zgartirilmaydigan storage tuzilmasi. U taqsimlangan messaging, event-driven arxitektura yoki ma’lumotlar bazasi ichki ishlashida aniq vazifani bajaradi. Kafolatlar implementatsiya va konfiguratsiyaga bog‘liq; atamaning o‘zi durability, ordering yoki consistency darajasini avtomatik belgilamaydi.
Arxitekturadagi o‘rni
Writer recordni current tailga qo‘shadi. Sequential write disk va replication uchun samarali; indeks yoki projection key bo‘yicha joriy holatni hosil qiladi.
Append-Only Log alohida modul sifatida ko‘rinsa ham, uning natijasi qo‘shni qatlamlar bilan belgilanadi. Input qabul qilinishi, state persistent bo‘lishi va consumer yoki query natijasida ko‘rinishi turli vaqt nuqtalari bo‘lishi mumkin.
Ma’lumot oqimi
Mutable jadval rowni joyida yangilaydi, append-only log esa update va delete’ni yangi record sifatida ifodalaydi. Physical cleanup retention yoki compaction orqali keyin bajariladi.
Append-Only Log masshtabida o‘rtacha throughput yetarli ko‘rsatkich emas. Burst, hot key, katta transaction, sekin consumer va recovery replay tail latencyni o‘zgartiradi. Capacity sinovi steady-state bilan birga node yo‘qolgan paytdagi qo‘shimcha yukni ham qamrab oladi. Append-Only Log uchun mas’ul komponent health signalidan tashqari, o‘zi himoya qiladigan invariant buzilmaganini ham davriy ravishda tekshiradi.
Append-Only Log uchun lifecycle yaratilish, faol ishlash, migratsiya va tozalash bosqichlariga ajratiladi. Har bosqichda qaysi state authoritative ekani va eski nusxa qachon xavfsiz o‘chirilishi ko‘rsatiladi. Cutover faqat wall-clock vaqtiga emas, offset, version yoki transaction boundary’ga bog‘lansa delayed message sabab eski holatning qayta faollashish xavfi kamayadi.
Muhim farqlar
Partial write checksum va framing bilan aniqlanadi. Concurrent writer orderi, fsync chegarasi, segment rotation va corrupted tail recovery aniq bo‘lishi kerak.
Append-Only Log configurationi deklarativ va versiyalangan saqlanadi. Vaqtinchalik override egasi, sababi va expiry muddatiga ega bo‘ladi. Yashirin default keyingi incidentda bir xil inputning boshqa environmentda nega boshqacha ishlaganini topishni qiyinlashtiradi.
Correctness, latency, throughput va storage xarajati birga tanlanadi. Tezroq acknowledgement yoki ko‘proq parallelism kiritilganda buffer, ordering va recovery talablari o‘zgaradi. Shu sabab Append-Only Log bo‘yicha qaror faqat nominal benchmarkga tayanmaydi.
Ekspluatatsiya
Append-Only Log recovery runbooki amalda mashq qilinadi. Backup, log yoki checkpoint mavjudligi yetarli emas; serializer, catalog, external dependency va cutover boundary bilan birga tiklangan natijaning invariantlari tekshiriladi.
Append-Only Log xatosi aniqlanganda avval zarar ko‘lami chegaralanadi. Muammoli partition, query yoki subscription ajratilib, yangi traffic nazoratli sekinlatiladi; forensic tahlil uchun log va state evidence saqlab qolinadi.
Append-Only Log algoritmi deterministic deb qaralsa, bir xil boshlang‘ich state va input tartibi qayta bajarishda bir xil natija berishi tekshiriladi. Random seed, clock, locale yoki parallel scheduling yashirin input bo‘lsa, replay va diagnostika uchun ular ham qayd etiladi.
Append-Only Logning API yoki protocol contracti consumer kutadigan minimum kafolatni ifodalaydi. Implementation kuchliroq tartib yoki durability bergan bo‘lsa ham client hujjatsiz xulqqa tayanmaydi, chunki upgrade uni o‘zgartirishi mumkin. Contract test producer, broker, database va consumer versiyalari kombinatsiyasida avtomatik bajariladi.
Append-Only Log o‘zgartirilgach normal oqim bilan birga malformed input, timeout, duplicate, restart va partial failure tekshiriladi. Qabul qilingan cheklovlar hujjatlashtiriladi; boshqa workload yoki platformaga ko‘r-ko‘rona ko‘chirilmaydi.
Bog‘liq tushunchalar
write-ahead log, immutable data, log segment, log compaction, sequential write, event log