Данная статья захватывает ключевые моменты (по-моему мнению) в развитии систем управления базами данных, от первых иерархических моделей до современных реляционных, NoSQL и NewSQL систем.

Содержание:

  1. Эволюция СУБД: от иерархических к реляционным

  2. Иерархическая модель данных

  3. Сетевая модель данных

  4. Появление реляционных баз данных

  5. Появление Not Only SQL систем

  6. Четыре типа NoSQL

    1. Ключ-значение

    2. Документ-ориентированное хранилище

    3. Колоночное хранилище

    4. Графовое хранилище

  7. Появление NewSQL систем

  8. Последствия появления NoSQL и NewSQL систем

Эволюция СУБД: от иерархических к реляционным

В 1960 возникла потребность в надежной модели хранения и обработки данных, особенно важной для банков и финансовых организаций. В то время отсутствовали единые стандарты работы с данными и моделями, и вся работа сводилась к ручной упорядоченной организации информации. Банкам удавалось записывать информацию о транзакциях в виде файлов в заранее подготовленную структуру, причем у каждой организации было собственное представление о том, как это должно выглядеть и функционировать. Также отсутствовали понятия консистентности и целостности данных. В таких файлах часто встречались дубликаты клиентов и их транзакций, которые приходилось уточнять и приводить в порядок вручную.

Исходя из этого можно выделить основные проблемы:

  • Структуры данных в каждом файле были различные.

  • Была необходимость согласовывать данные в разных файлах, чтобы информация была не противоречива.

  • Сложность разработки приложений, а также их поддержка работающих с конкретными данными, и их обновления при изменении структуры файла.


Первая попытка исправить положение была - Иерархическая модель данных

Иерархическая модель данных - модель данных, где используется представление базы данных в виде древовидной (иерархической) структуры, состоящей из объектов (данных) различных уровней.

Пример иерархической модели данных
Пример иерархической модели данных

Такая модель данных представляет собой:

  • Запись может иметь только одного «предка».

  • Возможны отношения только «один к одному» или «один ко многим».

  • Невозможность реализации отношения «многие ко многим».

  • Проблема дублирования.

  • Сложность в поддержке.

В 60-х годах иерархическая модель баз данных была популярной, но недостаточно гибкой. В такой модели каждая запись могла иметь только одного "предка", даже если у отдельных записей было несколько "потомков". Это приводило к тому, что базы данных представляли только отношения "один к одному" или "один ко многим". Невозможность реализации отношения "многие ко многим" приводила к проблемам при работе с данными и усложняла модель. Из-за этого вопросы о консистентности данных и отсутствии дублирования информации часто не удавалось эффективно решить. Первая иерархическая система управления базами данных (СУБД) получила название IMS и была разработана компанией IBM.

Для решений проблем такого подхода появилась новая модель данных - Сетевая.

Сетевая модель данных

В ней появилась новая концепция «многие ко многим». Эта модель данных, являющаяся расширением иерархического подхода, — у потомка может быть любое число предков.

Пример сетевой модели данных
Пример сетевой модели данных

Данный подход был предложен как спецификация модели CODASYL в рамках рабочей группы DBTG (Data Base Task Group).

И даже такая модель имела недостатки на тот момент:

  • Высокая сложность структуры базы данных, требующая дополнительных усилий для разработки и поддержки.

  • "Жесткость" структуры базы данных, что затрудняло внесение изменений и модификацию данных.

  • Неполная независимость модели от приложения, что могло усложнять интеграцию с различными приложениями и изменения в структуре данных.

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


Появление реляционных баз данных

Франк Кодд существенно упростил задачу сбора и обработки данных, что привело к возникновению реляционных баз данных, которые стали неотъемлемой частью практически всех отраслей. Он также предложил язык Alpha для управления реляционными данными.

Когда Кодд опубликовал свою работу, которая послужила основой для создания реляционной модели данных. Он выделил преимущества данной модели:

  • Отсутствие дублирования данных

  • Исключение ошибок и аномалий данных

  • Представление всех данных как фактов, хранящихся в виде отношений (relations) со столбцами (attributes) и строками (tuples)

Коллеги Кодда из IBM, Дональд Чемберлен и Рэймонд Бойс, разработали один из языков на основе его работ. Изначально они назвали свой язык SEQUEL, однако изменили название из-за существующего товарного знака на SQL.

Реляционная модель использует таблицы и базируется на двух утверждениях:

  1. База данных должна состоять из таблиц и только из таблиц. Только содержимое таблиц определяет операции БД.

  2. Описание данных и манипуляции над ними должны быть независимыми от способа хранения данных на нижнем уровне.

Пример реляционной модели данных
Пример реляционной модели данных

Одной из первых реляционных СУБД была dBase-II от компании Ashton-Tate. Она была выпущена в 1979 году и разошлась тиражом около 100 000 копий, став самой популярной среди всех существовавших в то время продуктов. Это действительно стало началом, и другие компании также начали предоставлять свои продукты, включая такие известные системы как Oracle и Ingress.

Развитие баз данных усилилось после распространения локальных и глобальных сетей. Пользователи также хотели иметь возможность параллельной работы с реляционными базами данных, что способствовало развитию многопользовательских приложений для локальных сетей. В результате была создана клиент-серверная архитектура обработки данных. Реляционные базы данных, такие как Oracle, Informix, DB2, Sybase и Microsoft SQL Server, стали основными инструментами для хранения и обработки данных. Они предоставляют широкий набор функций и возможностей для эффективной работы с данными.

С 90-х годов технология баз данных стала более доступной для пользователей. В это время начали появляться различные онлайн-сервисы, такие как блоги и онлайн-магазины, которые требовали эффективной обработки и хранения данных. Большинство этих сервисов использовали комбинацию MySQL и PHP в своем стеке технологий.


Появление Not Only SQL систем

Not Only SQL (далее NoSQL) - это подход к проектированию баз данных, который предоставляет механизмы хранения и извлечения данных, отличные от традиционных реляционных баз данных. NoSQL базы данных разработаны для работы с конкретными моделями данных и обладают гибкими схемами, которые легко масштабируются для современных приложений.

Необоримость появления такого подхода произошла из-за:

  • Рост объемов данных: Во время больших данных компании столкнулись с необходимостью обработки огромных массивов информации, превышающих возможности традиционных реляционных СУБД.

  • Распределенные вычисления: С появлением интернета вещей (IoT) и мобильных приложений возросла потребность в распределенных системах обработки данных, где реляционные СУБД показали свои ограничения по масштабируемости и географической дистрибуции

  • Разнообразие типов данных: Современные приложения часто работают с неструктурированными или полу-структурированными данными (текст, изображения, видео, социальные медиа), для которых реляционная модель не всегда является оптимальной.

Существует четыре типа NoSQL

  1. Ключ-значение (Key-value) — наиболее простой вариант хранилища данных, использующий ключ для доступа к значению в рамках большой хэш-таблицы.

Пример ключ-значение модель
Пример ключ-значение модель
  1. Документ-ориентированное хранилище, в котором данные, представленные парами ключ-значение, сжимаются в виде полуструктурированного документа из тегированных элементов, подобно JSON, XML.

Пример документ-ориентированная модель
Пример документ-ориентированная модель
  1. Колоночное хранилище, которое хранит информацию в виде разреженной матрицы, строки и столбцы которой используются как ключи.

Пример Колоночной модели

Одежда

Цвет

Размер

Футболка

Белый

70

Перчатки

Красный

40

  1. Графовое хранилище представляют собой сетевую базу, которая использует узлы и рёбра для отображения и хранения данных.

Пример графовой модели
Пример графовой модели

В начале 2010-х годов, на фоне стремительного роста объемов данных и популярности облачных технологий, стало очевидно, что как традиционные реляционные, так и новаторские NoSQL системы управления базами данных не могут в полной мере удовлетворить все растущие требования рынка. С одной стороны, реляционные базы данных сталкивались с проблемами масштабируемости и гибкости в обработке больших объемов данных. С другой стороны, NoSQL системы предлагали решения для этих проблем, но зачастую жертвуя согласованностью данных и совместимостью с SQL.

Появление NewSQL систем

NewSQL системы были разработаны как попытка объединить преимущества обеих подходов, предлагая масштабируемые и высокопроизводительные решения для управления данными, которые при этом поддерживают строгие транзакционные гарантии и полностью совместимы с SQL. Это позволило создать новый класс систем

Причины появления NewSQL:

  1. Требование к ACID-транзакциям
    Многие критически важные бизнес-приложения зависят от строгой консистентности данных, что обеспечивается с помощью ACID-транзакций. NoSQL системы были разработаны с упором на гибкость и масштабируемость, часто жертвуя строгими транзакционными гарантиями

  2. Совместимость с SQL

    SQL остается де-факто стандартным языком запросов для работы с данными, благодаря своей мощности, гибкости и универсальности. Многие организации и разработчики, имеющие опыт работы с реляционными базами данных, предпочли бы не отказываться от привычных SQL-инструментов. NewSQL системы предложили решение, позволяющее использовать SQL для работы с распределенными системами, обеспечивая при этом высокую производительность и масштабируемость.

Последствия появления NoSQL и NewSQL систем

С появлением систем NoSQL и NewSQL, мир управления базами данных столкнулся с значительными изменениями, которые затронули как большие организации, так и индивидуальных разработчиков. Эти изменения оказали глубокое влияние на способы хранения, обработки и анализа данных.

Следствием этого стало и ускорение процесса разработки. Благодаря возможностям, предоставляемым как NoSQL, так и NewSQL системами, разработчики смогли более эффективно адаптировать свои приложения к специфическим требованиям проектов, обеспечивая более быстрое и качественное выполнение работ.


Итог. В этой статье я рассмотрел кратко историю развития систем управления базами данных, начиная с иерархических и сетевых моделей 60-х годов и заканчивая современными реляционными, NoSQL и NewSQL системами. При написания статьи я не рассчитывал, что сможете узнать все про базы данных. Но надеюсь с помощью этого вы познакомились с ключевыми моментами, которые помогут в дальнейшем разбирать эти темы более подробно.

Комментарии (10)


  1. ChePeter
    27.03.2024 11:41

    В 60-х годах иерархическая модель баз данных была популярной

    А они и сейчас весьма популярны.


  1. FanatPHP
    27.03.2024 11:41
    +2

    В выводах какая-то вода, которая больше подходит для реферата в школе или для заседания партъячейки. "Надои стали более лучше колоситься". При этом значительность изменений сильно преувеличена. Ололо стартапы действительно столкнулись с тем, что потом приходится переписывать под нормальную БД. А серьезная разработка особо весь этот хайп не заметила. Да, появилась пара удобных дополнительных инструментов, но сам принцип хранения данных не поменялся.

    Ну и классическая подмена понятий: NoSQL - это вообще не про язык. А про безуспешные попытки отказаться от традиционной реляционной схемы с хранением данных в строках. Которые работают только для очень специфических задач, типа поисковых, кэширующих или аналитических движков. И поэтому очередной базворд "NewSQL" - это не про "совместимость с SQL", а единственно жизнеспособная структура данных плюс распределенное хранилище.


    1. sshikov
      27.03.2024 11:41
      +1

      Да у меня такое впечатление, что этот текст я уже видел, потому что помню эту чепуху. Ну посудите сами:

      Одной из первых реляционных СУБД была dBase-II от компании Ashton-Tate. Она была выпущена в 1979 году

      Называть одной из первых реляционных СУБД dBase, и при этом игнорировать тот факт, что до этого у IBM была System R, которая эксплуатировалась - еще в 1977... а еще была QBE, а в начале 80-х уже были и SQL/DS, и оракл...


      1. erogov
        27.03.2024 11:41
        +1

        Вот-вот. К тому же и не была dBase реляционной, в чем несложно убедиться, открыв мануал.


        1. sshikov
          27.03.2024 11:41

          Ну вот я и говорю, у меня полное впечатление, что эту фигню я уже читал. Т.е. это не первый перевод или пересказ из какого-то одного источника, который сам с историей не знаком, переводчиком, который не знаком тоже.


    1. KarRis
      27.03.2024 11:41

      Да и сомневаюсь я, что newSQL упращает разработку, где там это упращение, про ноомальное администрирование кластеров баз данных вообще молчу,? Да и где сложность работы с sql если все сейчас, где нужна простата и так работает через orm какую, теже nosql, аля монги, точно так же работает через эти прокладки. Брэд крч.


      1. burikella
        27.03.2024 11:41
        +1

        Не очень понял при чем тут простата, но ладно.


        1. FanatPHP
          27.03.2024 11:41

          И праща, если уж на то пошло :)


        1. KarRis
          27.03.2024 11:41

          Та все ты понял)


  1. saipr
    27.03.2024 11:41

    Когда-т, давным давно в 1982 году я написал метедические рекомендации "Модели данных в СУБД":

    Смотрю оглавление:

    Читаю:

    и так приятно на душе, что был причастен к продвижению СУБД в нашей стране:

    Если общение с Соколовым А.П. мне на первых порах давало возможность
    освоить языки программирования и операционную систему ОС ЕС, то беседы
    (научные диспуты) с Першиковым В.И.
    привели меня к мысли заняться системами управления базами данных.
    Першиков В.И., толкая меня в сторону СУБД, всё время ссылался на
    авторитет Владимира Макаровича Савинкова.

    О Савинкове В.М.:

    Не менее авторитетен для нас был и Владимир Макарович Савинков. В 1960
    году он окончил академию, а в период с 1965 по 1970 года он преподавал в
    ней программирование на кафедре «Военная кибернетика». После увольнения
    в запас Владимир Макарович стал заместителем директора по научной
    работе Всесоюзного государственного проектно-технологического института
    по механизации учета и вычислительных работ (ВГПТИ) ЦСУ СССР. Он был
    ответственный редактором сборника «Алгоритмы и организация решения
    экономических задач», а позднее стал и редактором сборника «Прикладная
    информатика», который был основан им всё с тем же академиком А.П.
    Ершовым. Кстати, именно А.П. Ершовым был введён в научный оборот термин «прикладная информатика».

    Чем ещё знаменит В.М. Савинков, так это тем, что в далёком 1973 году
    вместе с директором института Олегом Викторовичем Голосовым создали
    в институте научно-исследовательскую лабораторию по теории и
    методологии проектирования баз данных. Тогда слова «база данных» и «банк
    данных» были мало кому известны, но уже спустя шесть лет я буду писать
    диссертацию по этой тематике.