Sorgu çalıştırma

ŞUNLAR IÇIN GEÇERLIDIR: Postgresql

Önkoşullar

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

  1. Azure portal 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ıç serimizdeki sorguları çalıştırmanın eğlenceli kısmının zamanı geldi. Ö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)

Bunun dağıtılmış bir tablo olduğunu github_users , yani verilerinin birden çok parça arasında bölündüğü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 göz atalı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 gönderme 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, sorguları çalıştırmaya ek olarak, dağıtılmış tablonun parçalarına veri tanımı değişikliklerini de 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.