Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Как известно, PostgreSQL является постреляционной базой данных, что, помимо всего прочего, означает широкое использование массивов как для хранения, так и поиска данных. PostgreSQL обладает достаточно мощными и универсальными средствами оперирования массивами. Многие средства ориентированы на работу с многомерными массивами и, зачастую, избыточно сложны для работы с наиболее часто встречающимися одномерными массивами.
Многие пользователи PostgreSQL успешно используют модуль intarray в своей работе. Модуль предоставляет богатый набор функций и операторов для работы с одномерными целочисленными массивами. Пришло время обобщить этот набор на произвольные типы (текст, 64-битные числа, геометрические точки и т.д.) и добавить некоторые другие методы. Модуль anyarray объединен с модулем smlar, предоставлящим способы определения похожести массивов.
Разработчики сервиса Яндекс.Погода иногда сталкиваются с необходимостью проанализировать статистику наблюдений за погодой и выявить закономерности. Мы хотели использовать для этих целей Python, так как этот язык имеет много плюсов и на нем написана Яндекс.Погода. В докладе будет рассказано, как можно применять Python для быстрых вычислений и анализа данных на примере сервиса Яндекс.Погода.
Докладчик: Данил Руденко
О докладе:
У нашего зоопарка опять проблемы, которые необходимо решить максимально технологично!
На первом докладе мы поговорили о сверточных нейронных сетях, в этот раз рассмотрим такие виды нейронных сетей как автоэнкодеры и GAN’ы( генеративные состязательные сети). Также углубимся немного в Keras, напишем кастомный загрузчик данных и немного посмотрим на Jupyter Notebook.
Видео: https://youtu.be/tu-ee_4uAGY
Разработчики сервиса Яндекс.Погода иногда сталкиваются с необходимостью проанализировать статистику наблюдений за погодой и выявить закономерности. Мы хотели использовать для этих целей Python, так как этот язык имеет много плюсов и на нем написана Яндекс.Погода. В докладе будет рассказано, как можно применять Python для быстрых вычислений и анализа данных на примере сервиса Яндекс.Погода.
Докладчик: Данил Руденко
О докладе:
У нашего зоопарка опять проблемы, которые необходимо решить максимально технологично!
На первом докладе мы поговорили о сверточных нейронных сетях, в этот раз рассмотрим такие виды нейронных сетей как автоэнкодеры и GAN’ы( генеративные состязательные сети). Также углубимся немного в Keras, напишем кастомный загрузчик данных и немного посмотрим на Jupyter Notebook.
Видео: https://youtu.be/tu-ee_4uAGY
"Построение рекомендательной системы на Python" Василий Лексин (Avito)AvitoTech
В своём докладе ведущий аналитик Avito Василий Лексин поделится опытом построения рекомендательной системы для всех general категорий. Из рассказа вы узнаете, как создать такую систему с нуля, в том числе: как подготовить данные, обучить модель и сгенерировать рекомендации.
Python Data Science meetup @ Avito 13.08.2016
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Ontico
Популярность постгреса в мире и России растет, с каждым новым релизом появляется все новая и новая функциональность, постгрес становится реальной угрозой монополии Оракл, уже подвинул Монго на поле свободных NoSQL СУБД, однако мировое сообщество ждет решения для горизонтального масштабирования. Создание постгресового кластера является крайне трудной задачей, так как постгрес является базой данных, ориентированной на целостность данных, а используемый алгоритм обеспечения конкурентности транзакций ставит серьезные челленджи перед разработчиками алгоритмов распределенных транзакций.
Оказывается, уже целых пять групп работает над этой задачей, и мы расскажем про их подходы, трудности, в том числе, и политические. Отдельно остановимся на российском опыте и нашем вкладе в решение этой задачи.
Dmitry Andreev, Microsoft
DirectX12 enables graphics intensive apps to deliver better performance with greater flexibility and control. This technical session goes deep into the DirectX12 APIs you can use to reduce CPU rendering overhead, manage GPU resource usage more efficiently, and express the most cutting-edge 3D graphics possible across the spectrum of Windows devices.
PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Haganderpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
PostgreSQL supports several options for securing communications when deployed outside of the typical webserver/database combination, or in a high security environments. This talk will go into some details about the features that make this possible. The main areas discussed are:
Securing the PostgreSQL infrastructure and runtime environment.
Securing the channel between client and server using SSL, including an overview of the threats and how to secure against them.
Securing the login process with methods including LDAP, Kerberos or SSL certificates.
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
<сарказм> MongoDB правит бал в мире слабо-структурированных данных. Привлеченные в MongoDB инвестиции часто затмевают разум (особенно начинающих и доверчивых) разработчиков, которые с радостью бросаются в океан возможностей, предоставляемых NoSQL (это же круто!). Энтузиазм затихает после осознания того факта, что бесплатно ничего не бывает и надо писать своими руками то, что десятилетиями хорошо работает в традиционных реляционных базах данных, которые прекрасно справляются с нагрузками и данными 99% проектов, и ваш проект не входит в оставшийся один процент. </сарказм>
Мир баз данных за последние годы существенно изменился. Всеместное проникновение Интернет-технологий привело к необходимости работы с большим количеством разнородных данных в реальном времени, к чему традиционные реляционные СУБД оказались не готовы. Принято считать, что слабая масштабируемость и излишняя “жесткость” модели данных реляционных СУБД и являются основными причинами появляния и роста популярности NoSQL баз данных (далее, NoSQL).
В докладе мы остановимся на концептуальных предпосылках появления NoSQL и их классификации. Одним из “жупелов” NoSQL является поддержка типа данных JSON, который реализует документо-ориентированную модель данных. Документо-ориентированная модель данных является более гибкой и позволяет менять схему данных “на лету”, что сделать очень трудно в реляционных СУБД, особенно в системах, работающих под большой нагрузкой. Несмотря на успех NoSQL (активно распиаренный использованием в некоторых популярных Интернет-проектах), многие пользователи не готовы приносить в жертву целостность данных в угоду масштабируемости, но хотят иметь гибкость схемы данных в проверенных и надежных реляционных СУБД.
Нами была предложена и реализована поддержка документо-ориентированной модели в PostgreSQL (версия 9.4). Уже более 10 лет в PostgreSQL существует возможность работать со schema-less данными, используя наш модуль расширения hstore. Hstore предлагает хранилище вида "ключ-значение" с сохранением всех реляционных возможностей, что сделало его самым используемым
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Ковальpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Социальная сеть является классическим примером продукта, создаваемого людьми, движет которыми желание использовать как можно больше новомодных технологий. О последствиях, естественно, никто не задумывается. К счастью, в нужный момент было принято решение отказаться от части подобных новшеств и использовать старый-добрый PostgreSQL для создания сервиса.
Казалось бы, нет ничего хуже, чем реляционная база, для разработки социальной сети? Всем ведь хорошо известно, что типичная стратегия расширения подобного продукта заключается в горизонтальном “шардинге”, денормализации, многоуровневых слоях кеширования и прочих вещах, с которым реляционная СУБД не очень дружит.
Тем не менее, в Rubuki.com мы решили пойти наперекор трендам и сделать такую социальную сеть, где используется Rails без ORM, бизнес-логика живет в базе данных, и пользователи каждый день получают корректно отсортированную по дате появления событий новостную ленту (привет, Facebook!).
На примере реализации таких компонентов как полнотекстовый поиск, рекомендательный сервис и сервис премирования, я расскажу о нюансах разработки сети, успехах и проблемах, с которыми мы столкнулись.
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
С момента старта проекта на PostgreSQL были возложены серьёзные задачи. Это во многом предопределило успешное развитие всего продукта. Вокруг СУБД выстроены основные компоненты архитектуры, при этом сами базы берут на себя львиную долю обработки пользовательских запросов. Набор фич и расширений, легендарная надёжность PostgreSQL, наличие встроенной репликации, средств резервирования и архивирования — весь потенциал нашел своё воплощение, а наличие открытого профессионального комьюнити не оставляет шансов к неэффективной реализации.
В докладе будет дан обзор развития подсистем, сосредоточенных вокруг PostgreSQL, представлены параметры и режимы функционирования. Будут описаны успешные решения в рамках отдельного PostgreSQL-кластера и при распределенной обработке данных, приведены текущие вызовы, связанные с продолжающимся активным ростом проекта.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
PG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangaspgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Software architecture means a high-level view of the components of the system and their relationships. Understanding how various components work together is crucial if you want to start hacking on PostgreSQL, but also for understanding performance characteristics and run-time behavior of production systems.
Software architecture is not a single diagram, but consists of multiple views of the same system.
Process view: describing the processes at runtime and how they communicate.
Data flow: how a query passes through various parts of the system, and how the results flow back.
Data structures: how the Heap and Indexes are organized.
Source code: what's in the PostgreSQL source treem, and many more.
In this presentation, I will give an overview of the most important views necessary to understand how PostgreSQL works.
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Основные принципы устройства PostgreSQL, ключевые принципы правильного конфигурирования и подходы к оптимизации под высокие нагрузки — обо всем этом Илья поведает на специальном мастер-классе, посвященном "внутренностям" СУБД. Курс предназначен как для опытных профессионалов, так и для "молодых бойцов". Полученные в ходе прослушивания семинара знания пригодятся не только на практике. Они также призваны увеличить эффективность восприятия слушателями и, как следствие, полезность докладов, запланированных на второй день конференции.
Как база работает с памятью и файловой системой? Для чего предназначено версионирование? Что такое транзакции, как они устроены и почему полезны? Как строятся индексы и что происходит с запросом во время его выполнения? Что такое репликация и почему ее нельзя применять для backup/recovery? На все эти вопросы, и не только, ответит Илья.
Разобравшись с основами и "матчастью", мы перейдем к самому интересному: "тюнингу" базы в нагруженных системах, начиная с классического "Почему у меня тормозит запрос?" и заканчивая кручением "гаек" системных процессов "посгреса" под объемы данных и транзакционные нагрузки, соизмеримые с "big data".
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротковpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Регулярные выражения — мощный и широко применяемый инструмент для обработки текстовых данных. При поиске по регулярному выражению в большом наборе строк, становится актуальным вопрос о применении индекса. В то же время, использование индексов для поиска по регулярному выражению — нетривиальная задача.
Существует два основных подхода к выполнению поиска по регулярным выражениям с помощью индекса: "FREE indexing engine" [1], основанный на выделении из регулярного выражения непрерывных фрагментов текста, а также метод, разработанный для Google Code Search [2], осуществляющий рекурсивный анализ составных частей регулярного выражения, с целью выявления его атрибутов. В целом же, оба этих подхода используют обратные индексы на основе k-грам (подстрок исходной строки длины k) и различаются методом извлечения k-грам из регулярного выражения для последующего поиска по индексу.
Данный доклад представляет новый метод извлечений k-грам из регулярного выражения, основанный не на анализе исходного регулярного выражения, а на преобразовании соответствующего конечного автомата. Предлагаемый подход позволяет осуществить более полное извлечение k-грам из регулярного выражения, что подтверждается примерами. Данный подход был реализован в модуле pg_trgm СУБД PostgreSQL 9.3 [3].
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Доклад посвящен улучшениям в GIN-индексах в PostgreSQL 9.4 и далее, которые выводят GIN на новый уровень производительности и расширяемости. Наиболее важные улучшения:
Сжатие постинг-листов. Индексы становятся в среднем в 2 раза компактнее. При это не требуется никаких изменений со стороны opclass'ов. pg_upgrade поддерживается, индексы сжимаются "на лету".
Алгоритм быстрого сканирования GIN-индексов позволяет пропускать части больших постинг-деревьев при сканировании. Этот алгоритм кардинально улучшает скорость поиска для hstore и jsonb операторов, а также случай "частое_слово & редкое_слово" для полнотекстового поиска.
Хранение дополнительной информации в постинг-листах. Содержимое этой дополнительной информации зависит от конкретной разновидности GIN-индекса (определяется opclass'ом). Дополнительная информация может быть полезна при самых разных видах поиска: поиск по фразам, поиск по похожести массивов, обратный полнотекстовый поиск (поиск тех tsquery, которые подходят под tsvector), обратный поиск по регулярным выражением (поиск регулярных выражений, подходящих под строку), поиск по строковой "похожести" с использованием позиционных n-грам.
Ранжирование по индексу. Это улучшение позволяет возвращать результаты из индекса таким образом, как это определяет opclass. Наиболее важное применение — возвращение результатов полнотекстового поиска в порядке релевантности, кардинально снижающее загрузку IO. Но есть также и другие применения, такие как возврат массивов или строк в порядке их "похожести".
В докладе представлены результаты "бенчмарков" полнотектового поиска, использующие реальные наборы данных (6М и 15М документов) и реальные поисковые запросы, которые демонстрируют, что улучшенный полнотекстовый поиск PostgreSQL (со всеми накладными расходами ACID) может превосходить по скорости Sphinx.
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Наша небольшая компания занимается консалтингом, а, значит, мы постоянно сталкиваемся с той стороной проектов, о которой обычно не рассказывают на конференциях. Решения, внедряемые в типичном проекте, можно условно разделить на "красивые, но неработоспособные", "плохие", "очень плохие" и "удивительные". То решение, о котором пойдет речь в этом докладе, придумали не мы, и, когда авторы впервые представили его широкой общественности пару лет назад на конференции HighLoad, оно многими было воспринято как "удивительное". Тем не менее, решение работает и поныне, к чему мы приложили руку, поэтому у нас есть о чем рассказать. Да, наш девиз — "от удивительного к плохому!" :)
Речь пойдет о хранении большого количества статического пользовательского контента в PostgreSQL базе — согласитесь, не самая распространенная идея :) Традиционно считается, что СУБД не предназначены для подобных вариантов использования. Тем не менее, свойства СУБД, такие как поддержка транзакций и репликации, очень хорошо помогают для решения этого класса задач. После того как удивление проходит, и оказывается, что решение уже внедрено и работает, через некоторое время возникают новые вызовы — как сделать так, чтобы оно продолжало работать под возрастающей нагрузкой? Оптимизация производительности существующей и работающей 24x7 в продакшн базы — увлекательное действие, чем-то похожее на расследование преступления или на серию "Доктора Хауса". Если вы любите детективы и реляционные базы данных — приходите на мой доклад, и я постараюсь сделать так, чтобы вы не заснули!
More Related Content
Similar to PG Day'14 Russia, Модуль anyarray, Федор Сигаев
"Построение рекомендательной системы на Python" Василий Лексин (Avito)AvitoTech
В своём докладе ведущий аналитик Avito Василий Лексин поделится опытом построения рекомендательной системы для всех general категорий. Из рассказа вы узнаете, как создать такую систему с нуля, в том числе: как подготовить данные, обучить модель и сгенерировать рекомендации.
Python Data Science meetup @ Avito 13.08.2016
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Ontico
Популярность постгреса в мире и России растет, с каждым новым релизом появляется все новая и новая функциональность, постгрес становится реальной угрозой монополии Оракл, уже подвинул Монго на поле свободных NoSQL СУБД, однако мировое сообщество ждет решения для горизонтального масштабирования. Создание постгресового кластера является крайне трудной задачей, так как постгрес является базой данных, ориентированной на целостность данных, а используемый алгоритм обеспечения конкурентности транзакций ставит серьезные челленджи перед разработчиками алгоритмов распределенных транзакций.
Оказывается, уже целых пять групп работает над этой задачей, и мы расскажем про их подходы, трудности, в том числе, и политические. Отдельно остановимся на российском опыте и нашем вкладе в решение этой задачи.
Dmitry Andreev, Microsoft
DirectX12 enables graphics intensive apps to deliver better performance with greater flexibility and control. This technical session goes deep into the DirectX12 APIs you can use to reduce CPU rendering overhead, manage GPU resource usage more efficiently, and express the most cutting-edge 3D graphics possible across the spectrum of Windows devices.
PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Haganderpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
PostgreSQL supports several options for securing communications when deployed outside of the typical webserver/database combination, or in a high security environments. This talk will go into some details about the features that make this possible. The main areas discussed are:
Securing the PostgreSQL infrastructure and runtime environment.
Securing the channel between client and server using SSL, including an overview of the threats and how to secure against them.
Securing the login process with methods including LDAP, Kerberos or SSL certificates.
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
<сарказм> MongoDB правит бал в мире слабо-структурированных данных. Привлеченные в MongoDB инвестиции часто затмевают разум (особенно начинающих и доверчивых) разработчиков, которые с радостью бросаются в океан возможностей, предоставляемых NoSQL (это же круто!). Энтузиазм затихает после осознания того факта, что бесплатно ничего не бывает и надо писать своими руками то, что десятилетиями хорошо работает в традиционных реляционных базах данных, которые прекрасно справляются с нагрузками и данными 99% проектов, и ваш проект не входит в оставшийся один процент. </сарказм>
Мир баз данных за последние годы существенно изменился. Всеместное проникновение Интернет-технологий привело к необходимости работы с большим количеством разнородных данных в реальном времени, к чему традиционные реляционные СУБД оказались не готовы. Принято считать, что слабая масштабируемость и излишняя “жесткость” модели данных реляционных СУБД и являются основными причинами появляния и роста популярности NoSQL баз данных (далее, NoSQL).
В докладе мы остановимся на концептуальных предпосылках появления NoSQL и их классификации. Одним из “жупелов” NoSQL является поддержка типа данных JSON, который реализует документо-ориентированную модель данных. Документо-ориентированная модель данных является более гибкой и позволяет менять схему данных “на лету”, что сделать очень трудно в реляционных СУБД, особенно в системах, работающих под большой нагрузкой. Несмотря на успех NoSQL (активно распиаренный использованием в некоторых популярных Интернет-проектах), многие пользователи не готовы приносить в жертву целостность данных в угоду масштабируемости, но хотят иметь гибкость схемы данных в проверенных и надежных реляционных СУБД.
Нами была предложена и реализована поддержка документо-ориентированной модели в PostgreSQL (версия 9.4). Уже более 10 лет в PostgreSQL существует возможность работать со schema-less данными, используя наш модуль расширения hstore. Hstore предлагает хранилище вида "ключ-значение" с сохранением всех реляционных возможностей, что сделало его самым используемым
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Ковальpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Социальная сеть является классическим примером продукта, создаваемого людьми, движет которыми желание использовать как можно больше новомодных технологий. О последствиях, естественно, никто не задумывается. К счастью, в нужный момент было принято решение отказаться от части подобных новшеств и использовать старый-добрый PostgreSQL для создания сервиса.
Казалось бы, нет ничего хуже, чем реляционная база, для разработки социальной сети? Всем ведь хорошо известно, что типичная стратегия расширения подобного продукта заключается в горизонтальном “шардинге”, денормализации, многоуровневых слоях кеширования и прочих вещах, с которым реляционная СУБД не очень дружит.
Тем не менее, в Rubuki.com мы решили пойти наперекор трендам и сделать такую социальную сеть, где используется Rails без ORM, бизнес-логика живет в базе данных, и пользователи каждый день получают корректно отсортированную по дате появления событий новостную ленту (привет, Facebook!).
На примере реализации таких компонентов как полнотекстовый поиск, рекомендательный сервис и сервис премирования, я расскажу о нюансах разработки сети, успехах и проблемах, с которыми мы столкнулись.
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
С момента старта проекта на PostgreSQL были возложены серьёзные задачи. Это во многом предопределило успешное развитие всего продукта. Вокруг СУБД выстроены основные компоненты архитектуры, при этом сами базы берут на себя львиную долю обработки пользовательских запросов. Набор фич и расширений, легендарная надёжность PostgreSQL, наличие встроенной репликации, средств резервирования и архивирования — весь потенциал нашел своё воплощение, а наличие открытого профессионального комьюнити не оставляет шансов к неэффективной реализации.
В докладе будет дан обзор развития подсистем, сосредоточенных вокруг PostgreSQL, представлены параметры и режимы функционирования. Будут описаны успешные решения в рамках отдельного PostgreSQL-кластера и при распределенной обработке данных, приведены текущие вызовы, связанные с продолжающимся активным ростом проекта.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
PG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangaspgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Software architecture means a high-level view of the components of the system and their relationships. Understanding how various components work together is crucial if you want to start hacking on PostgreSQL, but also for understanding performance characteristics and run-time behavior of production systems.
Software architecture is not a single diagram, but consists of multiple views of the same system.
Process view: describing the processes at runtime and how they communicate.
Data flow: how a query passes through various parts of the system, and how the results flow back.
Data structures: how the Heap and Indexes are organized.
Source code: what's in the PostgreSQL source treem, and many more.
In this presentation, I will give an overview of the most important views necessary to understand how PostgreSQL works.
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Основные принципы устройства PostgreSQL, ключевые принципы правильного конфигурирования и подходы к оптимизации под высокие нагрузки — обо всем этом Илья поведает на специальном мастер-классе, посвященном "внутренностям" СУБД. Курс предназначен как для опытных профессионалов, так и для "молодых бойцов". Полученные в ходе прослушивания семинара знания пригодятся не только на практике. Они также призваны увеличить эффективность восприятия слушателями и, как следствие, полезность докладов, запланированных на второй день конференции.
Как база работает с памятью и файловой системой? Для чего предназначено версионирование? Что такое транзакции, как они устроены и почему полезны? Как строятся индексы и что происходит с запросом во время его выполнения? Что такое репликация и почему ее нельзя применять для backup/recovery? На все эти вопросы, и не только, ответит Илья.
Разобравшись с основами и "матчастью", мы перейдем к самому интересному: "тюнингу" базы в нагруженных системах, начиная с классического "Почему у меня тормозит запрос?" и заканчивая кручением "гаек" системных процессов "посгреса" под объемы данных и транзакционные нагрузки, соизмеримые с "big data".
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротковpgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Регулярные выражения — мощный и широко применяемый инструмент для обработки текстовых данных. При поиске по регулярному выражению в большом наборе строк, становится актуальным вопрос о применении индекса. В то же время, использование индексов для поиска по регулярному выражению — нетривиальная задача.
Существует два основных подхода к выполнению поиска по регулярным выражениям с помощью индекса: "FREE indexing engine" [1], основанный на выделении из регулярного выражения непрерывных фрагментов текста, а также метод, разработанный для Google Code Search [2], осуществляющий рекурсивный анализ составных частей регулярного выражения, с целью выявления его атрибутов. В целом же, оба этих подхода используют обратные индексы на основе k-грам (подстрок исходной строки длины k) и различаются методом извлечения k-грам из регулярного выражения для последующего поиска по индексу.
Данный доклад представляет новый метод извлечений k-грам из регулярного выражения, основанный не на анализе исходного регулярного выражения, а на преобразовании соответствующего конечного автомата. Предлагаемый подход позволяет осуществить более полное извлечение k-грам из регулярного выражения, что подтверждается примерами. Данный подход был реализован в модуле pg_trgm СУБД PostgreSQL 9.3 [3].
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Доклад посвящен улучшениям в GIN-индексах в PostgreSQL 9.4 и далее, которые выводят GIN на новый уровень производительности и расширяемости. Наиболее важные улучшения:
Сжатие постинг-листов. Индексы становятся в среднем в 2 раза компактнее. При это не требуется никаких изменений со стороны opclass'ов. pg_upgrade поддерживается, индексы сжимаются "на лету".
Алгоритм быстрого сканирования GIN-индексов позволяет пропускать части больших постинг-деревьев при сканировании. Этот алгоритм кардинально улучшает скорость поиска для hstore и jsonb операторов, а также случай "частое_слово & редкое_слово" для полнотекстового поиска.
Хранение дополнительной информации в постинг-листах. Содержимое этой дополнительной информации зависит от конкретной разновидности GIN-индекса (определяется opclass'ом). Дополнительная информация может быть полезна при самых разных видах поиска: поиск по фразам, поиск по похожести массивов, обратный полнотекстовый поиск (поиск тех tsquery, которые подходят под tsvector), обратный поиск по регулярным выражением (поиск регулярных выражений, подходящих под строку), поиск по строковой "похожести" с использованием позиционных n-грам.
Ранжирование по индексу. Это улучшение позволяет возвращать результаты из индекса таким образом, как это определяет opclass. Наиболее важное применение — возвращение результатов полнотекстового поиска в порядке релевантности, кардинально снижающее загрузку IO. Но есть также и другие применения, такие как возврат массивов или строк в порядке их "похожести".
В докладе представлены результаты "бенчмарков" полнотектового поиска, использующие реальные наборы данных (6М и 15М документов) и реальные поисковые запросы, которые демонстрируют, что улучшенный полнотекстовый поиск PostgreSQL (со всеми накладными расходами ACID) может превосходить по скорости Sphinx.
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Наша небольшая компания занимается консалтингом, а, значит, мы постоянно сталкиваемся с той стороной проектов, о которой обычно не рассказывают на конференциях. Решения, внедряемые в типичном проекте, можно условно разделить на "красивые, но неработоспособные", "плохие", "очень плохие" и "удивительные". То решение, о котором пойдет речь в этом докладе, придумали не мы, и, когда авторы впервые представили его широкой общественности пару лет назад на конференции HighLoad, оно многими было воспринято как "удивительное". Тем не менее, решение работает и поныне, к чему мы приложили руку, поэтому у нас есть о чем рассказать. Да, наш девиз — "от удивительного к плохому!" :)
Речь пойдет о хранении большого количества статического пользовательского контента в PostgreSQL базе — согласитесь, не самая распространенная идея :) Традиционно считается, что СУБД не предназначены для подобных вариантов использования. Тем не менее, свойства СУБД, такие как поддержка транзакций и репликации, очень хорошо помогают для решения этого класса задач. После того как удивление проходит, и оказывается, что решение уже внедрено и работает, через некоторое время возникают новые вызовы — как сделать так, чтобы оно продолжало работать под возрастающей нагрузкой? Оптимизация производительности существующей и работающей 24x7 в продакшн базы — увлекательное действие, чем-то похожее на расследование преступления или на серию "Доктора Хауса". Если вы любите детективы и реляционные базы данных — приходите на мой доклад, и я постараюсь сделать так, чтобы вы не заснули!
7. PGDay.RU, 2014Фёдор Сигаев
Intarray
● Sort, sort_desc, sort_asc
● Uniq
● Idx
● - вычитание массивов
● + union массивов
Большое количество операций и функций
перенесено в ядро
11. PGDay.RU, 2014Фёдор Сигаев
Anyarray: smlar
● Тексты в том или ином виде
● ,Блоги стенки
● Товары
● / /Картинки картины фотки
● , ,Музыка кино книги
12. PGDay.RU, 2014Фёдор Сигаев
Anyarray: smlar
● Экспертная оценка
– Тяжело формализовать
● /Свойства атрибуты объектов
– Набор атрибутов
● /Пользовательский интерес внимание
(collaboration filtering, CF)
– ,Рейтинг лайки
14. PGDay.RU, 2014Фёдор Сигаев
Anyarray: smlar
● Similarity 0≤S≤1
– S 1 – (≡ абсолютно похожие объекты но не
)обязательно идентичные
– S≡0 вообще ничего общего
● S(A,B) = S(B,A) - симметрия
● Два объекта похожи если
S(A,B)≥ Sthreshold
● A~B Aи ~С ≠ B~C
~~
≠
15. PGDay.RU, 2014Фёдор Сигаев
Обозначения
Na
, Nb
- -кол во уникальных элементов в массиве
Nu
– -кол во уникальных элементов в объединении
Na union Nb
Ni
– -кол во уникальных элементов в пересечении
Na intersection Nb
22. PGDay.RU, 2014Фёдор Сигаев
Рекомендационная система
● item-item CF ( )стабильность и независимость
– : cosineМетрика
● Данные MovieLens
– 1mln rates: 6000 users on 4000 movies
– 10 mln rates: 72000 users on 10,000 movies
23. PGDay.RU, 2014Фёдор Сигаев
Рекомендационная система
● :Входные данные
– movies(mid,title,genre,description)
– rates(uid,mid,rate)
● 1:Шаг Делаем простые лайки из оценки
u: r=1 if r>avg(rate)
rates(uid,mid,like)
● Результирующая табличка
ihu(itemid,{users}, {rates})
24. PGDay.RU, 2014Фёдор Сигаев
Рекомендационная система
● 2. item-itemШаг матрица
● item-itemПредвычисляем матрицу
ii(itemid1,itemid2, sml) from ihu table
● 3. ,Шаг Собственно результат
– Q1: для заданного кино найти наиболее
похожие
– Q2: для заданного пользователя найти
рекомендации
25. PGDay.RU, 2014Фёдор Сигаев
Рекомендационная система
● 1.Шаг
– Produce table ihu (itemid,{users})
– Create index to accelerate % operation
CREATE INDEX ihu_users_itemid_idx ON ihu
USING gist (users _int4_sml_ops, itemid);
26. PGDay.RU, 2014Фёдор Сигаев
Шаг 2. Item-Item
SELECT
r1.itemid as itemid1,
r2.itemid as itemid2,
smlar(r1.users,r2.users) as sml
INTO ii
FROM
ihu AS r1,
ihu AS r2
WHERE
r1.users % r2.users AND
r1.itemid > r2.itemid;
Smlar.threshold=0.2
SELECT 209657
Index | no-index
526195 ms | 1436433
Speedup 2.7
Smlar.threshold=0.4
SELECT 8955
Index | no-index
253378 ms | 1172432
Speedup 4.6
27. PGDay.RU, 2014Фёдор Сигаев
Шаг 2. Item-Item
CREATE INDEX ii_itemid1_idx on ii(itemid1);
CREATE INDEX ii_itemid2_idx on ii(itemid2);
CREATE OR REPLACE VIEW ii_view AS
SELECT itemid1, itemid2, sml FROM ii
UNION ALL
SELECT itemid2, itemid1, sml FROM ii;
28. PGDay.RU, 2014Фёдор Сигаев
Шаг 3. Результат
CREATE OR REPLACE FUNCTION smlmovies(
movie_id integer,num_movies integer,
itemid OUT integer, sml OUT float, title OUT text)
RETURNS SETOF RECORD AS $$
SELECT s.itemid,s.sml::float, m.title
FROM movies m,
( SELECT itemid2 AS itemid, sml FROM ii_view
WHERE itemid1 = movie_id
UNION ALL
SELECT movie_id, 1 -- just to illustration
) AS s
WHERE
m.mid=s.itemid
GROUP BY s.itemid, rates, s.sml, m.title
ORDER BY s.sml DESC
LIMIT num_movies;
$$ LANGUAGE SQL IMMUTABLE;
29. PGDay.RU, 2014Фёдор Сигаев
Шаг 3. Результат
=# select itemid, sml,title from smlmovies(1104,10);
itemid | sml | title
--------+-------------------+----------------------------------------
1104 | 1 | Streetcar Named Desire, A (1951)
1945 | 0.436752468347549 | On the Waterfront (1954)
1952 | 0.397110104560852 | Midnight Cowboy (1969)
1207 | 0.392107665538788 | To Kill a Mockingbird (1962)
1247 | 0.387987941503525 | Graduate, The (1967)
2132 | 0.384177327156067 | Who's Afraid of Virginia Woolf? (1966)
923 | 0.381125450134277 | Citizen Kane (1941)
926 | 0.377328515052795 | All About Eve (1950)
1103 | 0.363485038280487 | Rebel Without a Cause (1955)
1084 | 0.356647849082947 | Bonnie and Clyde (1967)
(10 rows)
Time: 5.780 ms
30. PGDay.RU, 2014Фёдор Сигаев
Шаг 3. Результат
# select itemid, sml,title from smlmovies(364,10);
itemid | sml | title
--------+-------------------+----------------------------------------
364 | 1 | Lion King, The (1994)
595 | 0.556357622146606 | Beauty and the Beast (1991)
588 | 0.547775387763977 | Aladdin (1992)
1 | 0.472894549369812 | Toy Story (1995)
2081 | 0.4552321434021 | Little Mermaid, The (1989)
1907 | 0.442262977361679 | Mulan (1998)
1022 | 0.41527932882309 | Cinderella (1950)
594 | 0.407131761312485 | Snow White and the Seven Dwarfs (1937)
2355 | 0.405456274747849 | Bug's Life, A (1998)
2078 | 0.389742106199265 | Jungle Book, The (1967)
(10 rows)
31. PGDay.RU, 2014Фёдор Сигаев
Шаг 3. Результат
=# select itemid, sml,title from smlmovies(919,10);
itemid | sml | title
--------+-------------------+-----------------------------------------
919 | 1 | Wizard of Oz, The (1939)
260 | 0.495729923248291 | Star Wars: Episode IV - A New Hope (1977
912 | 0.483502447605133 | Casablanca (1942)
1198 | 0.481675773859024 | Raiders of the Lost Ark (1981)
1196 | 0.468295514583588 | Star Wars: Episode V - The Empire Strike
1028 | 0.460547566413879 | Mary Poppins (1964)
1097 | 0.455985635519028 | E.T. the Extra-Terrestrial (1982)
1247 | 0.449493944644928 | Graduate, The (1967)
858 | 0.446784257888794 | Godfather, The (1972)
594 | 0.44676461815834 | Snow White and the Seven Dwarfs (1937)
(10 rows)
Time: 10.207 ms
32. PGDay.RU, 2014Фёдор Сигаев
Мой профиль
CREATE TABLE myprofile (mid integer);
INSERT INTO myprofile VALUES
(912),(1961),(1210),(1291),(3148),(356),(919),(2943),(362),(2116);
=# select p.mid, m.title from movies m, myprofile p where m.mid=p.mid;
mid | title
------+---------------------------------------------------
912 | Casablanca (1942)
1961 | Rain Man (1988)
1210 | Star Wars: Episode VI - Return of the Jedi (1983)
1291 | Indiana Jones and the Last Crusade (1989)
3148 | Cider House Rules, The (1999)
356 | Forrest Gump (1994)
919 | Wizard of Oz, The (1939)
2943 | Indochine (1992)
362 | Jungle Book, The (1994)
2116 | Lord of the Rings, The (1978)
(10 rows)
33. PGDay.RU, 2014Фёдор Сигаев
Порекумендуйте мне
SELECT t.itemid2 as itemid, t.sml::float, m.title
FROM movies m,
(
WITH usermovies AS (
SELECT mid FROM myprofile
),
mrec AS (
SELECT itemid2, sml
FROM ii_view ii, usermovies um
WHERE
ii.itemid1=um.mid AND
ii.itemid2 NOT IN ( SELECT * FROM usermovies)
ORDER BY itemid2 ASC
)
SELECT itemid2, sml, rank()
OVER (PARTITION BY itemid2 ORDER BY sml DESC) FROM mrec
) t
WHERE t.itemid2=m.mid AND t.rank = 1
ORDER BY t.sml DESC
LIMIT 10;
34. PGDay.RU, 2014Фёдор Сигаев
Пожалуйста!
itemid | sml | title
--------+-------+-------------------------------------------------------
1196 | 0.71 | Star Wars: Episode V - The Empire Strikes Back (1980)
260 | 0.67 | Star Wars: Episode IV - A New Hope (1977)
1198 | 0.67 | Raiders of the Lost Ark (1981)
1036 | 0.58 | Die Hard (1988)
2571 | 0.57 | Matrix, The (1999)
1240 | 0.56 | Terminator, The (1984)
2115 | 0.56 | Indiana Jones and the Temple of Doom (1984)
589 | 0.54 | Terminator 2: Judgment Day (1991)
592 | 0.54 | Batman (1989)
923 | 0.53 | Citizen Kane (1941)
1270 | 0.53 | Back to the Future (1985)
1197 | 0.52 | Princess Bride, The (1987)
480 | 0.51 | Jurassic Park (1993)
1200 | 0.51 | Aliens (1986)
457 | 0.51 | Fugitive, The (1993)
1374 | 0.50 | Star Trek: The Wrath of Khan (1982)
2000 | 0.50 | Lethal Weapon (1987)
2628 | 0.50 | Star Wars: Episode I - The Phantom Menace (1999)
2028 | 0.49 | Saving Private Ryan (1998)
1610 | 0.49 | Hunt for Red October, The (1990)
(20 rows)
35. PGDay.RU, 2014Фёдор Сигаев
Рекомендационная система
● !Очень простая система
● !Работает
● Периодический пересчет
(10 mln <10 )лайков минут на МакБуке
● ,Нужно чистить от спама эскперты в кино не
.являются экпертами в музыке