تعيين أو تغيير طبقة وصول كائن ثنائي كبير الحجم للكتلة باستخدام JavaScript أو TypeScript
توضح هذه المقالة كيفية تعيين أو تغيير طبقة الوصول للكائنات الثنائية كبيرة الحجم للكتلة باستخدام مكتبة عميل Azure Storage ل JavaScript.
المتطلبات الأساسية
- تفترض الأمثلة في هذه المقالة أن لديك بالفعل مشروعا تم إعداده للعمل مع مكتبة عميل Azure Blob Storage ل JavaScript. للتعرف على إعداد مشروعك، بما في ذلك تثبيت الحزمة، واستيراد الوحدات النمطية، وإنشاء كائن عميل معتمد للعمل مع موارد البيانات، راجع بدء استخدام Azure Blob Storage وJavaScript.
- يجب أن يكون لآلية التخويل أذونات لتعيين مستوى وصول الكائن الثنائي كبير الحجم. لمعرفة المزيد، راجع إرشادات التخويل لعملية REST API التالية:
حول مستويات الوصول إلى الكائن الثنائي كبير الحجم للكتلة
لإدارة تكاليف احتياجات التخزين، قد يكون من المفيد تنظيم بياناتك استنادا إلى مدى تكرار الوصول إليها ومدة الاحتفاظ بها. يوفر تخزين Azure طبقات وصول مختلفة بحيث يمكنك تخزين بيانات كائن ثنائي كبير الحجم بأكثر الطرق فعالية من حيث التكلفة بناءً على كيفية استخدامها.
مستويات الوصول لبيانات الكائن الثنائي كبير الحجم
تتضمن طبقات التخزين إلى Azure Storage ما يلي:
- الطبقة الساخنة - طبقة عبر الإنترنت محسّنة لتخزين البيانات التي يتم الوصول إليها أو تعديلها بشكل متكرر. الطبقة الساخنة لديها أعلى تكاليف التخزين، ولكن أقل تكاليف الوصول.
- الطبقة الباردة - طبقة عبر الإنترنت محسّنة لتخزين البيانات التي نادراً ما يتم الوصول إليها أو تعديلها. يجب تخزين البيانات في الطبقة الباردة لمدة لا تقل عن 30 يوما. يحتوي المستوى البارد على تكاليف تخزين أقل وتكاليف وصول أعلى مقارنة بالطبقة الساخنة.
- الطبقة الباردة - طبقة عبر الإنترنت محسنة لتخزين البيانات التي يتم الوصول إليها أو تعديلها بشكل غير متكرر. يجب تخزين البيانات في الطبقة الباردة لمدة لا تقل عن 90 يوما. تحتوي الطبقة الباردة على تكاليف تخزين أقل وتكاليف وصول أعلى مقارنة بالطبقة الباردة.
- الطبقة الأرشيفية - طبقة بلا اتصال محسّنة لتخزين البيانات التي نادراً ما يتم الوصول إليها، والتي لها متطلبات زمن انتقال مرنة، حسب ترتيب الساعات. يجب تخزين البيانات في مستوى الأرشيف لمدة لا تقل عن 180 يوما.
لمعرفة المزيد حول مستويات الوصول، راجع مستويات الوصول لبيانات الكائن الثنائي كبير الحجم.
أثناء وجود كائن ثنائي كبير الحجم في طبقة تخزين "الأرشيف"، فإنه يُعتبر غير متصل ولا يمكن قراءته أو تعديله. لقراءة البيانات أو تعديلها في كائن ثنائي كبير الحجم مؤرشف، يجب أولا إعادة ترطيب الكائن الثنائي كبير الحجم إلى طبقة عبر الإنترنت. لمعرفة المزيد حول إعادة ترطيب كائن ثنائي كبير الحجم من طبقة الأرشيف إلى طبقة عبر الإنترنت، راجع إعادة ترطيب Blob من طبقة الأرشيف.
القيود
يسمح بتعيين طبقة الوصول فقط على الكائنات الثنائية كبيرة الحجم للكتلة. لمعرفة المزيد حول القيود المفروضة على تعيين طبقة وصول كائن ثنائي كبير الحجم للكتلة، راجع تعيين طبقة Blob (REST API).
إشعار
لتعيين طبقة الوصول إلى Cold
استخدام JavaScript، يجب استخدام الحد الأدنى لإصدار مكتبة العميل من 12.13.0.
تعيين مستوى وصول كائن ثنائي كبير الحجم أثناء التحميل
لتحميل كائن ثنائي كبير الحجم إلى طبقة وصول معينة، استخدم BlockBlobUploadOptions. tier
خيارات الخصائص هي: Hot
أو Cool
Cold
أو أو .Archive
async function uploadWithAccessTier(containerClient, blobName) {
const fileContentsAsString = `Hello from a string`
// upload blob to `Cool` access tier
const uploadOptions = {
// 'Hot', 'Cool', 'Cold', or 'Archive'
tier: 'Cool',
}
// Create blob client from container client
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// Upload string
await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length, uploadOptions);
// Return client to continue with other operations
return blockBlobClient;
}
تغيير طبقة الوصول إلى كائن ثنائي كبير الحجم بعد التحميل
لتغيير طبقة الوصول إلى كائن ثنائي كبير الحجم بعد تحميله إلى التخزين، استخدم setAccessTier. جنبا إلى جنب مع الطبقة، يمكنك تعيين أولوية إعادة ترطيب خاصية BlobSetTierOptions لإحضار الكائن الثنائي كبير الحجم للكتلة خارج حالة مؤرشفة. القيم المُحتملة هي High
أو Standard
.
async function main(blockBlobClient) {
// Get current access tier
const { accessTier } = await blockBlobClient.getProperties();
console.log(`Current access tier: ${accessTier}`);
// 'Hot', 'Cool', or 'Archive'
const newAccessTier = 'Cool';
// Rehydrate priority: 'High' or 'Standard'
const rehydratePriority = 'High';
const result = await blockBlobClient.setAccessTier(
newAccessTier,
{ rehydratePriority }
);
if (result?.errorCode == undefined) {
console.log(`Change to access was successful`);
} else {
console.log(result);
}
}
نسخ كائن ثنائي كبير الحجم إلى طبقة وصول مختلفة
استخدم BlobClient.أسلوب beginCopyFromURL لنسخ كائن ثنائي كبير الحجم. لتغيير طبقة الوصول أثناء عملية النسخ، استخدم الخاصية BlobBeginCopyFromURLOptions tier
وحدد طبقة وصول مختلفة عن الكائن الثنائي كبير الحجم المصدر.
async function copyBlobWithDifferentAccessTier(containerClient) {
// create blob clients
const sourceBlobClient = await containerClient.getBlobClient(originalBlob);
const destinationBlobClient = await containerClient.getBlobClient(copyBlob);
// start copy, access tiers include `Hot`, `Cool`, `Archive`
const copyPoller = await destinationBlobClient.beginCopyFromURL(sourceBlobClient.url, { tier: 'Hot' });
console.log('start copy from original to copy');
// wait until done
await copyPoller.pollUntilDone();
console.log('copy finished')
}
استخدام دفعة لتغيير طبقة الوصول للعديد من الكائنات الثنائية كبيرة الحجم
تمثل الدفعة مجموعة مجمعة من العمليات على الكائنات الثنائية كبيرة الحجم، مثل حذف أو تعيين طبقة الوصول. تحتاج إلى تمرير بيانات الاعتماد الصحيحة لتنفيذ كل عملية بنجاح. في هذا المثال، يتم استخدام نفس بيانات الاعتماد لمجموعة من الكائنات الثنائية كبيرة الحجم في نفس الحاوية.
إنشاء BlobBatchClient. استخدم العميل لإنشاء دفعة باستخدام أسلوب createBatch(). عندما تكون الدفعة جاهزة، أرسل الدفعة للمعالجة. استخدم البنية التي تم إرجاعها للتحقق من نجاح عملية كل كائن ثنائي كبير الحجم.
async function main(containerClient) {
// Prep array
const blockBlobCount = 3;
const blockBlobClients = new Array(blockBlobCount);
// Create container and blobs in `Hot` tier
await prepContainer(containerClient, blockBlobCount, blockBlobClients);
// Blob batch client and batch
const containerScopedBatchClient = containerClient.getBlobBatchClient();
const blobBatch = containerScopedBatchClient.createBatch();
// Assemble batch to set tier to `Cool` tier
for (let i = 0; i < blockBlobCount; i++) {
await blobBatch.setBlobAccessTier(blockBlobClients[i].url, sharedKeyCredential, "Cool", {});
}
// Submit batch request and verify response
const resp = await containerScopedBatchClient.submitBatch(blobBatch, {});
console.log(`Requested ${blockBlobCount}, batched ${resp.subResponses.length}, success ${resp.subResponsesSucceededCount}, failure ${resp.subResponsesFailedCount}`);
// Examine each batch item
for (let i = 0; i < blockBlobCount; i++) {
// Check blob tier set properly
const resp2 = await blockBlobClients[i].getProperties();
console.log(`[${i}] access tier ${resp2.accessTier}, status ${resp.subResponses[i].status}, message ${resp.subResponses[i].statusMessage}`)
}
}
نماذج التعليمات البرمجية
- تعيين طبقة الوصول إلى الكائن الثنائي كبير الحجم أثناء التحميل ل JavaScript أو TypeScript
- تغيير طبقة الوصول إلى الكائن الثنائي كبير الحجم بعد التحميل ل JavaScript أو TypeScript
- نسخ blob إلى طبقة وصول مختلفة ل JavaScript أو TypeScript
- استخدام دفعة لتغيير طبقة الوصول للعديد من الكائنات الثنائية كبيرة الحجم ل JavaScript أو TypeScript