База данных (БД) — это набор сведений об объекте, хранящихся упорядоченным, строго заданным способом. Простыми словами, база данных — это место хранения данных.
Базы данных сейчас используются практически везде:
- на сайтах для хранения контента для страниц;
- в смартфонах для хранения всех ваших сообщений, фото, заметок и пр.;
- в почтовых сервисах для хранения и поиска нужного письма;
- везде, где есть регистрация и личные кабинеты пользователя;
- в соцсетях, блогах и др.
Вот, в принципе, и вся наука. Суть хранилища довольно проста )
Сами по себе БД не представляли бы интереса, если бы не было средств для программного управления ими и их модификации, т.е. систем управления базами данных (СУБД).
Система управления базами данных (СУБД)
Это комплекс программ, позволяющих создавать БД и управлять хранящимися там данными (вставлять, обновлять, удалять и выбирать), при этом обеспечивая безопасность и надежность их хранения. Топ-5 самых популярных СУБД (по версии DB Engines) включают в себя:
- Oracle database
- MySQL
- Microsoft SQL Server
- PostgreSQL
- MongoDB
Существует огромное количество разновидностей баз данных (по некоторым данным, до 50 видов). Кратко рассмотрим основные виды БД, которые используются при разработке ПО.
Взаимодействие клиент-серверного приложения с БД
Виды баз данных
Классификация баз данных различается в зависимости от критериев. Так, по модели хранения данных (способу представления данных) различают следующие виды БД:
- реляционные;
- иерархические;
- сетевые.
Основные виды баз данных
Наибольшее распространение получили реляционные БД.
Иерархические БД
Информация для ознакомления
Эти базы данных являются одним из первых видов БД. В иерархических базах данных каждая запись имеет одного «родителя». Это создает древовидную структуру, вверху дерева находится единственная запись, которая называется корневой (родительской).
Базы данных подобного вида оптимизированы под чтение информации, то есть базы данных, имеющие иерархическую структуру, умеют быстро выбирать информацию и отдавать ее пользователям. Но такая структура не позволяет столь же быстро перебирать информацию, т.е. выполнять поиск.
Самый простой пример иерархической БД — это файловая система. Так, все данные о состоянии операционной системы Windows хранятся в иерархической базе данных, называемой реестром.
Пример иерархической БД
Сетевые БД
Информация для ознакомления
Такие базы данных являются своего рода модификацией иерархических баз данных. Если у иерархических баз данных у каждого дочернего элемента может быть только один «родитель», то в сетевых базах данных у дочернего элемента может быть несколько «родителей», то есть элементов, стоящих выше него. Примером сетевых баз данных могут быть dbVista, СООБЗ Cerebrum.
Пример сетевого вида БД
Реляционные БД
Обязательно к изучению
Являются широко распространенными БД, в первую очередь потому, что они хорошо описаны с точки зрения математики, а следовательно, имеют относительно простую программную реализацию. Главной особенностью реляционных баз данных является то, что объекты внутри таких баз данных хранятся в виде набора двумерных таблиц. То есть таблица состоит из набора столбцов, в котором может указываться: название, тип данных (дата, число, строка, текст и т.д.).
Пример реляционной БД, состоящей из одной таблицы
Еще одной важной особенностью реляционных БД является то, что число столбцов фиксировано, то есть их надо спланировать заранее, а вот число строк или рядов в реляционных базах данных ничем не ограничено. Именно строки в таких базах данных и есть объекты, которые там хранятся. Важно отметить, что на практике число таблиц гораздо больше, и, как правило, запрос для получения данных ведет сразу к нескольким таблицам.
Пример простой реляционной БД из нескольких таблиц
Такая структура и гибкость делает реляционные БД мощными и адаптируемыми к различным типам данных. С другой стороны, в этом кроется одна из основных сложностей при работе с реляционными БД — проектирование их структуры. Дело в том, что пока количество таблиц и количество столбцов в каждой таблице мало, работать с данными довольно просто и быстро. Однако со временем количество информации увеличивается, и мы получаем постоянно увеличивающееся время на обработку одного запроса. Чем к большему количеству таблиц идет запрос и чем больше количество записей (строк) в каждой таблице, тем медленнее будет выполняться запрос. Для пользователя это выражается, например, в долгой загрузке веб-страницы.
Для выполнения запросов к данным обычно используется язык структурированных запросов (SQL). SQL (Structured Query Language) — это язык программирования, используемый в большинстве реляционных БД для запросов, обработки и определения данных.
Наибольшее распространение реляционные БД получили при работе с интернет-магазинами, различными «админками», кабинетами пользователей и т.д.
NoSQL базы данных
Обязательно к изучению
В последние годы, с развитием социальных сетей, умной аналитики и ML-решений, в некоторых областях стало храниться слишком много полезных данных, использование и хранение которых реляционными методами становится затруднительно из-за больших объемов и медленной обработки информации. К этим областям можно отнести пользовательский контент социальных сетей и данные, полученные из других обширных сетей (так называемые «большие данные» или попросту «бигдата»). Так, например, для того чтобы отобразить домашнюю страницу Instagram, нужно было бы обратиться сразу ко многим таблицам для отображения всей необходимой информации: картинки или видео, количества лайков, пользователей, которые поставили отметку «нравится» и оставили комментарии, загрузить истории и посты других пользователей и т.д. Скорее всего, использование реляционной БД в этом случае привело бы к значительному замедлению работы социальной сети, а следовательно, к недовольству пользователей.
Для такого типа данных создаются и развиваются NoSQL-решения, которые способны обеспечивать масштабируемость и быструю производительность, но жертвуют при этом надежностью. Говоря NoSQL, подразумевают либо «не-SQL», либо «не только SQL», чтобы уточнить, что иногда допускается SQL-подобный запрос.
Основные преимущества NoSQL баз данных
- Гибкость. Как правило, базы данных NoSQL предлагают гибкие схемы данных, что позволяет осуществлять разработку быстрее и обеспечивает возможность поэтапной реализации.
- Горизонтальная масштабируемость. NoSQL базы данных можно масштабировать виртуально без добавления дорогих надежных серверов. Простым языком получается, что часть БД физически находится на одном сервере, а часть — на другом.
- Высокая производительность. Это достигается за счет того, что базы данных этого типа оптимизированы под конкретные модели данных, что в некоторых случаях дает ощутимый прирост производительности по сравнению с реляционными базами данных.
Типы баз данных NoSQL
- БД на основе пар «ключ‑значение». Базы данных этого типа используют в первую очередь за счет высоких показателей по устойчивости к нагрузкам, практически недостижимых при использовании других типов БД. Хорошими примерами использования баз данных типа «ключ‑значение» являются игровые, рекламные приложения и приложения IoT. Такая устойчивая производительность послужила основной причиной переноса Snapchat Stories в сервис DynamoDB от компании Amazon, поскольку эта возможность Snapchat связана с самой большой нагрузкой.
- Документные. Такие базы данных используют документную модель представления данных, что удобно для разработчиков, т.к. в коде самого программного продукта данные также часто представлены такой моделью.
- Графовые БД. Графовые базы данных упрощают разработку и запуск программных продуктов, работающих с наборами сложносвязанных данных. Типичные примеры использования графовых баз данных — социальные сети, сервисы рекомендаций, системы выявления мошенничества.
- БД в памяти. Часто в игровых и рекламных приложениях используются таблицы лидеров, хранение игровых сессий и аналитика в реальном времени. Такие возможности требуют отклика в пределах микросекунд, а трафик неравномерный, он может резко падать и возрастать. В таких случаях используются БД в памяти для обработки высокопроизводительных рабочих нагрузок с низкой задержкой, которые нельзя обработать с помощью дисковых хранилищ данных.
В таблице ниже приведены основные отличия баз данных NoSQL от SQL.
Параметр сравнения | Реляционные БД | БД NoSQL |
Рабочие нагрузки | Поддерживают обработку транзакций в режиме реального времени (OLTP) при условии, что данные строго типизированы и непротиворечивы. | Предназначены для работы приложений с низкой задержкой. Поисковые БД NoSQL предназначены для аналитики частично структурированных данных. |
Модель данных | Данные в виде таблиц, состоящих из строк и столбцов. Схема жестко задает таблицы, строки, столбцы, отношения между таблицами и прочие элементы базы данных. | Предоставляют разнообразные модели данных, оптимизированные для высокой производительности и масштабируемости. |
Масштабируемость | Обычно масштабируются путем увеличения вычислительных возможностей, то есть физических серверов. | Поддерживают высокую виртуальную разделяемость, что повышает пропускную способность и обеспечивает устойчивую производительность почти в неограниченных масштабах. |
Производительность | Для достижения максимальной производительности часто требуется оптимизация запросов, индексов и структуры таблиц. | Производительность обычно диктуется задержками самой сети. |
Краткие итоги
- В базах данных содержится упорядоченная информация, которой удобно пользоваться. Для управления БД используются СУБД.
- Существует множество видов БД. Чтобы выбрать нужную, необходимо учесть, какие именно данные будут там храниться и по какому принципу будет удобнее всего работать с ними, какие выборки нужно будет делать и какие задачи будет решать база данных.
- NoSQL движение набирает популярность гигантскими темпами. Однако это не означает, что реляционные базы данных становятся рудиментом или чем-то архаичным. Скорее всего, они будут использоваться по-прежнему активно, но все больше в симбиозе с ними будут выступать NoSQL базы.
- Все чаще архитекторы выбирают хранилище, исходя из природы самих данных и того, как мы ими хотим манипулировать, какие объемы информации ожидаются.
HRPR — это 10+ лет подготовки IT-рекрутеров
Наши рекрутеры работают уже на трех континентах. Blizzard, Actvision, Google, AT&T, Bell, Amazon — это начало алфавита компаний, где работают наши выпускники.