1. نظرة عامة
في الجزء 1، نجحنا في تحويل ملفات PDF غير منظَّمة وفوضوية إلى جداول نظيفة وذكية ومنظَّمة في BigQuery باستخدام Knowledge Catalog وDataScan. لدينا الآن مستودع بيانات قوي.
إذا كنت بحاجة إلى تذكير سريع، في الدرس العملي للجزء 1، استخدمنا حالة استخدام لامتياز خيالي لزبادي مثلج وحوّلنا 400 ملف PDF غير منظَّم، تتضمّن نصوصًا وجداول وصورًا، إلى جداول BigQuery منظَّمة بشكل نظيف مع استنتاج العلاقات بينها تلقائيًا باستخدام BigQuery Knowledge Catalog وDataplex.
ما ستنشئه
في هذه الجلسة، سنعدّ AlloyDB لـ PostgreSQL وسنفعل شيئًا سحريًا: سنوحّد بيانات BigQuery مباشرةً في AlloyDB. يعني ذلك أنّ تطبيقنا للمعاملات يمكنه طلب بيانات مستودعنا في الوقت الفعلي، بدون نسخ أيّ منها أو تكرارها.
يجب أن تطرح هذا السؤال كمطوّر في هذه المرحلة:
"إذا كانت البيانات موجودة في BigQuery، فلماذا نستخدم AlloyDB؟ لماذا لا ينفّذ التطبيق ببساطة عبارة SELECT مباشرةً على BigQuery؟"
إليك السبب:
باستخدام Lakehouse Federation، يمكنك استخدام محرّك طلبات البحث في AlloyDB لتشغيل أحمال العمل التحليلية والمعاملات في تطبيقك من داخل الواجهة نفسها. يمكنك أيضًا إنشاء هذه البيانات أو استيرادها على AlloyDB للوصول إليها بشكل أسرع لاستخدامها في تطبيقاتك، ما يتيح لك استخدام AlloyDB AI و محرّك الأعمدة.
يمكنك استخدام AlloyDB كقاعدة بيانات للمعاملات، كما يمكنك تخزين كميات كبيرة من البيانات في BigQuery أو BigLake. عادةً ما تتكامل تطبيقاتك بشكل مستقل مع كلا النظامَين للوصول إلى البيانات على مستوى خدمات Google Cloud المختلفة هذه. Lakehouse Federation لـ AlloyDB تتيح لك استخدام ميزة طلبات البحث الموحّدة في AlloyDB التي تم تنفيذها كبرنامج تضمين للبيانات الخارجية للوصول إلى بيانات BigQuery وAlloyDB باستخدام واجهة SQL في AlloyDB.
بدلاً من إنشاء مسار ETL غير مستقر لطلب بيانات BigQuery من AlloyDB، سنستخدم طلبات بحث موحّدة. سيعمل AlloyDB كنقطة نهاية موحّدة، وسيصل بسلاسة إلى BigQuery عند الحاجة.
لنبدأ في الإنشاء.

أهداف الدورة التعليمية
- كيفية إعداد مجموعة AlloyDB ومثيل AlloyDB والشبكات بنقرة زر
- كيفية إعداد إضافة للتحضير لعملية التوحيد
- كيفية إعداد عملية التوحيد من BigQuery إلى AlloyDB
- اختبار عملية التوحيد
المتطلبات
2. قبل البدء
إنشاء مشروع
- في Google Cloud Console، في صفحة اختيار المشروع، اختَر مشروعًا على Google Cloud أو أنشِئ مشروعًا.
- تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. كيفية التحقّق مما إذا كانت الفوترة مفعّلة في مشروع.
- ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل على Google Cloud. انقر على تفعيل Cloud Shell في أعلى Google Cloud Console.

- بعد الاتصال بـ Cloud Shell، تحقَّق من أنّك قد تم التحقّق من هويتك وأنّ المشروع مضبوط على رقم تعريف مشروعك باستخدام الأمر التالي:
gcloud auth list
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ أمر gcloud يعرف مشروعك.
gcloud config list project
- إذا أردت المصادقة
gcloud auth login
- إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
- فعِّل واجهات برمجة التطبيقات المطلوبة: نفِّذ هذا الأمر لتفعيل جميع واجهات برمجة التطبيقات المطلوبة:
gcloud services enable alloydb.googleapis.com
المشاكل الشائعة وتحديد المشاكل وحلّها
متلازمة "المشروع الوهمي" | لقد نفّذت الأمر |
حاجز الفوترة | لقد فعّلت المشروع، ولكنك نسيت حساب الفوترة. AlloyDB هو محرّك عالي الأداء، ولن يبدأ إذا كان "خزان الوقود" (الفوترة) فارغًا. |
تأخّر انتشار واجهة برمجة التطبيقات | لقد نقرت على "تفعيل واجهات برمجة التطبيقات"، ولكن سطر الأوامر ما زال يعرض |
مستنقعات الحصص | إذا كنت تستخدم حسابًا تجريبيًا جديدًا تمامًا، قد تصل إلى حصة إقليمية لمثيلات AlloyDB. إذا تعذّر استخدام |
3. ملخّص سريع للبيانات من الجزء 1
في هذا القسم، عليك التأكّد من أنّ البيانات المنظَّمة التي استخرجناها من ملفات PDF غير المنظَّمة متوفّرة في BigQuery. إذا فاتك الجزء 1 أو لم يكن لديك حساب فوترة، لا بأس، يمكنك إكمال الخطوات التالية والبدء:
انتقِل إلى Google Cloud Console من حسابك الشخصي على Gmail وانقر على الزر "تفعيل Cloud Shell" في أعلى يسار وحدة التحكّم:

بعد ذلك، اتّبِع الخطوات الواردة في قسم "أليس لديك حساب فوترة؟" أدناه:
الآن بعد أن أصبحت البيانات في BigQuery، لننتقل إلى الخطوات التالية.
4. إعداد مجموعة AlloyDB ومثيل AlloyDB والشبكة
يتوفّر تطبيق سريع التشغيل مستند إلى الويب يساعدك في إعداد مجموعة AlloyDB ومثيل AlloyDB والتبعيات الأخرى. يمكنك اتّباع الخطوات من 2 إلى 4 في هذا الدرس العملي لإعدادها بنقرة زر:
https://codelabs.developers.google.com/quick-alloydb-setup
بعد إنشاء مجموعتك، انتقِل إلى صفحة "نظرة عامة على المجموعة" وانسخ تفاصيل حساب الخدمة منها.

5. إعداد الأذونات
منح أذونات BigQuery لحساب الخدمة هذا
- انتقِل إلى "إدارة الهوية وإمكانية الوصول والمشرف" > إدارة الهوية وإمكانية الوصول (IAM).
- انقر على منح الوصول.
- الصِق عنوان حساب خدمة AlloyDB في حقل "الجهات الرئيسية الجديدة".
- عيِّن الأدوار التالية:
- مُشاهد البيانات في BigQuery (roles/bigquery.dataViewer): يتيح قراءة البيانات.
- مستخدم BigQuery (roles/bigquery.user): يتيح تشغيل طلبات البحث.
- (اختياري ولكن يُنصح به) مستخدم جلسة قراءة BigQuery (roles/bigquery.readSessionUser): يحسِّن قراءة مجموعات البيانات الكبيرة من خلال Storage Read API.
6. الاتصال بـ AlloyDB وتفعيل إضافة BigQuery
سنربط الآن بمثيل AlloyDB الجديد لضبط إضافة التوحيد. سنستخدم AlloyDB Studio لهذا الغرض.
- من صفحة "نظرة عامة على المجموعة" (وحدة تحكّم AlloyDB)، انقر على AlloyDB Studio.

- اتّصِل بقاعدة البيانات واسم المستخدم وكلمة المرور اللذَين ضبطتهما في وقت خطوة "الإعداد السريع لـ AlloyDB".
- بعد الاتصال، في علامة التبويب "محرّر طلب البحث" على يسار الصفحة، أدخِل العبارات التالية وانقر على "تشغيل" واحدة تلو الأخرى:
CREATE EXTENSION IF NOT EXISTS bigquery_fdw;
CREATE SERVER bigquery_server FOREIGN DATA WRAPPER bigquery_fdw;
CREATE USER MAPPING FOR postgres SERVER bigquery_server;
- بعد إكمال الخطوات بنجاح، انتقِل إلى لوحة المستكشف على يمين الصفحة وانتقِل للأسفل إلى جداول BigQuery:

- انقر على النقاط الثلاث ثم على "ربط جدول BigQuery".
- في النافذة المنبثقة "ربط جدول BigQuery" التي تفتح، اختَر `project_id` واسم مجموعة بيانات BigQuery (التي تم إنشاؤها في الجزء 1) التي تريد طلب البيانات منها في قاعدة بيانات AlloyDB.

- اختَر كل جدول واحدًا تلو الآخر لربط جميع بياناتك بـ AlloyDB. ننفّذ ذلك للتحقّق من أنواع الأعمدة للتأكّد من أنّها متوافقة مع AlloyDB.
إذا أردت تنفيذ الإجراء نفسه باستخدام SQL بدلاً من استخدام طريقة النقر:
CREATE FOREIGN TABLE <<TABLE_NAME>> (
"cas_number" VARCHAR, "ingredient_name" VARCHAR, "max_moisture_percentage" DOUBLE PRECISION, "ph_range" VARCHAR, "purity_percentage" DOUBLE PRECISION, "shelf_life_months" BIGINT, "specific_gravity_range" VARCHAR
) SERVER "bigquery_server" OPTIONS (
project '<<PROJECT_ID>>',
dataset 'froyo_data',
table '<<BQ_TABLE_NAME>>'
);
السحر!!!
لقد أنشأنا للتو "جداول خارجية" في AlloyDB. تبدو هذه الجداول وتعمل مثل جداول PostgreSQL العادية، ولكنها لا تخزّن أي بيانات. عند طلبها، يمرِّر AlloyDB على الفور طلب البحث إلى BigQuery، ويجلب النتائج، ويعرضها لك.
7. اختبار عملية التوحيد في AlloyDB
لنتأكّد من أنّه يمكننا طلب مجموعة بيانات BigQuery التحليلية الكبيرة مباشرةً من قاعدة بيانات PostgreSQL للمعاملات.
في AlloyDB Studio، لننفّذ طلب بحث لمعرفة المواد المسبّبة للحساسية في "Midnight Swirl" (السؤال نفسه الذي طرحناه في الجزء 1، ولكن هذه المرة من AlloyDB):
SELECT
p.product_name,
i.ingredient_name,
a.allergen_name
FROM
consistsof c
INNER JOIN product p
ON c.product_id = p.product_id
INNER JOIN ingredient i
ON c.ingredient_id = i.ingredient_name
LEFT OUTER JOIN containsallergen a
ON i.ingredient_id = a.ingredient_id
WHERE
UPPER(p.product_name) LIKE '%MIDNIGHT%SWIRL%'
AND a.allergen_name IS NOT NULL;
لقد أصبحت متاحة لك. يجب أن تظهر لك النتائج نفسها تمامًا كما ظهرت في BigQuery.

8. تَنظيم
بعد إكمال هذا الدرس العملي، لا تنسَ حذف مجموعة AlloyDB ومثيل AlloyDB.
يجب أن يؤدي ذلك إلى تنظيف المجموعة مع مثيلاتها.
9. تهانينا على طبقة البيانات الموحّدة
لنفكّر في ما أنجزناه للتو:
- يمكن لتطبيقنا للمعاملات (الذي يعمل على AlloyDB) التعامل مع جلسات المستخدمين السريعة والمتزامنة.
- عندما يحتاج إلى بيانات تحليلية كبيرة أو سياق سابق (مثل تفاصيل المورّد أو عمليات الربط المعقّدة للمكوّنات)، يطلب التطبيق مخطط froyo_data في BigQuery.
- لا حاجة إلى ETL. لا تنقطع مسارات البيانات. لا توجد قواعد بيانات غير متزامنة. نخزّن البيانات مرة واحدة (في BigQuery) ونحسبها حيث نحتاج إليها.
الآن بعد أن أصبح أساس بياناتنا، التحليلي والمعاملات، قويًا ومترابطًا، أصبحنا مستعدين للجزء الممتع.
في الجزء 3، سننشئ تطبيقًا متعدد الوكلاء يستند إلى هذه البنية لتشغيل عمليات شركة Froyo.