Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...Ontico
Механизм секционирования в Postgres имеет ряд ограничений, которые не позволяют использовать концепцию секционирования в полной мере. Среди таких ограничений можно выделить неэффективность планирования запросов для секционированных таблиц (линейный рост времени планирования при увеличении количества секций), отсутствие HASH-секционирования, необходимость ручного управления секциями.
В нашем докладе мы расскажем про расширение pg_pathman, которое позволяет обойти эти ограничения. pg_pathman реализует RANGE и HASH секционирования с логарифмическим и константным временами планирования соответственно. В pg_pathman поддерживается определение секции на этапе выполнения, конкурентное секционирование.
pg_pathman долго находился в стадии beta-тестирования, но теперь мы рады, наконец, сообщить о релизе 1.0. В докладе мы расскажем как про детали внутреннего устройства, так и про приёмы практического использования.
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
Онлайн-опросы неизменно показывают — всех нас очень интересуют две вещи: а) как писать наиболее эффективные SQL-запросы, б) как «читать» такие запросы, а точнее, как понимать, что именно делает или будет делать СУБД при их выполнении.
Эти две неразрывно связанные друг с другом темы чрезвычайно обширны, SQL-искусству можно (и нужно) учиться годами. Во время нашей очередной встречи в прямом эфире мы затронем некоторые аспекты обеих.
ЧАСТЬ 1: EXPLAIN
Алексей Ермаков. Как читать и интерпретировать вывод команды EXPLAIN
Команда EXPLAIN — основной инструмент анализа запросов, позволяющий разобраться, каким образом запрос будет выполняться и как можно его ускорить. Для сложных запросов вывод может быть довольно громоздким и его становится сложно читать. Я расскажу, из каких частей состоит план запроса, на какие «маркеры» в нём следует обращать внимание в первую очередь и как на это реагировать.
ЧАСТЬ 2: ADVANCED SQL
Николай Самохвалов. SQL современный и «продвинутый»
«Я не волшебник, я только учусь». Продвинутому SQL нас постоянно учат такие видные гуру как Markus Winand и Макс Богук. Рекурсивные CTE, LATERAL JOIN, виртуозная работа с массивами и строками, window functions и прочие модные штучки, которые помогут вам в дрессировке вашего Постгреса, — я постараюсь сделать хороший обзор, а если вдруг тема покажется интересной, то в следующих сеансах группового Постгреса мы обязательно пригласим настоящих гуру :)
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...DevDay
Даниил Каменский — ведущий специалист проектов SQLinfo.ru (http://sqlinfo.ru/) и Webew.ru (http://webew.ru/), архитектор баз данных в компании ЦВТ. Даниил на Моем Круге: http://kamenskiydaniil.moikrug.ru/.
Расширенный SQL в MySQL и PostgreSQL. Сравнение возможностей
Расширение SQL:
— пользовательские переменные;
— оконные функции;
— рекурсивный обход деревьев;
— расширения ANSI SQL для работы с таблицами.
Особенности и отличия базовых функций в MySQL и PostgreSQL:
— типы таблиц особенности физического размещения;
— работа с индексами;
— оптимизация подзапросов;
— трудности перевода: примеры.
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...Ontico
Механизм секционирования в Postgres имеет ряд ограничений, которые не позволяют использовать концепцию секционирования в полной мере. Среди таких ограничений можно выделить неэффективность планирования запросов для секционированных таблиц (линейный рост времени планирования при увеличении количества секций), отсутствие HASH-секционирования, необходимость ручного управления секциями.
В нашем докладе мы расскажем про расширение pg_pathman, которое позволяет обойти эти ограничения. pg_pathman реализует RANGE и HASH секционирования с логарифмическим и константным временами планирования соответственно. В pg_pathman поддерживается определение секции на этапе выполнения, конкурентное секционирование.
pg_pathman долго находился в стадии beta-тестирования, но теперь мы рады, наконец, сообщить о релизе 1.0. В докладе мы расскажем как про детали внутреннего устройства, так и про приёмы практического использования.
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
Онлайн-опросы неизменно показывают — всех нас очень интересуют две вещи: а) как писать наиболее эффективные SQL-запросы, б) как «читать» такие запросы, а точнее, как понимать, что именно делает или будет делать СУБД при их выполнении.
Эти две неразрывно связанные друг с другом темы чрезвычайно обширны, SQL-искусству можно (и нужно) учиться годами. Во время нашей очередной встречи в прямом эфире мы затронем некоторые аспекты обеих.
ЧАСТЬ 1: EXPLAIN
Алексей Ермаков. Как читать и интерпретировать вывод команды EXPLAIN
Команда EXPLAIN — основной инструмент анализа запросов, позволяющий разобраться, каким образом запрос будет выполняться и как можно его ускорить. Для сложных запросов вывод может быть довольно громоздким и его становится сложно читать. Я расскажу, из каких частей состоит план запроса, на какие «маркеры» в нём следует обращать внимание в первую очередь и как на это реагировать.
ЧАСТЬ 2: ADVANCED SQL
Николай Самохвалов. SQL современный и «продвинутый»
«Я не волшебник, я только учусь». Продвинутому SQL нас постоянно учат такие видные гуру как Markus Winand и Макс Богук. Рекурсивные CTE, LATERAL JOIN, виртуозная работа с массивами и строками, window functions и прочие модные штучки, которые помогут вам в дрессировке вашего Постгреса, — я постараюсь сделать хороший обзор, а если вдруг тема покажется интересной, то в следующих сеансах группового Постгреса мы обязательно пригласим настоящих гуру :)
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...DevDay
Даниил Каменский — ведущий специалист проектов SQLinfo.ru (http://sqlinfo.ru/) и Webew.ru (http://webew.ru/), архитектор баз данных в компании ЦВТ. Даниил на Моем Круге: http://kamenskiydaniil.moikrug.ru/.
Расширенный SQL в MySQL и PostgreSQL. Сравнение возможностей
Расширение SQL:
— пользовательские переменные;
— оконные функции;
— рекурсивный обход деревьев;
— расширения ANSI SQL для работы с таблицами.
Особенности и отличия базовых функций в MySQL и PostgreSQL:
— типы таблиц особенности физического размещения;
— работа с индексами;
— оптимизация подзапросов;
— трудности перевода: примеры.
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
Shared_buffers = 25% – это много или мало? Или в самый раз? Как понять, подходит ли эта – довольно устаревшая – рекомендация в вашем конкретном случае?
Пришло время подойти к вопросу подбора параметров postgresql.conf "по-взрослому". Не с помощью слепых "автотюнеров" или устаревших советов из статей и блогов, а на основе:
строго выверенных экспериментов на БД, производимых автоматизированно, в больших количествах и в условиях, максимально приближенных к "боевым",
глубокого понимания особенностей работы СУБД и ОС.
Используя Nancy CLI (https://gitlab.com/postgres.ai/nancy), мы рассмотрим конкретный пример – пресловутые shared_buffers – в разных ситуациях, в разных проектах и попробуем разобраться, как же подобрать оптимальную настройку для нашей инфраструктуры, БД и нагрузки.
https://pgconf.ru/2019/242809
"Formal verification of C code" Efremov D.V.
The talk covers the issue of developing correct software applying one of the types of static code analysis. The speaker will also address the matters of using such methods, their weaknesses and limitations, as well as the results they can guarantee.
PHDays VII, PDUG section, Moscow, May 24 2017.
"Формальная верификация кода на языке Си" Ефремов Д.В.
Доклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
Доклад представлен на конференции PHDays VII (2017) 24 мая в секции PDUG.
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
В докладе пойдёт речь о методе сериализации произвольных данных, который применяется в Яндексе. Этот метод основан на отображаемых в память (mmapped) файлах и не требует операции декодирования. Мы рассмотрим его преимущества и недостатки, поговорим об общих принципах такой сериализации и об устройстве отображаемых аналогов стандартных контейнеров.
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Ontico
Как быстро развивается сейчас PostgreSQL — общеизвестно. За несколько дней до РИТ++ заканчивается главный мировой форум разработчиков этой СУБД — конференция PGCon в Канаде. Большая команда разработчиков Postgres Professional принимает участие в этой конференции и готова рассказать все последние новости прямо с PGCon.
Параллельное исполнение запросов, новые стораджи, неутихающая тема Postgres vs key-value storage, распределенный Postgres, высокая доступность, многочисленные улучшения производительности, планы и интриги разработчиков — вот основные темы этой конференции.
Я остановлюсь подробнее на нашем вкладе в ожидаемый релиз 9.6 и планах на, возможно, релиз 10.0.
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)AvitoTech
В своём докладе Влад будет говорить об использовании STL, управлении памятью, как работает ARC и C++, лямбды и блоки. И самое главное: где и как можно «выстрелить себе в ногу».
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)AvitoTech
Являюсь разработчиком и администратором баз данных и связанных подсистем в Авито уже на протяжении многих лет. Хочу поделиться опытом, полученным в ходе масштабного проекта по миграции Авито между дата-центрами: как мы осуществляли планирование, подготовку и непосредственно переезд с переключением площадки. Опишу общие особенности и специфику нашей миграции, "подводные камни" и неочевидные ограничения, с которыми приходилось справляться, в том числе, и в экстремальных условиях. Доклад будет интересен как DBA так и DevOps специалистам.
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...AvitoTech
В своём докладе я расскажу о подходе к построению навигации в больших приложениях на примере демо-проекта, приближенного по архитектуре к приложению Avito. Данная архитектура позволяет поддерживать DeepLink’и и iPad в существующем приложении, показывать плашки Push-уведомлений в верхнем видимом модуле, совершать переходы из верхнего видимого модуля, вызванные корневым модулем приложения, а также централизовано управлять анимацией переходов. Разработанная нами навигация оборачивает UIKit для совершения переходов в засахаренном и декларативном стиле. Использование этой системы позволило снизить связанность кода для повышения его переиспользуемости и тестируемости, а также выработать общие стандарты к построению стека навигации.
Встреча iOS-разработчиков @ Avito #2 - 24 сентября 2016
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
Shared_buffers = 25% – это много или мало? Или в самый раз? Как понять, подходит ли эта – довольно устаревшая – рекомендация в вашем конкретном случае?
Пришло время подойти к вопросу подбора параметров postgresql.conf "по-взрослому". Не с помощью слепых "автотюнеров" или устаревших советов из статей и блогов, а на основе:
строго выверенных экспериментов на БД, производимых автоматизированно, в больших количествах и в условиях, максимально приближенных к "боевым",
глубокого понимания особенностей работы СУБД и ОС.
Используя Nancy CLI (https://gitlab.com/postgres.ai/nancy), мы рассмотрим конкретный пример – пресловутые shared_buffers – в разных ситуациях, в разных проектах и попробуем разобраться, как же подобрать оптимальную настройку для нашей инфраструктуры, БД и нагрузки.
https://pgconf.ru/2019/242809
"Formal verification of C code" Efremov D.V.
The talk covers the issue of developing correct software applying one of the types of static code analysis. The speaker will also address the matters of using such methods, their weaknesses and limitations, as well as the results they can guarantee.
PHDays VII, PDUG section, Moscow, May 24 2017.
"Формальная верификация кода на языке Си" Ефремов Д.В.
Доклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
Доклад представлен на конференции PHDays VII (2017) 24 мая в секции PDUG.
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
В докладе пойдёт речь о методе сериализации произвольных данных, который применяется в Яндексе. Этот метод основан на отображаемых в память (mmapped) файлах и не требует операции декодирования. Мы рассмотрим его преимущества и недостатки, поговорим об общих принципах такой сериализации и об устройстве отображаемых аналогов стандартных контейнеров.
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Ontico
Как быстро развивается сейчас PostgreSQL — общеизвестно. За несколько дней до РИТ++ заканчивается главный мировой форум разработчиков этой СУБД — конференция PGCon в Канаде. Большая команда разработчиков Postgres Professional принимает участие в этой конференции и готова рассказать все последние новости прямо с PGCon.
Параллельное исполнение запросов, новые стораджи, неутихающая тема Postgres vs key-value storage, распределенный Postgres, высокая доступность, многочисленные улучшения производительности, планы и интриги разработчиков — вот основные темы этой конференции.
Я остановлюсь подробнее на нашем вкладе в ожидаемый релиз 9.6 и планах на, возможно, релиз 10.0.
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)AvitoTech
В своём докладе Влад будет говорить об использовании STL, управлении памятью, как работает ARC и C++, лямбды и блоки. И самое главное: где и как можно «выстрелить себе в ногу».
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)AvitoTech
Являюсь разработчиком и администратором баз данных и связанных подсистем в Авито уже на протяжении многих лет. Хочу поделиться опытом, полученным в ходе масштабного проекта по миграции Авито между дата-центрами: как мы осуществляли планирование, подготовку и непосредственно переезд с переключением площадки. Опишу общие особенности и специфику нашей миграции, "подводные камни" и неочевидные ограничения, с которыми приходилось справляться, в том числе, и в экстремальных условиях. Доклад будет интересен как DBA так и DevOps специалистам.
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...AvitoTech
В своём докладе я расскажу о подходе к построению навигации в больших приложениях на примере демо-проекта, приближенного по архитектуре к приложению Avito. Данная архитектура позволяет поддерживать DeepLink’и и iPad в существующем приложении, показывать плашки Push-уведомлений в верхнем видимом модуле, совершать переходы из верхнего видимого модуля, вызванные корневым модулем приложения, а также централизовано управлять анимацией переходов. Разработанная нами навигация оборачивает UIKit для совершения переходов в засахаренном и декларативном стиле. Использование этой системы позволило снизить связанность кода для повышения его переиспользуемости и тестируемости, а также выработать общие стандарты к построению стека навигации.
Встреча iOS-разработчиков @ Avito #2 - 24 сентября 2016
"Икскод, джейсон, два скетча" Олег Фролов (Avito)AvitoTech
Дизайнер Avito и автор плагинов для Sketch расскажет о том, как интегрировать воркфлоу дизайнера и разработчика с помощью UIKit’a и прототипировать интерфейсы в нативной среде.
Встреча iOS-разработчиков @ Avito #2 - 24 сентября 2016
"Favicon на стероидах" Александр Амосов (Avito)AvitoTech
Сделать фавиконку вашего сайта информативной и даже добавить простейшую анимацию - эта задача не такая уж и простая, как может показаться на первый взгляд. В своем докладе я расскажу, какие сложности могут возникнуть и какими интересными браузерными API придется воспользоваться, чтобы реализовать эту задачу.
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)AvitoTech
В своём докладе Игорь расскажет: для каких целей SphinxSearch используется в Ozon.ru, какие способы обновления индексов были опробованы и на чём остановились, а также поделится опытом решения специфических задач в процессе эксплуатации.
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...Ontico
Я расскажу про новые возможности полнотекстового поиска, которые вошли в последний релиз PostgreSQL - поддержку фразового поиска и набор функций для манипулирования полнотекстовым типом данных (tsvector). Помимо этого, мы улучшили поддержку морфологических словарей, что привело к значительному увеличению числа поддерживаемых языков, оптимизировали работу со словарями, разработали новый индексный метод доступа RUM, который значительно ускорил выполнение ряда запросов с полнотекстовыми операторами.
"Kotlin и rx в android" Дмитрий Воронин (Avito)AvitoTech
Rx и Kotlin стали самыми модными трендами Android разработки в последнее время. Мы выпустили два приложения с архитектурой, построенной вокруг Rx, где нет ни одной строки на Java. Насколько удобно работать с этими инструментами? В своём докладе я расскажу, с какими трудностями мы столкнулись, как их победили, а также продемонстрирую несколько крутых и несложных подходов к разработке на этом стеке.
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)AvitoTech
После внедрения Swift в проект значительно увеличилось время сборки, что стало для нас существенным препятствием. В своём докладе я расскажу о том, как мы решили эту проблему, сократив время компиляции более чем в два раза.
"Удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Avito)AvitoTech
В своём докладе я расскажу о подходе к построению навигации в больших приложениях на примере демо-проекта, приближенного по архитектуре к приложению Avito.
Данная архитектура позволяет поддерживать DeepLink’и и iPad в существующем приложении, показывать плашки Push-уведомлений в верхнем видимом модуле, совершать переходы из верхнего видимого модуля, вызванные корневым модулем приложения, а также централизовано управлять анимацией переходов.
Разработанная нами навигация оборачивает UIKit для совершения переходов в засахаренном и декларативном стиле. Использование этой системы позволило снизить связанность кода для повышения его переиспользуемости и тестируемости, а также выработать общие стандарты к построению стека навигации. Наиболее хорошо эта система сочетается с архитектурой VIPER, но может использоваться и без нее.
По ходу доклада я также расскажу о том, как выглядела навигация в приложении Avito раньше; о том, какой она стала с началом использования архитектуры VIPER; о проблемах, которые мы увидели, и об итоговом решении. Также вкратце рассмотрим, что же скрывается под капотом у этой системы.
"Опыт участия в Microsoft Malware Classification Challenge" Михаил Трофимов ...AvitoTech
"Опыт участия в Microsoft Malware Classification Challenge"
Михаил Трофимов (Machine Learning Works)
Из доклада Михаила вы узнаете о технической стороне конкурса: как проанализировать 200GB данных на ноутбуке, какие проблемы возникали в процессе и как их решали.
Python Data Science meetup @ Avito 13.08.2016
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)AvitoTech
Basis.js - это мощный фреймворк для создания полноценных SPA приложений. Он давно и активно используется в production, в том числе и в Avito. Цель доклада - рассказать об основных возможностях фреймворка и побудить слушателей попробовать данный фреймворк при создании SPA-приложений.
"Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв ...AvitoTech
Антон поделится опытом, как быстро и просто сделать автокомплит, достать красивый контекст найденного слова после поиска (excerpts) и очистить тексты от разметки (HTML, LaTeX).
SphinxSearch meetup #2 @ Avito, 18.06.2016
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
"REST-SOA-View-Controller или Проектирование сервис-ориентированной системы с...AvitoTech
Егор Тафланиди (Redmadrobot)
Доклад будет включать в себя рассмотрения стека бизнес-логики, построенного с помощью автоматически сгенерированного кода, и сопряжение этого стека с сервером по всем REST'овым правилам. Вилка к розетке
"DeepLink’и в Avito" Артём Разинов (Avito)AvitoTech
Мы активно используем DeepLink’и в наших приложениях, как в push-уведомлениях, так и в ответах от API. В докладе я расскажу о том, как мы обрабатываем DeepLink’и для показа экранов из разных уголков приложения и для невидимых пользователю вещей.
Встреча iOS-разработчиков @ Avito #2 - 24 сентября 2016
“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)AvitoTech
Avito каждый день помогает миллионам продавцов и покупателей найти друга несмотря на “языковой барьер”. Из доклада вы узнаете, какие алгоритмы мы используем для нахождения ошибок и опечаток, синонимов и сокр.
SphinxSearch meetup #2 @ Avito, 18.06.2016
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)AvitoTech
В последнее время на популярных площадках появляется все больше конкурсов, связанных с компьютерным зрением, и в особенности — с сегментацией изображений. Некоторое время назад в таких задачах повсеместно доминировали подходы на основе сети U-Net. Евгений расскажет о решениях двух недавно завершившихся конкурсов, где хорошо зарекомендовали себя подходы на основе новой, претендующей на “народное признание“, сети.
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...AvitoTech
Большое количество статистической информации о ходе спортивных игр и соревнований собирается вручную. Для автоматизации этого процесса можно использовать методы компьютерного зрения. В докладе будут рассмотрены подходы к анализу видеопотока с игры в настольньй теннис в реальном времени. Будут предложены алгоритмы, основанные на искусственных нейронных сетях и классическом компьютерном зрении для определения игровых событий, траектории мяча и фиксации результатов с судейского табло, а также представлены первые результаты.
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)AvitoTech
В докладе будут рассмотрены основные научные работы, которые позволили нейронным сетям распознавать людей точнее, чем это делает человек. Также будут продемонстрированы результаты компании VisionLabs на независимых международных тестах Face Recognition Vendor Test института NIST и Labeled Faces in the Wild Университета Массачусетса.
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)AvitoTech
В Avito активно используется машинное обучение в различных микросервисах и продуктах. В докладе будет рассказано про часть, связанную с компьютерным зрением: AvitoNet. Это внутренний датасет и обученные на нём нейросети. Артур Кузин расскажет про задачи, которые ставились перед сервисом AvitoNet на этапе планирования, а также о выбранном подходе к решению и эволюции сервиса. Будут показаны результаты с демонстрацией работы AvitoNet во время подачи объявлений.
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)AvitoTech
Любой проект со временем растет и наполняется новыми функциональными возможностями. QA-процессы должны оперативно и адекватно на это реагировать. Например, увеличением количества тестов всех видов. В этом докладе мы будем говорить про UI-тесты, которые играют важную роль в создании качественного продукта.
Количество тестов постепенно растет: от 1000 к 3000, от 6000 к 9000+ и т.д. Чтобы эта лавина не "накрыла" наш QA-процесс, нужно с самого раннего этапа развития проекта автоматизации думать про эффективность всей системы и каждого теста в ней.
В этом докладе я расскажу, как сделать систему гибкой к изменениям, а также про эффективное использование каждого из тестов. Кроме того, мы поговорим про оценку и метрики не только процессов автоматизации, но и всего QA.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...AvitoTech
Мы все стремимся создавать качественные продукты. Мы знаем, что для того, чтобы создавать качественные тесты, их надо проверять, а значит, создавать тесты. Мы все знаем насколько это нужно… до того момента, пока не начинаем делать продукт.
И как только мы с горящими глазами садимся создавать свои тесты, нам тут же начинает мешать множество вещей: долго, дорого, ненужно, неэффективно… Хотя вот буквально пару недель назад все были согласны, что нужно писать тесты.
Давайте посмотрим, можно ли выбраться из этого лабиринта отговорок и создавать тесты быстро, дёшево и эффективно их потом поддерживать.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)AvitoTech
Continuous integration умеет запускать тесты. Для этого его и придумали. Однако, как всегда, есть нюансы, связанные с теми или иными видами тестов. На митапе я расскажу про особенности настройки CI для работы с нагрузочным, приёмочным, интеграционным, UI- и Smoke-тестированием, проверкой корректности установки и апгрейда. Поговорим о том, на какие грабли можно при этом наступить и как их обойти.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)AvitoTech
Вы думаете, что сделали все для того, чтобы ваша система автоматизации тестирования работала чётко и правильно? Закрыли список задач? Или наоборот, находитесь в поиске того, что еще не охвачено? Тогда этот доклад для вас и для всех, кто интересуется автоматизацией тестирования и её гранями.
Когда все процессы в системах автотестирования работают нормально и выдают релевантные результаты, есть риск обмануться, что сделано уже всё, впереди — лишь унылая актуализация автотестов. Доклад прольет свет на то, что можно делать полезного в рамках и вокруг автоматизации тестирования.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...AvitoTech
Когда в прошлом году Apple с выходом Xcode 8 отказались от UI Automator, мы, как и многие, оказались у разбитого корыта. Appium, который у нас использовался, потерял актуальность, мы начали искать альтернативы и нашли инструмент WebDriverAgent от Facebook. Доклад о том, с какими проблемами мы столкнулись, как мы их решали и как это повлияло на нашу инфраструктуру тестирования iOS-приложений.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
3. Пример секционирования
id title city
1 Велосипед Москва
2 Вафельница Санкт-Петербург
3 Фотоаппарат Москва
4 Контрабас Санкт-Петербург
id title city
1 Велосипед Москва
3 Фотоаппарат Москва
id title city
2 Вафельница Санкт-Петербург
4 Контрабас Санкт-Петербург
items
items_msc items_spb
5. Преимущества секционирования
● Рост производительности при условии, что
наиболее часто используемые данные
находятся в небольшом числе секций.
● Использование последовательного доступа к
небольшим секциям вместо индекса или
случайного доступа к одной большой таблице.
● Управление большими объемами данных.
● Редко используемые данные могут быть
вынесены на более дешевые и медленные
носители.
6. Когда нужно секционировать?
● Эмпирическое правило: размер таблицы
превышает размер физической памяти.
● Таблица содержит исторические данные, а
новые записи добавляются в последнюю
секцию.
● Содержимое таблицы должно быть
распределено между дисками или серверами.
8. Виды секционирования в PostgreSQL
● RANGE
CHECK(dt_created >= '2015-01-01' AND
dt_created < '2016-01-01')
● LIST
CHECK(city IN (‘Уфа’, ‘Оренбург’, ‘Челябинск’))
● HASH (?)
CHECK( id % 10 = 0)
…
CHECK( id % 10 = 9)
SELECT * FROM my_table
WHERE id = 5 AND (id % 10) = (5 % 10)
9. Проблемы
● Полный перебор при поиске подходящих
секций (constraint exclusion)
● Нет встроенной поддержки HASH-
секционирования
● Ручное управление секциями
10. Решение
Определить структуры данных, над которыми
можно выполнять эффективный поиск
RANGE
• бинарный поиск в сортированном массиве
• поиск в бинарном дереве
HASH, LIST
• хеш-таблица
O(log2
N)
≈ O(1)
12. Используемые средства
Hook-функции — лазейки, используемые для
внедрения в код СУБД:
• planner_hook
• set_rel_pathlist_hook
Path — прототип планов. Для каждой таблицы,
используемой в запросе, строятся
всевозможные способы обхода, из которых
выбирается лучший. На его основе строится
узел плана.
16. Cache
partitioning type RANGE
attribute dt_create
attribute type timestamp
children ■■■■■■■■■
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
22. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
23. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
T T T T
24. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
T T T T T T F F
25. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
T T T T T T F F F F F T
26. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
T T T T T T F F F F F T
T T F F
27. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
T T T T T T F F F F F T
T T F F
T T F T
28. 0 1 2 3
min 2016-01-01 2016-02-01 2016-03-01 2016-04-01
max 2016-02-01 2016-03-01 2016-04-01 2016-05-01
child orders_1 orders_2 orders_3 orders_4
Пример
OR
AND
dt_created >= ‘2016-01-15’ dt_created < ‘2016-03-01’ dt_created = ‘2016-04-01’
P T T T T T F F F F F P
P T F F
P T F P
29. 0 1 2 3
P T F P
Plan:
orders_4
dt_created >= ‘2016-01-15’ dt_created = ‘2016-04-01’full scan
orders_2orders_1
30. HASH секционирование
OID Partitioning info
431287
431290
431295
431299
partitioning type HASH
attribute city_id
attribute type integer
children ■■■■■■■■■
37. Эксперимент для HASH
Время планирования в зависимости от количества секций
в разбиении
Таблица:
CREATE TABLE hash_test(id INTEGER);
Количество созданных секций:
2, 4, 8, 16, 32, 64, 128, 512, 1024, 2048
Количество запросов:
10000 на каждой конфигурации
EXPLAIN ANALYZE
SELECT * FROM hash_test
WHERE id = 10 AND (id%<N> = 10%<N>);
(где <N> - количество секций)
39. Эксперимент для RANGE
Время планирования в зависимости от количества секций
в разбиении
Таблица:
CREATE TABLE range_test(id INTEGER);
Количество созданных секций:
2, 4, 8, 16, 32, 64, 128, 512, 1024, 2048
Количество запросов:
10000 на каждой конфигурации
EXPLAIN ANALYZE
SELECT * FROM range_test
WHERE id = 10;
41. Эксперимент для RANGE
Время планирования в зависимости от количества
секций в плане
Таблица:
CREATE TABLE range_test(
id INTEGER,
dt TIMESTAMP);
Количество созданных секций:
1095
Количество секций, попадающих в план:
от 1 до 1095