JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
Мы так сильно полагаемся на фреймворки, что уже забыли, как работают компьютеры. Когда что-то сильно тормозит и непонятно, как это решить, приходится учиться мыслить алгоритмически. Как анализировать "узкие" места в коде? Выполняет ли код лишнюю работу? Как можно достичь того же результата, делая меньше? Практикуя алгоритмическое мышление, отвечать на подобные вопросы становится гораздо легче, и рано или поздно вы научитесь писать код так, чтобы он был быстрым изначально, по умолчанию. Так что позвольте мне познакомить вас с алгоритмами еще раз, в практичном виде, применимом в вашей повседневной работе.
Структуры данных в JavaScript | Odessa Frontend Meetup #13OdessaFrontend
Алгоритмы и структуры данных — это фундаментальные основы в программировании. Но, при изучении JavaScript, на это не хватает времени. Прогрессивные фрейморки высокоуровнего языка богаты функциональностью и оптимизацией, но достаточно ли этого? Николай Громов рассказывает как он понял, что алгоритмы никуда не ушли и почему понадобились структуры данных, а так же сравнивает их производительность на JavaScript.
Правильная организация клиент-карточного взаимодействия — Антон КорзуновYandex
Как говорил один человек, нет данных — нет проблемы. Но проблема в том, что в современном мире данные есть, и их много . Ещё в современном мире очень любят данные отображать, например, на карте — только это не всегда хорошо получается.
Из доклада вы узнаете о типичных ошибках передачи данных на карту и простых способах этих ошибок избежать.
Что API Карт забыл на сервере — Антон КорзуновYandex
Принято считать, что API Карт — это JavaScript-библиотека, которая работает в браузере. Это утверждение верно ровно в той степени, в какой сферичен конь в вакууме.
Из доклада вы узнаете, зачем API нужен бэкенд, почему писать его придётся вам и как API Карт будет помогать этой задаче с фронтенда.
P.S. Будет интересно разным слоям населения.
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
Предлагаемый подход позволяет без труда получить параллельную асинхронную обработку данных без явного использования средств синхронизации, по максимуму задействуя доступные вычислительные ресурсы. Использование сопрограмм значительно упрощает написание многопоточного кода. Это дает возможность сконцентрироваться непосредственно на задаче обработки данных, не занимаясь вопросами синхронизации различных операций, включая асинхронную работу с сетью.
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
Мы так сильно полагаемся на фреймворки, что уже забыли, как работают компьютеры. Когда что-то сильно тормозит и непонятно, как это решить, приходится учиться мыслить алгоритмически. Как анализировать "узкие" места в коде? Выполняет ли код лишнюю работу? Как можно достичь того же результата, делая меньше? Практикуя алгоритмическое мышление, отвечать на подобные вопросы становится гораздо легче, и рано или поздно вы научитесь писать код так, чтобы он был быстрым изначально, по умолчанию. Так что позвольте мне познакомить вас с алгоритмами еще раз, в практичном виде, применимом в вашей повседневной работе.
Структуры данных в JavaScript | Odessa Frontend Meetup #13OdessaFrontend
Алгоритмы и структуры данных — это фундаментальные основы в программировании. Но, при изучении JavaScript, на это не хватает времени. Прогрессивные фрейморки высокоуровнего языка богаты функциональностью и оптимизацией, но достаточно ли этого? Николай Громов рассказывает как он понял, что алгоритмы никуда не ушли и почему понадобились структуры данных, а так же сравнивает их производительность на JavaScript.
Правильная организация клиент-карточного взаимодействия — Антон КорзуновYandex
Как говорил один человек, нет данных — нет проблемы. Но проблема в том, что в современном мире данные есть, и их много . Ещё в современном мире очень любят данные отображать, например, на карте — только это не всегда хорошо получается.
Из доклада вы узнаете о типичных ошибках передачи данных на карту и простых способах этих ошибок избежать.
Что API Карт забыл на сервере — Антон КорзуновYandex
Принято считать, что API Карт — это JavaScript-библиотека, которая работает в браузере. Это утверждение верно ровно в той степени, в какой сферичен конь в вакууме.
Из доклада вы узнаете, зачем API нужен бэкенд, почему писать его придётся вам и как API Карт будет помогать этой задаче с фронтенда.
P.S. Будет интересно разным слоям населения.
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
Предлагаемый подход позволяет без труда получить параллельную асинхронную обработку данных без явного использования средств синхронизации, по максимуму задействуя доступные вычислительные ресурсы. Использование сопрограмм значительно упрощает написание многопоточного кода. Это дает возможность сконцентрироваться непосредственно на задаче обработки данных, не занимаясь вопросами синхронизации различных операций, включая асинхронную работу с сетью.
«Опыт использования каналов в корутинах в боевом проекте» Григорий ФедоровMail.ru Group
Каналы — это способ передавать поток данных между корутинами.
В этом докладе пойдет речь об опыте применения корутин и каналов в нашем новом проекте “Маруся”:
- Почему мы решились использовать каналы, несмотря на экспериментальный статус, и были ли альтернативы?
- Как использовали каналы мы, и как использовать правильно?
- А также о том, как пришлось написать пару операторов из Rx, и чем их можно заменить?
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Докладчик: Данил Руденко
О докладе:
По некоторым оценкам, больше половины профессий будет автоматизировано – это и есть максимальный объём, на который может быть увеличен рынок алгоритмов машинного обучения, ярчайшем представителем которого являются нейронные сети.
В докладе мы поговорим об общей концепции нейронных сетей, рассмотрим основные Python - фреймворки для машинного обучения, а также реализуем решение задачи классификации изображений с применением Keras.
Поговорим о микрооптимизациях .NET-приложенийAndrey Akinshin
Доклад для Middle и Senior .NET-программистов о микроптимизациях приложения, из которого Вы узнаете:
О том, как важно понимать IL и ASM код, соответствующий вашей C#-программе;
О различных уровнях микрооптимизаций начиная от C# и JIT компиляторов, заканчивая CPU;
Об особенностях оптимизаций под различные процессорные архитектуры;
Об отличиях разных версиях JIT-компиляторов, включая RyuJIT;
О том, как правильно замерять время выполнения приложений и оценивать эффективность оптимизаций.
Доклад будет полезен всем разработчикам, которые хотят хотят сделать свои и без того быстрые программы ещё на 5-10% быстрее.
Со времён С++98 стандартные контейнеры и идиома RAII позволяли избегать использования оператора delete, что делало код более безопасным. С приходом С++11 и умных указателей отпала необходимость использовать оператор new, что позволило практически полностью переложить управление памятью на плечи компилятора. В докладе объясняется идеология управления памятью и ресурсами в современном С++.
Лекция для студентов АлтГТУ, проведенная 04.03.2015. В ходе лекции рассматривались следующие ключевые моменты:
1) Lambda project
2) Steam API
3) Date API
Причины потерь процессорного времени при организации последовательности вычислений внутри потока: 1. Ожидание ответа на запрос (поток спит). 2. Выполнение дополнительных "лишних" действий. Как способ устранения этих потерь - паттерн Пул потоков. Анализ императивного и функционального подхода к борьбе с "жадными" операциями. Эволюция методов организации параллельных вычислений на основе пула потоков.
В третьей главе рассматриваются базовые свойства акторов, описанные в PhD диссертации Gul Agha: каждый актор имеет адрес, большой почтовый ящик, куда доставляются сообщения, адресованные актору и поведение. В ответ на входящее сообщение актор может отправить конечный набор сообщений другим акторам и/или создать конечное число новых акторов и/или поменять свое поведение для обработки следующего сообщения.
В рамках данного курса будет разработана библиотека для разработки параллельных приложений на платформе .NET, построенная по модели акторов.
Исходные коды библиотеки будут выкладываться на GitHub: https://github.com/hwdtech/HWdTech.DS
Код библиотеки будет разработан с использованием следующих принципов, приемов и методик:
S.O.L.I.D. - принципы
Unit-tests
Mock
IoC контейнеры
Для удобства слушателей курса краткий обзор данных практик приведен в Главе 4.
Докладчик: Данил Руденко
О докладе:
У нашего зоопарка опять проблемы, которые необходимо решить максимально технологично!
На первом докладе мы поговорили о сверточных нейронных сетях, в этот раз рассмотрим такие виды нейронных сетей как автоэнкодеры и GAN’ы( генеративные состязательные сети). Также углубимся немного в Keras, напишем кастомный загрузчик данных и немного посмотрим на Jupyter Notebook.
Видео: https://youtu.be/tu-ee_4uAGY
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...IT-Portfolio
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда стоит написать свою БД", Олег Краснов (cистемный Архитектор SEMrush)
Аннотация
В 2008 году система хранения SEMrush была построена на базе сочетания SQL и файлового хранилища. Это позволило выдерживать нагрузку примерно до 3 миллионов запросов в день. Но уже в 2009 году было видно, что интерес к сервису растет стремительно и очень скоро старая система хранения будет основным сдерживающим фактором. Мы провели ряд экспериментов и в результате исследования остановились на собственной структуре хранения данных. Новая система была создана в предельно короткие сроки и уже через 3 месяца была введена в строй. Эта система используется и по сей день, хотя нагрузка выросла на порядок.
В докладе будет освещены история и методы построения хранилища данных проекта SEMrush. В ходе выступления будет проведена ретроспектива требований. Также докладчик расскажет об особенностях применяемого хранилища данных и отличиях от стандартных методов и средств. В том числе, будут освещены перспективы данной технологии применительно к реалиям и новым потребностям проекта.
О компании
Сегодня SEMrush – ведуший сервис для анализа конкурентов. Он позволяет узнать кейворды, по которым любой домен или сайт попадает в AdWords, выдачу Google и Bing. В отличие от других инструментов, которые позволяют анализировать только ваши собственные данные, SEMrush дает возможность изучить рекламные тексты конкурентов и собирает сведения об их бюджетах на продвижение в поисковиках.
«Опыт использования каналов в корутинах в боевом проекте» Григорий ФедоровMail.ru Group
Каналы — это способ передавать поток данных между корутинами.
В этом докладе пойдет речь об опыте применения корутин и каналов в нашем новом проекте “Маруся”:
- Почему мы решились использовать каналы, несмотря на экспериментальный статус, и были ли альтернативы?
- Как использовали каналы мы, и как использовать правильно?
- А также о том, как пришлось написать пару операторов из Rx, и чем их можно заменить?
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Докладчик: Данил Руденко
О докладе:
По некоторым оценкам, больше половины профессий будет автоматизировано – это и есть максимальный объём, на который может быть увеличен рынок алгоритмов машинного обучения, ярчайшем представителем которого являются нейронные сети.
В докладе мы поговорим об общей концепции нейронных сетей, рассмотрим основные Python - фреймворки для машинного обучения, а также реализуем решение задачи классификации изображений с применением Keras.
Поговорим о микрооптимизациях .NET-приложенийAndrey Akinshin
Доклад для Middle и Senior .NET-программистов о микроптимизациях приложения, из которого Вы узнаете:
О том, как важно понимать IL и ASM код, соответствующий вашей C#-программе;
О различных уровнях микрооптимизаций начиная от C# и JIT компиляторов, заканчивая CPU;
Об особенностях оптимизаций под различные процессорные архитектуры;
Об отличиях разных версиях JIT-компиляторов, включая RyuJIT;
О том, как правильно замерять время выполнения приложений и оценивать эффективность оптимизаций.
Доклад будет полезен всем разработчикам, которые хотят хотят сделать свои и без того быстрые программы ещё на 5-10% быстрее.
Со времён С++98 стандартные контейнеры и идиома RAII позволяли избегать использования оператора delete, что делало код более безопасным. С приходом С++11 и умных указателей отпала необходимость использовать оператор new, что позволило практически полностью переложить управление памятью на плечи компилятора. В докладе объясняется идеология управления памятью и ресурсами в современном С++.
Лекция для студентов АлтГТУ, проведенная 04.03.2015. В ходе лекции рассматривались следующие ключевые моменты:
1) Lambda project
2) Steam API
3) Date API
Причины потерь процессорного времени при организации последовательности вычислений внутри потока: 1. Ожидание ответа на запрос (поток спит). 2. Выполнение дополнительных "лишних" действий. Как способ устранения этих потерь - паттерн Пул потоков. Анализ императивного и функционального подхода к борьбе с "жадными" операциями. Эволюция методов организации параллельных вычислений на основе пула потоков.
В третьей главе рассматриваются базовые свойства акторов, описанные в PhD диссертации Gul Agha: каждый актор имеет адрес, большой почтовый ящик, куда доставляются сообщения, адресованные актору и поведение. В ответ на входящее сообщение актор может отправить конечный набор сообщений другим акторам и/или создать конечное число новых акторов и/или поменять свое поведение для обработки следующего сообщения.
В рамках данного курса будет разработана библиотека для разработки параллельных приложений на платформе .NET, построенная по модели акторов.
Исходные коды библиотеки будут выкладываться на GitHub: https://github.com/hwdtech/HWdTech.DS
Код библиотеки будет разработан с использованием следующих принципов, приемов и методик:
S.O.L.I.D. - принципы
Unit-tests
Mock
IoC контейнеры
Для удобства слушателей курса краткий обзор данных практик приведен в Главе 4.
Докладчик: Данил Руденко
О докладе:
У нашего зоопарка опять проблемы, которые необходимо решить максимально технологично!
На первом докладе мы поговорили о сверточных нейронных сетях, в этот раз рассмотрим такие виды нейронных сетей как автоэнкодеры и GAN’ы( генеративные состязательные сети). Также углубимся немного в Keras, напишем кастомный загрузчик данных и немного посмотрим на Jupyter Notebook.
Видео: https://youtu.be/tu-ee_4uAGY
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...IT-Portfolio
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда стоит написать свою БД", Олег Краснов (cистемный Архитектор SEMrush)
Аннотация
В 2008 году система хранения SEMrush была построена на базе сочетания SQL и файлового хранилища. Это позволило выдерживать нагрузку примерно до 3 миллионов запросов в день. Но уже в 2009 году было видно, что интерес к сервису растет стремительно и очень скоро старая система хранения будет основным сдерживающим фактором. Мы провели ряд экспериментов и в результате исследования остановились на собственной структуре хранения данных. Новая система была создана в предельно короткие сроки и уже через 3 месяца была введена в строй. Эта система используется и по сей день, хотя нагрузка выросла на порядок.
В докладе будет освещены история и методы построения хранилища данных проекта SEMrush. В ходе выступления будет проведена ретроспектива требований. Также докладчик расскажет об особенностях применяемого хранилища данных и отличиях от стандартных методов и средств. В том числе, будут освещены перспективы данной технологии применительно к реалиям и новым потребностям проекта.
О компании
Сегодня SEMrush – ведуший сервис для анализа конкурентов. Он позволяет узнать кейворды, по которым любой домен или сайт попадает в AdWords, выдачу Google и Bing. В отличие от других инструментов, которые позволяют анализировать только ваши собственные данные, SEMrush дает возможность изучить рекламные тексты конкурентов и собирает сведения об их бюджетах на продвижение в поисковиках.
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...IT-Portfolio
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуатация HBase на паре жизненных примеров", Александр Чистяков (ведущий разработчик Git in Sky)
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...IT-Portfolio
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Когда надо изобретать свой велосипед? Строим NoSQL хранилище в приемлемые сроки", Александр Календарёв (разработчик РБК-Медиа Холдинг / Love Planet)
Аннотация
- Что из себя представляет Современная служба знакомств (крупная соцсеть в миниатюре).
- Какие задачи мы решаем и немного про общую архитектуру проекта.
- Обзор про существующие key/value решения
- Почему не нас не устроили memcachedb, redis, tarantool или MongoDВ...
- Какие велосипеды пришлось изобретать и что взяли готовое.
- Протокол обмена, почему выбрали memcached
- Как и зачем расширять существующие протоколы
- Как устроено хранилище изнутри (на базе key/value Hash & Tree), немного скучной теории про структуры данных, полезно тем, кто все же рискнет написать что-то своё.
- какие key/value АПИ можно еще использовать.
- Проблемы здоровья хранилища или зачем и как делать Мониторинг.
- возможность масштабирования, проблемы и пути решения.
Биография
Опыт в IT индустрии 15 лет, кандидат наук. Докладчик на Hi++ 2011, ADDConf-2, DevConf 2012, PHPConf 2009 и других. Автор блога highloadblog.ru. Круг интересов: хранение и обработка данных.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий Смирнов (ведущий разработчик Фотостраны).
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)Ontico
+ Обзор внутреннего устройства Hadoop и продуктов вокруг;
+ Как можно использовать для решения (спектр);
+ Как подходить к обоснованности использования даже в небольших проектах;
+ Hadoop в Badoo - история успеха;
+ Hadoop в Badoo - история проблем.
Экстремальная оптимизация производительности на примере MongoDB Java DriverVitebsk DSC
При работе с базами данных мы часто сталкиваемся с тем, что ORM фреймворки, принося нам удобство и гибкость, требуют непомерную плату – серьезное падение производительности. Казалось бы, чтобы решить эту проблему, достаточно просто отказаться от ORM и использовать низкоуровневый API. Но иногда и этого бывает недостаточно…
Презентация подготовлена по материалам выступления Евгения Берлога на витебской конференции “Developer's Software Conference” (31.10.2015). Запись выступления: https://events.epam.com/events/dsc2015/talks/104.
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JSFestUA
During the presentation, we will consider what advantages a front-end developer will get from knowledge of algorithms and data structures.
We will analyze real-world examples where this knowledge simplified logic and accelerated applications dramatically.
And finally we will understand the most necessary things that will allow us to determine the effectiveness of the code and easily improve it.
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
О докладе:
Про Python и Django: зачем нужна красота и простота перфекционистам с дедлайнами, на примере Яндекс.Погоды.
Когда число сервисов, которые делаются в Яндексе, стало возрастать, дедлайны — поджимать, а от процесса разработки требовалось стать более гибким, возникла потребность в свежих решениях. В докладе на примере Яндекс.Погоды рассказывается, как в Яндексе делают сервисы с помощью языка Python и веб-фреймворка Django.
Работа с данными выделилась в отдельную область разработки. Гига-, тера-, петабайты информации поражают воображение и озадачивают, когда дело доходит до тестирования. Hadoop, Spark, ETL - непонятные слова, к которым непонятно, как подступиться. На основе своего опыта разработки wordpress.com Игорь поделится опытом обеспечения качества в области больших данных. В рамках его доклада вы узнаете, как традиционные подходы к тестированию и автоматизации тестирования соотносятся с Big Data-решениями, а также, какие специфические проблемы требуется решать, когда дело доходит до QA.
Презентация подготовлена по материалам выступления Игоря Хрола на витебской конференции “Developer's Software Conference” (30.11.2019).
31 мая – 1 июня в Киеве состоялась конференция HOTCODE 2013.
Сергей Тепляков, эксперт Luxoft Training по .Net, С++ и архитектуре приложений, выступил с докладом «C# Deep Dive».
Тезисы доклада:
«Когда-то в далеком 2002-м году язык C# был прост, как 2 копейки. Но у любого «живого» языка есть одна особенность, приятная и неприятная одновременно — в язык начинают добавляться новые возможности, чтобы наши с вами типовые задачи решались проще и эффективнее. Но с каждой новой возможностью появляются и свои тонкости, незнание которых может лишить столь нужных в нашей жизни конечностей, причем иногда самым изощренным образом. А поскольку язык C# развивается очень динамично, то за время жизни на его просторах появилось много маленьких грабелек, которые мы с вами и научимся обходить ;)».
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=v7uBLSm6ft8
06 октября 2015. Как приручить дракона: введение в LLVM (Дмитрий Кашицын, HDsoft)
«В этом докладе мы кратко расскажем о таком звере, о котором много кто слышал, но немногие щупали. Что такое компилятор на самом деле? Чем LLVM отличается от других компиляторов? Как в LLVM происходит компиляция программы, как работают оптимизации? Наконец, какой путь проходит программа от разбора исходного текста до генерации исполняемого файла?
Лекция будет обзорной и не потребует от слушателей глубоких знаний теории компиляторов.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
10 июня 2015. Дмитрий Кашицын (HDsoft) дает обзор LLVM.
http://techtalks.nsu.ru
Видеозапись: https://plus.google.com/events/ctes98f7uhf19t5jlvlbk24dan4
В этом докладе мы кратко расскажем о таком звере, как LLVM, о котором много кто слышал, но немногие щупали. Что такое компилятор на самом деле? Чем LLVM отличается от других компиляторов? Как в LLVM происходит компиляция программы, как работают оптимизации? Наконец, какой путь проходит программа от разбора исходного текста до генерации исполняемого файла?
Лекция будет обзорной и не потребует от слушателей глубоких знаний теории компиляторов.
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
12. только от Васи только важное за период времени Последние 10 Over 9000 Следующие / предыдущие 10
13.
14.
15. Что понадобится нам? Insert(item)Delete(item) GetRange(first, last, count)GetCount(first, last)
16.
17.
18. Показать последние 10 GetRange( new Key(userId, DateTime.MaxValue, Guid.MaxValue), new Key(userId, DateTime.MinValue, Guid.MinValue), 10)
19. Показать 10 предшествующих X GetRange( new Key(userId, X.Timestamp, X.ItemId), new Key(userId, DateTime.MinValue, Guid.MinValue), 10)
20. …пришедших от Васи GetRange( new Key(userId, vasya.Id, DateTime.Max, Guid.Max), new Key(userId, vasya.Id, DateTime.Min, Guid.Min), 10);
21. Важные, от Васи, с понедельника по пятницу GetRange( new Key(userId, vasyaId, Priority.High, friday, Guid.Min), new Key(userId, vasyaId, Priority.High, monday, Guid.Max) 10);
22. От Васи, Пети, и Кати GetRange(... vasyaId ..., M).Union( GetRange(... petyaId..., M).Union( GetRange(... katyaId..., M))) .OrderBy(k => k.Timestamp).Take(M); O(A * M * log N)А можно ли эффективнее?
23.
24.
25. Все уже украдено до нас!BerkeleyDB db = BTreeDatabase.Open(“dbFile”, “dbName”, cfg); using(var cur = db.Cursor(…)) { if(cur.Move(newDatabaseEntry(keyBytes), true)) returntrue; } returnfalse;
26. Berkeley DB Под капотом B+Tree (или Hash) Whitepaper: http://www.usenix.org/event/usenix99/full_papers/olson/olson.pdf Web site: http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html
27. Все уже украдено до нас!Cassandra SlicePredicate: start, finish, count, reversed client.multiget_slice(… slicePredicate …) + масштабируемость + шардинг + …
28. Cassandra Под капотом: деревья в памяти + SSTables на диске Web site: http://cassandra.apache.org/
30. Что осталось за кадром Надежное хранение Масштабирование Отказоустойчивость Шардинг Как жить с отложенной консистентностью? …
31. Общая картинка Тут была импровизация с рисованием маркерами на доске :-) Я рассказал о том, как все устроено в целом, как взаимодействую индексы и хранилище и т.п.
32. Общая картинка Есть ещё одна презентация, немного раскрывающая тему общей картинки: http://www.slideshare.net/xoposhiy/highload-dump-2011
33.
34. Конец! Павел Егоров СКБ Контур, Екатеринбург pe@skbkontur.ru twitter.com/xoposhiy