29
Введение Курс Базы данных Цесько Вадим Александрович http://incubos.org @incubos Computer Science Center 16 сентября 2013 г. Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 1 / 29

Базы данных. Введение

Embed Size (px)

DESCRIPTION

Обсуждаем здесь: http://incubos.org/posts/2013/09/16/db/

Citation preview

Page 1: Базы данных. Введение

ВведениеКурс «Базы данных»

Цесько Вадим Александровичhttp://incubos.org

@incubos

Computer Science Center

16 сентября 2013 г.

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 1 / 29

Page 2: Базы данных. Введение

Содержание

1 О лекторе

2 Организация курса

3 Содержание курса

4 Определения и примеры

5 Классификация БД

6 Домашнее заданиеЦесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 2 / 29

Page 3: Базы данных. Введение

О лекторе

О лекторе

5 лет в Digitek Labs1Параллельные системы цифровой обработкисигналов (гидроакустика)Статический анализ кода программных систем (C,JavaScript)

2.5 года в ЯндексРаспределённые высоконагруженные системы:Яндекс.Авто, Яндекс.Недвижимость и др.

3 года преподавания2 в СПбГПУБазы данныхМетоды анализа и обеспечения качества ПОПараллельные вычисления

1http://digiteklabs.ru2http://kspt.ftk.spbstu.ru/people/tsesko/

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 3 / 29

Page 4: Базы данных. Введение

Организация курса Формат

Формат

Каждый понедельник с 20:00 до 21:30 лекция, с21:30 до 22:00 ответы на вопросы14-16 лекций, в т. ч. приглашённые докладчики вовторой половине курса

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 4 / 29

Page 5: Базы данных. Введение

Организация курса Курсовая работа

Курсовая работа

Критерий получения зачётаСвоё хранилище данных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

Page 6: Базы данных. Введение

Организация курса Материалы

Материалы

Курс «Базы данных» предыдущего года3

Ссылки на книги, статьи и блоги в каждойлекции — для самостоятельного изучения

3Илья Тетерин, http://fluffypulser.ru/static/dbcourse.2012/Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 6 / 29

Page 7: Базы данных. Введение

Содержание курса Цели

Цели

Принципы построения систем хранения (иобработки) данныхПроблемы и варианты их решенияПромышленные примеры реализации принциповНавыки оценки решений

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 7 / 29

Page 8: Базы данных. Введение

Содержание курса О чём мы будем говорить

О чём мы будем говорить

Классификации баз данныхBig Data: Scalability, Availability, CAPSQL vs NoSQLТранзакцииПроизводительностьПримеры: Redis, Cassandra, MongoDB, HBase, etc.Проектирование систем хранения и обработки

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 8 / 29

Page 9: Базы данных. Введение

Содержание курса О чём мы (почти) НЕ будем говорить

О чём мы (почти) НЕ будем говорить

Реляционная модель данныхТеория нормальных формSQL

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 9 / 29

Page 10: Базы данных. Введение

Содержание курса О чём мы возможно будем говорить

О чём мы возможно будем говорить

Примеры решения конкретных задач:Хранение картинокПолнотекстовый поиск

Встраиваемые БДГрафовые БД

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 10 / 29

Page 11: Базы данных. Введение

Определения и примеры База данных

База данныхA databaseis an organized collection of dataa.

ahttp://en.wikipedia.org/wiki/Database

Телефонная книгаКнижная библиотекаКоллекция фотографийТоварный чекСоциальная сетьФайловая системаГеографическая карта...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 11 / 29

Page 12: Базы данных. Введение

Определения и примеры Операции над данными

Операции над данными

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

Page 13: Базы данных. Введение

Определения и примеры Бумажная телефонная книга

Бумажная телефонная книгаCreate

Открыть страницу по первой букве фамилииВписать в конец страницы ФИО и телефон

ReadОткрыть страницу по первой букве фамилииПросматривать записи по порядку до совпадения

UpdateОткрыть страницу по первой букве фамилииПросматривать записи по порядку до совпаденияЗачеркнуть ФИО и телефонВписать в конец страницы ФИО и телефон

DeleteОткрыть страницу по первой букве фамилииПросматривать записи по порядку до совпаденияЗачеркнуть ФИО и телефон

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 13 / 29

Page 14: Базы данных. Введение

Определения и примеры Про «скорость» телефонной книги

Про «скорость» телефонной книги

Create — «быстрая» вставкаRead, Update, Delete — всё сводится к поискузаписи

ИнвариантВ телефонной книге есть 0 или 1 незачёркнутая записьдля любой ФИО

Если хотим оценить точнее, то нужно кое-чтовспомнить...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 14 / 29

Page 15: Базы данных. Введение

Определения и примеры 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

Page 16: Базы данных. Введение

Определения и примеры 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

Page 17: Базы данных. Введение

Определения и примеры 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

Page 18: Базы данных. Введение

Определения и примеры Вернёмся к телефонной книге

Вернёмся к телефонной книге

Пусть в книге 100 записей.Если совсем не сортировать, то поиск за

100/2 = 50 операций в среднемЕсли всё полностью отсортировано, то поиск за

log2(100) ≈ 6.64 операцииА в бумажной телефонной книге

log2(28) + 100/28/2 ≈ 6.59 операции

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 18 / 29

Page 19: Базы данных. Введение

Определения и примеры Ещё есть ограничения физического мира

Ещё есть ограничения физического мира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

Page 20: Базы данных. Введение

Классификация БД Disclaimer

Disclaimer

Общепризнанных устоявшихся классификацийнет6

Классификации неполны по определениюМногие хранилища данных являются гибриднымиили настраиваемымиЛюбые противоречия случайны и на совестиавтора

6http://en.wikipedia.org/wiki/Database#Database_type_examplesЦесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 20 / 29

Page 21: Базы данных. Введение

Классификация БД Data Model

Data Model

HierarchicalRelationalGraphObjectDocumentKey-valueColumnarDeductiveSpatial...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 21 / 29

Page 22: Базы данных. Введение

Классификация БД Deployment

Deployment

Embedded (in-process)SeparateDistributed...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 22 / 29

Page 23: Базы данных. Введение

Классификация БД Storage

Storage

In-memoryOn-diskData warehousing...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 23 / 29

Page 24: Базы данных. Введение

Классификация БД Usage patterns

Usage patterns

MessagingCountersLogging + Batch processingOLTPEntity enrichmentVersioning...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 24 / 29

Page 25: Базы данных. Введение

Классификация БД И это ещё не всё

И это ещё не всё

Query LanguageConsistencyAvailability & ReplicationPartition toleranceTransactionsBackupsSecurity...

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 25 / 29

Page 26: Базы данных. Введение

Домашнее задание План минимум

План минимум

Телефонная книга: nickname (Ключ), ФИО +телефон (Значение)CRUD: add("ivanov ...), get("ivanov"),delete("ivanov")Доступ через консоль или HTTP или TCPВ памяти на List или MapПерсистентно на диске

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 26 / 29

Page 27: Базы данных. Введение

Домашнее задание План максимум: 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

Page 28: Базы данных. Введение

Домашнее задание Подсистемы

Подсистемы

APIКлюч (string, byte[], ...)Запись/документ (string, byte[], JSON, ...)Парсер аргументовСериализация/десериализация (JSON, XML, ...)Надёжное хранение (flush(), commit log,snapshot, ...)

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 28 / 29

Page 29: Базы данных. Введение

Вопросы?

Вопросы?

http://incubos.org/contacts/Общие вопросы — в Twitter: @incubosВопросы по лекциям — в комментариях:http://incubos.org/blog/Частные вопросы — в почту[email protected]Не забудьте про ДЗ

Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 29 / 29