Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Для решения какой прикладной задачи вы ввели эти типы?
Там в самом начале указано в рамках Highload Cup 2018. А на PgConf.Russia рассказывали про MobilityDB.
И почему вам было недостаточно тех типов, которые уже есть в PostgreSQL?
Уменьшение размера данных. В статье указаны размеры до и после.
Извиняюсь, что ответил с задержкой. Хочу процитировать Томаса Эдисона:
Результаты? Ну, что ж, друг, у меня много результатов. Я знаю пятьдесят тысяч вещей, которые не будут работать.
Не запротоколировав, не узнаешь. Да выигрыш не значительный, но статья задумывалась как продолжение Создание расширений в PostgreSQL, добавив информацию про индексы.
В реальных задачах таки заморачиваются со своими типами: PostGIS, MobilityDB.
SELECT pg_column_size(row(
1::integer, --id
'email@email.ru'::varchar(100), --email
1::smallint, --fname
'sname'::varchar(100), --sname
now()::timestamp, --birth
1::smallint, --country
1::smallint, --city
1::smallint, --email_domain
now()::timestamp, --joined
'[2010-01-01 14:30, 2010-01-01 15:30]'::tsrange, --premium
'{1,2,3}'::integer[], --likes_ids
'{1,2,3}'::integer[] --likes_tss
));
168 байт
SELECT pg_column_size(row(
1::integer, --id
1::smallint, --fname
1::smallint, --country
1::smallint, --city
1::smallint, --email_domain
'{1,2,3}'::integer[], --likes_ids
'{1,2,3}'::integer[], --likes_tss
now()::timestamp, --birth
now()::timestamp, --joined
'[2010-01-01 14:30, 2010-01-01 15:30]'::tsrange, --premium
'email@email.ru'::varchar(100), --email
'sname'::varchar(100) --sname
));
163 байта
Номер телефона имеет вид 8(929)5481819, восьмерку можно отбросить.Если отбрасывать восьмёрку, то прощайте не-локальные номера.
Расширяемый Postgres