Aracılığıyla paylaş


PostgreSQL için Azure Cosmos DB'de sorgu çalıştırma

Önemli

PostgreSQL için Azure Cosmos DB artık yeni projeler için desteklenmemektedir. Bu hizmeti yeni projeler için kullanmayın. Bunun yerine, şu iki hizmetlerden birini kullanın:

Önkoşullar

Bu hızlı başlangıcı izlemek için önce şunları yapmanız gerekir:

  1. Azure portalında bir küme oluşturun.
  2. SQL komutlarını çalıştırmak için psql ile kümeye bağlanın.
  3. Örnek veri kümemizle tablo oluşturma ve dağıtma.

Dağıtılmış sorgular

Şimdi hızlı başlangıç serimizin eğlenceli kısmının zamanı geldi: sorgu çalıştırma. Önceki bölümde ne kadar veri yüklediğimizi doğrulamak için basit count (*) bir başlangıç yapalım.

-- count all rows (across shards)

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

github_users Bunun dağıtılmış bir tablo olduğunu, yani verilerinin birden çok parçaya ayrıldığını hatırlayın. PostgreSQL için Azure Cosmos DB, tüm parçalardaki sayıyı otomatik olarak paralel olarak çalıştırır ve sonuçları birleştirir.

Şimdi birkaç sorgu örneğine daha bakalım:

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

Daha karmaşık sorgular

GitHub'da anında iletme olaylarının saatlik istatistiklerini alan daha karmaşık bir sorgu örneği aşağıda verilmiştir. Yarı yapılandırılmış verileri işlemek için PostgreSQL'in JSONB özelliğini kullanır.

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

PostgreSQL için Azure Cosmos DB, SQL ve NoSQL veri depolarının gücünü yapılandırılmış ve yarı yapılandırılmış verilerle birleştirir.

PostgreSQL için Azure Cosmos DB, sorgu çalıştırmaya ek olarak, veri tanımı değişikliklerini dağıtılmış tablonun parçalarına da uygular:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Sonraki adımlar

Ölçeklenebilir bir kümeyi başarıyla oluşturdunuz, tablolar oluşturdunuz, dağıttınız, verileri yüklediniz ve dağıtılmış sorgular çalıştırdunuz.

Artık PostgreSQL için Azure Cosmos DB ile uygulama oluşturmayı öğrenmeye hazırsınız.