Виды баз данных: какими они бывают и как работают
Базы данных (БД) — способ хранения и организации больших объемов информации. Разработчики компании DST Global расскажут, что такое базы данных простыми словами, какими они бывают, зачем нужны СУБД и SQL.
У каждого сайта есть контент — его содержимое. Им могут быть как тексты и картинки, так и товары в каталоге. Если контента много, для его организации используют базы данных.
Например, вы решили открыть интернет-магазин и продавать в нем книги. Чтобы хранить информацию о товарах, необходимо подключить к сайту базу данных.
В ней будут содержаться конкретные позиции — книги. А к каждой из них — необходимые для продажи данные: цена, дата выпуска, название, автор и т.д.
Когда покупателю нужна та или иная книга, он будет заходить на страницу поиска и писать запрос. Например, название нового бестселлера. Фронтенд сайта будет отправлять соответствующий запрос бэкенду, а тот искать в базе данных и возвращать ответ в виде карточки товара.
Что такое базы данных
База данных — набор информации, который организуют и хранят по определенным правилам. Ее основная особенность — наличие структуры. То есть это не хаотичный список, а организованный.
Базу данных проще всего представить в качестве таблицы. У каждого из ее элементов есть свойства. Например, если элемент — это книга, то свойства — цена, дата выпуска, автор, количество страниц. Примитивный прототип баз данных — таблица в Excel.
Чем базы данных отличаются от таблиц
По структуре они могут быть схожи. Но есть важное отличие. Изначально таблицы предназначались для редактуры только одним пользователем. Он мог внести изменения, сохранить их, а затем передать кому-то другому.
А базы данных позволяли работать с большим объемом информации параллельно. То есть много пользователей могли одновременно редактировать информацию или получать ее из базы.
Кроме того, таблицы просто не обладают возможностью для хранения больших объемов данных. Помните, сколько раз у вас зависал крупный файл в Excel.
Особенности баз данных
Мы уже определились с тем, что базы данных позволяют получать удаленный доступ к большим объемам информации. Это их ключевое отличие от таблиц.
Основные свойства баз данных:
- Многопользовательский доступ к информации. Работать в базе данных одновременно может несколько человек. Речь идет как о чтении, так и о редактировании
- Высокая скорость работы. Базы данных позволяют получать информацию практически мгновенно
- Логическая связь. Она должна присутствовать в структуре таблицы
- Единые стандарты. Базы данных должны работать вне зависимости от программного обеспечения, то есть способ получения информации не должен влиять на ее структуру
- Удобное обновление данных. Современные БД имеют простое управление, то есть для запроса информации нужно совершить минимальное количество действий
- Безопасность. У баз данных разные уровни доступа. Какие-то пользователи могут редактировать информацию, а какие-то — получать ее
Управление базами данных: СУБД
Базу данных можно представить в виде большой таблицы с систематизированной информацией. Ее используют в качестве хранилища. Возникает вопрос: как получать из нее данные?
Это делают при помощи СУБД. Так называют системы управления базами данных.
СУБД состоит из различных инструментов, которые позволяют получать информацию, добавлять и удалять ее, а также фильтровать по разным параметрам.
Вернемся к нашему примеру с интернет-магазином книг. Когда пользователь вбивает в сайт название нужной позиции, именно СУБД ищет ее в таблице и возвращает данные.
Какими бывают СУБД
Есть разные типы управления базами данных. По способу хранения информации они делятся на:
- Клиент-серверные. В этом случае СУБД находится на сервере, к которому пользователь отправляет запрос и этот же сервер его обрабатывает. Получить доступ к базе данных можно с любого компьютера. Это популярный вариант для интернет-магазинов
- Файл-серверные. Такие СУБД размещают на локальных компьютерах, от которых исходит запрос. То есть пользователь должен иметь систему управления на своем компьютере, чтобы взаимодействовать с базой. Этот вариант подходит для корпоративного программного обеспечения
- Встраиваемые. Такие системы управления поставляют как части программного продукта. Их не нужно устанавливать, это подключаемая библиотека
Для работы СУБД использует специальный язык запросов. По этому принципу они делятся на два вида:
- Работающие на SQL — это главный язык структурированных запросов к базам данных. Его применяют к большинству БД
- NoSQL — базы данных, к которым пишут запросы на одном из других языков программирования. Например, на Python. Его чаще применяют для работы с Big Data
Типы баз данных
Есть несколько основных видов баз данных.
Реляционные
В них информацию хранят в виде таблиц, которые связаны друг с другом. Например, в интернет-магазине книг может быть сразу несколько таблиц. Одна отвечает за товарные позиции, в ней прописаны книги и их характеристики: стоимость, автор, количество страниц.
Есть вторая таблица. В ней записаны данные зарегистрированных пользователей: их имена, адреса, история покупок. Когда человек делает заказ, информация из одной таблицы отправляется во вторую.
Такая структура позволяет легко вносить изменения только в одну из них, а остальные будут по-прежнему ссылаться на нее.
Нереляционные
Эти базы данных имеют отличную структуру, но являются менее распространенными. Они также существуют в нескольких вариациях. С пользовательской точки зрения их отличие заключается в невозможности писать запросы на языке SQL.
Обычно такие БД применяют для решения узкоспециализированных задач.
- Ключ-значение
В таких базах данных информацию систематизируют через систему ключей. Обычно их применяют для хранения состояния объектов. Чтобы получить из нее элемент, необходимо ввести ключ. А все данные хранят в виде пар «ключ и значение».
Основная особенность таких баз — высокая скорость работы, но в отличие от реляционных они не поддерживают сложные запросы.
- Документоориентированные БД
Такие базы данных позволяют хранить документы. Каждый из них состоит из пары ключ-значение. Такая база неструктурированная, у нее нет схемы. В нее можно легко добавлять поля или удалять их, без затрагивания других частей таблицы.
Документы в таких базах также могут быть вложенными и храниться друг в друге. Их можно группировать и создавая коллекции с иерархией, что делает такие БД похожими на реляционные.
Для хранения данных в них используют форматы XML и JSON. Документоориентированные базы хороши тем, что позволяют по запросу получать сразу полный объект, а не его часть.
Их применяют на проектах, где нужно хранить много контента. Например, в мобильных приложения или играх.
- Графовые
Главная особенность таких баз данных — в существовании нескольких различных связей как между таблицами, так и между отдельными элементами. В их составе есть узлы, в которых находятся данные, и ребра — то есть соединения, описывающие их связи.
Графовые базы данных незаменимы для алгоритмов рекомендаций, которые используют социальные сети и другие сервисы.
Иерархические
В таких базах данных есть четкая иерархия, в основе которой лежит дерево из вышестоящих и подчиненных элементов. Они похожи на дерево папок в операционной системе.
По такой БД легко перемещаться вертикально. Но их используют только в ситуации, когда есть главные и подчиненные элементы, с четким разделением в данных.
Колончатые
Структура таких баз данных тоже основана на таблицах. Но в отличие от реляционных, информация хранится в колонках без строгой структуры. Это позволяет содержать в них неструктурированные данные.
Обычно такие БД применяют для хранения логов или информации, полученной от умной техники.
NewSQL
Это самый молодой тип баз данных, основанный, с одной стороны, на распределенных системах NoSQL, но со структурой реляционных баз и языком запросов SQL.
NewSQL поддерживают масштабируемость и отвечают стандартам выполнения оперативных транзакций ACID.
Такие базы данных отличаются быстрой производительностью, горизонтальной масштабируемостью и транзакционностью.
Виды СУБД
Системы управления базами данных — программный комплекс, который отвечает за навигацию в информации, ее внесение, удаление и изменение. Если база — хранилище, то СУБД — способы ее обслуживания. Разработчики DST Global расскажут о самых популярных типах СУБД.
PostgreSQL
Одна из самых популярных СУБД, которая распространяется бесплатно. В ее основе лежит реляционная модель данных. PostgreSQL дает возможность создавать гибкие и масштабируемые базы данных.
Эта СУБД поддерживает стандарт SQL, но при помощи расширений можно применять Python или Java. Наличие расширений, в целом, сильная сторона таких систем. Большое комьюнити пользователей регулярно создает их и улучшает работу СУБД.
PostgreSQL называют бесплатным аналогом Oracle за функциональность и экономичность. Эта СУБД позволяет обрабатывать большие объемы данных и поддерживает производительность до миллиона транзакций в секунду.
Безопасность в ней поддерживают при помощи удобного управления доступом на основе ролей и шифрования данных.
Но и недостатки у PostgreSQL тоже есть. Базы данных на ней сложнее в обслуживании, так как требуют больше знаний для настройки и оптимизации.
MySQL
Популярная СУБД, которую используют для баз данных в проектах малого и среднего размера. Ее скорость находится на высоком уровне, но все же ниже, чем у PostgreSQL. Но это не мешает применению MySQL в таких крупных проектах как Alibaba или Wikipedia. Зачастую эту СУБД используют в комплекте с другими базами данных.
MySQL распространяют как программное обеспечение с открытым исходным кодом, поэтому она отличается возможностью гибкой настройки. Данная СУБД поддерживает язык запросов SQL.
MySQL обладает хорошей оптимизацией и масштабируемостью. Также эта система поддерживает популярные механизмы репликации и считается отказоустойчивой.
MySQL может вмещать до 50 миллионов элементов, но для больших объемов данных ее производительности недостаточно. Без грамотной настройки эта СУБД бывает уязвима для атак. Как и другое бесплатное решение — PostgreSQL, она требует высокой квалификации для оптимизации и настройки.
Oracle
Oracle — самая востребованная СУБД в мире с долей рынка в 30%. Это реляционная система управления, работающая как клиент-сервер.
У Oracle практически нет ограничений по объему данных, она может обрабатывать огромное количество запросов от пользователей. Ее популярность во многом связана с безопасностью. Эта СУБД обеспечивает высокий уровень защиты данных.
В отличие от бесплатных аналогов, Oracle предлагает удобный интерфейс и более простую систему настройки.
Эта СУБД поддерживает как SQL, так и Java и XML. Она позволяет интегрировать базы данных с различными ERP и CRM. Развернуть Oracle можно локально или в облаке.
Основные недостатки такой СУБД: относительно высокая цена, зависимость от поставщика и требования к оборудованию. Работа Oracle может потребовать больших аппаратных ресурсов.
MongoDB
Еще одна СУБД с открытым исходным кодом, которую активно используют в стартапах и Big Data. Эту систему применяют для управления нереляционными базами данных.
За счет поддержки сложной структуры, MongoDB отличается максимальной гибкостью. Ее можно применять на проектах, в которых данные сильно различаются и собраны разными методами.
К преимуществам этой СУБД относится легкая масштабируемость. Из-за документно-ориентированной модели в данные сравнительно легко вносить изменения.
Благодаря механизму репликации и сегментирования, MongoDB позволяет хранить данные на нескольких серверах. Это улучшает стабильность и отказоустойчивость системы.
При этом MongoDB не слишком хорошо справляется с жестко связанными данными.
Redis
Это нереляционная СУБД, которая хранит информацию в виде «ключ и значение». В отличие от реляционных систем, она обеспечивает большую гибкость, так как данные в ней не привязаны к жесткой структуре таблиц. Также она не поддерживает язык SQL. Вместо него используют Lua. Это специально созданный язык, который считают очень простым.
Основное достоинство этой СУБД — быстродействие. Ее применяют там, где критична высокая скорость обработки данных. Например, Redis используют в программном обеспечении для бирж.
А главный недостаток СУБД — неполное соответствие принципам ACID. Она не обеспечивает достаточную стойкость от повреждений данных, в отличие от реляционных баз.
Redis имеет некоторые проблемы с долгосрочным хранением. Эта СУБД хранит данные в оперативной памяти. Это приводит к тому, что при копировании на диск информация может быть утеряна. А само хранение обходится дороже с точки зрения требований к ресурсам.
SQLite
Эта система управления работает локально, она не имеет сервера. Ее используют для баз данных, которые хранят на одном устройстве. К достоинствам SQLite нужно отнести высокую скорость работы и нетребовательность, а также автономность.
Сама СУБД представляет собой библиотеку, с которой компонуется программа.
SQLite применяют для веб-сайтов с небольшим трафиком и в локальных приложениях, которые не нужно масштабировать.
Neo4j
Это графовая СУБД и самое распространенное ПО в своем классе. Neo4j имеет открытый исходный код и распространяется бесплатно. В графовой структуре данные хранят в виде ребер и узлов. Это дает возможность создавать сложные взаимосвязи. Такая опция востребована для разработки алгоритмов рекомендаций.
Neo4j дает возможность работать приложениям, которые занимаются отслеживанием связей между различными субъектами.
Эта СУБД не поддерживает SQL, вместо него используют собственный декларативный язык Cypher. Он интуитивно понятен и позволяет быстро писать сложные запросы.
Neo4j отличает высокая производительность и возможность работы с большими объемами данных.
К недостаткам СУБД стоит отнести ограниченную поддержку транзакций, которые не обеспечивают ту же надежность, что и в реляционных базах данных.
Microsoft SQL Server
Одна из старейших СУБД в мире, которую компания Microsoft выпустила еще в 80-х. Ее работа основана на клиент-серверной модели. Это система для управления реляционными базами данных и она поддерживает SQL.
К основным достоинством СУБД стоит отнести высокую отказоустойчивость. В ней можно создавать кластеры серверов. В случае отказа одного из них, работу может быстро перехватить другой.
Еще один плюс решения — полная совместимость со всеми продуктами Microsoft.
Elasticsearch
Распределенная система управления базами данных, которая может оперировать как структурированной, так и неструктурированной информацией.
Она работает на основе библиотеки Javaи поддерживает форматы JSON и REST.
Эту БД используют для решения задач, в которых необходима высокая скорость поиска в больших объемах данных.
Какую базу данных выбрать для своего проекта? Рекомендации от разработчиков DST Global
MySQL - отличный выбор для любого приложения, которому будет удобно пользоваться ее заранее определенной структурой и готовыми схемами. Например, это касается приложений, которые осуществляют переходы между нескольким записями (системы бухучета или управления инвентарем) или основаны на устаревших системах (им подойдет структура MySQL).
MongoDB, напротив, подойдет для бизнесов с быстрым ростом или для баз данных, в которых не используются определенные схемы. Точнее, если у вас не получается определить схему для БД или структуры постоянно меняются (как часто бывает с мобильными приложениями, аналитикой, работающей в реальном времени, системами менеджмента контента и т. д.), выбирайте MongoDB.
Хотел бы добавить еще одну Российскую СУБД, которую можно отнести к классу мультимодельных — ODANT.
1. Хранилище данных реализовано в виде DOM структур (можно было бы сказать XML, но это не так, хотя для удобства пользователей эти бинарные DOM структры могут быть получены через REST API в виде XML, JSON, HTML и т.п.), поддерживаются языки запросов XQuery и XUpdate.
2. Организовано хранилище в виде древовидной иерархии, которая может распространяться на любое количество распределенных серверов (нод).
3. Ветви в иерархии являются объектными Классами, которые могут содержать экземпляры (Объекты). В этих Классах полностью реализована объектная парадигма (наследование, полиморфизм, инкапсуляция и т.д.), но не на программном, а на информационном уровне.
4. Информационные Классы, помимо описания модели (свойств) и хранения экземпляров, могут содержать встроенные (кастомные) методы и представления, которые автоматически добавляются в API сервера.
5. Типизация данных реализована на основе собственных же информационных Классов (т.е. количество типов данных равно общему количеству находящихся в сети ODANT различных Классов, на сегодня >10 000)
6. Написана на С++, поддерживает ОС Windows, Linux 1.8+ (кстати есть сертификат под Астру) и процессоры x86, MIPS, ARM.
7. Имеет встроенный объектно-рекактивный язык программирования ROCKS.js (диалект ECMAScript), работающий с единой кодовой базой как на стороне сервера, так и клиента.
8. Имеет встроенный визуальный объектно-рекативный PWA фреймворк ODAJS (работает на всех современых браузерах, и в виде PWA приложений под Windows, Android, IOS).
9. 99% — Российская (1% — Node.js, использующаяся на стороне сервера для обработки ROCKS модулей)
10. Несмотря на то, что СУБД разрабатывалась с 1998 года, она мало известна. на сегодняшний день всего около 400 внедрений, в основном сложные системы управления деятельностью в ЖКХ, медицине, энергетике, госуправлении (одно из решений получило статус ГИС), есть 2 успешных проекта полной замены SAP в одной госкорпорации.
11. С 2017 года находится реестре отечественного ПО