База данных (БД) — это имеющая название совокупность данных, которая отражает состояние объектов и их отношений в рассматриваемой предметной области.
Данными называют зарегистрированную информацию, представление фактов, понятий или инструкций в форме, которая подходит для передачи, связи, обработки человеком или с помощью машины. Содержимое базы данных — прайс-листы, контакты пользователей, каталоги товаров, отчеты, статистика продаж и т.д. Изменения одной ячейки автоматически влияют на другие.
В БД чаще всего используется язык структурированных запросов SQL, созданный для того, чтобы получать необходимую информацию из базы данных. Он разработан в 1970-х в IBM. Несмотря на то что в настоящее время существует много других языков программирования запросов, SQL в базах данных продолжает широко использоваться. Команды можно разделить на манипулирующие, определяющие и управляющие.
Свойства базы данных
Из определения базы данных следует, что в ней:
- всегда есть имя. Если имя не задано, то нет и базы данных;
- фиксируется состояние объектов и их отношений в заданный момент времени. Со временем оно меняется. Например, цена товара может характеризовать его состояние. Вслед за изменением цены меняется и состояние товара;
- фиксируется информация об объектах из определенной предметной области. Например, если рассматриваем предметную область «Библиотека», то в базе могут фиксироваться данные по книгам, их расположению в библиотеке, читателям и читательским билетам. Если наша предметная область — «Магазин», то в БД может находиться информация по товарам и их ценам, по торговым точкам и наличию товара в конкретной торговой точке.
Важной характерной чертой БД является ее постоянство. Оно проявляется в нескольких контекстах:
- данные постоянно накапливаются и используются;
- состав и структура данных обычно постоянны и стабильны во времени. Если они меняются, то скорее всего БД находится в процессе проектирования и разработки;
- элементы данных могут меняться (вслед за изменением состояний объектов и их отношений). Тем самым информация, которую содержит каждая база данных, постоянно актуализируется.
Отличия баз данных от электронных таблиц
Электронные таблицы изначально создавались как однопользовательские — полный контроль для одного пользователя и ограниченный набор функций для нескольких. Набор данных, как правило, невелик, как и количество вносимых изменений. БД предусматривают работу с большим объемом упорядоченной информации. Также в отличие от таблиц базы данных предназначены для работы нескольких пользователей, которые вносят изменения одновременно, независимо друг от друга.
Типы баз данных
Существует множество критериев определения видов баз данных, в т.ч. следующие.
Форма представления информации
- Фактографические. Данные представлены в виде фактов об объектах предметной области в формате пар «параметр — значение». Пример: БД сайта www.ozon.ru.
- Документальные. Данные представлены в виде полнотекстовых документов. Пример: БД сайта www.vedomosti.ru.
- Мультимедийные. Данные представлены в виде графического, аудио- или видеоконтента. Пример: БД сайта www.youtube.com.
Тип используемой модели данных
- Реляционные. Данные представлены в виде таблиц и связей между ними. Пример: БД Microsoft SQL Server, MySQL, PostgreSQL.
- Нереляционные. Данные представлены в виде структур, отличных от таблиц. Например, JSON-подобных объектов, иерархических или сетевых структур. Пример: БД ElasticSearch, MongoDB.
Топология хранения
Большинство современных БД может быть размещено как на одной, так и на нескольких машинах.
- Локальные. Размещены на одной машине.
- Распределенные. Размещены на нескольких машинах.
Функциональное назначение
- Операционные. Большую часть времени используются для операций записи (добавление, изменение, удаление данных). Пример: БД 1С.
- Справочно-информационные. Большую часть времени используются для операций чтения. Пример: БД сайта www.consultant.ru.
Степень доступности
- Общедоступные. Открыты широкому кругу пользователей. Обычно доступ к базам данных бесплатный. Пример: БД энциклопедии Wikipedia.
- С ограниченным доступом. Доступ к базам данных ограничен и обычно платный. Пример: БД энциклопедии Encarta.
* Примечание: примеры баз данных сайтов приведены на основе результатов анализа их пользовательского интерфейса и контента. Технически БД могут быть организованы по-другому.
Популярные системы управления базами данных
Система управления базами данных (СУБД) — это программное обеспечение, которое необходимо для создания, редактирования и обслуживания файлов БД. С его помощью можно упростить процесс работы — от ввода данных до отчетности. Кроме того, система управления базами данных помогает выполнять резервное копирование, поддерживать безопасность, предоставлять общий доступ к БД. СУБД позволяет работать с базами данных одновременно нескольким пользователям.
MySQL
Одна из самых распространенных систем управления базами данных. Используется в ряде крупных мировых компаний (Meta, Twitter, Amazon, LinkedIn и т.д.). Это реляционная СУБД, относящаяся к свободному программному обеспечению.
Особенности:
- Возможность работы с различными типами таблиц, от популярных InnoDB или MyISAM до редко используемых MERGE или HEAP.
- Постоянное обновление и добавление новых поддерживаемых типов таблиц.
- Высокая скорость работы — MySQL считается одной из самых быстрых несмотря на то, что одновременно с ней могут работать несколько пользователей, а количество строк в таблицах достигает 50 миллионов.
- Простота — с MySQL несложно работать, потому что она поддерживает меньшее количество возможностей по сравнению с другими СУБД.
- При работе с MySQL доступен не только текстовый, но и графический режим. Приложение phpMyAdmin позволяет администрировать свою базу данных через браузер без знания SQL-команд.
MySQL — удобная, гибкая и хорошо работающая БД для крупных или средних проектов.
Oracle
СУБД объектно-реляционного типа получила название от компании-разработчика. При работе с Oracle используется язык Java, а также расширение PL/SQL.
Особенности:
- Возможность быстрого восстановления после сбоев, надежная процедура бэкапа, масштабирование и ряд других полезных функций.
- Способность обеспечить надежную защиту хранящихся данных.
- Высокая стоимость активации и последующего использования. По этой причине она не всегда может быть доступна начинающим или небольшим компаниям.
PostgreSQL
PostgreSQL относится к объектно-реляционному типу, свободно распространяется и работает на языках SQL и MySQL. Основное отличие от MySQL — в использовании инноваций и расширенном функционале.
Особенности:
- перегрузка функций и наследование таблиц;
- поддержка большого количества типов данных: JSON, XML, «ключ — значение», пространственных данных и многого другого;
- расширяемость, т.е. можно использовать готовые расширения, а также создавать собственные.
PostgreSQL подходит для хранения больших объемов данных, может обрабатывать сложные запросы. Способна выстраивать небольшие DWH (Data Warehouse), быть хранилищем для геоинформационных систем, мобильных игр, веб-приложений и т.д.
PostgreSQL не подойдет для работы с БД, где необходимо горизонтальное масштабирование, OLAP-хранилище, а также преобладают записи чтения.
MongoDB
Относится к NoSQL-системам. MongoDB — документоориентированная СУБД с открытым исходным кодом. Для хранения данных применяется JSON-подобный формат. В ней используется язык запросов, обеспечивается несколько видов поиска: географический, текстовый и поиск по графам. Способна выдерживать большие нагрузки благодаря горизонтальному масштабированию.
Особенности:
- Не требуется описание схемы таблиц, как в реляционных БД. Данные хранятся в формате BSON (бинарных JSON-подобных документов).
- Между коллекциями отсутствуют сложные соединения типа JOIN, как между таблицами реляционных баз данных. Обычно соединение выполняется при сохранении данных благодаря объединению документов.
- Структура коллекций может различаться. У одного документа может быть один набор полей, в то время как у другого документа — совершенно другой (как тип, так и количество полей). MongoDB может хранить любые данные в формате JSON.
MongoDB можно использовать в мобильных приложениях, CMS-системах, играх, электронной коммерции — в любых сферах, где предполагается высокий уровень нагрузки. Для структурированных баз данных, а также если в будущем предполагается создание таких жестких схем, система применяется редко.
Redis
Еще одна NoSQL-система, предназначенная для хранения данных типа «ключ — значение».
Особенности:
- обработка около сотни тысяч операций в секунду благодаря хранению информации In-Memory;
- сохранение данных на диск и запись их в память, если это необходимо;
- поддержка растровых изображений, геоданных, списков, наборов и других структур.
Благодаря высокой скорости работы Redis подойдет для хранилищ с большим объемом данных: кэш, брокерские данные, инвентаризационные системы, действующие в режиме реального времени, а также систем с краткосрочными данными (сеансы веб-приложений). СУБД нет необходимости использовать при работе с небольшими объемами информации, а также если необходимо OLAP- или OLTP-хранилище.
Elasticsearch
Распределенная СУБД, основанная на Java-библиотеке Lucene. Способна поддерживать как структурированные, так и полуструктурированные данные. Это одна из самых масштабированных поисковых систем. Входит в группу Elastic Stack.
Особенности:
- поисковый сервер с открытым исходным кодом, который написан на Java;
- распределенное хранилище документов без схем, REST & JSON;
- веб-интерфейс REST API с выводом JSON;
- встроенный анализатор текстов;
- полнотекстовый поиск;
- поиск в реальном времени (NRT);
- поддержка разных языков и геолокации.
Подойдет для задач, в которых предполагается поиск в режиме реального времени большого объема структурированных данных. Это поисковики интернет-магазинов, веб-сайтов, хранение и мониторинг логов из большого количества источников, сервисы, занимающиеся разоблачением шпионских программ и мошенничества.
SQLite
Реляционная СУБД, которая выпускается в виде библиотеки на языке C.
Особенности:
- Встраивание в само приложение, а не работа по принципу «клиент — сервер». СУБД хранится на устройстве в виде локального файла: так она по умолчанию может быть встроена в некоторые телефоны и компьютеры.
- Поставка с нулевой конфигурацией, поэтому администрирование или настройка не требуются.
- Небольшой размер.
- Автономность, что означает отсутствие внешних зависимостей.
- SQLite-транзакции полностью совместимы с ACID, обеспечивают безопасный доступ к разным процессам или потокам.
SQLite подходит для работы с мобильными приложениями, веб-сайтами с небольшим трафиком, локальным кэшем, настольными приложениями (инструментами финансового анализа), интернетом вещей.
Для задач, которые предполагают отделение данных от приложения сетью, для сервисов с высоким трафиком, большого количества параллельных операций, больших объемов данных SQLite не подойдет. При этом СУБД способна работать с базами данных размером до 281 терабайта.
Neo4j
Графовая СУБД, которая предназначена для хранения и анализа наборов данных, связанных между собой. Информация в ней представлена в виде отношений, узлов и свойств, которые их описывают. Структура графа меняется в режиме реального времени.
Особенности:
- высокая производительность и масштабируемая архитектура;
- поддержка полных правил ACID (атомарность, согласованность, изоляция и долговечность);
- мощный декларативный язык запросов Cypher;
- встроенное веб-приложение Neo4j Browser.
СУБД подойдет для задач, требующих использования графов и анализа связей между данными. Это системы, занимающиеся борьбой с мошенничеством, составлением рекомендаций в режиме реального времени, управлением коммуникациями и IT-инфраструктурой.
Neo4j не подойдет для задач со слабой связью данных, пусть и с хорошей структурой. Также не рекомендуется использовать Neo4j в системах, требующих хранения большого количества двоичных или текстовых данных, системах, где запись информации преобладает над чтением, а также если систему ждет массовое сканирование данных без указания начальной точки поиска.
0 комментариев