26
NoSQL в PostgreSQL Чувашов Иван Старший инженер-разработчик АО «ОТС»

NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

  • Upload
    others

  • View
    44

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

NoSQL в PostgreSQL

Чувашов ИванСтарший инженер-разработчик

АО «ОТС»

Page 2: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Чем PostgreSQL лучше других свободных СУБД

Page 3: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

pg_barman plproxy

Page 4: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Типы данных

bigint, bigserial, bit [ ], bit varying [ ], boolean, box, bytea, character [ ], character varying [ ], cidr, circle, date, double

precision, inet, integer, interval [ поля ] [ ], JSON, JSONB, line, lseg, macaddr, money, numeric [ ], path, pg_lsn, point,

polygon, real, smallint, smallserial, serial, text, time [ ], time [ ]with time zone, timestamp [ ] , timestamp [ ] with time zone,

tsquery, tsvector, txid_snapshot, uuid, xml

Page 5: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Размеры данныхМаксимальный размер базы данных

Неограничен

Максимальный размер таблицы

32 TB

Максимальный размер строки

1.6 TB

Максимальный размер поля 1 GBМаксимальное количество строк в таблице

Неограничено

Максимальное количество столбцов в таблице

250-1600 в зависимости от типа столбца

Максимальное количество индексов в таблице

Неограничено

Page 6: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Индексирование

• Частичные индексы

Page 7: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Индексирование

• Функциональные индексы

Page 8: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Индексирование

• GIST (геометрические типы, сетевые адреса, диапазоны)

• GIN (массивов, JSONB, tsvector)

• BRIN (не точный, быстрый, маленький)

Page 9: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Возможности запросов

• Объединение запросовUNION, INTERSECT и EXCEPT

• Оконные функцииROW_NUMBER(), RANK(), DENSE_RANK() и

PERCENT_RANK()

Page 10: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Возможности запросов

• Латеральные вложенные запросы

Page 11: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Языковые расширения

PL/pgSQL, PL/Perl, PL/Python и PL/Tcl,PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Schem

e, PL/sh, PL/V8 и C

Page 12: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

NoSQL данные в PostgreSQL

• Массивы

массив в таблицу строку в массив

найти пересечениедвух массивов

сложитьдва массива

вычитаниедвух массивов

Page 13: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

Page 14: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

Page 15: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

Page 16: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

Page 17: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

Page 18: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

Page 19: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с массивами

product shop shop_product shop_massРазмер таблицы, Мб 652 0.5 2038 0.8Размер индексов, Мб 688 0.2 1733 415Всего, Мб 1340 0.7 3771 416

Производительность1. По скорости в 10 раз2. По размеру в 9 раз

Page 20: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

NoSQL данные в PostgreSQL

• JSON и JSONB

РавенствоОграничения

Фильтрация по ключамФильтрация по ключам и значениям

Page 21: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с JSON

Page 22: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Пример работы с JSON

PostgreSQL

MSSQL

http://olontsev.ru/2016/05/sql-server-2016-json-part-6-compare-performance-with-xml/

Page 23: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Как мигрировать на PostgreSQL

Миграция с MongoDB на PostgreSQLToroDB (www.torodb.com)

Page 24: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Как мигрировать на PostgreSQL

Миграция с MySQL на PostgreSQLMysql2postgres

https://github.com/maxlapshin/mysql2postgres

mysql_fdwhttps://github.com/EnterpriseDB/mysql_fdw

Page 25: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Как мигрировать на PostgreSQL

Миграция с MSSQL на PostgreSQLtds_fdw

https://github.com/tds-fdw/tds_fdw

Bcp -> psql

Page 26: NoSQL в PostgreSQL · Индексирование •GIST геометрические типы сетевые адреса диапазоны •GIN массивов JSONB, tsvector)

Остались вопросы?Пишите: [email protected]

Звоните: 8-903-954-85-18