SlideShare a Scribd company logo
1 of 29
Download to read offline
Введение
Курс «Базы данных»
Цесько Вадим Александрович
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 в СПбГПУ
Базы данных
Методы анализа и обеспечения качества ПО
Параллельные вычисления
1
2

http://digiteklabs.ru
http://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 Tracking
Scala/Java + ScalaTest/JUnit + Maven/SBT
README + 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, CAP
SQL vs NoSQL
Транзакции
Производительность
Примеры: Redis, Cassandra, MongoDB, HBase, etc.
Проектирование систем хранения и обработки

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

Введение

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

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

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

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

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

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

Введение

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

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

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

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

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

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

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

Введение

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

10 / 29
Определения и примеры

База данных

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

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

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

Введение

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

11 / 29
Определения и примеры

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

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

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

Бумажная телефонная книга
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
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
Определения и примеры

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

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

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

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

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

Если всё полностью отсортировано, то поиск за
log2 (100) ≈ 6.64 операции

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

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

Введение

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

18 / 29
Определения и примеры

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

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

Disclaimer

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

6

http://en.wikipedia.org/wiki/Database#Database_type_examples

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

Введение

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

20 / 29
Классификация БД

Data Model

Data Model
Hierarchical
Relational
Graph
Object
Document
Key-value
Columnar
Deductive
Spatial
...
Цесько В. А. (CompSciCenter)

Введение

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

21 / 29
Классификация БД

Deployment

Deployment

Embedded (in-process)
Separate
Distributed
...

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

Введение

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

22 / 29
Классификация БД

Storage

Storage

In-memory
On-disk
Data warehousing
...

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

Введение

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

23 / 29
Классификация БД

Usage patterns

Usage patterns

Messaging
Counters
Logging + Batch processing
OLTP
Entity enrichment
Versioning
...

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

Введение

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

24 / 29
Классификация БД

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

И это ещё не всё
Query Language
Consistency
Availability & Replication
Partition tolerance
Transactions
Backups
Security
...

Цесько В. А. (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 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
Домашнее задание

Подсистемы

Подсистемы

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/
Частные вопросы — в почту
vadim.tsesko@gmail.com
Не забудьте про ДЗ

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

Введение

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

29 / 29

More Related Content

What's hot

Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
Ontico
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Ontico
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Ontico
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
Ontico
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)
Ontico
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 

What's hot (20)

Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
 
Technopolis.NoSQL 03 Cassandra
Technopolis.NoSQL 03 CassandraTechnopolis.NoSQL 03 Cassandra
Technopolis.NoSQL 03 Cassandra
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 

Viewers also liked

Базы данных. CAP
Базы данных. CAPБазы данных. CAP
Базы данных. CAP
Vadim Tsesko
 
Базы данных. HBase
Базы данных. HBaseБазы данных. HBase
Базы данных. HBase
Vadim Tsesko
 
Multidimensional indexing
Multidimensional indexingMultidimensional indexing
Multidimensional indexing
Vadim Tsesko
 
Базы данных. ZooKeeper
Базы данных. ZooKeeperБазы данных. ZooKeeper
Базы данных. ZooKeeper
Vadim Tsesko
 

Viewers also liked (13)

Базы данных. CAP
Базы данных. CAPБазы данных. CAP
Базы данных. CAP
 
Actor model
Actor modelActor model
Actor model
 
Базы данных. Cassandra
Базы данных. CassandraБазы данных. Cassandra
Базы данных. Cassandra
 
Базы данных. Distributed Commit
Базы данных. Distributed CommitБазы данных. Distributed Commit
Базы данных. Distributed Commit
 
Базы данных. HBase
Базы данных. HBaseБазы данных. HBase
Базы данных. HBase
 
Базы данных. HDFS
Базы данных. HDFSБазы данных. HDFS
Базы данных. HDFS
 
YoctoDB в Яндекс.Вертикалях
YoctoDB в Яндекс.ВертикаляхYoctoDB в Яндекс.Вертикалях
YoctoDB в Яндекс.Вертикалях
 
Multidimensional indexing
Multidimensional indexingMultidimensional indexing
Multidimensional indexing
 
Базы данных. ZooKeeper
Базы данных. ZooKeeperБазы данных. ZooKeeper
Базы данных. ZooKeeper
 
Фреймворк Akka и его использование в Яндексе
Фреймворк Akka и его использование в ЯндексеФреймворк Akka и его использование в Яндексе
Фреймворк Akka и его использование в Яндексе
 
Actor model
Actor modelActor model
Actor model
 
Actor model. Futures & Promises. Reactive Streams.
Actor model. Futures & Promises. Reactive Streams.Actor model. Futures & Promises. Reactive Streams.
Actor model. Futures & Promises. Reactive Streams.
 
Потоковая фильтрация событий
Потоковая фильтрация событийПотоковая фильтрация событий
Потоковая фильтрация событий
 

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

sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
Ontico
 
Computer vision infrastracture
Computer vision infrastractureComputer vision infrastracture
Computer vision infrastracture
Anton Konushin
 
Android: Как написать приложение, которое не тормозит
Android: Как  написать приложение, которое не тормозитAndroid: Как  написать приложение, которое не тормозит
Android: Как написать приложение, которое не тормозит
Elena Kotina
 
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patternsKonstantin slisenko - Design patterns
Konstantin slisenko - Design patterns
beloslab
 

Similar to Базы данных. Введение (20)

Technopolis.NoSQL 01
Technopolis.NoSQL 01Technopolis.NoSQL 01
Technopolis.NoSQL 01
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Не SQL'ем единым
Не SQL'ем единымНе SQL'ем единым
Не SQL'ем единым
 
Александр Соловьев "Как modnaKasta трансформировалась"
Александр Соловьев "Как modnaKasta трансформировалась"Александр Соловьев "Как modnaKasta трансформировалась"
Александр Соловьев "Как modnaKasta трансформировалась"
 
LMS Moodle с точки зрения программиста
LMS Moodle с точки зрения программистаLMS Moodle с точки зрения программиста
LMS Moodle с точки зрения программиста
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
 
11 lucene
11 lucene11 lucene
11 lucene
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
 
Computer vision infrastracture
Computer vision infrastractureComputer vision infrastracture
Computer vision infrastracture
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Машинообрабатываемые инженерные данные и международные стандарты
Машинообрабатываемые инженерные данные и международные стандартыМашинообрабатываемые инженерные данные и международные стандарты
Машинообрабатываемые инженерные данные и международные стандарты
 
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
 
08 Видеокарты
08 Видеокарты08 Видеокарты
08 Видеокарты
 
Android: Как написать приложение, которое не тормозит
Android: Как  написать приложение, которое не тормозитAndroid: Как  написать приложение, которое не тормозит
Android: Как написать приложение, которое не тормозит
 
Соревнования по анализу данных: история, тактика, простые методы
Соревнования по анализу данных: история, тактика, простые методыСоревнования по анализу данных: история, тактика, простые методы
Соревнования по анализу данных: история, тактика, простые методы
 
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patternsKonstantin slisenko - Design patterns
Konstantin slisenko - Design patterns
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
pgconf 2017 Moscow. Make PostgreSQL from source
pgconf 2017 Moscow. Make PostgreSQL from sourcepgconf 2017 Moscow. Make PostgreSQL from source
pgconf 2017 Moscow. Make PostgreSQL from source
 

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

  • 1. Введение Курс «Базы данных» Цесько Вадим Александрович http://incubos.org @incubos Computer Science Center 16 сентября 2013 г. Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 1 / 29
  • 2. Содержание 1 О лекторе 2 Организация курса 3 Содержание курса 4 Определения и примеры 5 Классификация БД 6 Домашнее задание Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 2 / 29
  • 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. Организация курса Формат Формат Каждый понедельник с 20:00 до 21:30 лекция, с 21:30 до 22:00 ответы на вопросы 14-16 лекций, в т. ч. приглашённые докладчики во второй половине курса Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 4 / 29
  • 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. Организация курса Материалы Материалы Курс «Базы данных» предыдущего года3 Ссылки на книги, статьи и блоги в каждой лекции — для самостоятельного изучения 3 Илья Тетерин, http://fluffypulser.ru/static/dbcourse.2012/ Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 6 / 29
  • 7. Содержание курса Цели Цели Принципы построения систем хранения (и обработки) данных Проблемы и варианты их решения Промышленные примеры реализации принципов Навыки оценки решений Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 7 / 29
  • 8. Содержание курса О чём мы будем говорить О чём мы будем говорить Классификации баз данных Big Data: Scalability, Availability, CAP SQL vs NoSQL Транзакции Производительность Примеры: Redis, Cassandra, MongoDB, HBase, etc. Проектирование систем хранения и обработки Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 8 / 29
  • 9. Содержание курса О чём мы (почти) НЕ будем говорить О чём мы (почти) НЕ будем говорить Реляционная модель данных Теория нормальных форм SQL Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 9 / 29
  • 10. Содержание курса О чём мы возможно будем говорить О чём мы возможно будем говорить Примеры решения конкретных задач: Хранение картинок Полнотекстовый поиск Встраиваемые БД Графовые БД Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 10 / 29
  • 11. Определения и примеры База данных База данных A database is an organized collection of dataa . a http://en.wikipedia.org/wiki/Database Телефонная книга Книжная библиотека Коллекция фотографий Товарный чек Социальная сеть Файловая система Географическая карта ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 11 / 29
  • 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. Определения и примеры Бумажная телефонная книга Бумажная телефонная книга Create Открыть страницу по первой букве фамилии Вписать в конец страницы ФИО и телефон Read Открыть страницу по первой букве фамилии Просматривать записи по порядку до совпадения Update Открыть страницу по первой букве фамилии Просматривать записи по порядку до совпадения Зачеркнуть ФИО и телефон Вписать в конец страницы ФИО и телефон Delete Открыть страницу по первой букве фамилии Просматривать записи по порядку до совпадения Зачеркнуть ФИО и телефон Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 13 / 29
  • 14. Определения и примеры Про «скорость» телефонной книги Про «скорость» телефонной книги Create — «быстрая» вставка Read, Update, Delete — всё сводится к поиску записи Инвариант В телефонной книге есть 0 или 1 незачёркнутая запись для любой ФИО Если хотим оценить точнее, то нужно кое-что вспомнить... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 14 / 29
  • 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. Определения и примеры 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. Определения и примеры 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. Определения и примеры Вернёмся к телефонной книге Вернёмся к телефонной книге Пусть в книге 100 записей. Если совсем не сортировать, то поиск за 100/2 = 50 операций в среднем Если всё полностью отсортировано, то поиск за log2 (100) ≈ 6.64 операции А в бумажной телефонной книге log2 (28) + 100/28/2 ≈ 6.59 операции Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 18 / 29
  • 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. Классификация БД Disclaimer Disclaimer Общепризнанных устоявшихся классификаций нет6 Классификации неполны по определению Многие хранилища данных являются гибридными или настраиваемыми Любые противоречия случайны и на совести автора 6 http://en.wikipedia.org/wiki/Database#Database_type_examples Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 20 / 29
  • 21. Классификация БД Data Model Data Model Hierarchical Relational Graph Object Document Key-value Columnar Deductive Spatial ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 21 / 29
  • 22. Классификация БД Deployment Deployment Embedded (in-process) Separate Distributed ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 22 / 29
  • 23. Классификация БД Storage Storage In-memory On-disk Data warehousing ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 23 / 29
  • 24. Классификация БД Usage patterns Usage patterns Messaging Counters Logging + Batch processing OLTP Entity enrichment Versioning ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 24 / 29
  • 25. Классификация БД И это ещё не всё И это ещё не всё Query Language Consistency Availability & Replication Partition tolerance Transactions Backups Security ... Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 25 / 29
  • 26. Домашнее задание План минимум План минимум Телефонная книга: nickname (Ключ), ФИО + телефон (Значение) CRUD: add("ivanov ...), get("ivanov"), delete("ivanov") Доступ через консоль или HTTP или TCP В памяти на List или Map Персистентно на диске Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 26 / 29
  • 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. Домашнее задание Подсистемы Подсистемы API Ключ (string, byte[], ...) Запись/документ (string, byte[], JSON, ...) Парсер аргументов Сериализация/десериализация (JSON, XML, ...) Надёжное хранение (flush(), commit log, snapshot, ...) Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 28 / 29
  • 29. Вопросы? Вопросы? http://incubos.org/contacts/ Общие вопросы — в Twitter: @incubos Вопросы по лекциям — в комментариях: http://incubos.org/blog/ Частные вопросы — в почту vadim.tsesko@gmail.com Не забудьте про ДЗ Цесько В. А. (CompSciCenter) Введение 16 сентября 2013 г. 29 / 29