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:
- Azure portal bir küme oluşturun.
- SQL komutlarını çalıştırmak için psql ile kümeye bağlanın.
- Ö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.