Базы данных представляют собой упорядоченные наборы данных, хранящиеся в компьютерной системе и доступные в электронном виде. Существует множество типов баз данных, например:
- облачные;
- реляционные;
- объектно-ориентированные;
- NoSQL.
Выбор той или иной системы зависит от потребностей конкретного пользователя: типа, структуры, модели данных, среды их хранения и предполагаемого варианта использования. В этой статье мы сосредоточимся на двух основных категориях баз данных: SQL и NoSQL.
SQL
Эта аббревиатура расшифровывается как Structured Query Language (язык структурированных запросов). SQL — стандартный язык для реляционных баз данных (РСУБД), которые структурируют элементы в формате таблиц. Программирование на SQL может эффективно использоваться для вставки, поиска, обновления и удаления записей в базе данных. SQL использует синтаксис и запросы для анализа и получения данных. Примеры реляционных баз данных:
- MySQL;
- Postgres;
- Oracle;
- Ms SQL Server;
- Sybase.
NoSQL
Это нереляционная (распределенная) база данных. Она используется для распределенных хранилищ и может вмещать огромные объемы данных (лучше всего подходит для больших данных и веб-приложений в режиме реального времени). В систему баз данных NoSQL внедрен широкий спектр технологий, позволяющих хранить различные по структуре данные:
- структурированные;
- полуструктурированные;
- неструктурированные;
- полиморфные.
В зависимости от модели данных, NoSQL могут быть:
- документоориентированные;
- основанные на парах “ключ-значение”;
- графовые.
Примеры NoSQL:
- MongoDB;
- Redis;
- Neo4j;
- Cassandra;
- Hbase.
Основные различия между SQL и NoSQL
- Язык запросов. NoSQL не имеет декларативного языка запросов, в то время как SQL является структурированным языком запросов.
- Схема. Базы данных NoSQL используют динамическую схему для неструктурированных данных, а SQL — предопределенную.
- Возможности масштабирования. NoSQL масштабируются по горизонтали, а SQL — по вертикали.
- Варианты. NoSQL представлены множеством различных типов баз данных, включая хранилища “ключ-значение”, документоориентированные и графовые. SQL выражены одним типом с незначительными вариациями.
- Оптимальное применение. NoSQL рекомендуется использовать для решения проблем доступности данных, а реляционные СУБД больше подходят для решения проблем ACID (атомарности- согласованности-изолированности-долговечности).
- Конкурентные функции. SQL обладает кроссплатформенной поддержкой, а также является безопасной и бесплатной системой. NoSQL — простой в использовании, высокопроизводительный и гибкий инструмент.
- Ведущие компании. SQL применяют Hootsuite, CircleCI и Gauges, а NoSQL — Airbnb, Uber и Kickstarter.
Еще одним отличием этих баз данных является модель, лежащая в их основе. SQL отвечает требованиям ACID, стандартным для реляционных СУБД, а большинство систем NoSQL ориентируются на требования BASE. Модель ACID обеспечивает согласованную систему, в то время как BASE — высокий уровень доступности.
ACID соответствует следующим характеристикам.
- Атомарность. Транзакция базы данных должна быть полностью успешной или завершиться полной неудачей — промежуточный результат не допускается.
- Согласованность. Во время транзакции реляционная СУБД переходит из одного допустимого состояния в другое — состояние никогда не бывает недопустимым.
- Изоляционность. Одни транзакции не могут нарушать целостность других транзакций при взаимодействии с ними в процессе выполнения — они должны происходить изолированно от других клиентов.
- Долговечность. Данные, относящиеся к завершенной транзакции, сохранятся даже в случае отключения компьютерной сети или электроэнергии. Если транзакция завершится неудачно, это не повлияет на обрабатываемые данные.
BASE означает следующее.
- Базовая доступность. Система гарантированно будет доступна для запросов всех пользователей (здесь нет изоляционности).
- Гибкое состояние. Из-за отсутствия немедленной согласованности значения данных могут изменяться с течением времени. В этом BASE-модель расходится с концепцией базы данных, которая обеспечивает собственную согласованность, возлагая за нее ответственность на разработчиков.
- Согласованность в конечном счете. Тот факт, что модель BASE не обеспечивает немедленную согласованность, не означает, что она никогда ее не достигает. Однако до тех пор, пока это не произойдет, считывание данных все еще возможно (даже если они не отражают реальность).
У каждого типа базы данных масса своих достоинств. Многое зависит от компании, с которой вы будете работать, а также от типа данных. Правильный выбор базы данных поможет полностью удовлетворить ваши потребности в программировании!
Читайте также:
- SQLite: как организовывать таблицы
- Суперсила индексов для оптимизации SQL-запросов
- Основы SQLite на примере практической задачи
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи syd: Diving into Databases…