تشغيل الاستعلامات في Azure Cosmos DB ل PostgreSQL

ينطبق على: Azure Cosmos DB ل PostgreSQL (مدعوم بملحق قاعدة بيانات Citus إلى PostgreSQL)

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

لاتباع هذا التشغيل السريع، ستحتاج أولًا إلى:

  1. إنشاء نظام مجموعة في مدخل Microsoft Azure.
  2. اتصل بالمجموعة باستخدام psql لتشغيل أوامر SQL.
  3. إنشاء جداول وتوزيعها باستخدام مجموعة بيانات المثال.

الاستعلامات الموزعة

حان الوقت الآن للجزء الممتع في سلسلة التشغيل السريع -- تشغيل الاستعلامات. لنبدأ ببساطة count (*) للتحقق من كمية البيانات التي قمنا بتحميلها في القسم السابق.

-- count all rows (across shards)

SELECT count(*) FROM github_users;
 count
--------
 264308
(1 row)

تذكر أن github_users هذا جدول موزع، ما يعني أن بياناته مقسمة بين أجزاء متعددة. يقوم Azure Cosmos DB ل PostgreSQL تلقائيا بتشغيل العد على جميع الأجزاء بالتوازي، ويجمع بين النتائج.

دعونا نواصل النظر في بعض أمثلة الاستعلام الإضافية:

-- Find all events for a single user.
-- (A common transactional/operational query)

SELECT created_at, event_type, repo->>'name' AS repo_name
  FROM github_events
 WHERE user_id = 3861633;
     created_at      |  event_type  |              repo_name
---------------------+--------------+--------------------------------------
 2016-12-01 06:28:44 | PushEvent    | sczhengyabin/Google-Image-Downloader
 2016-12-01 06:29:27 | CreateEvent  | sczhengyabin/Google-Image-Downloader
 2016-12-01 06:36:47 | ReleaseEvent | sczhengyabin/Google-Image-Downloader
 2016-12-01 06:42:35 | WatchEvent   | sczhengyabin/Google-Image-Downloader
 2016-12-01 07:45:58 | IssuesEvent  | sczhengyabin/Google-Image-Downloader
(5 rows)

استعلامات أكثر تعقيداً

فيما يلي مثال على استعلام أكثر تعقيداً، والذي يسترد إحصائيات الساعة لأحداث الدفع على GitHub. ويستخدم ميزة JSONB لـ PostgreSQL للتعامل مع البيانات شبه المنظمة.

-- Querying JSONB type. Query is parallelized across nodes.
-- Find the number of commits on the default branch per hour 

SELECT date_trunc('hour', created_at) AS hour,
       sum((payload->>'distinct_size')::int) AS num_commits
FROM   github_events
WHERE  event_type = 'PushEvent' AND
       payload @> '{"ref":"refs/heads/master"}'
GROUP BY hour
ORDER BY hour;
        hour         | num_commits
---------------------+-------------
 2016-12-01 05:00:00 |       13051
 2016-12-01 06:00:00 |       43480
 2016-12-01 07:00:00 |       34254
 2016-12-01 08:00:00 |       29307
(4 rows)

يجمع Azure Cosmos DB ل PostgreSQL بين قوة مخازن بيانات SQL و NoSQL مع البيانات المنظمة وشبه المنظمة.

بالإضافة إلى تشغيل الاستعلامات، يطبق Azure Cosmos DB ل PostgreSQL أيضا تغييرات تعريف البيانات عبر أجزاء الجدول الموزع:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

الخطوات التالية

لقد نجحت في إنشاء مجموعة قابلة للتطوير، وإنشاء جداول، وتوزيعها، وتحميل البيانات، وتشغيل الاستعلامات الموزعة.

أنت الآن جاهز لتعلم إنشاء التطبيقات باستخدام Azure Cosmos DB ل PostgreSQL.