Бакетті нұсқалау
Нұсқалау (нұсқаларды басқару) — бакетте объектінің өзгеру тарихын оның нұсқаларының жиынтығы түрінде сақтауға мүмкіндік беретін механизм. Нұсқалау бакет деңгейінде қосылады және оның ішіндегі барлық объектілерге қолданылады.
Нұсқалау қосылған бакеттерде VK Object Storage сервисі келесідей жұмыс істейді:
- Егер сіз объектіні қайта жазуға әрекет етсеңіз, бакетте объектінің жаңа нұсқасы пайда болады, бірақ алдыңғысы жойылмайды.
- Егер VK Object Storage бір объектіні жазуға бір уақытта бірнеше сұрау алса, ол алынған объект нұсқаларының барлығын бакетте сақтайды.
- Егер сіз бакеттен объектіні жоюға әрекет етсеңіз, VK Object Storage бакетке жою маркерін қосып, оны объектінің ағымдағы нұсқасы ретінде тағайындайды. Алдыңғы нұсқалар бакетте қалады, бірақ объектіге
GETсұрауы бойынша қолжетімсіз болады.
Осылайша, бакеттегі объектілердің ешбір өзгерісі жоғалмайды. Бұл пайдаланушылардың байқаусыз әрекеттері немесе қолданбалардың жұмысындағы қателер салдарынан жойылған немесе бүлінген деректерді қалпына келтіруді жеңілдетеді.
-
Күйі жоқ (unversioned).
Нұсқалау күйі нұсқалауды қоспай жасалған жаңа бакеттерде, сондай-ақ VK Object Storage ішінде нұсқалау механизмі іске асырылғанға дейін жасалған бакеттерде болмайды. Бұл бакеттердегі барлық объектілер үшін нұсқа идентификаторы
nullмәніне тең. -
Қосылған (versioning-enabled).
Нұсқалау бакет жасалған кезде немесе жасалғаннан кейін жеке кабинетте не AWS CLI арқылы қосылады. Нұсқалау қосылғанда бакеттегі бар объектілер өзгермейді және
nullнұсқа идентификаторын сақтайды. Қосылғаннан кейін бакетке жүктелетін әр жаңа объект немесе бар объектінің әр жаңа нұсқасы бірегей нұсқа идентификаторын алады.Нұсқалауды қосқаннан кейін оны өшіру мүмкін емес, тек тоқтата тұруға болады.
-
Тоқтатылған (versioning-suspended).
Нұсқалауды тоқтата тұру объектілердің жаңа нұсқаларын жасауды тоқтатуға мүмкіндік береді. Нұсқалау тоқтатылған кезде:
- Бакеттегі бар объект нұсқалары өзгермейді.
- Бакетке жаңа объектілер немесе бар объектілердің жаңа нұсқалары жүктелгенде, олар
nullнұсқа идентификаторын алады. - Егер бакетте
nullидентификаторы бар объект нұсқасы бұрыннан бар болса және сіз сол кілтпен объектіні бакетке қоссаңыз, ол барnullнұсқаны қайта жазады.
Нұсқа идентификаторы (version ID) — объект бакетке жүктелген кезде VK Object Storage сервисі автоматты түрде генерациялайтын таңбалар жолы.
Егер бакет үшін нұсқалау қосылған болса, объектілер жүктелгенде бірегей нұсқа идентификаторлары тағайындалады. Егер нұсқалау қосылмаған немесе тоқтатылған болса, қосылатын объектілер null нұсқа идентификаторын алады.
Нұсқа идентификаторын URL ішінде қолдануға болады, өйткені ол тек резервтелмеген таңбаларды қамтиды: латын әріптері, цифрлар және -, ., _, ~ таңбалары.
Жою маркері (delete marker) — сіз бакеттен объектіні жойған кезде VK Object Storage сервисі нұсқалауы бар бакетке қосатын объектінің арнайы нұсқасы. Кез келген басқа объект сияқты, жою маркерінің де кілтi және нұсқа идентификаторы бар, бірақ мазмұны жоқ. Сіз жоятын объектінің кілті жою маркерінің кілтіне айналады, ал жою маркерінің өзі объектінің ағымдағы нұсқасы болады. Бұл ретте объектінің қалған нұсқалары өзгермейді.
Нақтысында объект бакетте қалып қойса да, VK Object Storage оны жойылғандай ұстайды. Мысалы, объектіге GET сұрауы кезінде сервис 404 (Not Found) қатесін қайтарады.
Жою маркері нұсқалау қосылған бакеттен жойылған объект кейін қайта жазылса да жоғалып кетпейді, сондықтан объектілер өз нұсқалар тарихында бірнеше жою маркеріне ие болуы мүмкін.
Жою маркерін объект нұсқалары тарихынан DELETE сұрауы арқылы жоюға болады, онда осы жою маркерінің нұсқа идентификаторы көрсетіледі.
Бакет нұсқалауының күйіне байланысты объектіні бакетке қосудың нәтижесі:
- Нұсқалау қосылған: алдыңғысынан нұсқа идентификаторымен және жасалу уақытының кешірек болуымен ерекшеленетін объектінің жаңа нұсқасы жасалады.
- Нұсқалау тоқтатылған:
nullнұсқа идентификаторы бар объектінің жаңа нұсқасы жасалады. Егерnullидентификаторы бар нұсқа бұрыннан болса, ол қайта жазылады. - Нұсқалау жоқ: жаңа объектіге
nullнұсқа идентификаторы тағайындалады. Егер объект бакетте бұрыннан бар болса, ол қайта жазылады.
Жою нәтижесі бакет нұсқалауының күйіне және жою сұрауында нұсқа идентификаторының көрсетілуіне байланысты.
Нұсқалау қосылған:
- Нұсқа идентификаторы көрсетілмеген: жою маркері жасалады, ол объектінің ағымдағы нұсқасы болады. Бар нұсқалар өзгермейді.
- Нұсқа идентификаторы көрсетілген: көрсетілген идентификаторы бар объект нұсқасы немесе жою маркері жойылады. Егер бұл жалғыз нұсқа болса, оны жою объектіні бакеттен қайтарымсыз жоюға әкеледі.
Нұсқалау тоқтатылған:
- Нұсқа идентификаторы көрсетілмеген: егер бар болса,
nullнұсқа идентификаторы бар объект нұсқасы жойылады және жою маркері жасалады, ол объектінің ағымдағы нұсқасы болады. - Нұсқа идентификаторы көрсетілген: көрсетілген идентификаторы бар объект нұсқасы немесе жою маркері жойылады. Егер бұл жалғыз нұсқа болса, оны жою объектіні бакеттен қайтарымсыз жоюға әкеледі.
Нұсқалауы жоқ бакет:
- Нұсқа идентификаторы көрсетілмеген: объект бакеттен қайтарымсыз жойылады.
- Нұсқа идентификаторы көрсетілген: мұндай объект нұсқасы жоқ болғандықтан,
204жауабы қайтарылады.