Введение
Курс «Базы данных»
Цесько Вадим Александрович
http://incubos.org
@incubos
Computer Science Center

16 сентября 20...
Содержание
1

О лекторе

2

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

3

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

4

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

5

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

6

Дома...
О лекторе

О лекторе
5 лет в Digitek Labs1
Параллельные системы цифровой обработки
сигналов (гидроакустика)
Статический ан...
Организация курса

Формат

Формат

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

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

Курсовая работа
Критерий получения зачёта
Своё хранилище данных
New feature request — ...
Организация курса

Материалы

Материалы

Курс «Базы данных» предыдущего года3
Ссылки на книги, статьи и блоги в каждой
лек...
Содержание курса

Цели

Цели

Принципы построения систем хранения (и
обработки) данных
Проблемы и варианты их решения
Пром...
Содержание курса

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

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

Классификации баз данных
Big Data: Scalability, Availa...
Содержание курса

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

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

Реляционная модель данных
Теория...
Содержание курса

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

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

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

База данных

База данных
A database
is an organized collection of dataa .
a

http://en.wikipedia.or...
Определения и примеры

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

Операции над данными
CRUD
Create, read, update, deletea .
a

http:
//en.wikip...
Определения и примеры

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

Бумажная телефонная книга
Create
Открыть страницу по первой букве фамили...
Определения и примеры

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

Про «скорость» телефонной книги
Create — «быстрая» вставка
Read, U...
Определения и примеры

O(n) и o(n)

O(n) и o(n)

Формальное определениеa
a

http://en.wikipedia.org/wiki/Big_O_notation

f...
Определения и примеры

o(n): Сравнение

o(n): Сравнение
Компьютер мощностью 1 Gops:
o()
1 Gops
1 Tops
o(n)
1 секунда
16 ми...
Определения и примеры

o(n): Примеры

o(n): Примеры

o(n) — последовательный перебор
o(n2 ) — сравнение всех со всеми
o(lo...
Определения и примеры

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

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

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

Ещё есть ограничения физического мира

Ещё есть ограничения физического мира
1
2
3
4
5
6
7
8
9
10
1...
Классификация БД

Disclaimer

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

Data Model

Data Model
Hierarchical
Relational
Graph
Object
Document
Key-value
Columnar
Deductive
Spatia...
Классификация БД

Deployment

Deployment

Embedded (in-process)
Separate
Distributed
...

Цесько В. А. (CompSciCenter)

Вв...
Классификация БД

Storage

Storage

In-memory
On-disk
Data warehousing
...

Цесько В. А. (CompSciCenter)

Введение

16 сен...
Классификация БД

Usage patterns

Usage patterns

Messaging
Counters
Logging + Batch processing
OLTP
Entity enrichment
Ver...
Классификация БД

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

И это ещё не всё
Query Language
Consistency
Availability & Replication
Partition toler...
Домашнее задание

План минимум

План минимум

Телефонная книга: nickname (Ключ), ФИО +
телефон (Значение)
CRUD: add("ivano...
Домашнее задание

План максимум: key-value storage

План максимум: key-value storage

IMDB dataset7
Quora: Where can I get...
Домашнее задание

Подсистемы

Подсистемы

API
Ключ (string, byte[], ...)
Запись/документ (string, byte[], JSON, ...)
Парсе...
Вопросы?

Вопросы?

http://incubos.org/contacts/
Общие вопросы — в Twitter: @incubos
Вопросы по лекциям — в комментариях:
...
Upcoming SlideShare
Loading in …5
×

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

1,414 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,414
On SlideShare
0
From Embeds
0
Number of Embeds
1,036
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Введение Курс «Базы данных» Цесько Вадим Александрович http://incubos.org @incubos Computer Science Center 16 сентября 2013 г. Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 1 / 29
  2. 2. Содержание 1 О лекторе 2 Организация курса 3 Содержание курса 4 Определения и примеры 5 Классификация БД 6 Домашнее задание Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 2 / 29
  3. 3. О лекторе О лекторе 5 лет в Digitek Labs1 Параллельные системы цифровой обработки сигналов (гидроакустика) Статический анализ кода программных систем (C, JavaScript) 2.5 года в Яндекс Распределённые высоконагруженные системы: Яндекс.Авто, Яндекс.Недвижимость и др. 3 года преподавания2 в СПбГПУ Базы данных Методы анализа и обеспечения качества ПО Параллельные вычисления 1 2 http://digiteklabs.ru http://kspt.ftk.spbstu.ru/people/tsesko/ Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 3 / 29
  4. 4. Организация курса Формат Формат Каждый понедельник с 20:00 до 21:30 лекция, с 21:30 до 22:00 ответы на вопросы 14-16 лекций, в т. ч. приглашённые докладчики во второй половине курса Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 4 / 29
  5. 5. Организация курса Курсовая работа Курсовая работа Критерий получения зачёта Своё хранилище данных New feature request — каждые 2 недели, лимит на реализацию — 2 недели Проект на http://bitbucket.org (Hg) / http://github.com (Git) + Issue Tracking Scala/Java + ScalaTest/JUnit + Maven/SBT README + INSTALL В конце — отчёт (2-10 стр. с картинками) Команда 1-3 человека Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 5 / 29
  6. 6. Организация курса Материалы Материалы Курс «Базы данных» предыдущего года3 Ссылки на книги, статьи и блоги в каждой лекции — для самостоятельного изучения 3 Илья Тетерин, http://fluffypulser.ru/static/dbcourse.2012/ Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 6 / 29
  7. 7. Содержание курса Цели Цели Принципы построения систем хранения (и обработки) данных Проблемы и варианты их решения Промышленные примеры реализации принципов Навыки оценки решений Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 7 / 29
  8. 8. Содержание курса О чём мы будем говорить О чём мы будем говорить Классификации баз данных Big Data: Scalability, Availability, CAP SQL vs NoSQL Транзакции Производительность Примеры: Redis, Cassandra, MongoDB, HBase, etc. Проектирование систем хранения и обработки Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 8 / 29
  9. 9. Содержание курса О чём мы (почти) НЕ будем говорить О чём мы (почти) НЕ будем говорить Реляционная модель данных Теория нормальных форм SQL Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 9 / 29
  10. 10. Содержание курса О чём мы возможно будем говорить О чём мы возможно будем говорить Примеры решения конкретных задач: Хранение картинок Полнотекстовый поиск Встраиваемые БД Графовые БД Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 10 / 29
  11. 11. Определения и примеры База данных База данных A database is an organized collection of dataa . a http://en.wikipedia.org/wiki/Database Телефонная книга Книжная библиотека Коллекция фотографий Товарный чек Социальная сеть Файловая система Географическая карта ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 11 / 29
  12. 12. Определения и примеры Операции над данными Операции над данными CRUD Create, read, update, deletea . a http: //en.wikipedia.org/wiki/Create,_read,_update_and_delete Например Operation Create Read (Retrieve) Update (Modify) Delete (Destroy) Цесько В. А. (CompSciCenter) SQL HTTP INSERT POST SELECT GET UPDATE PUT / PATCH DELETE DELETE Введение 16 сентября 2013 г. 12 / 29
  13. 13. Определения и примеры Бумажная телефонная книга Бумажная телефонная книга Create Открыть страницу по первой букве фамилии Вписать в конец страницы ФИО и телефон Read Открыть страницу по первой букве фамилии Просматривать записи по порядку до совпадения Update Открыть страницу по первой букве фамилии Просматривать записи по порядку до совпадения Зачеркнуть ФИО и телефон Вписать в конец страницы ФИО и телефон Delete Открыть страницу по первой букве фамилии Просматривать записи по порядку до совпадения Зачеркнуть ФИО и телефон Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 13 / 29
  14. 14. Определения и примеры Про «скорость» телефонной книги Про «скорость» телефонной книги Create — «быстрая» вставка Read, Update, Delete — всё сводится к поиску записи Инвариант В телефонной книге есть 0 или 1 незачёркнутая запись для любой ФИО Если хотим оценить точнее, то нужно кое-что вспомнить... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 14 / 29
  15. 15. Определения и примеры O(n) и o(n) O(n) и o(n) Формальное определениеa a http://en.wikipedia.org/wiki/Big_O_notation f (n) ∈ O(g (n)) ⇔ ∃k > 0 ∃n0 ∀n > n0 f (n) ≤ g (n) · k f (n) ∈ o(g (n)) ⇔ ∀k > 0 ∃n0 ∀n > n0 f (n) ≤ g (n) · k Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 15 / 29
  16. 16. Определения и примеры o(n): Сравнение o(n): Сравнение Компьютер мощностью 1 Gops: o() 1 Gops 1 Tops o(n) 1 секунда 16 минут o(log2 (n)) 30 микросекунд 40 микросекунд 2 32 года 32 миллиона лет o(n ) o(n · log2 (n)) 30 секунд 11 часов k с. 1000k с. o(k · n) Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 16 / 29
  17. 17. Определения и примеры o(n): Примеры o(n): Примеры o(n) — последовательный перебор o(n2 ) — сравнение всех со всеми o(log2 (n)) — бинарный поиск o(n · log2 (n)) — сортировка Quick Sort o(k · n) — сортировка Radix Sort Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 17 / 29
  18. 18. Определения и примеры Вернёмся к телефонной книге Вернёмся к телефонной книге Пусть в книге 100 записей. Если совсем не сортировать, то поиск за 100/2 = 50 операций в среднем Если всё полностью отсортировано, то поиск за log2 (100) ≈ 6.64 операции А в бумажной телефонной книге log2 (28) + 100/28/2 ≈ 6.59 операции Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 18 / 29
  19. 19. Определения и примеры Ещё есть ограничения физического мира Ещё есть ограничения физического мира 1 2 3 4 5 6 7 8 9 10 11 12 13 14 L1 cache reference ......................... 0.5 Branch mispredict ............................ 5 L2 cache reference ........................... 7 Mutex lock/unlock ........................... 25 Main memory reference ...................... 100 Compress 1K bytes with Zippy ............. 3,000 Send 2K bytes over 1 Gbps network ....... 20,000 SSD random read ........................ 150,000 Read 1 MB sequentially from memory ..... 250,000 Round trip within same datacenter ...... 500,000 Read 1 MB sequentially from SSD* ..... 1,000,000 Disk seek ........................... 10,000,000 Read 1 MB sequentially from disk .... 20,000,000 Send packet CA->Netherlands->CA .... 150,000,000 45 .4 5 ns ns ns ns ns ns ns ns ns ns ns ns ns ns = = = = = = = = = 3 us 20 us 150 us 250 us 0.5 ms 1 ms 10 ms 20 ms 150 ms https://gist.github.com/jboner/2841832 http://elizarov.livejournal.com/27425.html Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 19 / 29
  20. 20. Классификация БД Disclaimer Disclaimer Общепризнанных устоявшихся классификаций нет6 Классификации неполны по определению Многие хранилища данных являются гибридными или настраиваемыми Любые противоречия случайны и на совести автора 6 http://en.wikipedia.org/wiki/Database#Database_type_examples Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 20 / 29
  21. 21. Классификация БД Data Model Data Model Hierarchical Relational Graph Object Document Key-value Columnar Deductive Spatial ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 21 / 29
  22. 22. Классификация БД Deployment Deployment Embedded (in-process) Separate Distributed ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 22 / 29
  23. 23. Классификация БД Storage Storage In-memory On-disk Data warehousing ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 23 / 29
  24. 24. Классификация БД Usage patterns Usage patterns Messaging Counters Logging + Batch processing OLTP Entity enrichment Versioning ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 24 / 29
  25. 25. Классификация БД И это ещё не всё И это ещё не всё Query Language Consistency Availability & Replication Partition tolerance Transactions Backups Security ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 25 / 29
  26. 26. Домашнее задание План минимум План минимум Телефонная книга: nickname (Ключ), ФИО + телефон (Значение) CRUD: add("ivanov ...), get("ivanov"), delete("ivanov") Доступ через консоль или HTTP или TCP В памяти на List или Map Персистентно на диске Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 26 / 29
  27. 27. Домашнее задание План максимум: key-value storage План максимум: key-value storage IMDB dataset7 Quora: Where can I get large datasets open to the public?8 7 http://www.imdb.com/interfaces http://www.quora.com/Data/ Where-can-I-find-large-datasets-open-to-the-public 8 Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 27 / 29
  28. 28. Домашнее задание Подсистемы Подсистемы API Ключ (string, byte[], ...) Запись/документ (string, byte[], JSON, ...) Парсер аргументов Сериализация/десериализация (JSON, XML, ...) Надёжное хранение (flush(), commit log, snapshot, ...) Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 28 / 29
  29. 29. Вопросы? Вопросы? http://incubos.org/contacts/ Общие вопросы — в Twitter: @incubos Вопросы по лекциям — в комментариях: http://incubos.org/blog/ Частные вопросы — в почту vadim.tsesko@gmail.com Не забудьте про ДЗ Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 29 / 29

×