استخدام علامات فهرس كائن ثنائي كبير الحجم لإدارة البيانات والعثور عليها باستخدام Python
توضح هذه المقالة كيفية استخدام علامات فهرس كائن ثنائي كبير الحجم لإدارة البيانات والعثور عليها باستخدام مكتبة عميل Azure Storage ل Python.
للتعرف على تعيين علامات فهرس كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع تعيين علامات فهرس الكائن الثنائي كبير الحجم بشكل غير متزامن.
المتطلبات الأساسية
- تفترض هذه المقالة أن لديك بالفعل مشروعا تم إعداده للعمل مع مكتبة عميل Azure Blob Storage ل Python. للتعرف على إعداد مشروعك، بما في ذلك تثبيت الحزمة وإضافة
import
عبارات وإنشاء كائن عميل معتمد، راجع بدء استخدام Azure Blob Storage وPython. - يجب أن يكون لآلية التخويل أذونات للعمل مع علامات فهرس كائن ثنائي كبير الحجم. لمعرفة المزيد، راجع إرشادات التخويل لعمليات واجهة برمجة تطبيقات REST التالية:
حول علامات فهرس الكائن الثنائي كبير الحجم
تصنف علامات فهرس الكائن الثنائي كبير الحجم البيانات في حساب التخزين الخاص بك باستخدام سمات علامة القيمة الرئيسية. تتم فهرسة هذه العلامات تلقائياً وعرضها كفهرس متعدد الأبعاد قابل للبحث للعثور على البيانات بسهولة. توضح لك هذه المقالة كيفية تعيين البيانات والحصول عليها والعثور عليها باستخدام علامات فهرس البيانات الثنائية الكبيرة.
علامات فهرس 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 بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.
اتبع هذه الخطوات لتعيين علامات فهرس الكائنات الثنائية كبيرة الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة:
إضافة عبارات الاستيراد التالية:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
أضف التعليمات البرمجية لتشغيل البرنامج باستخدام
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())
إضافة تعليمة برمجية لتعيين علامات فهرس الكائن الثنائي كبير الحجم. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام
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 التالية:
- الحصول على علامات الكائنات الثنائية كبيرة الحجم (REST API)
- تعيين علامات الكائنات الثنائية كبيرة الحجم (REST API)
- البحث عن الكائنات الثنائية كبيرة الحجم حسب العلامات (REST API)
نماذج التعليمات البرمجية
- عرض نماذج التعليمات البرمجية المتزامنة أو غير المتزامنة من هذه المقالة (GitHub)