База данных

cat-and-database

Большинство сайтов и приложений используют базы данных для хранения информации. К примеру, сайт TesterToday хранит информацию об уровне пользователя в базе данных.

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

Что такое база данных?

База данных — это хранилище, которое позволяет нам эффективно хранить, обрабатывать и управлять большими объёмами информации.

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

datacenter

Сущность в базе данных

Сущность в базе данных — это конкретный объект, о котором хранится информация. На примере конфеты, любой такой объект имеет уникальный идентификатор, чтобы можно было точно различить каждую из конфет, и определённые свойства. Также на атрибуты сущности могут быть наложены ограничения, как с начинкой конфеты, она либо есть, либо её нет.


Сущность 'Конфета'
Атрибуты (свойства) объекта:
  1. Идентификатор: уникальный идентификатор
  2. Наименование: текст, описывающий название конфеты
  3. Вкус: текст, описывающий вкусовые качества конфеты
  4. Начинка: принимает значения "Да"/"Нет"
Пример заполнения
Идентификатор Наименование Вкус Начинка
1 Космическая свежесть Мятная Нет
2 Мятная туманность Цитрусово-мятная с легкой кислинкой Да

Схема базы данных и модели хранения данных

В свою очередь схема базы данных — это логическое представление структуры базы данных. Данные в базе могут храниться в различном виде. Рассмотрим самые популярные модели хранения данных.


Табличная (реляционная)

Данные хранятся в виде таблиц, состоящих из строк и столбцов.

Схема базы данных:

table-database

Пример заполнения:


Таблица cat

id name age
1 Кот-астронавт 4

Таблица candy

id name taste filling cat_id
3 Космическая свежесть Мятная true 1

Таблицы cat и candy связаны при помощи идентификатора кота cat_id, указанного в таблице candy.

Связь может быть одного из трёх типов:

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

Между таблицами candy и cat установлена связь один ко многим. Каждая конфета, принадлежащая Коту-астронавту, имеет поле cat_id, которое содержит его идентификатор.

Базы данных с такой структурой называют реляционными, от англ. relation — отношение, связь.

Документоориентированная

Данные хранятся в виде коллекций документов, обычно в JSON формате.

Схема базы данных отсутствует.

В случае, если конфеты нужны нам независимо от кота-владельца, мы предпочтём хранить их в отдельной коллекции, ссылаясь на конкретные конфеты в документе кота по их идентификаторам.


Документ cat

document-database-reference-cat

Документ candy

document-database-reference-candy

В случае, если кот нам интересен только с конфетами, которыми он владеет, мы можем хранить его конфеты в embedded (вложенном) виде прямо в документе с котом.

document-database-embedded

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

  • PostgreSQL
  • Oracle Database
  • Microsoft SQL Server

Примеры документоориентированных баз данных:

  • MongoDB
  • CouchDB
  • RavenDB

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

Понимание внутренних особенностей каждого типа баз данных и умение работать с ними помогает при проведении тестирования.