ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 79
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Скорость важна ещё и потому, что СУБД обычно обслуживает сразу много потоков: одновременно ей могут пользоваться десятки и сотни тысяч человек, поэтому ей некогда копаться. В хорошо сделанных БД всё молниеносно.
Сложность. Базы данных нужны в числе прочего для хранения сложно структурированных данных. Мы привыкли думать, что база данных — это такая таблица, где есть строки и столбцы. Но база данных при правильной организации может намного больше:
• Связывать одну единицу данных с множеством других. Например, если один человек совершил много заказов со множеством товаров внутри каждого, база данных способна хранить и обрабатывать такие связи.
• База может хранить дерево данных — вроде того, о котором мы писали недавно. Попробуй в реальной жизни похранить дерево!
• В базах могут жить ссылки на другие фрагменты и отделы базы.
Базу можно представить как таблицу, но лишь в самом упрощённом виде. Для более сложных задач базу можно представить как очень сложное дерево, или огромный склад упорядоченных коробок, или даже как огромный завод по фасовке данных.
База данных — это отдельный файл?
Чаще всего да, все данные СУБД хранит внутри одного большого файла. Но если данных много или сама база так устроена, то она может разбиваться на несколько файлов поменьше.
Но для пользователей нет разницы, как физически хранится база, это забота СУБД. Главное — уметь общаться с базой через СУБД.
Где их используют
Базы данных сейчас используются почти везде:
• На сайтах, чтобы хранить контент для страниц. Все статьи в «Коде» на самом деле хранятся в базе данных и извлекаются оттуда по вашему запросу.
• В смартфонах, чтобы хранить все ваши данные — фото, сообщения, заметки, контакты и музыку. Так как всего этого много, а доступ к этому должен быть молниеносный, используют разные виды СУБД.
• В почтовых сервисах, чтобы можно было найти нужное письмо. Там строятся сложные индексные массивы, по которым ваш почтовый клиент ищет данные.
• Везде, где есть личные кабинеты и регистрация, — чтобы запоминать пользователей и отличать их друг от друга.
• В соцсетях и блогах почти всё хранится в базах данных.
Если у вас в работе появляется много одинаковых или похожих данных, то самый надёжный способ не потерять ничего из них — поместить их в базу данных.
Как это работает
Возьмём простой пример реляционной базы данных (можно упрощённо сказать, что это база данных в виде таблицы).
Каждая запись в реляционной базе данных раскладывается в одну или несколько ячеек. Например, запись в телефонной книге может выглядеть так:
В нашем примере у базы есть поля — Имя, Фамилия, Телефон и Фото, в которых могут храниться данные. Одна строчка — одна запись с данными.
Если пользователю нужно будет найти телефон Михаила Максимова по фамилии, происходит следующее:
Запрос от пользователя:
Выдай мне из базы «Контакты» все записи, где поле «Фамилия» равно «Максимов»
Ответ от базы данных:
ЛОЛ КЕК Ты кто такой
Запрос пользователя:
Я хозяин этой базы Админ Админыч, пароль •••••. Выдай мне из базы «Контакты» все записи, где поле «Фамилия» равно «Максимов»
Ответ от базы данных:
Найдена одна запись: [Михаил, Максимов, +79057362163, вот фото]
Разные базы — разные правила
Внутри каждой базы данных и её управляющей системы свои строгие правила:
• какие данные могут храниться: текст, цифры, фото, видео или всё вместе;
• какие свойства есть у этих данных: дата записи, кто записал, кто может прочитать;
• что делать, если с базой хотят работать одновременно несколько человек: разрешать только одному или пусть все вместе работают.
Рабочая ситуация: допустим, вы работаете в банке и открыли карточку клиента, чтобы поменять ему кредитный лимит. В этот же момент другой сотрудник из соседнего офиса тоже хочет поменять лимит этому же клиенту, но уже на другую сумму. Как база отреагирует на такое? Должна ли она разрешать второму сотруднику открывать карточку или её нужно заблокировать, пока первый не закончит? А если она разрешит открыть карточку, то что будет, если двое сотрудников напишут там разный лимит — какой из них сохранять в итоге? СУБД задаёт эти правила и следит за их выполнением.
4 вопрос: Виды баз данных. Целостность и достоверность базы данных. Приложения и компоненты базы данных.
Любые данные где-то хранятся. Будь это интернет вещей или пароли в *nix. Показываем схемы основных типов баз данных, чтобы наглядно представить различия между ними.
Типы баз данных, называемых также моделями БД или семействами БД, представляют собой шаблоны и структуры, используемые для организации данных в системе управления базами данных (СУБД). Выбор типа повлияет на то, какие операции сможет выполнять приложение, как будут представлены данные, на функции СУБД для разработки и рантайма.
I. Простейшие типы баз данных
Начнём с трёх типов БД, которые всё ещё могут встречаться в специализированных средах, но в основном заменены надежными и производительными альтернативами.
1. Простые структуры данных
П
ервый и простейший способ хранения данных – текстовые файлы. Метод применяется и сегодня для работы с небольшими объёмами информации. Для разделения полей используется специальный символ: запятая или точка с запятой в csv-файлах датасетов, двоеточие или пробел в *nix-подобных системах:
Следствия:
ограничен тип и уровень сложности хранимой информации;
трудно установить связи между компонентами данных;
отсутствие функций параллелизма;
практичны только для систем с небольшими требованиями к чтению и записи;
используются для хранения конфигурационных данных;
нет необходимости в стороннем программном обеспечении.
2. Иерархические базы данных
В
отличие от текстовых таблиц, в следующем типе БД появляются связи между объектами. В иерархических базах данных каждая запись имеет одного «родителя». Это создаёт древовидную структуру, в которой записи классифицируются по их отношениям с цепочкой родительских записей.
Пример построения иерархических связей
Следствия:
информация организована в виде древовидной структуры с отношениями «предок-потомок»;
каждая запись может иметь не более одного родителя;
связи между записями выполнены в виде физических указателей;
невозможно реализовать отношения «многих-ко-многим».
Примеры:
файловые системы
DNS
LDAP
3. Сетевые базы данных
С
етевые базы данных расширяют функциональность иерархических: записи могут иметь более одного родителя. А значит, можно моделировать сложные отношения.
Пример связей в сетевой базе данных
Следствия:
сетевые базы данных представляются не деревом, а общим графом
ограничены теми же шаблонами доступа, что иерархические БД
Примеры:
IDMS
II. Реляционные БД
4. SQL базы данных
Реляционные базы данных – старейший тип до сих пор широко используемых БД общего назначения. Данные и связи между данными организованы с помощью таблиц. Каждый столбец в таблице имеет имя и тип. Каждая строка представляет отдельную запись или элемент данных в таблице, который содержит значения для каждого из столбцов.
Следствия:
поле в таблице, называемое внешним ключом, может содержать ссылки на столбцы в других таблицах, что позволяет их соединять;
высокоорганизованная структура и гибкость делает реляционные БД мощными и адаптируемыми ко различным типам данных;
для доступа к данным используется язык структурированных запросов (SQL);
надёжный выбор для многих приложений.
Примеры:
MySQL
MariaDB
PostgreSQL
SQLite
III. NoSQL базы данных
NoSQL – группа типов БД, предлагающих подходы, отличные от стандартного реляционного шаблона. Говоря NoSQL, подразумевают либо «не-SQL», либо «не только SQL», чтобы уточнить, что иногда допускается SQL-подобный запрос.
5. Базы данных «ключ-значение»
В
базах данных «ключ-значение» для хранения информации вы предоставляте ключ и объект данных, который нужно сохранить. Например, JSON-объект, изображение или текст. Чтобы запросить данные, отправляете ключ и получаете blob-объект.
Следствия:
хранилища обеспечивают быстрый и малозатратный доступ;
часто хранят данные конфигураций и информацию о состоянии данных, представленных словарями или хэшем;
нет жёсткой схемы отношения между данными, поэтому в таких БД часто хранят одновременно различные типы данных;
разработчик отвечает за определение схемы именования ключей и за то, чтобы значение имело соответствующий тип/формат.
Примеры:
Redis
memcached
etcd
6. Документная база данных
Документные базы данных (также документоориентированные БД или хранилища документов), совместно используют базовую семантику доступа и поиска хранилищ ключей и значений. Такие БД также используют ключ для уникальной идентификации данных. Разница между хранилищами «ключ-значение» и документными БД заключается в том, что вместо хранения blob-объектов, документоориентированные базы хранят данные в структурированных форматах – JSON, BSON или XML.
Следствия:
база данных не предписывает опредёленный формат или схему;
каждый документ может иметь свою внутреннюю структуру;
д
окументные БД являются хорошим выбором для быстрой разработки;
в любой момент можно менять свойства данных, не изменяя структуру или сами данные.
Примеры:
MongoDB
RethinkDB
7. Графовая база данных
Вместо сопоставления связей с таблицами и внешними ключами, графовые базы данных устанавливают связи, используя узлы, рёбра и свойства.
Графовые базы представляют данные в виде отдельных узлов