Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Документ описывает часто используемые типы данных, поддерживаемые YMatrix.
Основные типы данных разделены на три группы:
YMatrix поддерживает четыре категории числовых типов:
Целые числа: Знаковые целочисленные типы с различными диапазонами:
smallintintbigintЧисла с фиксированной запятой: Для значений с фиксированным количеством десятичных знаков:
decimalЧисла с плавающей запятой: Для значений с переменной точностью:
realdouble precisionАвтоматически инкрементируемые типы: Обычно используются для столбцов с автоматическим инкрементом ID:
serialbigserialПодробная информация представлена ниже:
| Тип | Алиас | Размер | Диапазон | Описание |
|---|---|---|---|---|
smallint |
int2 |
2 байта | -32768 ~ 32767 | Целое число малого диапазона |
int |
int4 |
4 байта | -2147483648 ~ 2147483647 | Стандартное целое число |
bigint |
int8 |
8 байт | -9223372036854775808 ~ 9223372036854775807 | Целое число большого диапазона |
serial |
serial4 |
4 байта | 1 ~ 2147483647 | Автоматически инкрементируемое целое число |
bigserial |
serial8 |
8 байт | 1 ~ 9223372036854775807 | Большое автоматически инкрементируемое целое число |
real |
float4 |
4 байта | 6 значащих цифр | Переменная точность |
double precision |
float8 |
8 байт | 15 значащих цифр | Переменная точность |
decimal |
numeric |
Переменный | Без ограничений | Фиксированная точность |
YMatrix поддерживает два основных строковых типа:
charvarchar: Ограниченная длинаtext: Неограниченная длинаПодробная информация представлена ниже:
| Тип | Алиас | Размер | Диапазон | Описание |
|---|---|---|---|---|
character [ (n) ] |
char [ (n) ] |
1 байт + n | До n символов | Строка фиксированной длины, дополняется пробелами при меньшей длине |
character varying [ (n) ] |
varchar [ (n) ] |
1 байт + размер строки | До n символов | Строка переменной длины с ограничением; максимум 10 485 760 байт |
text |
1 байт + длина строки | Любая длина | Строка переменной длины без ограничений |
YMatrix поддерживает три основных типа даты и времени:
Дата: Представляет только календарную дату (год, месяц, день), без времени:
dateВремя: Представляет только время суток, без даты:
time [without time zone] (без часового пояса)time with time zone (с часовым поясом)Timestamp: Представляет и дату, и время:
timestamp [without time zone] (без часового пояса)timestamp with time zone (с часовым поясом)Подробная информация представлена ниже:
| Тип | Алиас | Размер | Диапазон | Описание |
|---|---|---|---|---|
date |
4 байта | 4713 г. до н.э. ~ 294 277 г. н.э. | Календарная дата (год, месяц, день) | |
time [ (p) ] [ without time zone ] |
8 байт | 00:00:00[.000000] ~ 24:00:00[.000000] | Время суток | |
time [ (p) ] with time zone |
timetz |
12 байт | 00:00:00+1359 ~ 24:00:00-1359 | Время суток с часовым поясом |
timestamp [ (p) ] [ without time zone ] |
8 байт | 4713 г. до н.э. ~ 294 277 г. н.э. | Дата и время | |
timestamp [ (p) ] with time zone |
timestamptz |
8 байт | 4713 г. до н.э. ~ 294 277 г. н.э. | Дата и время с часовым поясом |
Одной из заметных особенностей типов времени является time zone. По умолчанию типы времени определяются как without time zone. Что такое часовой пояс и как он влияет на значения времени?
Это можно понять, создав тестовую таблицу.
=# CREATE TABLE test (
c1 int,
c2 timestamp,
c3 timestamp with time zone
)
USING MARS3
DISTRIBUTED BY (c1)
ORDER BY (c1,c2);
Тестовая таблица содержит два столбца timestamp: один без часового пояса, другой — с часовым поясом, а также ключ распределения. Вставьте тестовые данные и выполните запрос:
=# INSERT INTO test VALUES(1, now(), now());
=# SELECT * FROM test;
c1 | c2 | c3
----+--------------------------+-----------------------------
1 | 2021-12-01 14:54:09.4783 | 2021-12-01 14:54:09.4783+08
(1 row)
=# SHOW timezone;
TimeZone
---------------
Asia/Shanghai
(1 row)
Из результата оба timestamp выглядят одинаково, но столбец c3 (с часовым поясом) показывает суффикс +08, указывающий, что он относится к UTC+8 (китайское стандартное время). Команда SHOW timezone подтверждает, что текущий часовой пояс сессии установлен в Asia/Shanghai, то есть в пекинское время.
Теперь измените часовой пояс и повторите запрос:
=# SET timezone TO 'Japan';
=# SELECT * FROM test;
c1 | c2 | c3
----+--------------------------+-----------------------------
1 | 2021-12-01 14:54:09.4783 | 2021-12-01 15:54:09.4783+09
(1 row)
После изменения часового пояса на японский, отображаемое время в столбце c3 (с часовым поясом) изменяется на UTC+9, тогда как c2 остаётся неизменным.
В итоге:
timestamp with time zone хранит значения с учётом часового пояса и корректирует отображение в зависимости от часового пояса сессии.timestamp without time zone хранит сырые временные метки без контекста часового пояса и отображает одно и то же значение независимо от настроек сессии.timestamp используют одинаковый объём хранения. Поэтому использование timestamptz является предпочтительным.Данные временных рядов обычно делятся на три категории:
Рекомендуемые типы данных:
| Тип | Описание | Лучшая практика |
|---|---|---|
| Timestamp | Время сбора, включая дату и время | timestamp with time zone |
| Идентификатор устройства | Строковый идентификатор | varchar / text |
| Идентификатор устройства | Фиксированной длины, например серийный номер | char |
| Идентификатор устройства | Использовать отдельную таблицу устройств с автоинкрементным ID | serial / bigserial |
| Метрика | Целочисленные измерения | smallint / int / bigint |
| Метрика | Десятичные значения с фиксированной точностью и диапазоном, например температура | decimal |
| Метрика | Десятичные значения с переменной точностью и большим диапазоном | float / double precision |
Примечание!
Помимо распространённых типов данных, описанных выше, YMatrix поддерживает расширенные типы, такие как JSON/JSONB, MXKV/MXKV2 и пространственные типы данных.