استخدام علامات فهرس كائن ثنائي كبير الحجم لإدارة البيانات والعثور عليها باستخدام Python

توضح هذه المقالة كيفية استخدام علامات فهرس كائن ثنائي كبير الحجم لإدارة البيانات والعثور عليها باستخدام مكتبة عميل Azure Storage ل Python.

للتعرف على تعيين علامات فهرس كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع تعيين علامات فهرس الكائن الثنائي كبير الحجم بشكل غير متزامن.

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

حول علامات فهرس الكائن الثنائي كبير الحجم

تصنف علامات فهرس الكائن الثنائي كبير الحجم البيانات في حساب التخزين الخاص بك باستخدام سمات علامة القيمة الرئيسية. تتم فهرسة هذه العلامات تلقائياً وعرضها كفهرس متعدد الأبعاد قابل للبحث للعثور على البيانات بسهولة. توضح لك هذه المقالة كيفية تعيين البيانات والحصول عليها والعثور عليها باستخدام علامات فهرس البيانات الثنائية الكبيرة.

علامات فهرس Blob غير مدعومة لحسابات التخزين مع تمكين مساحة الاسم الهرمية. لمعرفة المزيد حول ميزة علامة فهرس الكائنات الثنائية كبيرة الحجم إلى جانب المشكلات والقيود المعروفة، راجع إدارة بيانات Azure Blob والعثور عليها باستخدام علامات فهرس كائن ثنائي كبير الحجم.

تعيين العلامات

يمكنك تعيين علامات الفهرس إذا كانت التعليمات البرمجية الخاصة بك قد أذنت بالوصول إلى بيانات الكائن الثنائي كبير الحجم من خلال إحدى الآليات التالية:

  • أساس الأمان الذي تم تعيينه لدور Azure RBAC مع إجراء Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . مالك بيانات كائن ثنائي كبير الحجم للتخزين هو دور مضمن يتضمن هذا الإجراء.
  • توقيع الوصول المشترك (SAS) مع إذن للوصول إلى علامات الكائن الثنائي كبير الحجم (t إذن)
  • ‏‏مفتاح الحساب

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

يمكنك تعيين العلامات باستخدام الأسلوب التالي:

ستحل العلامات المحددة في هذا الأسلوب محل العلامات الموجودة. إذا كان يجب الاحتفاظ بالقيم القديمة، يجب تنزيلها وتضمينها في استدعاء هذا الأسلوب. يوضح المثال التالي كيفية تعيين العلامات:

def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")

    # Get any existing tags for the blob if they need to be preserved
    tags = blob_client.get_blob_tags()

    # Add or modify tags
    updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
    tags.update(updated_tags)

    blob_client.set_blob_tags(tags)

يمكنك حذف كافة العلامات عن طريق تمرير كائن فارغ dict إلى set_blob_tags الأسلوب :

def clear_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")

    # Pass in empty dict object to clear tags
    tags = dict()
    blob_client.set_blob_tags(tags)

الحصول على العلامات

يمكنك الحصول على علامات الفهرس إذا كانت التعليمات البرمجية الخاصة بك قد أذنت بالوصول إلى بيانات الكائن الثنائي كبير الحجم من خلال إحدى الآليات التالية:

  • أساس الأمان الذي تم تعيينه لدور Azure RBAC مع إجراء Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . مالك بيانات كائن ثنائي كبير الحجم للتخزين هو دور مضمن يتضمن هذا الإجراء.
  • توقيع الوصول المشترك (SAS) مع إذن للوصول إلى علامات الكائن الثنائي كبير الحجم (t إذن)
  • ‏‏مفتاح الحساب

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

يمكنك الحصول على العلامات باستخدام الأسلوب التالي:

يوضح المثال التالي كيفية استرداد وتكرار علامات الكائن الثنائي كبير الحجم:

def get_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")

    tags = blob_client.get_blob_tags()
    print("Blob tags: ")
    for k, v in tags.items():
        print(k, v)

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

يمكنك استخدام علامات الفهرس للبحث عن البيانات وتصفيتها إذا كانت التعليمات البرمجية الخاصة بك قد أذنت بالوصول إلى بيانات الكائن الثنائي كبير الحجم من خلال إحدى الآليات التالية:

  • أساس الأمان الذي تم تعيينه لدور Azure RBAC مع إجراء Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . مالك بيانات كائن ثنائي كبير الحجم للتخزين هو دور مضمن يتضمن هذا الإجراء.
  • توقيع الوصول المشترك (SAS) مع إذن لتصفية الكائنات الثنائية كبيرة الحجم حسب العلامات (f إذن)
  • ‏‏مفتاح الحساب

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

إشعار

لا يمكنك استخدام علامات الفهرس لاسترداد الإصدارات السابقة. لا يتم تمرير علامات الإصدارات السابقة إلى محرك فهرس البيانات الثنائية الكبيرة. لمزيدٍ من المعلومات راجع الشروط والمشكلات الشائعة.

يمكنك البحث عن البيانات باستخدام إحدى الطرق التالية:

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

def find_blobs_by_tags(self, blob_service_client: BlobServiceClient, container_name):
    container_client = blob_service_client.get_container_client(container=container_name)

    query = "\"Content\"='image'"
    blob_list = container_client.find_blobs_by_tags(filter_expression=query)
    
    print("Blobs tagged as images")
    for blob in blob_list:
        print(blob.name)

تعيين علامات فهرس كائن ثنائي كبير الحجم بشكل غير متزامن

تدعم مكتبة عميل Azure Blob Storage ل Python العمل مع علامات فهرس blob بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.

اتبع هذه الخطوات لتعيين علامات فهرس الكائنات الثنائية كبيرة الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة:

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

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. أضف التعليمات البرمجية لتشغيل البرنامج باستخدام asyncio.run. تقوم هذه الدالة بتشغيل coroutine الذي تم تمريره، main() في مثالنا، وتدير asyncio حلقة الحدث. يتم الإعلان عن Coroutines باستخدام بناء الجملة غير المتزامن/انتظار. في هذا المثال، main() يقوم coroutine أولا بإنشاء المستوى BlobServiceClient الأعلى باستخدام async with، ثم يستدعي الأسلوب الذي يعين علامات فهرس الكائن الثنائي كبير الحجم. لاحظ أن عميل المستوى الأعلى فقط يحتاج إلى استخدام async with، حيث يشارك العملاء الآخرون الذين تم إنشاؤهم منه نفس تجمع الاتصال.

    async def main():
        sample = BlobSamples()
    
        # TODO: Replace <storage-account-name> with your actual storage account name
        account_url = "https://<storage-account-name>.blob.core.windows.net"
        credential = DefaultAzureCredential()
    
        async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
            await sample.set_blob_tags(blob_service_client, "sample-container")
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. إضافة تعليمة برمجية لتعيين علامات فهرس الكائن الثنائي كبير الحجم. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام async الكلمة الأساسية ويتم await استخدام الكلمة الأساسية عند استدعاء الأسلوبين get_blob_tags و set_blob_tags .

    async def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
        blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
    
        # Get any existing tags for the blob if they need to be preserved
        tags = await blob_client.get_blob_tags()
    
        # Add or modify tags
        updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
        tags.update(updated_tags)
    
        await blob_client.set_blob_tags(tags)
    

مع هذا الإعداد الأساسي في مكانه، يمكنك تنفيذ أمثلة أخرى في هذه المقالة ك coroutines باستخدام بناء الجملة غير المتزامن/انتظار.

الموارد

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

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

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

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

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

(راجع أيضًا )