تعيين أو تغيير طبقة وصول كائن ثنائي كبير الحجم للكتلة باستخدام Java

توضح هذه المقالة كيفية تعيين أو تغيير طبقة الوصول لكتلة blob باستخدام مكتبة عميل Azure Storage ل Java.

المتطلبات الأساسية

إعداد بيئتك

إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل Java. لمزيد من المعلومات، راجع بدء استخدام Azure Blob Storage وJava.

لاستخدام أمثلة التعليمات البرمجية في هذه المقالة، اتبع هذه الخطوات لإعداد مشروعك.

إشعار

تستخدم هذه المقالة أداة بناء Maven لإنشاء التعليمات البرمجية المثال وتشغيلها. تعمل أدوات البناء الأخرى، مثل Gradle، أيضا مع Azure SDK ل Java.

تثبيت الحزم

افتح الملف pom.xml في محرر النصوص الخاص بك. قم بتثبيت الحزم عن طريق تضمين ملف BOM، أو تضمين تبعية مباشرة.

إضافة عبارات الاستيراد

أضف عبارات import التالية:

import com.azure.core.util.polling.LongRunningOperationStatus;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.options.BlobBeginCopyOptions;

التصريح

يجب أن يكون لآلية التخويل الأذونات اللازمة لتعيين طبقة الوصول إلى كائن ثنائي كبير الحجم. للحصول على تخويل باستخدام معرف Microsoft Entra (مستحسن)، تحتاج إلى دور Azure RBAC المضمن في Storage Blob Data Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل ل Set Blob Tier.

إنشاء كائن عميل

لتوصيل تطبيق ب Blob Storage، قم بإنشاء مثيل BlobServiceClient.

يستخدم المثال التالي BlobServiceClientBuilder لإنشاء كائن BlobServiceClient باستخدام DefaultAzureCredential، ويوضح كيفية إنشاء عملاء الحاوية والكائنات الثنائية كبيرة الحجم، إذا لزم الأمر:

// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("<container-name>");

// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
        .getBlobClient("<blob-name>");

لمعرفة المزيد حول إنشاء كائنات العميل وإدارتها، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.

حول مستويات الوصول إلى الكائن الثنائي كبير الحجم للكتلة

لإدارة تكاليف احتياجات التخزين، قد يكون من المفيد تنظيم بياناتك استنادا إلى مدى تكرار الوصول إليها ومدة الاحتفاظ بها. يوفر تخزين Azure طبقات وصول مختلفة بحيث يمكنك تخزين بيانات كائن ثنائي كبير الحجم بأكثر الطرق فعالية من حيث التكلفة بناءً على كيفية استخدامها.

مستويات الوصول لبيانات الكائن الثنائي كبير الحجم

تتضمن طبقات التخزين إلى Azure Storage ما يلي:

  • الطبقة الساخنة - طبقة عبر الإنترنت محسّنة لتخزين البيانات التي يتم الوصول إليها أو تعديلها بشكل متكرر. الطبقة الساخنة لديها أعلى تكاليف التخزين، ولكن أقل تكاليف الوصول.
  • الطبقة الباردة - طبقة عبر الإنترنت محسّنة لتخزين البيانات التي نادراً ما يتم الوصول إليها أو تعديلها. يجب تخزين البيانات في الطبقة الباردة لمدة لا تقل عن 30 يوما. يحتوي المستوى البارد على تكاليف تخزين أقل وتكاليف وصول أعلى مقارنة بالطبقة الساخنة.
  • الطبقة الباردة - طبقة عبر الإنترنت محسنة لتخزين البيانات التي يتم الوصول إليها أو تعديلها بشكل غير متكرر. يجب تخزين البيانات في الطبقة الباردة لمدة لا تقل عن 90 يوما. تحتوي الطبقة الباردة على تكاليف تخزين أقل وتكاليف وصول أعلى مقارنة بالطبقة الباردة.
  • الطبقة الأرشيفية - طبقة بلا اتصال محسّنة لتخزين البيانات التي نادراً ما يتم الوصول إليها، والتي لها متطلبات زمن انتقال مرنة، حسب ترتيب الساعات. يجب تخزين البيانات في مستوى الأرشيف لمدة لا تقل عن 180 يوما.

لمعرفة المزيد حول مستويات الوصول، راجع مستويات الوصول لبيانات الكائن الثنائي كبير الحجم.

أثناء وجود كائن ثنائي كبير الحجم في طبقة تخزين "الأرشيف"، فإنه يُعتبر غير متصل ولا يمكن قراءته أو تعديله. لقراءة البيانات أو تعديلها في كائن ثنائي كبير الحجم مؤرشف، يجب أولا إعادة ترطيب الكائن الثنائي كبير الحجم إلى طبقة عبر الإنترنت. لمعرفة المزيد حول إعادة ترطيب كائن ثنائي كبير الحجم من طبقة الأرشيف إلى طبقة عبر الإنترنت، راجع إعادة ترطيب Blob من طبقة الأرشيف.

القيود

يسمح بتعيين طبقة الوصول فقط على الكائنات الثنائية كبيرة الحجم للكتلة. لمعرفة المزيد حول القيود المفروضة على تعيين طبقة وصول كائن ثنائي كبير الحجم للكتلة، راجع تعيين طبقة Blob (REST API).

إشعار

لتعيين طبقة الوصول إلى Cold استخدام Java، يجب استخدام الحد الأدنى لإصدار مكتبة العميل من 12.21.0.

تعيين مستوى وصول كائن ثنائي كبير الحجم أثناء التحميل

يمكنك تعيين طبقة وصول كائن ثنائي كبير الحجم عند التحميل باستخدام فئة BlobUploadFromFileOptions . يوضح مثال التعليمات البرمجية التالي كيفية تعيين طبقة الوصول عند تحميل كائن ثنائي كبير الحجم:

public void uploadBlobWithAccessTier(BlobContainerClient blobContainerClient, Path filePath) {
    String fileName = filePath.getFileName().toString();
    BlobClient blobClient = blobContainerClient.getBlobClient(fileName);

    BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString())
            .setTier(AccessTier.COOL);

    try {
        Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
    } catch (UncheckedIOException ex) {
        System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
    }
}

لمعرفة المزيد حول تحميل كائن ثنائي كبير الحجم باستخدام Java، راجع تحميل كائن ثنائي كبير الحجم باستخدام Java.

تغيير طبقة الوصول لكتلة كائن ثنائي كبير الحجم موجودة

يمكنك تغيير طبقة الوصول لكتلة كائن ثنائي كبير الحجم موجودة باستخدام إحدى الطرق التالية:

يوضح مثال التعليمات البرمجية التالي كيفية تغيير طبقة الوصول إلى Cool لكائن ثنائي كبير الحجم موجود:

public void changeBlobAccessTier(BlobClient blobClient) {
    // Change the blob's access tier to cool
    blobClient.setAccessTier(AccessTier.COOL);
}

إذا كنت تقوم بإعادة ترطيب كائن ثنائي كبير الحجم مؤرشف، فاستخدم أسلوب setAccessTierWithResponse . تعيين المعلمة tier إلى قيمة AccessTier صالحة ل HOTأو COOLCOLDأو أو ARCHIVE. يمكنك اختياريا تعيين المعلمة priority إلى قيمة HIGH RehydratePriority صالحة أو STANDARD.

يوضح مثال التعليمات البرمجية التالي كيفية إعادة ترطيب كائن ثنائي كبير الحجم مؤرشف عن طريق تغيير طبقة الوصول إلى Hot:

public void rehydrateBlobSetAccessTier(BlobClient blobClient) {
    // Rehydrate the blob to hot tier using a standard rehydrate priority
    blobClient.setAccessTierWithResponse(
        AccessTier.HOT,
        RehydratePriority.STANDARD,
        null, 
        null, 
        null);
}

يمكن أن يقبل أسلوب setAccessTierWithResponse أيضا معلمة BlobSetAccessTierOptions لتحديد خيارات التكوين.

نسخ كائن ثنائي كبير الحجم إلى طبقة وصول مختلفة

يمكنك تغيير طبقة الوصول لكتلة كائن ثنائي كبير الحجم موجودة عن طريق تحديد طبقة وصول كجزء من عملية النسخ. لتغيير طبقة الوصول أثناء عملية النسخ، استخدم فئة BlobBeginCopyOptions .

يمكنك استخدام أسلوب setTier لتحديد قيمة AccessTier ك HOTأو COOLCOLDأو أو ARCHIVE. إذا كنت تقوم بإعادة ترطيب كائن ثنائي كبير الحجم من طبقة الأرشيف باستخدام عملية نسخ، فاستخدم أسلوب setRehydratePriority لتحديد قيمة RehydratePriority ك HIGH أو STANDARD.

يوضح مثال التعليمات البرمجية التالي كيفية إعادة ترطيب كائن ثنائي كبير الحجم مؤرشف إلى الطبقة الساخنة باستخدام عملية نسخ:

public void rehydrateBlobUsingCopy(
    BlobClient sourceArchiveBlob,
    BlobClient destinationRehydratedBlob) {
    // Note: the destination blob must have a different name than the archived source blob

    // Start the copy operation and wait for it to complete
    final SyncPoller<BlobCopyInfo, Void> poller = destinationRehydratedBlob.beginCopy(
            new BlobBeginCopyOptions(sourceArchiveBlob.getBlobUrl())
                    .setTier(AccessTier.HOT)
                    .setRehydratePriority(RehydratePriority.STANDARD));
                    
    PollResponse<BlobCopyInfo> response = poller
            .waitUntil(LongRunningOperationStatus.SUCCESSFULLY_COMPLETED);
}

لمعرفة المزيد حول نسخ كائن ثنائي كبير الحجم باستخدام Java، راجع نسخ كائن ثنائي كبير الحجم باستخدام Java.

الموارد

لمعرفة المزيد حول تعيين مستويات الوصول باستخدام مكتبة عميل Azure Blob Storage ل Java، راجع الموارد التالية.

نماذج التعليمات البرمجية

عمليات واجهة برمجة تطبيقات REST

يحتوي Azure SDK ل Java على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج Java المألوفة. تستخدم أساليب مكتبة العميل لتعيين مستويات الوصول عملية REST API التالية:

موارد مكتبة العميل

(راجع أيضًا )

  • هذه المقالة هي جزء من دليل مطور Blob Storage ل Java. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Java الخاص بك.