Upload
vadim-tsesko
View
753
Download
12
Embed Size (px)
DESCRIPTION
Обсуждаем здесь: http://incubos.org/posts/2013/09/16/db/
Citation preview
ВведениеКурс «Базы данных»
Цесько Вадим Александровичhttp://incubos.org
@incubos
Computer Science Center
16 сентября 2013 г.
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 1 / 29
Содержание
1 О лекторе
2 Организация курса
3 Содержание курса
4 Определения и примеры
5 Классификация БД
6 Домашнее заданиеЦесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 2 / 29
О лекторе
О лекторе
5 лет в Digitek Labs1Параллельные системы цифровой обработкисигналов (гидроакустика)Статический анализ кода программных систем (C,JavaScript)
2.5 года в ЯндексРаспределённые высоконагруженные системы:Яндекс.Авто, Яндекс.Недвижимость и др.
3 года преподавания2 в СПбГПУБазы данныхМетоды анализа и обеспечения качества ПОПараллельные вычисления
1http://digiteklabs.ru2http://kspt.ftk.spbstu.ru/people/tsesko/
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 3 / 29
Организация курса Формат
Формат
Каждый понедельник с 20:00 до 21:30 лекция, с21:30 до 22:00 ответы на вопросы14-16 лекций, в т. ч. приглашённые докладчики вовторой половине курса
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 4 / 29
Организация курса Курсовая работа
Курсовая работа
Критерий получения зачётаСвоё хранилище данныхNew feature request — каждые 2 недели, лимит нареализацию — 2 неделиПроект на http://bitbucket.org (Hg) /http://github.com (Git) + Issue TrackingScala/Java + ScalaTest/JUnit + Maven/SBTREADME + INSTALLВ конце — отчёт (2-10 стр. с картинками)Команда 1-3 человека
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 5 / 29
Организация курса Материалы
Материалы
Курс «Базы данных» предыдущего года3
Ссылки на книги, статьи и блоги в каждойлекции — для самостоятельного изучения
3Илья Тетерин, http://fluffypulser.ru/static/dbcourse.2012/Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 6 / 29
Содержание курса Цели
Цели
Принципы построения систем хранения (иобработки) данныхПроблемы и варианты их решенияПромышленные примеры реализации принциповНавыки оценки решений
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 7 / 29
Содержание курса О чём мы будем говорить
О чём мы будем говорить
Классификации баз данныхBig Data: Scalability, Availability, CAPSQL vs NoSQLТранзакцииПроизводительностьПримеры: Redis, Cassandra, MongoDB, HBase, etc.Проектирование систем хранения и обработки
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 8 / 29
Содержание курса О чём мы (почти) НЕ будем говорить
О чём мы (почти) НЕ будем говорить
Реляционная модель данныхТеория нормальных формSQL
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 9 / 29
Содержание курса О чём мы возможно будем говорить
О чём мы возможно будем говорить
Примеры решения конкретных задач:Хранение картинокПолнотекстовый поиск
Встраиваемые БДГрафовые БД
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 10 / 29
Определения и примеры База данных
База данныхA databaseis an organized collection of dataa.
ahttp://en.wikipedia.org/wiki/Database
Телефонная книгаКнижная библиотекаКоллекция фотографийТоварный чекСоциальная сетьФайловая системаГеографическая карта...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 11 / 29
Определения и примеры Операции над данными
Операции над данными
CRUDCreate, read, update, deletea.
ahttp://en.wikipedia.org/wiki/Create,_read,_update_and_delete
НапримерOperation SQL HTTP
Create INSERT POSTRead (Retrieve) SELECT GETUpdate (Modify) UPDATE PUT / PATCHDelete (Destroy) DELETE DELETE
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 12 / 29
Определения и примеры Бумажная телефонная книга
Бумажная телефонная книгаCreate
Открыть страницу по первой букве фамилииВписать в конец страницы ФИО и телефон
ReadОткрыть страницу по первой букве фамилииПросматривать записи по порядку до совпадения
UpdateОткрыть страницу по первой букве фамилииПросматривать записи по порядку до совпаденияЗачеркнуть ФИО и телефонВписать в конец страницы ФИО и телефон
DeleteОткрыть страницу по первой букве фамилииПросматривать записи по порядку до совпаденияЗачеркнуть ФИО и телефон
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 13 / 29
Определения и примеры Про «скорость» телефонной книги
Про «скорость» телефонной книги
Create — «быстрая» вставкаRead, Update, Delete — всё сводится к поискузаписи
ИнвариантВ телефонной книге есть 0 или 1 незачёркнутая записьдля любой ФИО
Если хотим оценить точнее, то нужно кое-чтовспомнить...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 14 / 29
Определения и примеры O(n) и o(n)
O(n) и o(n)
Формальное определениеa
ahttp://en.wikipedia.org/wiki/Big_O_notation
f (n) ∈ O(g(n))⇔ ∃k > 0 ∃n0 ∀n > n0 f (n) ≤ g(n) · kf (n) ∈ o(g(n))⇔ ∀k > 0 ∃n0 ∀n > n0 f (n) ≤ g(n) · k
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 15 / 29
Определения и примеры o(n): Сравнение
o(n): Сравнение
Компьютер мощностью 1 Gops:o() 1 Gops 1 Topso(n) 1 секунда 16 минут
o(log2(n)) 30 микросекунд 40 микросекундo(n2) 32 года 32 миллиона лет
o(n · log2(n)) 30 секунд 11 часовo(k · n) k с. 1000k с.
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 16 / 29
Определения и примеры o(n): Примеры
o(n): Примеры
o(n) — последовательный переборo(n2) — сравнение всех со всемиo(log2(n)) — бинарный поискo(n · log2(n)) — сортировка Quick Sorto(k · n) — сортировка Radix Sort
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 17 / 29
Определения и примеры Вернёмся к телефонной книге
Вернёмся к телефонной книге
Пусть в книге 100 записей.Если совсем не сортировать, то поиск за
100/2 = 50 операций в среднемЕсли всё полностью отсортировано, то поиск за
log2(100) ≈ 6.64 операцииА в бумажной телефонной книге
log2(28) + 100/28/2 ≈ 6.59 операции
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 18 / 29
Определения и примеры Ещё есть ограничения физического мира
Ещё есть ограничения физического мира1 L1 cache reference ......................... 0.5 ns2 Branch mispredict ............................ 5 ns3 L2 cache reference ........................... 7 ns4 Mutex lock/unlock ........................... 25 ns5 Main memory reference ...................... 100 ns6 Compress 1K bytes with Zippy ............. 3,000 ns = 3 us7 Send 2K bytes over 1 Gbps network ....... 20,000 ns = 20 us8 SSD random read ........................ 150,000 ns = 150 us9 Read 1 MB sequentially from memory ..... 250,000 ns = 250 us
10 Round trip within same datacenter ...... 500,000 ns = 0.5 ms11 Read 1 MB sequentially from SSD* ..... 1,000,000 ns = 1 ms12 Disk seek ........................... 10,000,000 ns = 10 ms13 Read 1 MB sequentially from disk .... 20,000,000 ns = 20 ms14 Send packet CA->Netherlands->CA .... 150,000,000 ns = 150 ms
45.4https://gist.github.com/jboner/28418325http://elizarov.livejournal.com/27425.html
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 19 / 29
Классификация БД Disclaimer
Disclaimer
Общепризнанных устоявшихся классификацийнет6
Классификации неполны по определениюМногие хранилища данных являются гибриднымиили настраиваемымиЛюбые противоречия случайны и на совестиавтора
6http://en.wikipedia.org/wiki/Database#Database_type_examplesЦесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 20 / 29
Классификация БД Data Model
Data Model
HierarchicalRelationalGraphObjectDocumentKey-valueColumnarDeductiveSpatial...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 21 / 29
Классификация БД Deployment
Deployment
Embedded (in-process)SeparateDistributed...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 22 / 29
Классификация БД Storage
Storage
In-memoryOn-diskData warehousing...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 23 / 29
Классификация БД Usage patterns
Usage patterns
MessagingCountersLogging + Batch processingOLTPEntity enrichmentVersioning...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 24 / 29
Классификация БД И это ещё не всё
И это ещё не всё
Query LanguageConsistencyAvailability & ReplicationPartition toleranceTransactionsBackupsSecurity...
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 25 / 29
Домашнее задание План минимум
План минимум
Телефонная книга: nickname (Ключ), ФИО +телефон (Значение)CRUD: add("ivanov ...), get("ivanov"),delete("ivanov")Доступ через консоль или HTTP или TCPВ памяти на List или MapПерсистентно на диске
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 26 / 29
Домашнее задание План максимум: key-value storage
План максимум: key-value storage
IMDB dataset7
Quora: Where can I get large datasets open to thepublic?8
7http://www.imdb.com/interfaces8http://www.quora.com/Data/
Where-can-I-find-large-datasets-open-to-the-publicЦесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 27 / 29
Домашнее задание Подсистемы
Подсистемы
APIКлюч (string, byte[], ...)Запись/документ (string, byte[], JSON, ...)Парсер аргументовСериализация/десериализация (JSON, XML, ...)Надёжное хранение (flush(), commit log,snapshot, ...)
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 28 / 29
Вопросы?
Вопросы?
http://incubos.org/contacts/Общие вопросы — в Twitter: @incubosВопросы по лекциям — в комментариях:http://incubos.org/blog/Частные вопросы — в почту[email protected]Не забудьте про ДЗ
Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 29 / 29