Версия презентации по основам C++ с летней школы учителей информатики 2016 года.
Презентация расширена слайдами Незнанова А.А., изменён порядок материала, добавлены задачи.
Презентация для JuJa вебинара о том, как писать рекурсивные программы с примером о вычислении факториала и чисел Фибоначчи. Также рассказывается о поиске линейном, бинарном, в глубину и в ширину, как работает поисковая система.
Презентация сделана для новичков в деле программистов.
Как показать релевантный текст для пользователя? Собрать данные, написать разные тексты, а потом написать кучу IF'ов?
В докладе я расскажу, как мы, в Welltory, делаем настройку контента под пользователя.
Поведаю о том, как content writer'ы могут писать 100 вариантов текстов на одно событие в системе.
И конечно, расскажу с чего начать вам.
Докладчик: Александр Сапронов
Видео: https://youtu.be/sG6kUxq6gDY
Курс "Промышленное программирование на Java". Набор лекций 3. "Реляционные базы данных".
Модель предметной области. Подключение к РСУБД из Java.
Spring JDBC.
МФТИ, 2014 год. Лектор - Лаврентьев Федор Сергеевич
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Badoo Development
Мы уже около 3-х лет используем HandlerSocket в нашей инфраструктуре сайта badoo.com. За это время мы накопили опыт решения характерных для Handlersocket проблем, появляющихся при использовании.
Несколько команд внутри Баду активно используют HS для решения разноплановых задач мобильных и настольных приложений Баду. Где-то мы используем HS как замену Memcached, где-то как простой поисковый механизм, где-то как хранилище типа ключ-значение. Наш HS-кластер содержит более 30 серверов, обрабатывая порядка 8000 запросов/сек.
Спикер также предоставляет написанный им код библиотеки-клиента для Handlersocket на PHP.
Про что доклад:
• что это вообще такое;
• чем является HS и чем не является;
• внутреннее устройство и работа HS;
• протокол;
• примеры использования в Баду, с цифрами и графиками;
• особенности: шардирование, Percona Server, постоянные соединения (бенефиты, проблемы и их решения), tips & tricks;
• полезные сслыки, ответы на FAQ.
Доклад рассчитан на highload-разработчиков, работающих с реляционными БД.
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Ontico
Несколько месяцев назад компания "Яндекс" совершила маленькую революцию, открыв свою внутреннюю систему хранения и аналитики больших данных ClickHouse в opensource для всех желающих.
ClickHouse стабильно показывает очень высокие результаты на тестах производительности запросов, часто догоняя и обгоняя лидеров рынка аналитических RDBMS, включая HP Vertica. Высокие результаты и авторитет "Яндекса" привлекают к этой системе заслуженное внимание разработчиков и архитекторов. Вместе с тем, архитектура ClickHouse довольно существенно отличается от привычных архитектур RDBMS, в ClickHouse отсутствует многое из привычной функциональности, есть ряд "неудобных" ограничений. Поэтому разработка новых и миграция существующих решений сопровождается значительными сложностями.
В докладе рассматриваются основные архитектурные особенности ClickHouse, отличия от традиционных RDBMS или NoSQL баз данных, и обсуждаются способы решения типичных задач, возникающих при разработке аналитических систем на ClickHouse.
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
Довольно часто как адинистраторы, так и разработчики жалуются на низкую производительность приложений, работающих с базой данных, и нередко при этом ищут решения возникших проблем с помощью различных настроек как СУБД, так и операционной системы, пренебрегая при этом самым действенным способом - оптимизацией запросов к собственно БД.
Тому, как понимать, где же узкие места, и как их можно попробовать избежать на примере PostgreSQL и посвящен этот доклад.
Доклад от Parallels:
Методики тестировния производительности database-centric приложений
Описание: При работе над сложными продуктами в database-centric приложениях изменения в коде и тем более в SQL запросах к базе данных могут приводить к неожиданным падениям производительности или же деградации производительности приложения с ростом размера базы данных. Поэтому важно уметь как можно быстрее отлавливать и исправлять причины таких деградаций.
Доклад о том, как устроен процесс мониторинга производительности продукта автоматизации хостинга и облачных сервисов Parallels Automation, для которого определяющим фактором является производительность базы данных.
Компания покажет, как анализирует планы исполнения SQL запросов внутри PostgreSQL, как проверяет насколько быстро и эффективно в целом работают SQL запросы, как определяет стратегию дальнейшей оптимизации.
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
Оперативная память становится всё более дешёвой и производительной, что позволяет использовать её для хранения рабочего набора данных всё большего числа приложений. Хранение всех данных в оперативной памяти позволяет сделать их высоко доступными, а алгоритмы для работы с данными либо существенно упростить, либо ускорить, а иногда — и то, и другое.
Тезисы - http://www.highload.ru/2015/abstracts/1964.html
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №1 "Введение и начало проектирования"
Лектор - Павел Щербинин.
В лекции обсуждаются значение и роли баз данных в IT, даются определения БД и СУБД. Затем рассказывается о реляционной модели данных, об основах реляционной алгебры. Далее говорится непосредственно о проектировании БД: каковы критерии оценки модели данных, особенности концептуального проектирования, этапы проектирования, что такое логическое проектирование. Остальная часть лекции посвящена типам данных MySQL: NULL, целые числа, числа с плавающей точкой, бинарные, строки, дата и время.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
В докладе я расскажу, как выглядит World of Tanks Server (кластер кластеров) со всеми веб-сервисами, которые существуют вокруг. Какие узкие места с точки зрения отказоустойчивости есть внутри кластера, между кластерами, во взаимодействии с внешними веб-сервисами. Как мы решаем возникающие проблемы технически, процессно, проектно.
World of Tanks Experience of Using KafkaLevon Avakyan
In this paper I speak about BigWorld technology, WoT server, Apache Kafka and how we started to use it together. What difficulties we had and how we had solved them.
In this presentation I will speak how are the SRE and DevOps, what is a reliability. Also about the reliability approach in Competitive Gaming in Wargaming and show a few cases.
Архитектура мета игры Wargaming. Глобальная карта 2.0.Levon Avakyan
В своем докладе я расскажу что такое Глобальная карта, как она устроена, какие технологии, архитектурыне решения, принципы и подходы используются. Как мы боремся с высокими нагрузками, с какими проблемами сталкиваемся, и как их решаем.
Осознанный выбор. Python 3 для реализации сервисного шлюза клиента World of T...Levon Avakyan
Доклад о том, зачем нам понадобился сервисный шлюз для клиента WoT, как выбирались и проверялись технологические решения, плюсы и минусы использования Python 3 + asyncio в этом конкретном случае. +Бонус: выбор, отслеживание и визуализация метрик приложения
Кланы в Wargaming. От странички на танковом портале до мультиплатфермнного с...Levon Avakyan
Кланы являются неотъемлемой частью любой MMO. И игры Wargaming не стали исключением, а вместе с бурным развитием трилогии ,и World of Tanks в частности, быстро изменялись требования к кланам как у пользователей так и у бизнеса. Доклад расскажет о том пути, который мы прошли ,создавая поддержку кланов в Wargaming, какие трудности преодолевали и какие уроки выучили, создавая игровой сервис, который радует миллионы наших игроков.
Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый деньLevon Avakyan
Оперирование - это важный компонент в жизненном цикле любого продукта или сервиса. Для высоконагруженных проектов с огромным количеством связей, простейшие запросы на оперирование, представляют собой достаточно нетривиальную задачу. А бизнес требует вносить изменения ASAP. Кроме того, несмотря на высокую нагрузку, мы должны обеспечивать высокое качество сервиса для пользователей несмотря ни на что. Каждый раз мы решаем уникальные инженерные задачи, чтобы можно было играть в «Кланах» и на «Глобальной карте» по всему миру. Доклад расскажет о тех проблемах с которыми мы сталкиваемся и о best practices по управлению приложениями, инфраструктурой и сторонними компонентами для их решения
3. Оглавление 3
• Реляционные базы данных
• Представление данных
• Реляционная алгебра
• Проектирование реляционных баз данных
• Язык запросов SQL
• Внутри СУБД
• Современные СУБД
5. Реляционные базы данных 5
• Широко распространены
• Очень простая концепция
• Существует высокоуровневые языки, которые легко позволяют оперировать данными
6. Модель 6
• База данных множество именованных отношений (таблиц)
• Атрибуты ( колонки), которые описывают отношения
• Кортежи ( строки) – конкретные значения атрибутов
• Каждый атрибут имеет тип (атомарный или структурный). Так же существует тип NULL
• Схема формальное описание базы данных
• Ключ – атрибут или несколько атрибутов (составной ключ) делающим кортеж уникальным
Что такое реляционная база данных
8. Запросы 8
• Clan(cName,server,count)
• Player(pID,pName,rating,bCount)
• Apply(pID,cName,role,decision)
Пример
cName server count pID pName rating bCount pID cName role desc
PlayerClan Apply
9. Запросы 9
Вывести всех игроков у которых рейтинг больше 50 и который подались в клан WG
• Реляционная алгебра – формальный язык
(𝜋𝐼𝐷 𝜎 𝑟𝑎𝑡𝑖𝑛𝑔>50⋏𝑐𝑁𝑎𝑚𝑒=′ 𝑊𝐺′(𝑃𝑙𝑎𝑦𝑒𝑟 ⋈ Apply))
• SQL – фактический язык, в основе которого лежит реляционная алгебра
(Select Player.pID From Player, Apply Where Player.pID=Apply.pID and rating>50 and cName=‘WG’)
Пример
cName server count pID pName rating bCount pID cName role desc
PlayerClan Apply
11. XML 11
Сравнение с реляционными БД
Реляционное
представление
XML
Структура Таблицы Иерархическое дерево
Схема Зафиксированная Гибкая
Запросы Достаточно простые Есть проблемы
Порядок данных Нет Подразумевается
Имплементация Поддерживается в
СУБД
Есть варианты
12. JSON 12
Сравнение с реляционными БД
Реляционное
представление
JSON
Структура Таблицы Вложенное множество
массивов
Схема Зафиксированная Гибкая
Запросы Достаточно простые Есть проблемы
Порядок данных Нет Массивы
Имплементация Поддерживается в
СУБД
Есть встроенные в
СУБД
15. Примеры 15
Вывести имена и рейтинг игроков у которых больше 1000 боев и который подались на роль
командира взвода и были отклонены
𝜋 𝑝𝑁𝑎𝑚𝑒,𝑟𝑎𝑡𝑖𝑛𝑔 𝜎 𝐴𝑝𝑝𝑙𝑦.𝑝𝐼𝐷=𝑃𝑙𝑎𝑦𝑒𝑟.𝑝𝐼𝐷⋏𝑏𝐶𝑜𝑢𝑛𝑡>1000⋏𝑟𝑜𝑙𝑒=′ 𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒𝑟′⋏𝑑𝑒𝑠𝑐=′ 𝑟′
(𝑃𝑙𝑎𝑦𝑒𝑟 × Apply)
Вывести имена и рейтинг игроков у которых больше 1000 боев и который подались на роль
командира взвода в кланы с более чем 50 игроками и были отклонены
𝜋 𝑝𝑁𝑎𝑚𝑒,𝑟𝑎𝑡𝑖𝑛𝑔 𝜎 𝑏𝐶𝑜𝑢𝑛𝑡>1000⋏𝑟𝑜𝑙𝑒=′ 𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒𝑟′⋏𝑑𝑒𝑠𝑐=′ 𝑟′⋏𝑐𝑜𝑢𝑛𝑡>50
(𝑃𝑙𝑎𝑦𝑒𝑟 ⋈(Apply ⋈ 𝐶𝑙𝑎𝑛 ))
cName server count pID pName rating bCount pID cName role desc
PlayerClan Apply
18. Проблема 18
• ID и имя
• Клан в который подается заявка
• Любимая техника включая нацию
• Язык
Apply(pID,pName,cName,vehicle,nation,lang)
Пример заявки в клан
pID pName cName vehicle nation lang
1 Alex WG Maus Ger RU
1 Alex WG Maus Ger BY
1 Alex Korn Maus Ger RU
… … … … … …
19. Аномалии 19
• Избыточность
• Аномалии-модификации проявляются в том, что изменение одних данных
может повлечь просмотр всей таблицы и соответствующее изменение некоторых
записей таблицы.
Аномалии-удаления — при удалении какого либо кортежа из таблицы может
пропасть информация, которая не связана на прямую с удаляемой записью.
Аномалии-добавления возникают, когда информацию в таблицу нельзя
поместить, пока она не полная, либо вставка записи требует дополнительного
просмотра таблицы.
Пример заявки в клан
20. Нормальные формы 20
Нормальная форма — требование, предъявляемое к структуре таблиц в теории
реляционных баз данных для устранения из базы избыточных функциональных
зависимостей между атрибутами
Метод нормальных форм (НФ) состоит в сборе информации о объектах решения
задачи в рамках одного отношения и последующей декомпозиции этого отношения
на несколько взаимосвязанных отношений на основе процедур нормализации
отношений.
Цель нормализации: исключить избыточное дублирование данных, которое
является причиной аномалий, возникших при добавлении, редактировании и
удалении кортежей(строк таблицы).
Шесть Нормальных форм и Нормальная форма Бойса-Кодда (НФБК)
21. Дизайн основаны на декомпозиции 21
• «Мега» отношения + свойства данных
• Проводим декомпозицию основываясь на свойствах данных
• Окончательное множество отношений удовлетворяет нормальным формам
• Отсутствуют аномалии
• Функциональные зависимости - Нормальная форма Бойса-Кодда (НФБК)
• Многозначная зависимость - 4НФ
25. Пробуем декомпозировать 25
Player (pID,pName)
Apply(pID,cName)
Vehicle(pID,vehicle)
Nation(vehicle,nation)
Language(pID,lang)
Пример заявки в клан
Apply(pID,pName,cName,vehicle,nation,lang)
Player (pID,pName)
Apply(pID,cName,lang)
Vehicle(pID,vehicle,nation)
27. Обзор 27
• SQL – Sequence query language
• Поддерживается все крупными реляционными базами данных
• Стандартизован
• Декларативный, основывается на реляционной алгебре
Additional information
31. Агрегирующие функции 31
• MIN
• MAX
• SUM
• AVG
• COUNT
GROUP BY – позволяет определить подмножество атрибутов на котором будет выполняется
агрегирующая функция
HAVING – определяет условие для удаления агрегированных значений
Additional information
33. Индексы 33
• Структура данных, которая строится по атрибуту или атрибутам для убыстрения индекса
• Основные виды:
• BTREE (Balance Tree) – хорошо для <,>,=
• Hash – хорошо для =
• В общем случае существует много видов
• Минусы:
• Занимают дополнительное место
• При изменении данных перестраиваются - занимает время
• Может потребоваться длительное время на построение
Additional information
34. Работа с индексами 34
• Вход: база данных (статистика) и профиль нагрузки
• Выход: рекомендуемые индексы
• Команда EXPLAIN – выводит план исполнения с примерной стоймостью выполнения
некоторого шага.
Additional information
35. Транзакции 35
• Несогласованность на уровне атрибутов
• Update Clan Set ccount = ccount + 1 Where cName = ‘WG’
• Update Clan Set ccount = ccount + 2 Where cName = ‘WG’
• Несогласованность на уровне кортежей
• Update Apply Set role = ‘commander’ Where pID = 123
• Update Apply Set decision = ‘Y’ Where pID = 123
• Несогласованность на уровне таблиц
• Update Apply Set decision = ‘Y’ Where pID In (Select pID From Player Where rating > 50)
• Update Player Set rating = (1.1) * rating Where bcount > 2500
• Несогласованность нескольких выражений
• Insert Into Archive Select * From Apply Where decision = ‘N’;
• Delete From Apply Where decision = ‘N’;
• Select Count(*) From Apply;
• Select Count(*) From Archive;
Конкурентность
36. Транзакции 36
Сценарии:
Загружаем большой объем данных – что-то пошло не так, часть данных в БД, часть нет
Выполняем последовательно операции с БД, отказ произошел между операциями –
целостность нарушена
Устойчивость к отказам
37. Транзакции 37
Транзакция - группа последовательных операций с БД, которая представляет собой логическую
единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно,
соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо
не выполнена вообще, и тогда она не должна произвести никакого эффекта.
Atomic
Consistency
Isolation
Durability
Упорядочиваемость – гарантируется, что поток транзакций, будет преобразован в
последовательность и так будет выполнен.
38. Транзакции 38
Уровень изоляции транзакции применяется только к одной транзакции.
.
Уровни изоляции транзакций
Уровень
изоляции
Проблема Dirty
read
Nonreptable
reads
phantoms
Read uncommited y y y
Read commited n y y
Repeatable read n n y
Serializable n n n
39. Представления 39
• Скрывают некоторые данные от некоторых пользователей
• Делают некоторые запросы проще, более естественными
• Обеспечивают гранулярность доступа к БД
• View V = ViewQuery(R1 , R2 , …, Rn )
• Схема V это схема результирующего запроса
• Запрос Q задействует V
• По настоящему, Q преобразуется, чтобы использовать R1 ,…,Rn вместо V
• Материализованные представления – это представления, которые создают копию данных на
диске.
.
View
40. Ограничения и триггеры 40
Накладывать ограничения на допустимые данные, помимо навязанные структурой и типами
• Зачем используются:
• Проверяют корректность ввода
• Поверяют корректность изменения
• Для соблюдения целостности
• Говорят системе о данных – как хранить, обрабатывать
• Какие бывают:
• NULL
• Key
• Ссылочные
• Основанные на атрибутах
• Основанные на кортежах
• Общие утверждения
Integrity Constraints
41. Ограничения и триггеры 41
Триггер — хранимая особого типа, которую пользователь не вызывает непосредственно, а
исполнение которой обусловлено действием по модификации данных: добавлением INSERT,
удалением DELETE строки в заданной таблице, или изменением UPDATE данных в
определённом столбце заданной таблицы БД. Триггеры применяются для обеспечения
целостности данных и реализации сложной бизнес логики.
Триггеры
43. MySQL 43
MySQL имеет два слоя – внешний слой sql и внутренний набор движков, из которых наиболее
часто используется движок InnoDb, как наиболее полно поддерживающий ACID.
Поддерживаются такие основные движки MyISAM, InnoDB, MEMORY, Berkeley DB. Они
отличаются между собой способом записи данных на диск, а также методами считывания.
44. Postgres 44
PostgreSQL – поедставляет из себя объектно реляционную базу данных, которая работает
только на одном движке — storage engine. Все таблицы представлены в виде объектов, они
могут наследоваться, а все действия с таблицами выполняются с помощью объективно
ориентированных функций. Как и в MySQL все данные хранятся на диске, в специально
отсортированных файлах, но структура этих файлов и записей в них очень сильно отличается.
Для каждого клиента на сервере создается новый процесс (не поток !). Для работы с такими
клиентскими процессами сервер использует семафоры.
45. Postgres vs MySQL 45
Postgres MySQL
Производительность В общем случае
производительнее,
множество настроек
Зависит от конкретных
данных и движка
Типы данных Возможность создавать
свои типы
Только типы
определенные в БД
Разработка Открытый код,
большое community
Принадлежит Oracle,
есть fork MariaDB,
Percona
Стандарт SQL Более полно
поддерживает стандарт
Идут по пути
упрощения
Возможности
обработки
Поддерживает курсор
на клиенте
Наследование таблиц
Различные индексы
Загружает весь ответ в
память клиента