Введение
Курс «Базы данных»
Цесько Вадим Александрович
http://incubos.org
@incubos
Computer Science Center
16 сентября 201...
Содержание
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, Availabil...
Содержание курса О чём мы (почти) НЕ будем говорить
О чём мы (почти) НЕ будем говорить
Реляционная модель данных
Теория но...
Содержание курса О чём мы возможно будем говорить
О чём мы возможно будем говорить
Примеры решения конкретных задач:
Хране...
Определения и примеры База данных
База данных
A database
is an organized collection of dataa
.
a
http://en.wikipedia.org/w...
Определения и примеры Операции над данными
Операции над данными
CRUD
Create, read, update, deletea
.
a
http:
//en.wikipedi...
Определения и примеры Бумажная телефонная книга
Бумажная телефонная книга
Create
Открыть страницу по первой букве фамилии
...
Определения и примеры Про «скорость» телефонной книги
Про «скорость» телефонной книги
Create — «быстрая» вставка
Read, Upd...
Определения и примеры O(n) и o(n)
O(n) и o(n)
Формальное определениеa
a
http://en.wikipedia.org/wiki/Big_O_notation
f (n) ...
Определения и примеры o(n): Сравнение
o(n): Сравнение
Компьютер мощностью 1 Gops:
o() 1 Gops 1 Tops
o(n) 1 секунда 16 мину...
Определения и примеры o(n): Примеры
o(n): Примеры
o(n) — последовательный перебор
o(n2
) — сравнение всех со всеми
o(log2(...
Определения и примеры Вернёмся к телефонной книге
Вернёмся к телефонной книге
Пусть в книге 100 записей.
Если совсем не со...
Определения и примеры Ещё есть ограничения физического мира
Ещё есть ограничения физического мира
1 L1 cache reference ......
Классификация БД Disclaimer
Disclaimer
Общепризнанных устоявшихся классификаций
нет6
Классификации неполны по определению
...
Классификация БД Data Model
Data Model
Hierarchical
Relational
Graph
Object
Document
Key-value
Columnar
Deductive
Spatial
...
Классификация БД 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
Versio...
Классификация БД И это ещё не всё
И это ещё не всё
Query Language
Consistency
Availability & Replication
Partition toleran...
Домашнее задание План минимум
План минимум
Телефонная книга: nickname (Ключ), ФИО +
телефон (Значение)
CRUD: add("ivanov ....
Домашнее задание План максимум: key-value storage
План максимум: key-value storage
IMDB dataset7
Quora: Where can I get la...
Домашнее задание Подсистемы
Подсистемы
API
Ключ (string, byte[], ...)
Запись/документ (string, byte[], JSON, ...)
Парсер а...
Вопросы?
Вопросы?
http://incubos.org/contacts/
Общие вопросы — в Twitter: @incubos
Вопросы по лекциям — в комментариях:
ht...
Upcoming SlideShare
Loading in...5
×

2013 09 16_db_lecture_01-intro

2,150

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,150
On Slideshare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

2013 09 16_db_lecture_01-intro

  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 http://digiteklabs.ru 2 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 SQL HTTP Create INSERT POST Read (Retrieve) SELECT GET Update (Modify) UPDATE PUT / PATCH Delete (Destroy) DELETE DELETE Цесько В. А. (CompSciCenter) Введение 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 микросекунд o(n2 ) 32 года 32 миллиона лет o(n · log2(n)) 30 секунд 11 часов o(k · n) k с. 1000k с. Цесько В. А. (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 L1 cache reference ......................... 0.5 ns 2 Branch mispredict ............................ 5 ns 3 L2 cache reference ........................... 7 ns 4 Mutex lock/unlock ........................... 25 ns 5 Main memory reference ...................... 100 ns 6 Compress 1K bytes with Zippy ............. 3,000 ns = 3 us 7 Send 2K bytes over 1 Gbps network ....... 20,000 ns = 20 us 8 SSD random read ........................ 150,000 ns = 150 us 9 Read 1 MB sequentially from memory ..... 250,000 ns = 250 us 10 Round trip within same datacenter ...... 500,000 ns = 0.5 ms 11 Read 1 MB sequentially from SSD* ..... 1,000,000 ns = 1 ms 12 Disk seek ........................... 10,000,000 ns = 10 ms 13 Read 1 MB sequentially from disk .... 20,000,000 ns = 20 ms 14 Send packet CA->Netherlands->CA .... 150,000,000 ns = 150 ms 45 .4 https://gist.github.com/jboner/2841832 5 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 8 http://www.quora.com/Data/ Where-can-I-find-large-datasets-open-to-the-public Цесько В. А. (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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×