Урок 49 из 84 · Базы данных
Введение в базу данных
Содержание урока
- Типы баз данных
- Реляционные базы данных.
- Объектно-ориентированные базы данных.
- Распределенные базы данных.
- Хранилища данных.
- Базы данных NoSQL.
- Графовые базы данных.
- Базы данных OLTP.
- Базы данных с открытым исходным кодом.
- Облачные базы данных.
- Многомодельные базы данных.
- Документные базы данных/JSON.
- Автономные базы данных.
- Самые популярные СУБД
- MySQL
- PostgreSQL
- SQLite
- Oracle
- MongoDB
Каждый раз когда мы с Вами открываем какой-либо сайт или мобильное приложение, мы получаем и / или генерируем огромное количество информации. Зачастую эта информация хранится в базах данных.

Для примера, давайте, возьмем приложение Instagram, которое было разработано с использованием Python и Django (о нем мы поговорим позже). В самом начале мы создаем новый аккаунт, при этом заполняем такие данные, как email, имя, никнейм, пароль. Эта информация сохраняется в базе данных Instagram. И потом мы или гости нашей страницы могут получить эту информацию из базы данных. Так что же такое база данных?

База данных — это упорядоченный набор структурированной информации или данных, которые обычно хранятся в электронном виде в компьютерной системе. База данных обычно управляется системой управления базами данных (СУБД). Данные вместе с СУБД, а также приложения, которые с ними связаны, называются системой баз данных, или, для краткости, просто базой данных.
Система управления базами данных - это комбинация, состоящая из языковых и
программных средств, которая осуществляет запись данных, доступ к ним, позволяет
менять и удалять их, обеспечивает безопасность данных. СУБД - это система, позволяющая создавать базы данных и манипулировать
записями, хранящимися в них. А доступ к данным СУБД осуществляется через
специальный язык - SQL.
SQL (structured query language) - это язык структурированных запросов, основной
задачей которого является предоставление способа считывания, записи, изменения и
удаления информации в/из базы данных. SQL используется в большинстве реляционных баз данных для запроса, обработки и определения данных, а также контроля доступа.
Команды, которые используются в SQL, делятся на:
- манипулирующие данными,
- определяющие данные,
- управляющие данными.
Схему взаимодействия SQL, СУБД и базы данных можно отобразить следующим образом:

Типы баз данных
Существует множество различных типов баз данных. Выбор наилучшей базы данных зависит от того, как Вы намереваетесь использовать Ваши данные.
Реляционные базы данных.
Реляционные базы данных стали преобладать в 1980-х годах. Элементы в реляционной базе данных организованы в виде набора таблиц со столбцами и строками. Технология реляционных баз данных обеспечивает наиболее эффективный и гибкий способ доступа к структурированной информации.
Объектно-ориентированные базы данных.
Информация в объектно-ориентированной базе данных представлена в форме объекта, как в объектно-ориентированном программировании.
Распределенные базы данных.
Распределенная база данных состоит из двух или более файлов, расположенных на разных узлах. Такая база данных может храниться на нескольких компьютерах, расположенных в одном физическом месте или распределенных по разным сетям.
Хранилища данных.
Будучи централизованным репозиторием для данных, хранилище данных представляет собой тип базы данных, специально предназначенной для быстрого выполнения запросов и анализа.
Базы данных NoSQL.
База данных NoSQL, или нереляционная база данных, позволяет хранить и обрабатывать неструктурированные или слабоструктурированные данные (в отличие от реляционной базы данных, задающей структуру содержащихся в ней данных). Популярность баз данных NoSQL растет по мере распространения и усложнения веб-приложений.
Графовые базы данных.
Графовая база данных хранит данные в контексте сущностей и связей между сущностями.
Базы данных OLTP.
База данных OLTP — это быстрая база данных аналитического типа, предназначенная для большого объема транзакций, выполняемых множеством пользователей.
Это лишь некоторые из десятков типов баз данных, используемых в настоящее время. Другие, менее распространенные базы данных, предназначены для очень специфических научных, финансовых и иных задач. Помимо появления новых типов, базы данных развиваются в абсолютно новых направлениях — изменяются подходы к разработке технологий, происходят значительные сдвиги, такие как внедрение облачных технологий и автоматизации. В частности, в последнее время появились следующие базы данных.
Базы данных с открытым исходным кодом.
Такие базы данных имеют открытый исходный код и могут управляться средствами как SQL, так и NoSQL.
Облачные базы данных.
Облачная база данных представляет собой набор структурированных или неструктурированных данных, размещенный на частной, публичной или гибридной платформе облачных вычислений. Существует два типа моделей облачных баз данных: традиционная база данных и база данных как услуга (DBaaS). В модели DBaaS административные задачи и обслуживание выполняются поставщиком услуг.
Многомодельные базы данных.
Многомодельная база данных объединяет разные типы моделей баз данных в единую интегрированную серверную СУБД. Это означает, что она может содержать различные типы данных.
Документные базы данных/JSON.
Базы данных документов предназначены для хранения, извлечения и обработки документоориентированной информации и предоставляют современный способ хранения данных в формате JSON, а не в виде строк и столбцов.
Автономные базы данных.
Самоуправляемые базы данных (также называемые автономными) – это новейшие и самые революционные облачные базы данных, которые используют машинное обучение для автоматизации настройки, защиты, резервного копирования, обновления и других стандартных задач обслуживания, обычно выполняемых администраторами баз данных.
Самые популярные СУБД
И напоследок, я познакомлю Вас с 5 самыми популярными системами управления базами данных, коими являются MySQL, PostgreSQL, SQLite, Oracle и MongoDB.
MySQL
MySQL является одной из самых популярных и распространенных СУБД, которая используется во многих компаниях (например, Facebook, Wikipedia, Twitter, LinkedIn, Alibaba и других). MySQL представляет собой реляционную СУБД, которая относится к свободному программному обеспечению: она распространяется на условиях GNU Public License. Как правило, эту систему управления базами данных определяют как хорошую, быструю и гибкую, рекомендованную к применению в небольших или средних проектах.
У MySQL есть множество различных преимуществ. Например, она поддерживает различные типы таблиц – как известные MyISAM и InnoDB, так и более экзотичные HEAP и MERGE. Кроме того, количество поддерживаемых типов постоянно растет. MySQL выполняет все команды быстро – возможно, сейчас это самая быстрая СУБД из всех существующих. С этой системой управления базами данных может одновременно работать неограниченное количество пользователей, а число строк в таблицах может достигать 50 миллионов.
Так как в сравнении с некоторыми другими системами MySQL поддерживает меньшее количество возможностей, то и работать с ней значительно проще, чем, к примеру, с PostgreSQL, о которой будет рассказано ниже.
MySQL – это выбор тех, кому необходима СУБД для проекта небольшого или среднего размера, быстрая и удобная в работе и без сложностей с администрированием.
PostgreSQL
Эта свободно распространяемая система управления базами данных относится к объектно-реляционному типу СУБД. Как и в случае с MySQL, работа с PostgreSQL основывается на языке SQL, однако, в отличие от MySQL, PostgreSQL поддерживает стандарт SQL-2011. Эта СУБД не имеет ограничений ни по максимальному размеру базы данных, ни по максимуму записей или индексов в таблице.
Если говорить о преимуществах PostgreSQL, то в первую очередь это надежность транзакций и репликаций, возможность наследования и легкая расширяемость. PostgreSQL поддерживает различные расширения и варианты языков программирования, такие как PL/Perl, PL/Python и PL/Java. Также есть возможность загружать C-совместимые модули.
Многие отмечают, что в отличие от MySQL данная СУБД имеет хорошую и подробную документацию, которая дает ответы практически на все вопросы.
О том, что это более масштабная, чем MySQL, СУБД, говорит и тот факт, что PostgreSQL периодически сравнивают с такой мощной системой управления данных, как Oracle. Все это позволяет говорить о PostgreSQL как об одной из самых продвинутых СУБД на данный момент.
SQLite
На данный момент это одна из самых компактных СУБД. Также она является встраиваемой и реляционной.
SQLite позволяет хранить все данные в одном файле и, благодаря своему небольшому объему, отличается завидным быстродействием. SQLite значительно отличается от MySQL и PostgreSQL своей структурой: движок и интерфейс этой СУБД находятся в одной библиотеке – и именно это позволяет выполнять все запросы очень быстро. Другие СУБД (MySQL, PostgreSQL, Oracle и т.д.) используют парадигму «клиент-сервер», когда взаимодействие происходит через сетевой протокол.
Из недостатков можно отметить отсутствие системы пользователей и возможности увеличения производительности.
Oracle
Эта СУБД относится к объектно-реляционному типу. Название произошло от названия разработавшей эту систему фирмы Oracle. Наравне с SQL СУБД использует процедурное расширение под названием PL/SQL, а также язык Java.
Oracle – это система, отличающаяся стабильностью уже не один десяток лет, поэтому ее выбирают корпорации, для которых важна надежность восстановления после сбоев, отлаженная процедура бэкапа, возможность масштабирования и другие ценные возможности. К тому же эта СУБД обеспечивает отличную безопасность и эффективную защиту данных.
В отличие от других СУБД, стоимость покупки и использования Oracle достаточно высока, и именно это зачастую является значимым препятствием к ее использованию в небольших фирмах.
MongoDB
Эта СУБД отличается тем, что она предназначена для хранения иерархических структур данных, и поэтому ее называют документоориентированной (она представляет собой документное хранилище без использования таблиц или схем). MongoDB имеет открытый исходный код.
Используя идентификатор, вы можете производить быстрые операции над объектом. Также эта СУБД хорошо показывает себя и при сложных взаимодействиях. В первую очередь речь идет о быстродействии – в некоторых случаях приложение, написанное на MongoDB, будет работать быстрее, чем такое же приложение, использующее SQL, т.к. MongoDB относится к классу СУБД NoSQL и пользуется объектным языком запросов, который значительно легче SQL.
Однако этот язык имеет и свои ограничения, и потому MongoDB следует использовать в случаях, когда нет необходимости в сложных и нетривиальных выборках.
Выбор СУБД – это важный момент при создании своего ресурса. Отталкивайтесь от своих задач и возможностей, пробуйте и экспериментируйте, чтобы найти именно тот вариант, который будет наиболее подходящим.