Bagikan melalui


Menjalankan kueri di Azure Cosmos DB for PostgreSQL

Penting

Azure Cosmos DB for PostgreSQL tidak lagi didukung untuk proyek baru. Jangan gunakan layanan ini untuk proyek baru. Sebagai gantinya, gunakan salah satu dari dua layanan ini:

Prasyarat

Untuk mengikuti panduan memulai ini, Anda harus terlebih dahulu:

  1. Buat kluster di portal Azure.
  2. Sambungkan ke kluster dengan psql untuk menjalankan perintah SQL.
  3. Membuat dan mendistribusikan tabel dengan contoh himpunan data kami.

Kueri terdistribusi

Sekarang saatnya untuk bagian yang menyenangkan dalam seri pemula cepat kami--menjalankan query. Mari kita mulai dengan count (*) sederhana untuk memverifikasi berapa banyak data yang kita muat di bagian sebelumnya.

-- count all rows (across shards)

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

Ingat bahwa github_users adalah tabel terdistribusi, yang berarti datanya terbagi antara beberapa shard. Azure Cosmos DB for PostgreSQL secara otomatis menjalankan hitungan pada semua pecahan secara paralel, dan menggabungkan hasilnya.

Mari kita lanjutkan melihat beberapa contoh kueri lainnya:

-- 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)

Kueri yang lebih rumit

Berikut adalah contoh kueri yang lebih rumit, yang mengambil statistik per jam untuk peristiwa push di GitHub. Ini menggunakan fitur JSONB PostgreSQL untuk menangani data semi-terstruktur.

-- 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 for PostgreSQL menggabungkan kekuatan datastore SQL dan NoSQL dengan data terstruktur dan semi terstruktur.

Selain menjalankan kueri, Azure Cosmos DB for PostgreSQL juga menerapkan perubahan definisi data di seluruh pecahan tabel terdistribusi:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Langkah berikutnya

Anda berhasil membuat kluster yang dapat diskalakan, membuat tabel, mendistribusikannya, memuat data, dan menjalankan kueri terdistribusi.

Sekarang Anda siap untuk belajar membangun aplikasi dengan Azure Cosmos DB for PostgreSQL.