Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Обслуживание и мониторинг
Оптимизация производительности
Устранение неполадок
Справочное руководство
Справочник по SQL
Часто задаваемые вопросы
YMatrix разработан на основе PostgreSQL, поэтому поддерживает стандартные операторы SELECT, предоставляемые PostgreSQL, для выполнения запросов, включая сложные выражения с WHERE, GROUP BY, ORDER BY, JOIN и т.д.
Ниже приведён пример использования расширенного анализа с применением статистики использования диска.
Для упрощения объём информации о диске, который мы хотим подсчитать, включает только скорость чтения и записи, то есть: чтение и запись.
Шаблон индексной таблицы следующий:
CREATE TABLE disk(
time timestamp with time zone,
tag_id int,
read float,
write float
)
DISTRIBUTED BY (tag_id);
Также создадим таблицу disk_tags для хранения метаинформации, связанной с диском, включая операционную систему, имя хоста и зону, к которой он относится:
CREATE TABLE disk_tags(
tag_id serial,
os text,
hostname text,
region text
)
DISTRIBUTED REPLICATED;
Используйте предложение WHERE для фильтрации результатов:
Запрос записей со скоростью чтения и записи больше 10:
SELECT * FROM disk WHERE read > 10 AND write > 10;
Используйте предложение ORDER BY для выбора столбцов, по которым будет выполняться сортировка. Предложение LIMIT позволяет ограничить количество возвращаемых результатов:
Запрос последних 100 записей:
SELECT * FROM disk ORDER BY time DESC LIMIT 100;
YMatrix предоставляет следующие базовые агрегатные функции:
Запрос общего объёма данных за последние 12 часов:
SELECT COUNT(*) FROM disk WHERE time > NOW() - INTERVAL '12 hours';
Запрос максимального объёма чтения и записи для устройства с tag_id равным 1:
SELECT MAX(read), MAX(write) FROM disk WHERE tag_id = 1;
Используйте предложение GROUP BY для группировки по столбцам и агрегатные функции для столбцов, не входящих в группировку:
Запрос общего количества устройств в каждой зоне и на каждом хосте:
SELECT region, hostname, COUNT(*) FROM disk_tags GROUP BY region, hostname;
Используйте предложение JOIN и ключ соединения USING для выполнения операций соединения нескольких таблиц:
Запрос последних 100 записей и соответствующих им имён хостов:
SELECT disk_tags.hostname, disk.* FROM disk JOIN disk_tags USING (tag_id) ORDER BY disk.time DESC LIMIT 100;