ZVec කියන්නේ පරිසරයේම ක්රියා කරන ලද වෙක්ටර ඩේටාබේස් එකක්. සර්වරයක් නොමැතිව, ලොකල් ෆයිල් සিস্টමයේ Write‑Ahead Logging (WAL) භාවිතා කරයි. මෙම ලාභය නිසා වැඩිහිටියන්ට එය කේතයේ ඇතුළතම embed කරගන්න පුළුවන්, නමුත් නවතම බග් එකක් හේතුවෙන් ක්රැශ් පසු Optimize() ක්රියාවලියෙන් දත්ත හුදකලා වුණා.
කඩිනම් පරිසරයක් (os._exit(1) වැනි) තුළ ZVec එකේ insert කරපු ලිපි 150 ක් තිබුණා. ක්රැශ් වූ පසු, zvec.open() මගින් WAL පූනරාවරණය කර ලිපි ගණන නැවත 150 ලෙස පෙන්වුණා. එහිදී index_completeness 0.0 ලෙස තිබුණා, ඒත් Optimize() කැඳවීමෙන් ඒ සංඛ්යාව 1.0 වෙලා, ලොකු සාර්ථකත්වයක් ලෙස පෙනුනත්, පසුපසින් වෙනත් පරිසරයක් තුළ ඒ එකම කොලේෂන් නැවත විවෘත කළ විට ලිපි ගණන 0 බවට පත් වුණා. එනම්, Optimize() ක්රියාවලිය දත්ත අතුරුදහන් කරලා, ඒ ගැන කිසිදු දෝෂයක් හෝ අනතුරු ඇඟවීමක් නොදෙනවා.
මෙම ගැටළුවේ ප්රධාන හේතුව WAL හෑන්ඩල් එකේ ජීවිත කාලය පිළිබඳ වැරදි ක්රමයකි. රීකවරි කිරීමේදී WAL දත්ත තාවකාලික හෑන්ඩලයකට පූනරාවරණය කර, පසුකාලීනව ඒක segment එකට නැවත සම්බන්ධ නොකරයි. Optimize() එම segment එකේ WAL රෙකෝඩ් නැතැයි සලකා, අලුතින් ලියන ලද දත්ත සුරක්ෂිත නොකරයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික ආරම්භකයින්, විශ්වවිද්යාල සිසුන්, සහ ව්යාපාරිකයින්ට මෙම ගැටළුවේ පහල වන්නේ:
- දත්ත ආරක්ෂාව: ව්යාපාරික යෙදුම් වලට නිරන්තරයෙන් ක්රැශ්‑ප්රතිරූපණයක් අවශ්යයි. මෙම බග් එක එවැනි ආශ්රිතතාව අඩු කරයි.
- ඉගෙනුම් පරිසරය: AI, රිට්රිවල්, embeddings වැනි නව තාක්ෂණයන්ට ZVec වැනි embedded vector store භාවිතා වේ. දත්ත අහිමිකම නිසා අධ්යයන කාර්යයන් අසාර්ථක වේ.
- ව්යාපාරික විශ්වාසය: දෝෂයක් නිසා පාරිභෝගිකයන්ගේ විශ්වාසය අඩුවේ. එමනිසා තාක්ෂණික සැපයුම්කරුවන්ට durability සහ event‑sourcing (Temporal වැනි) මත පදනම් වූ සැලසුම් අවශ්ය වේ.
මෙම ගැටළුව විසඳීමට Alibaba ZVec රෙපොසිටරියේ #594 → #600 පාරිභෝගිකයෙකු විසින් 54 පැය 55 මිනිත්තු තුළ පට්ටියක් යොදාගෙන හඳුනාගෙන, අදාළ කේත පාරාමිතිය සකස් කර ඇත. නමුත් පසුකාලීනව durability‑related bug‑වලට පූර්ව සැලසුම් ගත නොකළහොත්, මෙවැනි ගැටළු නැවත සිදු විය හැක.
අවසානයේ, පද්ධතියේ state ownership එක event‑sourcing layer එකකට (Temporal වැනි) මාරු කිරීම, “last flush boundary” නැති ආකාරයෙන් දත්ත අහිමිකමෙන් ආරක්ෂා කරයි. එම නිසා ශ්රී ලංකාවේ සංවර්ධකයින්ට දෘඩාංග‑අදාරිත, crash‑durable storage solutions ගැන සලකා බලන්න අවශ්ය වේ.