NoSQL простым языком: что это и зачем нужно?

Расшмфровка видео
Чтобы понять 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
    Пока!
Поделиться: