Базы данных и СУБД: краткий обзор

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

Историческая справка

Термином «база данных» обозначается много разных понятий. Более того, он наводит на мысли о других терминах: данные, информация, структура данных и управление. Базу данных можно определить как набор, или ре­позиторий данных, обладающий определенной структурой и управляемый системой управления базами данных (СУБД). Данные могут быть струк­турированными таблицами, слабоструктурированными XML-документами или вовсе не иметь структуры, описываемой какой-то заранее определенной моделью.

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

С появлением веб-приложений, в частности социальных порталов, возникла необходимость поддерживать огромное количество запросов распределенным образом. Это привело к новой парадигме в области баз данных, получившей название NoSOL (Not Only SOL), с другими требованиями, например: примат производительности над отказоустойчивостью и возможность горизонтально­го масштабирования. В целом на эволюцию баз данных оказывали влияние разнообразные факторы, в том числе:

  • функциональные требования: сама природа приложений, в кото­рых используются базы данных, потребовала разработки расширений реляционных баз, таких как PostGIS (пространственные данные), или даже специализированных СУБД типа SciDB (для анализа научных данных);
  • нефункциональные требования: успех языков объектно-ориенти­рованного программирования породил новые тенденции, в частности объектно-ориентированные базы данных. Появились объектно-реля­ционные системы управления базами данных, перебрасывающие мост между реляционными базами и объектно-ориентированными языка­ми. Взрывной рост объема данных и необходимость обрабатывать те­рабайты данных на стандартном оборудовании привели к появлению столбцовых баз данных, которые легко масштабируются по горизон­тали.

Категории баз данных

Рождались и уходили в небытие различные модели баз данных, включая се­тевую и иерархическую модель. Сейчас на рынке преобладают реляционные, объектно-реляционные и NoSOL базы данных. Не следует считать базы данных NoSOL и SOL соперниками - они дополняют друг друга. Применяя ту или иную систему баз данных, можно преодолеть ограничения технологий и выбрать оп­тимальный вариант.

Базы данных NoSQL

На базы данных NoSOL оказывает влияние теорема CAP, известная также как теорема Брюера. В 2002 году С. Джильберт и Н. Линч опубликовали ее формаль­ное доказательство в статье «Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services». В 2009 году зародилось движение NoSOL. Сегодня насчитывается свыше 150 баз NoSOL (nosql-database.org).

Теорема CAP

Теорема CAP утверждает, что распределенная вычислительная система не мо­жет одновременно обеспечить все три следующих свойства:

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

Характер системы определяется тем, от какого свойства мы отказываемся. Например, пожертвовав согласованностью, мы получим простую, масштаби­руемую, высокопроизводительную систему управления базами данных. Зачас­тую основное различие между реляционной и NoSQL базой данных как раз и состоит в согласованности. В реляционной базе гарантируется выполнение свойств ACID (атомарность, согласованность, изолированность, долговеч­ность). Напротив, во многих базах данных NoSQL принята модель BASE (basi­cally available soft-state, eventual consistency - базовая доступность, неустой­чивое состояние, согласованность в конечном счете).

Мотивация NoSQL

База данных NoSQL предоставляет средства для хранения нереляционных данных, их выборки и манипулирования ими. Такие базы являются распре­деленными, горизонтально масштабируемыми и, как правило, поставляются с открытым исходным кодом. NoSQL часто основана на модели BASE, отда­ющей предпочтение доступности над согласованностью. Эта модель дает не­формальные гарантии того, что в отсутствие новых обновлений обращение к любому элементу данных рано или поздно вернет его последнюю версию. У такого подхода имеются следующие преимущества:

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

Теперь рассмотрим некоторые типы баз данных NoSQL.

Хранилища ключей и значений

Хранилище ключей и значений - самый простой тип базы данных. Как следует из названия, хранилище основано на хеш-таблицах. Некоторые хранилища до­пускают хранение составных типов данных - списков и словарей. В некоторых ситуациях хранилища ключей и значений обеспечивают исключительную ско­рость, но им недостает поддержки сложных запросов и агрегирования. К числу наиболее известных баз данных такого типа относятся Riak, Redis, Memebase и MemcacheDB.

Столбцовые базы данных

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

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

Одной из самых известных столбцовых баз данных является HBase, основан­ная на системе хранения Google Bigtable. Столбцовые базы данных проектиро­вались в расчете на очень большие объемы данных, поэтому легко масштаби­руются. Если набор данных невелик, то использовать HBase не имеет смысла. Во-первых, в рекомендуемой топологии HBase должно быть не менее пяти уз­лов, а во-вторых, эта база сложна для изучения и администрирования.

Документные базы данных

Документная база данных предназначена для хранения слабоструктурирован­ных данных. Основной единицей хранения в ней является документ. Данные в документах представлены в стандартных форматах, например: XML, JSON и BSON. Для документов не определена единая схема, они не обязаны иметь одинаковую структуру, поэтому обладают высокой степенью гибкости. В отли­чие от реляционных баз данных, изменить структуру документа легко, и эта процедура не мешает клиентам обращаться к данным.

Графовые базы данных

В основе графовых баз данных лежит теория графов. База данных содержит информацию о вершинах и ребрах графа. С вершинами и ребрами могут быть ассоциированы данные. Графовая база позволяет обходить вершины, следуя вдоль ребер. Поскольку граф - очень общая структура данных, такие базы мож­но использовать для представления самых разных данных. Самая известная реализация графовой базы данных с открытым исходным кодом и коммерче­ской поддержкой - Neo4j.

Теперь давайте поясним, что такое реляционные и объектно-реляционные базы данных.

Вас заинтересует / Intresting for you:

Что такое базы данных? Назначе...
Что такое базы данных? Назначе... 12913 просмотров Ирина Светлова Mon, 28 Oct 2019, 05:41:34
База данных - определение
База данных - определение 47411 просмотров Antoniy Wed, 01 Jul 2020, 07:43:24
Что такое База данных? Определ...
Что такое База данных? Определ... 5318 просмотров Aaltonen Thu, 04 Feb 2021, 15:34:33
Базы данных, состоящие из плос...
Базы данных, состоящие из плос... 3967 просмотров Игорь Воронов Sun, 28 Jan 2018, 09:02:47
Войдите чтобы комментировать