Vault Vizend ichidagi fayl boshqaruvi xizmatidir. Vaultda fayllarning ma'lumot tuzilishi referens fayllar va jismoniy fayllarga bo'lingan.
Referens fayllar jismoniy fayllarni ko'rsatish uchun tuzilgan va hatto bir nechta foydalanuvchilar bir xil haqiqiy faylga ega bo'lsa ham, ishlatiladigan saqlash joyi faqat bitta faylning sig'imi bo'ladi.
Vault funksionalligini saqlash tajribamdan kelib chiqib, u uchta asosiy turga bo'lingan ko'rinadi.
Vault uchta asosiy saqlash turiga bo'lingan.
Saqlash turi
1) Shaxsiy saqlash: Stash
-
Papka tuzilmasiga ega shaxsiy saqlash
2) Umumiy saqlash: Cabinet / Clip
E'lonlar, post ilovalar uchun 'umumiy ilova saqlash' sifatida ishlatiladi.
-
Cabinet: Clips to'plami (idishi) tushunchasi
-
Clip: ClipFiles to'plami (referens fayllar) tushunchasi
-
Dastur doirasi/yagona xizmatga qarab o'zgarishi mumkin (devlime, vizend, BanJangNote va boshqalar) biznes mantiqi.
-
Barcha xizmat saqlashini 1 cabinet deb hisoblashingiz mumkin.
-
Har bir bulletin board uchun kabinetni ajratish ham mumkin.
3) Foto saqlash: MiniAlbum / Minipix
-
Minipix : Foto saqlash “xizmat nomi”
-
Mini Album: Amaldagi domen (boshqaruv birligi)
Umumiy tushunsa: 'Ma'lumotlar fayllari ombori'
Uchta ombor (Stash / Clip / Photo) quyidagilarni umumiy ravishda bo'lishadima'lumotlar fayliSaqlash.
-
Saqlangan fayl
-
Stash: StashFile
-
Clip: ClipFile
-
MiniAlbum: PhotoFile
Ular barchasi haqiqiy fayllardirVaultFayliBu havolani ko'rsatadigan ma'lumot. Shuning uchun, havola faylini ko'p marta ko'paytirsangiz ham,Asosiy saqlash quvvati darhol oshmaydi..
Boshqa xizmatlarga murojaat qilganda duch kelgan muammolar
Men Vaultga mas'ul edi, boshqa xizmatga Vaultni qo'llash vazifasini o'z zimmamga oldim. Ushbu xizmatning nomi 'BanJangNote'. BanJangNote kadrlarni boshqarish dasturi deb aytish mumkin va hozirda 2026 yilning birinchi yarmida rivojlanmoqda. (Xavfsizlik sabablari bilan, batafsil xizmat ta'rifini taqdim etishda cheklovlar uchun uzr so'rayman.)
Sinf rahbariyati daftarida My Documents va e'lonlar uchun hujjatlarni taqdim etish kabilar Vaultdan kerak bo'lgan xususiyatlar edi.
Dastlab, Vaultni bu erda amalga oshirish oson bo'ladi deb o'yladim, ammo qo'llashda ba'zi cheklovlar bor edi.
Birinchidan, mening hujjatlarim Stash orqali qo'llanilishi kerak edi, bu aslida papka tuzilmasidir.
Sinf rahbariyati daftarida saqlanishi kerak bo'lgan ma'lum turdagi hujjatlar mavjud edi, bu esa papka tuzilmasiga to'g'ri kelmadi. Biroq,Vault MSA xizmatlaridan biri bo'lib, umumiy xizmat sifatida ishlashi kerak, shuning uchun boshqa xizmatga qo'llanganligi sababli Vault Stash domenini o'zgartira olmadik.Shuning uchun, Stash tuzilmasini saqlagan holda sinf rahbariyati daftariga qo'llash zarur edi.
1. Vaultning Moslashuvchanlik Paradoksi
Shunday qilib, ko'p o'ylab, men oldindan papkalar yaratiladigan va papkalarni o'zgartirish va o'chirish uchun mantiq foydalanuvchiga taqdim etilmaydigan usulni amalga oshirishga qaror qildim. Ushbu muammoni hal qilgandan so'ng, boshqa bir muammo kutayotgan edi. Vault faqat saqlash va yuklash/yuklab olish funksiyalarini taklif qilgani sababli, har bir yuklangan fayl uchun metadata saqlashni BanJangNote'dagi Vaultning orqa qismi kabi tuzilgan hujjat domenida saqlash yoki saqlamaslik to'g'risida qaror qilishim kerak edi. Vault fayl boshqaruvini samarali amalga oshirishi uchun metadata saqlash tuzilmasiga ega bo'lish zarur edi, va buni hal qilish uchun, CEO har bir clipfile, stashfile va photofile uchun JSON formatida satr ustunini qo'shdi. Masalan, stashfilega ID karta fotosuratini yuklaganimda, fayl bilan birga metadata qo'shdim, masalan fileMetaData = "{ documentType: /"ID_CARD/" }". Bu, BanJangNote orqa qismida hujjat domenini alohida loyihalashtirish va qo'llash zaruratini bartaraf etishga imkon berdi.
2. Orqa qismdan orqa qismga qarshi old qismdan orqa qismga
Boshqa xizmatlarda vault funksiyasidan foydalanishning ikkita yo'li mavjud:
-
Boshqa xizmatning backendidan klient shakldagi vault backendini to'g'ridan-to'g'ri chaqirish
-
Boshqa xizmatning oldidan vault frontining API holatni boshqarish komponentini import qilish va chaqirish
Dastlab men birinchi usulni sinab ko'rdim, lekin loyiha davom etar ekan, bu usul serverga yuk tashlayotganini angladim. Masalan, Banjangnote frontidan yuklamalar joylayotganda, Banjangnote backendiga yuklash so'rovi yuboriladi, fayl backendga yuboriladi va keyin vault backendiga uzatiladi, bu esa Banjangnote va vault serverlarida keraksiz ravishda ko'p xotira iste'mol qiladi. Shuning uchun, Banjangnote frontidan to'g'ridan-to'g'ri vault backendini chaqirish zarur edi va vault frontida har bir API uchun holatni boshqarishni avtomatlashtiradigan maxsus hook komponenti borligidan, o'sha front komponentini import qilish yaxshiroq bo'lishini angladim.
3. Kabinet va Clip doirasi
Kabinet — bu Clips to'plami, Clip esa ClipFiles to'plami. Men Vault mutasaddisi bo'lganimda bu masala menga eng katta qiyinchilik tug'dirdi. Turli xizmatlar bo'yicha Kabinetlar va Clips doirasini qanday belgilashga oid ko'plab so'rovlar oldim.
Sodda javob berish qiyin edi. Har bir axborot taxtasi kabinet sifatida ko'rilgan va postlar clipslarga bo'linishi yoki faqat clips sifatida ko'rilishi mumkin edi. Hali ham aniq javob berish qiyin, lekin tajribamdan, eng moslashuvchan tuzilma ko'plab fayl to'plamlarini clips sifatida belgilash kabi ko'rinardi, bu holda bitta kabinetni baham ko'radigan butun xizmat, postga foto yoki qo'shimchalar qo'shilganda clip yaratishi va ushbu muayyan post uchun hujjatlarni taqdim etganda maxsus clip yaratilishi. Clips bir shaxs uchun butun fayl sifatida qabul qilingan, yuklamalar paytida metadata o'tkazilgan. Biroq, keyinchalik muhokamalarda metadata vaultga yoki menejerning eslatmalari uchun o'tkazish kerakligi hal qilindi va ikkinchisi menejerning eslatmalarida metadata boshqarish zaruriyati tufayli tanlangan ko'rinadi.
Shuning uchun, biz klass yetakchisi jotangi amalga oshirish vaqtida quyidagi oqimda qo'lladik.
tuzilma
-
Klass yetakchisi jotangi bue'lon clipvatacadot hujjat clipni ajratish uchun
-
kabinet bu klass prezidentining butun jotangi1 ta narsani baham ko'rish
-
cabinetKey va cabinetId doimo bir xil bo'lishi kerakdoimo bir xil bo'lishi kerak
jarayon
1) Rahbar (jamoa rahbari) e'lonni yaratadi
-
BanJangNote backend'da RegisterJobPost (misol)
-
E'lon ichida tasvirni ro'yxatdan o'tkazganda, registerClipFiles'ni chaqiring
-
Muvaffaqiyatli bo'lsa, qaytarilgan clipId'ni BanJangNote backend'dagi tegishli JobPost'ga saqlang
2) Jamoa rahbari e'lonni bosadi → yuborish
-
BanJangNote backend'da FindJobPostDetail (misol)
-
Yuborish → Hujjat ro'yxati → ID'ga bosing
-
Fayl yuklash yoki 'Mening hujjatlarimdan yuklash'
-
Fayl yuklayotganda
- registerClipFiles'ni chaqiring
- Job arizasi ichida qaytarilgan clipId va clipFileIds ni saqlang (misol)
- Agar job arizasida mos hujjat turi bo'lmasa registerClipFile ni, agar mavjud bo'lsa addClipFile ni foydalaning
-
My Documents dan yuklaganda
- stash dan registerClipFilesFromstash ni foydalaning
Agar ma'lum bir hujjatning stashFolderId sini tekshirish mumkin bo'lsa, metadata ni saqlamay registerClipFilesFromstash yordamida qayta ishlang va keyin kapitan yozuvlarining backend ga saqlang
3) Jamoa rahbari ariza beruvchi hujjatlarni tekshiradi
-
clipId ni o'z ichiga olgan kapitan yozuvlaridan jobApplication ni so'rang → clipId ni chiqarib oling
-
vault backend dan clipFileIds ni so'rang va mini surat ko'rinishida downloadFile(s) ga foydalaning
Ko'rib chiqish
Kapitan yozuvlariga vault xizmatini qo'llash orqali men ko'p narsalarni o'rgandim va o'rganishim kerak bo'lgan yana ko'p narsalar borligini angladim. Ko'p qirralik uchun kelishuvlar qilish zarur, va men bu jarayonda o'sganimni his qilaman. Kelajakda vault menejeri sifatida, agar men kapitan yozuvlar jamoasini qanday boshqarishni aniq belgilay olsam, bu rivojlanish jarayoniga juda yordam beradi deb o'ylayman. Agar boshqa xizmatlarda shunga o'xshash vazifalar berilsa, vault tuzilishini yanada aniqroq tushuntirishga va o'z tajribam asosida soha tuzilishi dizaynida faol ishlashga qaror qildim, xatolarni qabul qilib, yaxshilanish jarayonida oldinga harakat qilish.
LEE DAVID