0Pricing
Cloud & IT Cert Prep · درس

Amazon Athena: SQL دون خوادم على S3

استعلم عن بيانات S3 مباشرةً باستخدام SQL القياسي في Athena، وحسّن الأداء باستخدام تنسيقات عمودية مثل Parquet وORC، وقسّم البيانات للتحكم في التكلفة

Amazon Athena: SQL دون خوادم على S3 درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ما هي Amazon Athena؟

Amazon Athena هي خدمة استعلامات تفاعلية بلا خوادم، تتيح لكم تشغيل SQL القياسي مباشرةً على البيانات المخزنة في Amazon S3. لا حاجة إلى توفير خوادم أو إدارة عناقيد، ولا تدفعون إلا مقابل البيانات التي يفحصها كل استعلام (نحو 5 دولارات لكل TB يتم فحصه). تستخدم Athena محرك Presto داخليًا، وتتكامل أصليًا مع Glue Data Catalogue للحصول على بيانات تعريف الجداول.

إعداد Athena: مجموعات العمل وموقع الإخراج

قبل تشغيل الاستعلامات، اضبطوا Athena Workgroup وحددوا مسار S3 لإخراج نتائج الاستعلامات. تتيح لكم مجموعات العمل فصل سجل الاستعلامات وتتبع التكاليف بين الفرق، وفرض تشفير النتائج، وتعيين حدود لكمية البيانات المفحوصة لكل استعلام لمنع التكاليف غير المتوقعة. تُكتب نتيجة كل استعلام بصيغة CSV في حاوية S3 المحددة للإخراج.

# Create a workgroup with an encrypted output location
aws athena create-work-group \
  --name analytics-team \
  --configuration '{
    "ResultConfiguration": {
      "OutputLocation": "s3://athena-results-123/analytics-team/",
      "EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
    },
    "EnforceWorkGroupConfiguration": true,
    "PublishCloudWatchMetricsEnabled": true,
    "BytesScannedCutoffPerQuery": 10737418240
  }'

تشغيل أول استعلام لكم

وجّهوا Athena إلى قاعدة بيانات في Glue Data Catalogue وشغّلوا ANSI SQL. تدعم Athena أوامر SELECT وJOIN وGROUP BY، ودوال النوافذ، وCTEs. ويمكنكم أيضًا استخدام CREATE TABLE AS SELECT (CTAS) لحفظ نتائج الاستعلام في جدول جديد بصيغة Parquet، وبذلك يتم تخزين النتائج الوسيطة فعليًا لإجراء الاستعلامات اللاحقة بسرعة أكبر.

-- Query total sales by month from partitioned S3 data
SELECT
  year,
  month,
  SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;

-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;

تحسين التكاليف: تقليم الأقسام

تفرض Athena رسومًا على كل TB من البيانات التي يتم فحصها. وأكثر أساليب خفض التكلفة تأثيرًا هو تقليم الأقسام: احرصوا دائمًا على تضمين أعمدة الأقسام في جملة WHERE. فإذا كانت البيانات مقسمة حسب year/month/day، فإن التصفية باستخدام هذه الأعمدة تمنع Athena من فحص الأقسام الأخرى. ومن دون مرشح للأقسام في جدول بحجم بيتابايت، قد يكلف استعلام بسيط مئات الدولارات.

-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';

-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';

تحسين التكاليف: التنسيق العمودي

يؤدي تخزين البيانات بصيغة Apache Parquet أو ORC بدلًا من CSV أو JSON إلى تقليل كمية البيانات التي تفحصها Athena لكل استعلام بشكل كبير. فعندما يلمس استعلام عمودي 3 أعمدة من أصل 50، فإنه يفحص بيانات هذه الأعمدة الثلاثة فقط على القرص. وبالاقتران مع الضغط المدمج (Snappy وZstd)، تكون ملفات Parquet عادةً أصغر من ملفات CSV المكافئة بمقدار يتراوح بين 5 و10 مرات، مما يضاعف وفورات التكلفة.

-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
--   query reads only 2 columns -> scans ~2 GB -> $0.01

-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;

الاستعلامات الموحدة باستخدام موصلات مصادر البيانات

توسّع Athena Federated Query نطاق Athena إلى ما يتجاوز S3، إذ تتيح الاستعلام عن البيانات في RDS وDynamoDB وRedshift وElasticsearch والمصادر المخصصة باستخدام موصلات مصادر البيانات المستندة إلى Lambda. تنشرون دالة Lambda للموصل من Serverless Application Repository، وتسجلونها كمصدر بيانات في Athena، ثم تستعلمون عن جداول S3 وقواعد البيانات المباشرة ضمن عملية SQL JOIN واحدة — من دون نقل أي بيانات أولًا.

-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
  ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';

التكامل بين Athena وQuickSight

يتصل Amazon QuickSight مباشرةً بـ Athena كمصدر للبيانات، مما يتيح لمحللي الأعمال إنشاء لوحات معلومات تفاعلية من بيانات S3 من دون قاعدة بيانات وسيطة. يستخدم QuickSight محرك SPICE (Super-fast, Parallel, In-memory Calculation Engine) لتخزين نتائج استعلامات Athena مؤقتًا من أجل عرض لوحات المعلومات بسرعة. وتُعد حزمة ذكاء الأعمال بلا خوادم هذه (S3 + Glue + Athena + QuickSight) نمطًا شائعًا في الاختبارات للتحليلات منخفضة التكلفة.

ضبط أداء استعلامات Athena

بالإضافة إلى التقسيم والتنسيق العمودي، يمكنكم ضبط استعلامات Athena بشكل أكبر من خلال: تقسيم الملفات الكبيرة (استهدفوا حجمًا يتراوح بين 128 MB و1 GB لكل ملف لتحقيق المعالجة المتوازية)، واستخدام التجميع في حاويات للأعمدة التي تُستخدم كثيرًا في عمليات الربط، وتجنب SELECT *، واستخدام دوال التجميع التقريبية مثل approx_distinct() وapprox_percentile() عندما لا تكون القيم الدقيقة مطلوبة. تقلل هذه الأساليب التكلفة ووقت الاستجابة معًا.

-- Use approx_distinct for fast cardinality estimate
SELECT
  year,
  approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;

التحكم في الوصول إلى Athena

تتكامل Athena مع IAM للتحكم في الوصول: يحتاج المستخدمون إلى أذونات لتشغيل استعلامات Athena (athena:StartQueryExecution)، والوصول إلى حاوية S3 الخاصة بالإخراج، وقراءة بيانات S3 الأساسية. ولتوفير وصول دقيق على مستوى الأعمدة والصفوف، ادمجوا Athena مع Lake Formation. ويمكنكم أيضًا تقييد مجموعة عمل بقاعدة بيانات محددة باستخدام مفاتيح شروط IAM في ARN الخاص بمجموعة العمل.

# Minimum IAM policy for an Athena analyst
{
  "Effect": "Allow",
  "Action": [
    "athena:StartQueryExecution",
    "athena:GetQueryExecution",
    "athena:GetQueryResults",
    "athena:StopQueryExecution",
    "glue:GetDatabase",
    "glue:GetTable",
    "glue:GetPartitions",
    "s3:GetObject",
    "s3:PutObject"
  ],
  "Resource": "*"
}

حفظ نتائج الاستعلامات والاستعلامات المجدولة

تُخزن نتائج استعلامات Athena كملفات CSV في S3، ويتم تخزينها مؤقتًا لمدة 7 أيام؛ لذلك لا تؤدي إعادة تشغيل الاستعلام نفسه خلال هذه الفترة إلى إعادة فحص البيانات. ولتلبية احتياجات إعداد التقارير المتكررة، استخدموا Athena Scheduled Queries لتشغيل استعلام وفق جدول cron وحفظ النتائج في موقع S3 جديد أو مباشرةً في جدول. وبديلًا عن ذلك، يمكن تشغيل استعلام Athena من آلة حالات Step Functions أو قاعدة EventBridge.

# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
  --query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
  --work-group analytics-team \
  --query 'QueryExecutionId' --output text)

# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_ID

Athena مقابل Redshift: اختيار الأداة المناسبة

في اختبار SAA-C03، احرصوا على معرفة متى توصي كلًا من Athena وRedshift. اختاروا Athena للاستعلامات المخصصة وغير المتكررة على S3، عندما لا تريدون إدارة أي بنية تحتية. واختاروا Redshift عندما تحتاجون إلى أزمنة استجابة أقل من ثانية لعمليات الربط المعقدة، أو عندما يكون لديكم فريق تحليلات مخصص يشغّل مئات الاستعلامات المتزامنة، أو عندما تريدون استخدام Redshift Spectrum لتوسيع مستودع بيانات ببيانات S3. والمؤشر الأساسي هو تكرار الاستعلامات وتعقيدها.

اختبار سريع

اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمتم في هذا الدرس أن: تفرض Athena رسومًا لكل TB يتم فحصه، ولذلك يُعد تقليم الأقسام واستخدام تنسيق Parquet من عناصر التحكم الأساسية في التكلفة، وتوسّع Athena Federated Query نطاق SQL ليشمل مصادر بيانات غير S3 عبر موصلات Lambda، وتُعد Athena الأنسب للاستعلامات المخصصة، بينما يناسب Redshift التحليلات ذات التزامن المرتفع. بعد ذلك، سنستكشف Kinesis لبث البيانات وتحليلها في الوقت الفعلي.

الأسئلة الشائعة

هل درس «Amazon Athena: SQL دون خوادم على S3» مجاني؟

نعم — نص درس «Amazon Athena: SQL دون خوادم على S3» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «Amazon Athena: SQL دون خوادم على S3»؟

استعلم عن بيانات S3 مباشرةً باستخدام SQL القياسي في Athena، وحسّن الأداء باستخدام تنسيقات عمودية مثل Parquet وORC، وقسّم البيانات للتحكم في التكلفة تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «Amazon Athena: SQL دون خوادم على S3»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء بحيرة بيانات على S3
  2. AWS Glue: ETL وكتالوج البيانات
  3. Amazon Athena: SQL دون خوادم على S3
  4. Kinesis Streams وFirehose والتحليلات الفورية
← العودة إلى Cloud & IT Cert Prep