يوضح هذا الدليل الشامل كيفية التفاعل بفعالية مع Amazon DynamoDB باستخدام مكتبة Boto3 في Python. سنغطي العمليات الأساسية، من إنشاء الجداول وحذفها إلى تقنيات الاستعلام المتقدمة واسترجاع البيانات بكفاءة.
جدول المحتويات
- مقدمة إلى DynamoDB
- مقدمة إلى Boto3
- إنشاء جداول DynamoDB باستخدام Boto3
- حذف جداول DynamoDB باستخدام Boto3
- قائمة جداول DynamoDB باستخدام Boto3
- استعلام البيانات في DynamoDB
- مسح البيانات في DynamoDB
- استرجاع عناصر محددة
- تنفيذ الترقيم
- استخدام مؤشرات ثانوية عالمية
- التعامل بكفاءة مع مجموعات البيانات الكبيرة
- خاتمة
مقدمة إلى DynamoDB
Amazon DynamoDB هي خدمة قاعدة بيانات NoSQL مُدارة بالكامل وخالية من الخوادم. يوفر هيكل قاعدة البيانات القائم على القيمة الرئيسية والمستندات أداءً استثنائياً وقابلية للتطوير وتوافرًا عاليًا. على عكس قواعد البيانات العلائقية، يستخدم DynamoDB جداول من العناصر، يتم تحديد كل منها بشكل فريد بواسطة مفتاح أساسي. يجعل هذا التصميم مثاليًا للتطبيقات التي تتطلب وقت انتظار منخفضًا وإنتاجية عالية.
مقدمة إلى Boto3
يوفر Boto3، وهو مجموعة أدوات تطوير البرامج AWS لـ Python، واجهة سهلة الاستخدام لإدارة خدمات AWS، بما في ذلك DynamoDB. يُبسط المهام مثل إنشاء الجداول، ومعالجة البيانات، والاستعلام. قبل المتابعة، تأكد من تثبيت Boto3 (`pip install boto3`) وأن بيانات اعتماد AWS الخاصة بك مُهيأة بشكل صحيح.
إنشاء جداول DynamoDB باستخدام Boto3
يتطلب إنشاء جدول DynamoDB تحديد اسمه، ومفتاحه الأساسي، وسماته الأخرى. توضح مقتطفة التعليمات البرمجية التالية إنشاء جدول باستخدام Boto3:
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.create_table(
TableName='MyTable',
KeySchema=[
{'AttributeName': 'id', 'KeyType': 'HASH'}, # مفتاح التقسيم
],
AttributeDefinitions=[
{'AttributeName': 'id', 'AttributeType': 'S'},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5,
}
)
table.meta.client.get_waiter('table_exists').wait(TableName='MyTable')
print(f"تم إنشاء الجدول '{table.name}' بنجاح.")
يُنشئ هذا المثال جدولًا باسم “MyTable” مع مفتاح أساسي نصي “id”. قم بتعديل `ReadCapacityUnits` و `WriteCapacityUnits` وفقًا لاحتياجات تطبيقك.
حذف جداول DynamoDB باستخدام Boto3
حذف جدول DynamoDB أمر بسيط:
table = dynamodb.Table('MyTable')
table.delete()
print(f"تم حذف الجدول 'MyTable' بنجاح.")
قائمة جداول DynamoDB باستخدام Boto3
لعرض جميع جداول DynamoDB الخاصة بك:
tables = dynamodb.tables.all()
for table in tables:
print(table.name)
استعلام البيانات في DynamoDB
يوفر DynamoDB آليات استعلام فعالة. عمليات `Query` هي الأفضل لاسترجاع العناصر بناءً على مفتاح أساسي محدد أو نطاق من القيم ضمن مفتاح مركب. يوضح المثال التالي استعلامًا بسيطًا:
table = dynamodb.Table('MyTable')
response = table.query(KeyConditionExpression=Key('id').eq('123'))
for item in response['Items']:
print(item)
مسح البيانات في DynamoDB
تستعيد عملية `Scan` جميع العناصر في جدول. على الرغم من أنها أقل كفاءة من `Query`، إلا أنها مفيدة لمسح الجداول بالكامل. تذكر تنفيذ الترقيم لل جداول الكبيرة (انظر قسم الترقيم).
response = dynamodb.Table('MyTable').scan()
for item in response['Items']:
print(item)
استرجاع عناصر محددة
لاسترجاع عنصر واحد بواسطة مفتاحه الأساسي:
table = dynamodb.Table('MyTable')
response = table.get_item(Key={'id': '123'})
item = response.get('Item')
print(item)
تنفيذ الترقيم
عند التعامل مع مجموعات بيانات كبيرة، فإن الترقيم ضروري لاسترجاع البيانات بكفاءة. يتعامل Boto3 تلقائيًا مع الترقيم:
response = dynamodb.Table('MyTable').scan()
items = response.get('Items', [])
while 'LastEvaluatedKey' in response:
response = dynamodb.Table('MyTable').scan(ExclusiveStartKey=response['LastEvaluatedKey'])
items.extend(response.get('Items', []))
for item in items:
print(item)
استخدام مؤشرات ثانوية عالمية
تتيح المؤشرات الثانوية العالمية (GSIs) استعلام البيانات بناءً على سمات بخلاف المفتاح الأساسي. يتضمن إنشاء GSI تحديد مفتاح الفهرس وسمات الإسقاط أثناء إنشاء الجدول أو تحديثه. يُشبه استعلام GSI استعلام المفتاح الأساسي، ولكنك تحدد اسم الفهرس.
التعامل بكفاءة مع مجموعات البيانات الكبيرة
للحصول على أداء مثالي مع مجموعات البيانات الكبيرة، استخدم ميزات مثل GSIs، والترقيم، واختر طريقة الاستعلام المناسبة (Get، Query، Scan) بناءً على أنماط الوصول الخاصة بك. تجنب عمليات مسح الجداول الكاملة غير الضرورية (Scan) كلما أمكن ذلك.
خاتمة
قدم هذا الدليل نظرة عامة شاملة على التفاعل مع DynamoDB باستخدام Boto3 في Python. تذكر الرجوع إلى وثائق AWS الرسمية للميزات المتقدمة وأفضل الممارسات. يعد فهم نموذج بيانات DynamoDB واختيار طرق الاستعلام المناسبة أمرًا بالغ الأهمية لبناء تطبيقات فعالة وقابلة للتطوير.