Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Это важно
Azure Cosmos DB для PostgreSQL больше не поддерживается для новых проектов. Не используйте эту службу для новых проектов. Вместо этого используйте одну из этих двух служб:
Используйте Azure Cosmos DB для NoSQL для распределенного решения базы данных, предназначенного для крупномасштабных сценариев с соглашением уровня доступности 99.999% уровня доступности (SLA), мгновенным автомасштабированием и автоматической отработкой отказа в нескольких регионах.
Используйте функцию эластичных кластеров Базы данных Azure для PostgreSQL для сегментированного PostgreSQL с помощью расширения Citus с открытым кодом.
Предварительные условия
Чтобы следовать этому краткому руководству, сначала нужно сделать следующее:
- Создайте кластер в портал Azure.
- Подключитесь к кластеру с помощью psql для выполнения команд SQL.
- Создайте и распределите таблицы с использованием нашего примера набора данных.
Распределенные запросы
Теперь можно приступить к самой интересной части нашей серии кратких руководств — выполнению запросов.
Начнем с простого 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)
Более сложные запросы
Ниже приведен пример более сложного запроса, который извлекает почасовую статистику для событий Push на 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.