…Не та, эта… база данных! Поскольку мы начинаем узнавать о базах данных на 8-й неделе Iron Yard Cincinnati, я провел небольшое исследование того, что такое база данных на самом деле, и некоторые различные типы баз данных. В этой статье я собираюсь сравнить два разных типа. Первый тип базы данных, который я рассмотрю, — это база данных SQL, тип реляционной базы данных, использующий язык структурированных запросов. Второй тип базы данных известен как база данных noSQL. Существуют различные типы баз данных noSQL, такие как типы документов, ключ-значение и графы. Я сосредоточусь на типе документа базы данных noSQL, поскольку мы будем использовать пример этого типа в классе под названием MongoDB. Этот пост предназначен для простого обзора некоторых различных типов баз данных, поскольку это очень глубокая тема, и есть люди, занятые только тем, что занимаются проектированием и обслуживанием баз данных, которые могут варьироваться от простых до очень больших и сложных.

База данных — это просто набор данных, организованный таким образом, чтобы сделать их доступными. Доступ к данным осуществляется через СУБД или систему управления базами данных, которая позволяет пользователям создавать, обновлять, удалять и получать доступ к данным в базе данных. Базы данных могут иметь множество различных типов или моделей, определяющих способ хранения данных. Есть много типов, и вы можете прочитать о них здесь, но я сосредоточусь на двух, которые будут реляционными, которые используют базы данных SQL, и документом, который использует MongoDB.

Реляционная база данных — это та, в которой данные организованы в таблицы, также называемые отношениями, которые состоят из столбцов и строк. Каждая строка (или кортеж) имеет идентификатор, который ее идентифицирует, и представляет собой набор данных, представляющий один элемент. Каждый столбец содержит атрибуты элементов в строках, например адрес или номер телефона. Таблицы обычно организованы по типам хранимых в них данных, таких как клиенты или продукты. Вот удобная картинка, показывающая, как связаны между собой строки, столбцы и таблицы:

Одним из самых популярных типов реляционных баз данных является база данных SQL, названная так потому, что она использует язык структурированных запросов для работы с данными в базе данных. Доступ, удаление, добавление и все другие операции, выполняемые в базе данных SQL, выполняются на языке структурированных запросов. Этот язык был разработан в 1970-х годах в IBM, и в нем много частей. Вы можете прочитать больше об этом здесь". Примеры баз данных SQL включают MySQL, SQL Server и Oracle Database.

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

{
  ISBN: 9780992461225,
  title: "JavaScript: Novice to Ninja",
  author: "Darren Jones",
  year: 2014,
  format: "ebook",
  price: 29.00,
  description: "Learn JavaScript from scratch!",
  rating: "5/5",
  review: [
    { name: "A Reader", text: "The best JavaScript book I've ever read." },
    { name: "JS Expert", text: "Recommended to novice and expert developers alike." }
  ]
}

Как и строки в базе данных, каждый документ имеет уникальный идентификатор, чтобы можно было получить доступ к данным. Вместо использования SQL для определения того, как с данными взаимодействуют, ориентированные на документы базы данных используют операции CRUD, что означает создание, извлечение, обновление и удаление. Эти операции CRUD обычно выполняются через API, которые взаимодействуют с самими данными. Конечные точки API настраиваются с помощью методов HTTP, таких как POST, GET и DELETE, которые добавляют новые данные, получают данные и удаляют данные соответственно. Это знакомо многим разработчикам, особенно тем, кто использует интерфейсные языки, такие как Javascript, для взаимодействия с данными в ориентированной на документы базе данных. Примеры баз данных, ориентированных на документы, включают MongoDB, CouchDB и RethinkDB.

Так какой тип лучше? Как и в большинстве случаев, ответ: это зависит от обстоятельств. Базы данных SQL, как правило, лучше, если вам нужна строгая схема данных, поскольку она фиксирована и применяется в базах данных SQL. С другой стороны, наличие более гибкой схемы может быть преимуществом, если вы считаете, что ваши потребности в данных могут измениться, поскольку базы данных документов могут обрабатывать разные схемы данных. Базы данных SQL обычно должны быть переведены в автономный режим, чтобы добавить изменение структуры или типов данных, тогда как базы данных NoSQL могут добавлять поля данных в любое время. Что еще следует учитывать, так это масштабирование по мере роста ваших данных. Базы данных SQL обычно не так легко масштабируются и требуют больше усилий для масштабирования. По мере роста базы данных и необходимости ее масштабирования часто требуются дополнительные серверы, что может привести к проблемам роста. Базы данных NoSQL легче масштабировать, поскольку после добавления дополнительных серверов база данных автоматически распределяет данные по новым серверам. Базы данных SQL, как правило, лучше подходят для согласованности, а это означает, что транзакции должны изменять данные только определенными разрешенными способами, чтобы не скомпрометировать данные. Некоторые базы данных, ориентированные на документы, могут обеспечить согласованность, но это одна из вещей, в которых SQL очень хорош.

Одним из ключей к созданию и поддержанию хорошей базы данных является планирование и знание. Альтернативы этому нет, независимо от типа базы данных. Планирование базы данных как можно раньше поможет вам избежать проблем в будущем и значительно упростит ее обслуживание. Оба типа db, обсуждаемые в этом посте, доступны через бесплатные варианты с открытым исходным кодом, поэтому рекомендуется поэкспериментировать с обоими, чтобы лучше понять, какой тип принесет вам наибольшую пользу.

Некоторые ссылки, которые я использовал для этого сообщения, которые я нашел полезными: