Введение 0:05 Автор рад участию в конференции после возвращения из Непала. Объясняет символику слона и бесконечного тора в контексте баз данных.
Представление компании и университета 1:07 Представляет компанию «Погрест Профессиональный» и Московский университет. Упоминает работу научным сотрудником в Государственном астрономическом институте.
История работы с базами данных 1:29 Делится опытом создания баз данных в студенческие годы. Рассказывает о переходе к революционным базам данных, таким как PostgreSQL.
Преимущества революционных баз данных 3:20 Объясняет преимущества интеграционных баз данных: консистентность данных и удобство работы с языком SQL. Подчёркивает медлительность революционных баз данных в условиях быстрых изменений.
Развитие веб-приложений и появление NoSQL 5:09 Описывает изменение архитектуры веб-приложений на множество сервисов. Объясняет появление NoSQL-баз данных, которые позволяют быстро менять схемы данных.
Особенности NoSQL-баз данных 6:35 Обсуждает масштабируемость NoSQL-баз и отсутствие необходимости полной консистентности. Приводит примеры из повседневной жизни, иллюстрирующие использование NoSQL.
Проблема сочетания гибкости и целостности данных 9:32 Задумывается о необходимости сочетания гибкости NoSQL с целостностью данных. Предлагает решение: интеграция PostgreSQL с JSON для достижения гибкости.
История гибкости в PostgreSQL 10:22 Упоминает о поддержке гибкости схемы в PostgreSQL с 2003 года. Рассказывает о типе данных HStore, разработанном в 2003 году.
Введение в тип данных HSTORE 11:07 HSTORE позволяет хранить данные в виде ключей и значений. Пример использования: создание единой базы данных для субъектов образования. Проблема: большое количество специфических атрибутов для каждого вида субъекта.
Решение проблемы с HSTORE 12:05 Создание типа данных HSTORE для хранения 495 колонок в виде ключей и значений. Преимущества: бинарное хранение, возможность добавления новых полей, удобство работы.
Развитие HSTORE в PostgreSQL 13:05 HSTORE стал частью PostgreSQL с 2006 года. Недостатки: не был стандартом, не поддерживал массивы и объекты.
Появление JSON и JSONB 14:04 В 2012 году появился тип данных JSON, но он был медленным и неудобным. Разработка вложенного HSTORE и затем JSONB.
Особенности JSONB 15:15 JSONB имеет бинарное хранение, более 60 функций и операторов. Рост популярности JSONB после его выпуска.
Эволюция баз данных 16:16 Эволюция от примитивных баз данных до полнотекстовых и графовых. Конвергенция между обычными базами данных и NoSQL.
Поддержка JSON в PostgreSQL 17:42 PostgreSQL первым поддержал JSON. Различие между JSON и JSONB: бинарное хранение, отсутствие пробелов и дубликатов.
Проблемы с SQL и JSONB 19:09 SQL не поддерживает структуру JSON, что делает его «чёрным ящиком» для SQL. Пример запроса на поиск «красненького» с помощью SQL.
Расширение GKV 21:12 Разработка расширения GKV для работы со структурой JSON. Индексируемая поддержка операторов и функций в GKV.
Стандарт JSON в SQL 22:12 В декабре 2016 года стандарт SQL включил поддержку JSON. Появление JSON Path Language для работы с деревом JSON.
Планы по интеграции в PostgreSQL 24:03 Обсуждение интеграции JSON в PostgreSQL на совещании разработчиков. Надежда на включение поддержки JSON в версию 11 PostgreSQL.
Введение в JSON Path 24:27 Реализованы JSON Path и язык запросов для веб-приложений. Поддерживаются операции с массивами, фильтрами и методами. Примеры использования: функция JSON Exist для поиска ключей.
Синтаксис и функции JSON Path 25:23 Первый аргумент — JSON, второй — JSON Path. Возможность передачи переменных для фильтров. Функции для работы с JSON: JSON V, JSON Query, JSON Table.
Преимущества JSON Path 26:14 Возможность применения constraints к JSON. Пример преобразования датасета в революционный вид. Компрессия данных: уменьшение размера и улучшение локализации.
Стандартизация запросов 28:39 Запросы в PostgreSQL и NoSQL выглядят одинаково. Доступ к примерам и документации на GitHub. Веб-интерфейс для тестирования запросов.
Конвергенция баз данных 30:12 NoSQL-базы данных начинают понимать необходимость более сложных функций. Революционные базы данных реализуют NoSQL-фичи. Поддержка функциональных индексов.
Компрессия JSON 31:40 Проект по компрессии JSON с использованием словаря. Сравнение с MongoDB: словарная компрессия работает лучше для некоторых типов данных. Результаты компрессии для датасетов Delishz Bookmarks и Customer Reviews.
Производительность компрессии 33:35 Производительность JSON B-компрессии выше, чем у MongoDB. Параллельное выполнение запросов улучшает производительность. Использование CFS ZSTD для компрессии файловой системы.
Текстовый поиск 36:02 Текстовый поиск по JSON стал стандартным способом. Патч от Дмитрия Долгова доступен в версии 10.
Бенчмарки и скептицизм 37:50 Ненаучные бенчмарки показывают преимущество PostgreSQL перед MongoDB. Скептицизм по отношению к ненаучным бенчмаркам. Необходимость научных бенчмарков для подтверждения преимуществ PostgreSQL.
Введение в бенчмарк 38:39 Использован бенчмарк для оценки производительности NoSQL баз данных. Тестировались PostgreSQL, MongoDB, MySQL и собственная версия PostgreSQL Enterprise. Условия тестирования: 10-гигабитный Ethernet, 24-ядерные серверы, 48 ГБ памяти.
Детали тестирования 39:36 Применялись различные workload: 50% чтения, 95% чтения и 5% записи, 100% записей. Для PostgreSQL использовались асинхронные режимы работы. MongoDB тестировалась с разными настройками, включая синхронизацию на диск.
Проблемы с MongoDB 40:38 При синхронизации на диск MongoDB сильно замедлялась. Тестировались функциональные индексы, JSON, компрессия данных. Обнаружена проблема с обновлением JSON, разработан патч.
Результаты тестирования 42:25 PostgreSQL показал лучшую производительность на всех workload. После исправления проблемы с обновлением JSON производительность PostgreSQL улучшилась. MongoDB начинает замедляться при большом количестве клиентов.
Сравнение производительности 44:13 При увеличении количества записей PostgreSQL продолжает лидировать. При длинных строках PostgreSQL сталкивается с внутренними оптимизациями. MongoDB иногда показывает лучшую производительность на определённых workload.
Дополнительные возможности PostgreSQL 46:17 PostgreSQL способен обрабатывать до 200 тысяч транзакций в секунду. Партишин и шардинг позволяют значительно увеличить производительность. Разрабатывается новый подход к шардингу с использованием мультимастера.
Преимущества PostgreSQL 48:00 PostgreSQL предлагает более широкую функциональность и поддержку стандартов. Революционные базы данных решают задачи, которые NoSQL базы данных не могут. PostgreSQL имеет большое опенсорсное сообщество и расширяемую архитектуру.
Заключение 51:26 PostgreSQL демонстрирует лучшую производительность на современном железе. Функциональность PostgreSQL уже сейчас превосходит MongoDB. Подчёркивается важность реляционных баз данных в условиях развития технологий.