Расшмфровка видео
Чтобы понять NoSQL, нужно разобраться, что такое
0:04
SQL и почему мы говорим ему No.
0:07
Итак, SQL (ЭСКУЭЛЬ structured query language) расшифровывается
0:11
как «язык структурированных запросов», и это язык запросов
0:13
для управления данными в так называемых реляционных
0:16
базах данных, или просто БД
0:18
В реляционных базах мы храним данные в таблицах,
0:21
которые логически связаны между собой – отсюда и название
0:24
- реляционные от слова relation, связь.
0:26
Это один из самых популярных типов баз.
0:28
В этих таблицах есть строки и столбцы.
0:31
В столбце таблицы хранится определенный тип данных,
0:33
а в каждой ячейке – значение.
0:36
Строка же получается как набор связанных значений,
0:38
которые относятся к одному объекту – мы видим что у
0:40
крыла типа чайка длина 25 метров.
0:43
Возможно, в холодную погоду покороче, но мы не уверены.
0:46
Ну и каждая строка в таблице может быть помечена каким
0:48
то уникальным идентификатором, который называется первичным
0:51
ключом.
0:52
А затем при помощи него мы можем связать данные
0:54
из нескольких таблиц, например в отдельной таблице, где
0:57
он станет внешним ключом.
0:58
В общем, как таблица в экселе, только данные могут быть
1:00
связаны.
1:01
Что еще важно знать: реляционные БД требуют так называемую
1:04
схему (schema) – описание структуры таблицы ее полей и ограничений.
1:08
То есть если нам например нужно добавить или убрать
1:10
столбец в таблице, то это изменение коснется всех
1:13
данных внутри нее.
1:14
Также БД этого типа соответствуют так называемым принципам
1:16
ACID (Асид), что вкратце означает, что при работе с базой,
1:22
целостность и согласованность данных гарантирована, даже
1:25
если возникли проблемы с сетью или железом, что
1:27
полезно при работе с финансами, например.
1:29
В качестве примеров таких баз назовем: Microsoft SQL Server,
1:33
Oracle Database, MySQL (майэскуэль) и PostgreSQL (постгре эскуэль)
1:37
Разобрались.
1:38
Теперь вернемся к NoSQL.
1:39
Это тип баз данных, которые хранят данные в отличном
1:42
от реляционных таблиц формате.
1:44
Они узкоспециализированны для конкретных задач и
1:46
нужны для улучшения производительности, масштабируемости и удобства
1:49
в работе.
1:50
Не пугайся, сейчас разберем конкретные примеры:
1:53
Итак, начем с самого простого, базы данных “ключ-значение”
1:55
(key-value)
1:56
Суть в том, что мы храним данные в таком виде: у нас
1:58
есть уникальный ключ, который указывает на какое-то значение.
2:01
А сама база – это совокупность этих пар.
2:03
Вот так просто!
2:04
Причем эти данные могут быть чем угодно, числом,
2:07
строкой или даже другой парой ключ-значение потому
2:09
что в отличии от реляционных баз данных они не имеют
2:11
предопределенной структуры данных.
2:13
Многие БД такого типа хранят данные в памяти (RAM), в отличии
2:16
от других баз, которые хранят данные на диске, что хоть
2:19
и может ограничивать объем хранимых данных (хотя они
2:21
требуют гораздо меньше памяти), но это обеспечивают
2:23
просто невероятную скорость.
2:25
Ну и раз это NoSQL то никаких сложных запросов, никаких
2:28
связей друг с другом – мы просто записываем ключ
2:30
и его значение, и получаем значение по ключу.
2:32
Где их использовать то?
2:35
Не все данные туда удобно писать.
2:37
Они отлично подходят для хранения кэша или пользовательских
2:39
сессий.
2:40
А в качестве самого простого примера можно назвать корзину
2:42
в интернет магазине – где мы храним идентификатор
2:45
пользователя, и сколько сырков Б.Ю Александров
2:47
он положил в корзину.
2:48
Самые популярные хранилки по типу “ключ – значение”
2:50
это Redis (рэдис), Memcached (мемкэшд) и пожалуй DynamoDB (дайнэмо
2:53
ди би)
2:54
Теперь поговорим про wide-column, они же columnstore базы данных,
2:57
или БД с широкими столбцами или просто колоночные БД.
3:00
Все также просто – берем key-value БД, и делаем так чтобы
3:04
в значении мы могли хранить несколько столбцов сразу.
3:06
Это позволяет удобно хранить связанную информацию.
3:09
Похоже на реляционную БД, но только в отличии от нее,
3:11
тут у нас нет схемы, поэтому мы можем хранить разные
3:13
неструктурированные данные.
3:15
Такой тип БД подойдет для хранения логов, данных
3:17
с умных холодильников и чайников, а также различных
3:20
аналитических приложений, где данные хранятся в большом
3:22
объеме.
3:23
Netflix хранит в таких таблицах вашу историю просмотров,
3:26
например как вы взахлеб посмотрели все 2 сезона
3:28
“Эмили в Париже”.
3:29
В качестве примеров таких баз назовем Cassandra (кассандра),
3:31
Hbase (эйчбэйс) и ClickHouse (кликхаус)
3:34
Следующий уровень – базы данных документов или документориентированные
3:37
БД (Document DB) Если предыдущие типы NoSQL
3:39
БД обычно используются для специфических задач,
3:42
то эти базы уже более универсальны, и могут стать основным
3:45
местом хранения информации.
3:46
Здесь мы храним документы.
3:48
Документ это набор нескольких пар ключ-значение, о которых
3:51
мы говорили раньше, и раз это не SQL, то они неструктурированны
3:54
и не требуют схему.
3:55
Это значит, что мы можем легко добавлять и удалять
3:58
поля в документе, в отличие от реляционных бд, где изменения
4:00
затронули бы всю таблицу.
4:02
Документы даже могут быть вложенными, и содержать
4:05
в себе другие документы.
4:06
Данные хранятся в стандартных форматах, таких как XML (экс
4:08
эм эль), YAML (ямл) и особенно почитаемый JSON (джейсОн).
4:11
Такая форма хранения идеально подходит к объектам, которые
4:14
используются в приложениях.
4:15
Мы буквально сразу получаем полный объект который нам
4:18
нужен, а в SQL нужно сначала пое%аться запикиваем и
4:21
все собрать в необходимый вид (строки, столбцы, ячейки
4:24
вот это вот всё).
4:25
Документы можно группировать друг с другом собирая их
4:27
в коллекции, которые можно собирать в логическую иерархию,
4:30
получая что-то по типу реляционных БД.
4:31
Это как шкаф на работе – в один ящик мы можем положить
4:33
трудовые договоры, в другой – договоры с партнерами,
4:36
а в третий договор аренды дурацких ростовых кукол
4:38
для невероятно веселого корпоратива.
4:40
Ничто нам не мешает сложить всё в одну кучу, но так удобнее.
4:42
И вот эти ящики как раз и будут коллекциями в нашем
4:45
случае.
4:46
А отсутствие схемы позволяет нам положить в один ящик
4:47
договоры, которые схожи логически, но имеют разную
4:50
структуру внутри.
4:51
Например, долгосрочный договор с нашим сотрудником
4:53
Саней и договор с компанией ООО “Безумные усилия”
4:56
на поставку смешных шляп.
4:57
Коллекции есть не у всех БД такого типа, некоторые
5:00
системы используют теги или древовидные иерархии.
5:02
Они часто используются для мобильных приложений
5:04
и игр, блогов, интернет магазинов и всяких штук
5:07
где у нас имеется много контента.
5:09
Самые популярные БД такого типа – MongoDB (монго ди би),
5:11
Amazon DynamoDB (амазон дайнэмо ди би), CouchDB (кауч ди би)
5:25
Идем дальше!
5:27
Графовые БД (Graph DB) Это уже
6:03
что-то экзотическое.
6:04
Тут мы больше значения уделяем тому как данные
6:06
связаны друг с другом, и эта БД лучше всего обрабатывает
6:09
такие данные.
6:10
Тут у нас есть узлы, которые представляют данные и ребра
6:13
(или соединения), которые описывают связь между этими
6:15
данными.
6:16
Помните как в реляционных базах мы записывали связь
6:18
в отдельной таблице?
6:19
Тут мы можем обойтись без нее, просто показав связь.
6:22
Такие базы просто необходимы для алгоритмов рекомендаций,
6:26
социальных сетей, управления компьютерными сетями и
6:28
маршрутизацией или даже обнаружения финансового
6:30
мошенничества.
6:31
Самые популярные графовые базы: Neo4j (нио фор джей) и
6:34
DGraph (ди граф)
6:35
А вот это вам точно понравится – Поисковые БД (search-engine database).
6:38
Они, как понятно из названия, нужны для поиска данных
6:40
из большого количества источников.
6:42
Работают они примерно также как и базы данных документов
6:44 - мы добавляем документы с текстом внутри, а БД проанализирует
6:47
весь текст в этих документах и создаст индексы для этого
6:50
текста.
6:51
По сути это работает как указатели, которые ты видел
6:53
в конце книги, где указывается какой-то термин и страница
6:55
на которой он встречается.
6:57
И когда пользователь выполняет поиск, то сканируются только
7:00
эти индексы, а не все документы в базе.
7:02
Ну и очевидно что они используются в качестве полнотекстового
7:05
поиска, а также для хранения и анализа логов.
7:07
Примеры – Elasticsearch (эластиксёрч), Solr (солр), Algolia (алголиа)
7:10
А как на счет базы данных временнЫх рядов (time series
7:12
database)?
7:13
Это базы данных, оптимизированные для данных с отметками
7:15
времени.
7:16
Такое используется, для мониторинга систем, где
7:17
мы храним значение времени и данные в этот момент.
7:21
Например, загрузка сервера или количество подключений.
7:23
Примеры – InfluxDB (инфлюкс ди би) и Prometheus (прометеус)
7:25
Ух как много всего.
7:27
И что, для каждого случая нужно использовать свой
7:29
тип?
7:30
Ну не обязательно, существуют так называемые много-модульные
7:33
БД (multi-model), которые поддерживают несколько моделей данных.
7:35
Например тот же редис (redis) умеет и в ключ-значение,
7:38
и документы с графами и даже временнЫе данные обработает.
7:41
Кстати, Олег Филиппов, эксперт с 18ти летним опытом в индустрии
7:45
в нашем курсе по NoSQL подробно расскажет, как работать
7:48
с такими системами из нашего видео, как MongoDB, ElasticSearch,
7:51
ClickHouse, CouchDB, PouchDB, Redis, Neo4,j Google BigQuery.
7:55
Записывайся на бесплатный вводный урок по ссылке
7:57
в описании.
7:58
А пока ответь на вопрос: как думаешь, какую БД использует
8:02
YouTube?
8:03
Почему?
8:04
Ответ в комментарии к видео.
8:05
Ставь лайк этому видео, подписывайся на канал,
8:07
покажи этот ролик друзьям, носи шапку, записывайся
8:10
на наши курсы и ешь поменьше сладкого.
8:12
Пока!