Что такое NoSQL СУБД: история, виды, примеры, применение Big Data

Для правильной работы сайта нужны не только файлы с кодом страниц, но и базы данных. Для взаимодействия с БД используются системы управления базами данных (СУБД). В этой статье я расскажу о базах данных и СУБД, их разновидностях и основных отличиях.

Как хранится информация в БД

В основе всей структуры хранения лежат три понятия:

  • База данных;
  • Таблица;
  • Запись.

База данных

Таблица

Запись

Соберем всё вместе, чтобы понять, как будет выглядеть ведение дневника погоды при участии базы данных.

  • Создадим для сайта новую БД и дадим ей название «weather_diary».
  • Создадим в БД новую таблицу с именем «weather_log» и определим там следующие столбцы:
    • Город (тип: текст);
    • День (тип: дата);
    • Температура (тип: число);
    • Облачность (тип: число; от 0 (нет облачности) до 4 (полная облачность));
    • Были ли осадки (тип: истина или ложь);
    • Комментарий (тип: текст).
  • При сохранении формы будем добавлять в таблицу weather_log новую запись, и заполнять в ней все поля информацией из полей формы.

Теперь можно быть уверенными, что наблюдения наших пользователей не пропадут, и к ним всегда можно будет получить доступ.

Реляционная база данных

  • Создать новую таблицу с именем „cities“.
  • Все города в России известны, поэтому их все можно добавить в одну таблицу.
  • Переделать форму, изменив поле ввода города с текстового на поле типа «select», чтобы пользователь не вписывал город, а выбирал его из списка.
  • При сохранении погодной записи, в поле для города поставить ссылку на соответствующую запись из таблицы городов.

Так мы решим сразу две задачи:

  • Сократим объём хранимой информации, так как погодные записи больше не будут содержать название города;
  • Избежим дублирования: все пользователи будут выбирать один из заранее определённых городов, что исключит опечатки.

PHP. Профессиональная веб-разработка В асинхронном форматеПо цене 780 €

Это интересно: Трудовая книжка

Что такое СУБД и SQL

Именно с СУБД имеют дело потребители, то есть мы с вами. Современные СУБД позволяют обрабатывать не только тексты или графику, но и медиафайлы (аудио и видео файлы).

Любой программный продукт имеет свой язык, при помощи которого он управляется. Не исключение и СУБД. Один из основных языков для общения с СУБД является язык SQL (structured query language — язык структурированных запросов).

Стоит отметить, что по характеру использования СУБД делятся на однопользовательские (для одного пользователя – локального компьютера) и много пользовательские (для сетей).

Я уверен вы не думаете, что существует одна универсальная СУБД. И правильно, их десятки. В рамках этого раздела мы ограничим себя работой с бесплатной и самой распространенной СУБД MySQL.

СУБД MySQL

СУБД MySQL работает только с реляционными базами данных. Реляционные базы данных наиболее просты для первичного изучения. Кроме этого они используются на всех хостингах и серверах для массового пользования.

Осталось дать понятие реляционная база данных. Это простые таблицы, в которых есть информационные строки и столбцы. Пересечение строки и столбца называют ячейкой. Вся база данных состоит из нескольких или многих таблиц, причем, все таблицы между собой взаимодействуют.

Статьи по теме «База данных»

  • PhpMyAdmin на локальном сервере
  • Что такое база данных — понятие база данных в информатике
  • Функции СУБД обеспечивающие управление базой данных
  • Классификация баз данных
  • Устройство реляционной базы данных
  • Первичный ключ и внешний ключ таблиц реляционных баз данных
  • Концептуальная модель базы данных — диаграмма связи между объектами
  • Понятие и назначение SQL запроса
  • SQL запрос для создания таблицы базы данных — оператор CREATE TABLE
  • SQL запрос INSERT INTO — наполнить базу данных информацией
  • SQL ALTER TABLE — sql запрос на модификацию таблицы базы данных

Похожие статьи:

  • Понятие и назначение SQL запроса
  • Функции СУБД обеспечивающие управление базой данных
  • Урок 3, Установка MySQL
  • PhpMyAdmin на локальном сервере
  • 4 Урок, Базовые команды SQL

Виды баз данных

  • Фактографическая – содержит краткую информацию об объектах некоторой системы в строго фиксированном формате;
  • Документальная – содержит документы самого разного типа: текстовые, графические, звуковые, мультимедийные;
  • Распределённая – база данных, разные части которой хранятся на различных компьютерах, объединённых в сеть;
  • Централизованная – база данных, хранящихся на одном компьютере;
  • Реляционная – база данных с табличной организацией данных;
  • Неструктурированная (NoSQL) — база данных, в которой делается попытка решить проблемы масштабируемости и доступности за счёт атомарности (англ. atomicity) и согласованности данных, но не имеющих четкой (реляционной) структуры.

Одно из основных свойств БД – независимость данных от программы, использующих эти данные. Работа с базой данных требует решения различных задач, основные из них следующие:

  • создание базы;
  • запись данных в базу;
  • корректировка данных;
  • выборка данных из базы по запросам пользователя.

Задачи этого списка называются стандартными.

Следующее понятие, связанное с базой данных: программа для работы с базой данных – это программа, которая обеспечивает решение требуемого комплекса задач. Любая подобная программа должна уметь решать все задачи стандартного набора.

База данных в разных системах имеет различную структуру.

В ПВЭМ обычно используются реляционные БД – в таких базах файл является по структуре таблицей. В ней столбцы называются полями, строки – записями.

В БД содержатся банные некоторого множества объктов. Каждая запись содержит данные одного объекта. Каждая такая БД определяется именем файла, списком полей, шириной полей. Например, БД Школа (Ученик, Класс, Адрес).

Примером БД может служить расписание движения поездов или автобусов. Здесь каждая строчка – запись отражает данные строго одного объекта. База включает поля: номер рейса, маршрута следования, время отправления и т.д.

Классическим примером БД является и телефонный справочник. Запрос к базе данных – это предписание, указывающее, какие данные пользователь желает получить из базы.

Некоторые запросы могут представлять собой серьёзную задачу, для решения которой потребляется составлять сложную программу. Например, запрос к базе – автобусному расписанию: определить разницу в среднем интервале отправления автобусов из Ростова в Таганрог и из Ростова в Шахты.

Объекты для работы с базами данных

Для создания приложения, позволяющего просматривать и редактировать базы данных, нам потребуется три звена:

  • набор данных
  • источник данных
  • визуальные элементы управления

В нашем случае эта триада реализуется в виде:

  • Table
  • DataSource
  • DBGrid

Table подключается непосредственно к таблице в базе данных. Для этого нужно установить псевдоним базы в свойстве DataBaseName и имя таблицы в свойстве TableName, а затем активизировать связь: свойство Active = true.

Однако, поскольку Table является невизуальным компонентом, хотя связь с базой и установлена, пользователь не в состоянии увидеть какие – либо данные. Поэтому необходимо добавить визуальные компоненты, отображающие эти данные. В нашем случае это сетка DBGrid. Сетка сама по себе «не знает», какие данные ей нужно отображать, её нужно подключить к Table, что и делается через компонент – посредник DataSource.

А зачем нужен компонент – посредник? Почему бы сразу не подключаться к Table?

Допустим, несколько визуальных компонентов – таблица, поля ввода и т.п. подключены к таблице. А нам нужно быстро переключить их все на другую подобную таблицу. С DataSource это сделать несложно — достаточно просто поменять свойство DataSet, а вот без DataSource пришлось бы менять указатели у каждого компонента.

Приложения баз данных – нить, связывающая БД и пользователя:

БД => набор данных –=> источник данных => визуальные компоненты => пользователь

Набор данных:

  • Table(таблица, навигационный доступ)
  • Query(запрос, реляционный доступ)

Визуальные компоненты:

  • Сетки DBGrid, DBCtrlGrid
  • Навигатор DBNavigator
  • Всяческие аналоги Lable, Editи т.д.
  • Компоненты подстановки

Особенности реляционных данных

Главная особенность — все объекты хранятся в виде набора 2-мерных таблиц. Каждая таблица включает в себя набор столбцов, где указываются следующие параметры:- название;- тип данных (число, строка и т. д.).

Вторая важная особенность заключается в том, что число столбцов фиксировано. Это значит, что структура БД известна заранее, при этом количество рядов либо строк данных практически не ограничено. Грубо говоря, строки в реляционных БД — есть объекты, хранимые в базе.

По большему счёту, БД — это абстрактное понятие, а в случае с реляционной структурой таблица — есть не более чем удобный способ хранения информации. Причём набор таблиц превращается в базу данных тогда, когда он связан логически. А чтобы этим всем управлять, используют СУБД. Классический пример СУБД — система управления MySQL. Иными словами, СУБД MySQL — есть программное воплощение математических идей.

Требования к проектированию БД

О видах и особенностях реляционных БД мы уже поговорили. Теперь давайте подробнее обсудим сложности их проектирования. В данном случае этот процесс начинается с постановки задач, исходя из нужных требований, особенностей использования, недостатков либо достоинств той либо иной системы управления. В случае с СУБД MySQL необходимо правильно составить общую структуру.

Требования обычно следующие:1. База данных должна быть относительно простой в плане обработки информации.2. Она должна быть максимально компактной и неизбыточной настолько, насколько это возможно без ущерба для функциональности.

Возможны и другие требования, причём нередко они противоречат друг другу. Именно поэтому важно найти оптимальный баланс с точки зрения архитектуры, учитывая назначение конечного продукта.

Так как проектирование — важнейший процесс, им занимается проектировщик. Обычно к работе привлекают профессиональных администраторов серверов либо архитекторов БД, имеющих большой практический опыт. Нужно четко понимать, что проектируется и какие результаты должны получиться на выходе. Это бывает непросто, так как, если речь идёт о серьёзных проектах, готовая структура может включать в себя десятки и сотни таблиц, которые бывают связаны друг с другом как простыми, так и замысловатыми способами.

Результат проектирования — диаграмма или схема. Это подробное схематическое описание, в котором указываются, какие данные будут храниться, сколько столбцов в таблице, тип столбцов в таблице, как связаны таблицы между собой и многое другое. При правильном и грамотном проектировании система будет работать стабильно и без сбоев. В обратном случае ожидайте проблем, так как нет ничего хуже, чем ошибиться на этапе построения архитектуры проекта.

Если вы хотите овладеть базами данных на высоком профессиональном уровне, записывайтесь на соответствующий курс в OTUS. Практикующие эксперты научат вас особенностям управления БД и тому, как эффективно взаимодействовать с любой реляционной СУБД, используя для этого язык структурированных запросов SQL.

Поделитесь в соц.сетях:

Оцените статью:

12 339 views | Комментариев нет

Linux, MariaDB, mySQL

Реляционные базы данных уже давно используются в программировании. В своё время они обрели популярность благодаря простоте и удобству реляционной модели работы с данными.

Данная статья анализирует различия между наиболее популярными реляционными системами управления базами данных (СУБД): SQLite, MySQL и PostgreSQL.

Системы управления базами данных

Базы данных – это логически смоделированные хранилища различной информации (данных) всех видов. Каждая база данных SQL основана модели, которая предоставляет структуру для хранящихся в ней данных. Системы управления базами данных – это приложения (или библиотеки), которые управляют базами данных различных форм, размеров и видов.

Примечание: Чтобы узнать больше о СУБД, читайте статью SQL, NoSQL и другие модели баз данных.

Реляционные системы управления базами данных

Реляционные СУБД для работы с данными используют реляционную модель. Эта модель хранит любую информацию в таблицах в виде связанных записей с атрибутами.

Этот тип СУБД требует наличия структур-таблиц. Столбцы (атрибуты) такой таблицы содержат различные типы данных. Каждая запись БД воспринимается как строка в таблице, атрибуты которой представлены в виде столбцов.

Отношения и типы данных

Отношения можно рассматривать как математические наборы, содержащие ряд атрибутов, которые в совокупности представляют собой базы данных и хранимую в ней информацию.

Добавляя запись в таблицу, нужно распределить все её компоненты (атрибуты) по типам данных. Разные реляционные СУБД используют разные типы данных, и они не всегда взаимозаменяемы.

Подобные ограничения (как, например, с типами данных) типичны для реляционных СУБД, ведь, по сути, отношения между данными и строятся на основе ограничений.

Примечание: Базы данных NoSQL не имеют таких строгих ограничений, поскольку они не выстраивают таких отношений между данными. Чтобы узнать больше о NoSQL, читайте эту статью.

 Популярные реляционные базы данных

В данной статье мы рассмотрим три наиболее важные и популярные СУБД с открытым исходным кодом.

  • SQLite: встроенная мощная система управления базами данных.
  • MySQL: самая популярная и широко распространённая БД.
  • PostgreSQL: продвинутая SQL-совместимая объектная СУБД с открытым исходным кодом.

Примечание: Приложения с открытым исходным кодом почти всегда дают пользователям право на свободное использование и изменение кода. Ответвляя код, вы можете создать совершенно новое приложение. Одним из ответвлений MySQL, например, является MariaDB.

SQLite

SQLite – это производительная библиотека, которую можно встраивать в приложения. Полноценная БД на основе файлов SQLite предлагает широкий набор инструментов для обработки всех видов данных и накладывает намного меньше ограничений, чем другие реляционные базы данных.

Приложения, использующие SQLite, не взаимодействуют с помощью интерфейса (портов, сокетов), а отправляют прямые запросы в файл, в котором хранятся данные (например БД SQLite). Благодаря этому приложение SQLite очень быстрое и производительное.

Типы данных SQLite

  • NULL: пустое значение.
  • INTEGER: целочисленное значение (зависимо от объёма значение хранится в 1, 2, 3, 4, 6 или 8 байтах).
  • REAL: число с плавающей точкой, хранится в виде 8-байтного IEEE.
  • TEXT: текстовая строка, хранится в зашифрованном виде (UTF-8, UTF-16BE или UTF-16LE).
  • BLOB: бинарные данные, хранятся в том виде, в котором были введены.

Примечание: Больше о типах данных SQLite можно узнать в официальной документации.

Преимущества SQLite

  • Простое строение на основе файлов: вся база данных состоит всего из одного файла, что увеличивает её портативность.
  • Стандарты: несмотря на простоту, система SQLite основана на SQL. Некоторые функции опущены (RIGHT OUTER JOIN или FOR EACH STATEMENT), однако вместо них добавлены другие.
  • SQLite отлично подходит для разработки или тестирования. На этих этапах почти всегда необходимо простое, но масштабируемое решение.

Недостатки SQLite

  • Нет управления пользователями. Более сложные СУБД поддерживают управление пользователями (их взаимосвязями, привилегиями и т.п.). Простая СУБД SQLite такой функции не предоставляет.
  • Невозможно повысить производительность. Библиотека SQLite проста в настройке и в использовании. Однако она разработана таким образом, что не позволяет путём тонкой настройки получить дополнительную производительность. То есть сделать SQLite более производительной технически невозможно.

Когда лучше использовать SQLite

  • Простые встроенные приложения, которым нужна портативность, например, однопользовательские локальные приложения, мобильные приложения, игры.
  • Замена диска. Обычно приложения, которым необходимо читать или записывать файлы на диск, могут использовать SQLite для получения дополнительных функций.
  • Тестирование.

Когда лучше не использовать SQLite

  • Многопользовательские приложения. Если приложение построено таким образом, что большое количество клиентов одновременно использует одну БД, то в такое приложение лучше внедрить полнофункциональную реляционную СУБД (например, MySQL).
  • Приложения, записывающие большое количество данных. операция записи является одним из ограничений SQLite. Эта СУБД позволяет выполнять только одну операцию записи за один момент времени, следовательно, она ограничивает пропускную способность.

MySQL

MySQL – самая популярная СУБД. Это многофункциональное открытое приложение, поддерживающее работу огромного количества сайтов. Система MySQL довольно проста в работе и может хранить большие массивы данных.

Примечание: Учитывая популярность MySQL, для этой системы было разработано большое количество сторонних приложений, инструментов и библиотек.

MySQL не реализует полный стандарт SQL. Несмотря на это, MySQL предлагает множество функциональных возможностей для пользователей: автономный сервер баз данных, взаимодействие с приложениями и сайтами и т.п.

Типы данных MySQL

  • TINYINT: целое число в диапазоне от -128 до 127 (1 байт).
  • SMALLINT: целое число от -32768 до 32767 (2 байта).
  • MEDIUMINT: число от -8388608 до 8388608 (3 байта).
  • INT или INTEGER: число в диапазоне от -2147683648 до 2147683648 (4 байта).
  • BIGINT: число от -263 до 263-1 (8 байт).
  • FLOAT: число с плавающей точкой (4 байта).
  • DOUBLE, DOUBLE PRECISION, REAL: число с двойной точностью и плавающей точкой.
  • DECIMAL, NUMERIC: величины повышенной точности.
  • DATE: дата.
  • DATETIME: дата и время.
  • TIMESTAMP: временная метка.
  • TIME: время в формате hh:mm:ss.
  • YEAR: год (по умолчанию хранится в виде 4 цифр, но можно настроить и 2).
  • CHAR: строка фиксированной длины.
  • VARCHAR: строки переменных.
  • TINYBLOB, TINYTEXT: Тип TEXT позволяет хранить текст, а BLOB – изображения, звук, электронные документы и т.п. Максимальная длина – 225 символов.
  • BLOB, TEXT: большие объемы текста, максимум 65535 символов.
  • MEDIUMBLOB, MEDIUMTEXT: аналогично предыдущему, но максимум до 16777215 символов.
  • LONGBLOB, LONGTEXT: аналогично предыдущему, но максимум до 4294967295 символов.
  • ENUM: принимает только одно из значений заданного множества.
  • SET: принимает любой или все элементы из значений заданного множества.

Преимущества MySQL

  • Простота в работе: MySQL очень просто установить и настроить. Сторонние инструменты, в том числе визуализаторы (интерфейсы) значительно упрощают работу с данными.
  • Функциональность: MySQL поддерживает огромное количество функций SQL.
  • Безопасность: MySQL предоставляет много встроенных продвинутых функций для защиты данных.
  • Масштабируемость и производительность: MySQL может работать с большими объёмами данных.

Недостатки MySQL

  • Ограничения: структура MySQL накладывает некоторые ограничения, из-за которых не смогут работать продвинутые приложения.
  • Уязвимости: метод обработки данных, применяемый в MySQL, делает эту СУБД немного менее надёжной по сравнению с другими СУБД.
  • Медленное развитие: хотя MySQL является продуктом с открытым исходным кодом, он очень медленно развивается. Однако тут следует заметить, что на MySQL основано несколько полноценных баз данных (например, MariaDB).

Когда использовать MySQL

  • Распределенные операции: автономный сервер баз данных MySQL поддерживает множество операций и предоставляет несколько дополнительных функций.
  • Высокая безопасность данных: MySQL предлагает высокую защиту данных.
  • Веб-сайты и веб-приложения: несмотря на ограничения MySQL может поддерживать работу почти любого сайта и веб-приложения. Этот гибкий и масштабируемый инструмент прост в использовании.
  • Пользовательские решения: MySQL можно подогнать под строгие требования сайта или приложения.

Когда лучше не использовать MySQL

  • Конфликты с SQL: поскольку MySQL всё же полностью не реализует стандартов SQL, он не полностью совместим с SQL. Потому MySQL не всегда можно интегрировать с другой СУБД.
  • Слабая поддержка параллелизма: несмотря на то, что MySQL хорошо выполняет операции чтения, одновременные операции чтения и записи могут вызвать проблемы.
  • Отсутствие некоторых функций (например, полнотекстового поиска).

PostgreSQL

PostgreSQL – это продвинутая открытая объектно-ориентированная СУБД. PostgreSQL реализует SQL-стандарты ANSI/ISO.

В отличие от других СУБД, PostgreSQL поддерживает очень важные объектно-ориентированные и реляционные функции баз данных: надежные транзакции ACID (атомарность, согласованность, изолированность, долговечность) и т.п.

Основанная на надёжной технологии СУБД PostgreSQL может одновременно обрабатывать большое количество задач. Поддержка согласованности достигается без блокирования операций чтения благодаря MVCC.

Хотя СУБД PostgreSQL не так популярна, как MySQL, для неё тоже разработано большое количество дополнительных инструментов и библиотек, которые упрощают работу с данными и увеличивают производительность СУБД.

Типы данных PostgreSQL

  • bigint: знаковое восьмибайтное целое число.
  • bigserial: восьмибайтное целое число с автоинкрементом.
  • bit [(n)]: битовая строка фиксированной длины.
  • bit varying [(n)]: битовая строка с переменной длиной.
  • boolean: логическое значение (true/false).
  • box: четырёхугольник на плоскости.
  • bytea: бинарные данные.
  • character varying [(n)]: строка символов с переменной длиной.
  • character [(n)]: строка символов с фиксированной длиной
  • cidr: адрес сети IPv4 или IPv6.
  • circle: круг на плоскости.
  • date: дата (год, месяц, день).
  • double precision: число с плавающей точкой двойной точности (8 байт).
  • inet: адрес хоста IPv4 или IPv6.
  • integer: знаковое четырёхбайтовое целое число.
  • interval [fields] [(p)]: промежуток времени.
  • line: бесконечная линия на плоскости.
  • lseg: сегмент линии на плоскости.
  • macaddr: MAC (Media Access Control) адрес.
  • money: валюта.
  • numeric [(p, s)]: точное числовое значение с выбранной точностью.
  • path: геометрический путь на плоскости.
  • point: геометрическая точка на плоскости.
  • polygon: закрытый геометрический путь на плоскости (полигон)
  • real: число с плавающей точкой одинарной точности (4 байта).
  • smallint: знаковое двухбайтное целое число.
  • serial: четырёхбайтное целое число с автоинкрементом.
  • text: строка символов с переменной длиной.
  • time [(p)] [without time zone]: время дня (без часового пояса).
  • time [(p)] with time zone: время дня и часовой пояс.
  • timestamp [(p)] [without time zone]: временная метка (дата и время) без часового пояса.
  • timestamp [(p)] with time zone: временная метка с часовым поясом.
  • tsquery: запрос текстового поиска.
  • tsvector: документ текстового поиска.
  • txid_snapshot: снапшот ID-транзакции уровня пользователя.
  • uuid: универсальный уникальный идентификатор.
  • xml: данные XML.

Преимущества PostgreSQL

  • Система управления базами данных PostgreSQL открытая, SQL-совместимая, свободная.
  • Активное сообщество PostgreSQL поможет найти решение любой проблемы, связанной с СУБД, в любое время суток.
  • Поддержка сторонних инструментов: помимо встроенных продвинутых функций, PostgreSQL поддерживает множество открытых сторонних инструментов для проектирования, управления данными и т.п.
  • Масштабируемость и расширяемость.
  • Объектно-ориентированность.

Недостатки PostgreSQL

  • Производительность: в некоторых ситуациях производительность PostgreSQL ниже, чем у MySQL.
  • Невысокая популярность.
  • В связи с вышеперечисленными недостатками не все хостинг-провайдеры поддерживают PostgreSQL.

Когда использовать PostgreSQL

  • Если приложению необходима целостность данных.
  • Для выполнения сложных пользовательских задач.
  • Если в будущем приложению понадобится более надёжная платная БД, с PostgreSQL легче будет перейти.
  • Для поддержки приложений со сложной структурой PostgreSQL предлагает специальный набор функций.

Когда лучше не использовать PostgreSQL

  • Если приложению нужны быстрые операции чтения.
  • Если приложению не нужна абсолютная целостность данных, ACID или сложная структура, PostgreSQL может стать слишком сложным решением.
  • Репликация данных сложнее, чем в MySQL, потому в кластерах PostgreSQL лучше не использовать.

Tags: MySQL, PostgreSQL, SQL, SQLite

Для создания и управления базами данных используется специальное программное обеспечение, получившее название системы управления базами данных.

Система управления базами данных (СУБД) – комплекс программных и языковых средств, необходимых для создания, администрирования и использования баз данных.

Основные операции, выполняемые СУБД, по управлению данными:

  • поиск информации в базе данных;
  • манипулирование данными;
  • выполнение несложных расчётов;
  • обеспечение целостности данных;
  • восстановление данных после сбоев.

Как правило, взаимодействие пользователя с СУБД происходит через прикладную программу.

Виды СУБД

Рассмотрим классификацию СУБД на основе удаленности данных и программного комплекса от клиента.

Локальные СУБД

Локальные СУБД вместе с базой данных располагаются на компьютере пользователя. Такие системы не зависят от сетевых процессов, поскольку управление базой данных выполняется автономно.

Определенные достоинства связанные в частности с безопасностью. превращаются в очевидные недостатки: в случае работы с базой данных нескольких клиентов, ее редакцию приходится выполнять на каждом компьютере, при этом невозможно «стыковать» изменения, вносимые различными пользователем.

Серверные СУБД

Развитие сетевых технологий позволило использовать удалённые базы данных, расположенные на серверах локальной или глобальной сети. Подобные системы позволяют нескольким пользователям одновременно работать с базой данных и вносить в неё изменения.

Файл-серверные СУБД. На сервере только хранятся файлы базы данных, обработка которых в основном производится на компьютерах пользователя. Сервер обрабатывает клиентские запросы и передает на рабочие станции файлы базы данных (смотрите рис. 1). При внесении изменений в базу данных, СУБД с компьютера пользователя блокирует файлы на сервере, чтобы другие клиенты в этот момент не могли их изменить.

Подобного рода технология обладает определенными недостатками:

  • при поиске данных вся БД копируется по сети на компьютер пользователя, что создает лишнюю сетевую нагрузку;
  • ненадежная защита от неправомерного доступа к данным;
  • при большом количестве подключений снижается надежность в случае внесения изменений в базу данных;
  • уменьшается производительность системы в целом при большой интенсивности доступа к одним и тем же данным.

image

Клиент-серверные СУБД. В этой концепции на сервере, кроме хранения централизованной базы данных, выполняется вся работа по обработке данных. На компьютере пользователя функционирует клиентская программа, которая отправляет запросы к СУБД для выполнения операций с данными (смотрите рис. 2).

Спецификой клиент-серверной архитектуры является использование языка структурированных запросов SQL для управления данными.

Зачем нужны базы данных Какие бывают базы данных MySQL — царица баз

Если вы буде­те делать веб-приложение — напри­мер интернет-магазин, блог или игры, — почти навер­ня­ка вы столк­нё­тесь с базой дан­ных. Вот что это такое с точ­ки зре­ния про­грам­ми­ро­ва­ния, какие тут основ­ные поня­тия и что с ними делать.

Данные

Вокруг нас все­гда мно­го раз­ных дан­ных, например:

  • теле­фон­ные номера;
  • дела на день;
  • запи­си на бумаж­ках, сти­ке­рах и в блокнотах;
  • опуб­ли­ко­ван­ные мыс­ли раз­ных людей;
  • фото­гра­фии в смартфоне;
  • и всё осталь­ное, что мож­но про­чи­тать, уви­деть или услышать.

Если это ком­пью­тер­ная игра, то дан­ны­ми будут типы и место­по­ло­же­ния вра­гов, их уро­вень здо­ро­вья, уро­вень здо­ро­вья героя, тип героя, его поло­же­ние, харак­те­ри­сти­ки карты.

Если это при­ло­же­ние для рабо­ты с кли­ен­том, то там будут хра­нить­ся имя кли­ен­та, его зака­зы, номер теле­фо­на, уро­вень в про­грам­ме лояльности.

Если это служ­ба сле­же­ния за граж­да­на­ми — фото­гра­фия, имя, посе­щён­ные стан­ции мет­ро и ули­цы, место работы.

База данных и СУБД

Есть поня­тие базы дан­ных — это набор дан­ных, орга­ни­зо­ван­ных каким-то спо­со­бом. Напри­мер, если у вас в квар­ти­ре есть гар­де­роб­ная или кла­дов­ка, то всё это поме­ще­ние со всем её содер­жи­мым может счи­тать­ся базой (но не дан­ных, а вещей или банок с огур­ца­ми, что не меня­ет сути).

Есть поня­тие систе­мы управ­ле­ния базой дан­ных (СУБД) — это когда семья села за стол и само­го млад­ше­го отправ­ля­ют в кла­дов­ку за огур­ца­ми, он при­но­сит её и не раз­би­ва­ет по доро­ге. То есть СУБД — это какое-то сред­ство для мани­пу­ля­ции дан­ны­ми в базе, напри­мер программа.

Для чего нужны

Вот основ­ные зада­чи БД на при­ме­ре гардеробной:

  • Сохра­нить наши дан­ные по запро­су — что­бы вы мог­ли открыть дверь, пове­сить курт­ку, закрыть дверь и боль­ше не думать ни о курт­ке, ни о гардеробной.
  • Изме­нить наши дан­ные по запро­су — что­бы мож­но было лег­ко извлечь из гар­де­роб­ной все дыря­вые нос­ки и поло­жить на их место целые.
  • Най­ти эти дан­ные по запро­су — что­бы быст­ро най­ти при­лич­ный пиджак или пар­ный носок.
  • Не дать про­чи­тать эти дан­ные тем, кому не сле­ду­ет, а кому надо — дать. Напри­мер, млад­ший брат может смот­реть на ваши крос­сов­ки, но не может их брать. А девуш­ка (или парень) может поло­жить свои вещи, но толь­ко на опре­де­лён­ную полку.
  • Под­дер­жи­вать поря­док и не дать захла­мить­ся — если вам было лень и вы про­сто кину­ли тол­стов­ку куда попа­ло, что­бы гар­де­роб­ная либо сама нашла, куда эту тол­стов­ку пра­виль­но поло­жить, либо ска­за­ла: «Э БРАТ ЗАЧЕМ ЗАХЛАМЛЯЕШЬ ПОЛОЖИ НОРМАЛЬНО ДАВАЙ»
  • Мас­шта­би­ро­вать­ся — что­бы вы мог­ли про­сто вешать в гар­де­роб­ную вещи и не думать об объ­ё­ме полок.
  • Не поте­рять дан­ные — если квар­ти­ра будет гореть, при­лич­ная гар­де­роб­ная не долж­на даже нагреть­ся. Или, если она всё-таки горит, что­бы где-то в защи­щён­ном под­зем­ном гара­же была точ­ная копия этой гар­де­роб­ной со все­ми акту­аль­ны­ми вещами.

В чём преимущества

Базы дан­ных и их систе­мы управ­ле­ния зато­че­ны на рабо­ту с боль­шим объ­ё­мом дан­ных и от лица боль­шо­го чис­ла поль­зо­ва­те­лей. Сей­час вы поймёте.

🤔 Пред­ставь­те, что у вас есть эксель­ка со спис­ком кли­ен­тов. Это не база дан­ных, это про­сто таб­ли­ца. Что­бы про­чи­тать или запи­сать что-то в эту эксель­ку, вам нуж­но её открыть, сде­лать дело, сохранить.

❌ Допу­стим, эксель­ка с кли­ен­та­ми лежит на сете­вом дис­ке. Вы откры­ли её и ковы­ря­е­тесь в дан­ных, вно­си­те изме­не­ния. Пока вы это дела­е­те, ваш кол­ле­га тоже её открыл и тоже вно­сит изме­не­ния. Потом вы сохра­ни­лись и закры­ли эксель­ку. Эксель­ка пере­за­пи­са­лась ваши­ми дан­ны­ми. Но у ваше­го кол­ле­ги эти дан­ные не отоб­ра­зи­лись, он-то открыл её рань­ше. Теперь, когда он сохра­нит свою эксель­ку, его дан­ные пере­за­пи­шут­ся поверх ваших, а ваши дан­ные про­па­дут. Это пол­ный ахтунг: вся ваша рабо­та потеряна.

image

❌ Или у вас в ком­па­нии пра­ви­ло: эксель­ка все­гда на одной флеш­ке, рабо­та­ем толь­ко с неё. Сей­час флеш­ка в вашем ком­пью­те­ре, вы с ней рабо­та­е­те. А ваше­му кол­ле­ге нуж­но с ней тоже пора­бо­тать. Он гово­рит: «Дай». Вы ему «Отстань». Ну и сло­во за слово…

image

✅ Но мож­но орга­ни­зо­вать сво­е­го рода СУБД. Один ответ­ствен­ный сотруд­ник назна­ча­ет­ся глав­ным по эксель­ке. Она откры­та на его ком­пью­те­ре, а вы ему гово­ри­те: «Пет­ру­ха, добавь в кли­ен­та такого-то вот такие дан­ные». «Пет­ру­ха, а шо, когда дед­лайн по постав­ке для этих ребят из Воро­не­жа?», «Пет­ру­ха, питер­ские отка­за­лись, поставь там отказ».

image

Пет­ру­ха — ваша систе­ма управ­ле­ния базой дан­ных. А эксель­ка — это его база данных.

Понят­но, что Пет­ру­ха мед­лен­ный и не все­гда мно­го­за­дач­ный, но хотя бы он избав­ля­ет от про­бле­мы рас­син­хро­на вер­сий и поте­ри данных.

Ско­рость — ещё одно пре­иму­ще­ство базы дан­ных. База дан­ных устро­е­на так, что она лег­ко и быст­ро нахо­дит, запи­сы­ва­ет, пере­пи­сы­ва­ет и сно­ва нахо­дит дан­ные. Всё пото­му, что СУБД все­гда зна­ет, что где лежит и по како­му кри­те­рию искать. Там не будет слу­чай­ных дан­ных в слу­чай­ном месте.

Ско­рость важ­на ещё и пото­му, что СУБД обыч­но обслу­жи­ва­ет сра­зу мно­го пото­ков: одно­вре­мен­но ей могут поль­зо­вать­ся десят­ки и сот­ни тысяч чело­век, поэто­му ей неко­гда копать­ся. В хоро­шо сде­лан­ных БД всё молниеносно.

Слож­ность. Базы дан­ных нуж­ны в чис­ле про­че­го для хра­не­ния слож­но струк­ту­ри­ро­ван­ных дан­ных. Мы при­вык­ли думать, что база дан­ных — это такая таб­ли­ца, где есть стро­ки и столб­цы. Но база дан­ных при пра­виль­ной орга­ни­за­ции может намно­го больше:

  • Свя­зы­вать одну еди­ни­цу дан­ных с мно­же­ством дру­гих. Напри­мер, если один чело­век совер­шил мно­го зака­зов со мно­же­ством това­ров внут­ри каж­до­го, база дан­ных спо­соб­на хра­нить и обра­ба­ты­вать такие связи.
  • База может хра­нить дере­во дан­ных — вро­де того, о кото­ром мы писа­ли недав­но. Попро­буй в реаль­ной жиз­ни похра­нить дерево!
  • В базах могут жить ссыл­ки на дру­гие фраг­мен­ты и отде­лы базы.

Базу мож­но пред­ста­вить как таб­ли­цу, но лишь в самом упро­щён­ном виде. Для более слож­ных задач базу мож­но пред­ста­вить как очень слож­ное дере­во, или огром­ный склад упо­ря­до­чен­ных коро­бок, или даже как огром­ный завод по фасов­ке данных.

База данных — это отдельный файл?

Чаще все­го да, все дан­ные СУБД хра­нит внут­ри одно­го боль­шо­го фай­ла. Но если дан­ных мно­го или сама база так устро­е­на, то она может раз­би­вать­ся на несколь­ко фай­лов поменьше.

Но для поль­зо­ва­те­лей нет раз­ни­цы, как физи­че­ски хра­нит­ся база, это забо­та СУБД. Глав­ное — уметь общать­ся с базой через СУБД.

Где их используют

Базы дан­ных сей­час исполь­зу­ют­ся почти везде:

  • На сай­тах, что­бы хра­нить кон­тент для стра­ниц. Все ста­тьи в «Коде» на самом деле хра­нят­ся в базе дан­ных и извле­ка­ют­ся отту­да по ваше­му запросу.
  • В смарт­фо­нах, что­бы хра­нить все ваши дан­ные — фото, сооб­ще­ния, замет­ки, кон­так­ты и музы­ку. Так как все­го это­го мно­го, а доступ к это­му дол­жен быть мол­ние­нос­ный, исполь­зу­ют раз­ные виды СУБД.
  • В поч­то­вых сер­ви­сах, что­бы мож­но было най­ти нуж­ное пись­мо. Там стро­ят­ся слож­ные индекс­ные мас­си­вы, по кото­рым ваш поч­то­вый кли­ент ищет данные.
  • Вез­де, где есть лич­ные каби­не­ты и реги­стра­ция, — что­бы запо­ми­нать поль­зо­ва­те­лей и отли­чать их друг от друга.
  • В соц­се­тях и бло­гах почти всё хра­нит­ся в базах данных.

Если у вас в рабо­те появ­ля­ет­ся мно­го оди­на­ко­вых или похо­жих дан­ных, то самый надёж­ный спо­соб не поте­рять ниче­го из них — поме­стить их в базу данных.

Как это работает

Возь­мём про­стой при­мер реля­ци­он­ной базы дан­ных (мож­но упро­щён­но ска­зать, что это база дан­ных в виде таблицы).

Каж­дая запись в реля­ци­он­ной базе дан­ных рас­кла­ды­ва­ет­ся в одну или несколь­ко яче­ек. Напри­мер, запись в теле­фон­ной кни­ге может выгля­деть так:

image

В нашем при­ме­ре у базы есть поля — Имя, Фами­лия, Теле­фон и Фото, в кото­рых могут хра­нить­ся дан­ные. Одна строч­ка — одна запись с данными.

Если поль­зо­ва­те­лю нуж­но будет най­ти теле­фон Миха­и­ла Мак­си­мо­ва по фами­лии, про­ис­хо­дит следующее:

Запрос от поль­зо­ва­те­ля: Выдай мне из базы «Контакты» все записи, где поле «Фамилия» равно «Максимов» Ответ от базы дан­ных: ЛОЛ КЕК Ты кто такой Запрос поль­зо­ва­те­ля: Я хозяин этой базы Админ Админыч, пароль •••••. Выдай мне из базы «Контакты» все записи, где поле «Фамилия» равно «Максимов» Ответ от базы дан­ных: Найдена одна запись: [Михаил, Максимов, +79057362163, вот фото]

Разные базы — разные правила

Внут­ри каж­дой базы дан­ных и её управ­ля­ю­щей систе­мы свои стро­гие правила:

  • какие дан­ные могут хра­нить­ся: текст, циф­ры, фото, видео или всё вместе;
  • какие свой­ства есть у этих дан­ных: дата запи­си, кто запи­сал, кто может прочитать;
  • что делать, если с базой хотят рабо­тать одно­вре­мен­но несколь­ко чело­век: раз­ре­шать толь­ко одно­му или пусть все вме­сте работают.

Рабо­чая ситу­а­ция: допу­стим, вы рабо­та­е­те в бан­ке и откры­ли кар­точ­ку кли­ен­та, что­бы поме­нять ему кре­дит­ный лимит. В этот же момент дру­гой сотруд­ник из сосед­не­го офи­са тоже хочет поме­нять лимит это­му же кли­ен­ту, но уже на дру­гую сум­му. Как база отре­а­ги­ру­ет на такое? Долж­на ли она раз­ре­шать вто­ро­му сотруд­ни­ку откры­вать кар­точ­ку или её нуж­но забло­ки­ро­вать, пока пер­вый не закон­чит? А если она раз­ре­шит открыть кар­точ­ку, то что будет, если двое сотруд­ни­ков напи­шут там раз­ный лимит — какой из них сохра­нять в ито­ге? СУБД зада­ёт эти пра­ви­ла и сле­дит за их выполнением.

Что дальше

В сле­ду­ю­щей ста­тье пого­во­рим про MySQL — буре­рож­дён­ную мать всех баз. Если разо­брать­ся, как она рабо­та­ет, то мож­но тво­рить чудеса.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий