Виды база данных: краткие описания, схемы и примеры БД

Содержание

Введение в базы данных / Хабр

Прежде чем начать рассказывать о базах данных, скажу, для кого эта статья. Если вы бывалый разработчик, то смело пропускайте статью, ничего нового вы с ней не найдете. Статья для тех, кто только планирует начать карьеру в дата-аналитике или data science, кто много раз слышал словосочетание «база данных», но не до конца понимает, что это.

Я решила написать эту статью, потому что именно такой статьи мне очень не хватало несколько лет назад, когда я только начала карьеру в аналитике данных. Тогда я часто слышала слова «база данных», «реляционная база», «primary key», примерно понимала, что они означают, но единую картину в голове у меня сложить не получалось.

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

Компании часто собирают информацию о своих клиентах, сотрудниках, операциях, финансах и т. д. Потом эту информацию можно выгодно использовать. Например, можно ее проанализировать и понять, какими способами можно увеличить прибыль. Можно на ее основе построить хитрые MLмодели, которые помогут улучшить продукт. Или, в конце концов, эту информацию можно просто перепродать другим компаниям.

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

Базы данных помогают справиться с большим количеством проблем, решить которые папкам и Excel-файлам не под силу:

  • В базе данных можно хранить очень огромное количество данных – миллиарды и триллионы записей;

  • Базы помогают защищать данные — они позволяют давать доступ к данным только определенному кругу лиц. При этом можно ставить ограничения, кому к каким данным можно давать доступ и какого типа доступ, только чтение или редактирование тоже;

  • Базы данных могут помогать следить за правильностью данных с помощью различного вида проверок;

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

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

Я думаю, это определение станет понятнее, когда я далее опишу наиболее популярные типы баз данных на конкретных примерах.

Типы баз данных

Существует много разных типов баз данных. Наиболее популярные типы:

  • Реляционные базы данных

  • Key-value базы данных

  • Документно-ориентированные базы данных

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

  • Колоночные базы данных

Далее я расскажу о каждом из этих типов. Однако, начну я реляционных баз данных и больше всего буду рассказывать о них, потому что именно этим типом баз данных чаще всего пользуются аналитики данных и data scientist-ы.

Реляционные базы данных (MySQL, PostgreSQL, Oracle DB)

Реляционная база данных – это база данных, которая состоит из таблиц. У реляционной базы данных 2 очень важные характеристики:

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

Рис 1. Пример реляционной базы данных

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

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

Primary key – это столбец (или группа столбцов) таблицы, который содержит уникальные значения для каждой строки. На примере выше primary key каждой таблицы я выделила зеленым цветом. То есть, например, в таблице с заказами каждая строка будет описывать отдельный заказ. Не будет 2 строк, которые описывают один и тот же заказ, потому ID заказа будет разный для каждой строки.

Foreign key – это столбец в таблице, который содержит primary key другой таблицы. На рисунке foreign key отмечены желтым. То есть, таблица с заказами содержит ID клиента, который является primary key в таблице с клиентами, но в таблице с заказами он будет foreign key.

Primary key и foreign key помогают не только связывать между собой таблицы реляционной базы данных отношениями. Они еще помогают следить за целостностью и правильностью данных в базе. Например, если мы ошибемся в ID клиента, добавляя новый заказ в таблицу с заказами, то база выдаст ошибку, так как не найдет соответствующий ID клиента в таблице с клиентами.

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

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

Одним из наиболее популярных методов ускорения работы запросов к реляционным базам данных является индексирование таблиц. Индекс – это определенный столбец в таблице, по которому осуществляется поиск. 

Приведу пример работы индекса. Например, мы хотим найти все заказы клиента 007 из ресторана 1. Тогда, если у нас в таблице с заказами нет индекса, то мы будем перебирать все заказы пока не найдем нужные. Если же у нас есть индекс в таблице с заказами, то ситуация будет иной. Допустим, что индексом является столбец ID ресторана. Тогда наши данные в таблице с заказами будут сгруппированы по ID ресторана. И тогда при поиске заказов клиента 007 из ресторана 1, мы не будем перебирать всю таблицу с заказами, а найдем группу заказов из ресторана 1 и будем искать необходимые данные внутри этой группы.

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

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

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

Какие еще есть типы баз данных?

Прочие типы баз данных, которые не реляционные, часто называются noSQL базы данных. Обсудим наиболее популярные типы нереляционных баз данных.

Key-value базы данных (пример — Redis)

Название говорит о том, какие данные удобно хранить в Key-value базе – в такой базе хранят данные, которые удобно представить в виде пары ключ-значение. Основное преимущество таких баз – это очень быстрый поиск значения по ключу. При этом значение может содержать какие угодно типы данных. 

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

Рис 2. Пример key-value базы данных

Документно-ориентированные (пример — Mongo DB)

В документно-ориентированной базе данных единицей хранения является документ (который может быть в формате json, или xml, или в каком-нибудь еще формате). Удобство таких баз в том, что в них быстро и легко записывать любые типы данных, при этом эти данные не обязаны обладать четкой структурой. Минус таких баз в том, что данные в них неудобно анализировать.  

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

Рис 3. Пример документно-ориентированной базы данных

Графовые базы данных (пример — Orient DB)

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

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

Колоночные (столбцовые) базы данных (примеры — Cassandra, Clickhouse)

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

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

Ну и напоследок

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

Классификации, виды, типы баз данных

480 auto

Администрирование

Какие существуют варианты классификаций баз данных? Приводим наиболее полный список всех типологий БД. По различным критериям.

IT GIRL 12

Post Views: 2 469

Классификации, виды, типы баз данных | Boodet.online Блог 2020-07-19 ru Классификации, виды, типы баз данных | Boodet.online

286 104

Boodet Online +7 (499) 649 09 90 123022, Москва, ул. Рочдельская, дом 15, строение 15

Классификации, виды, типы баз данных | Boodet.online

286 104

Boodet Online +7 499 649 09 90 123022, Москва, ул. Рочдельская, дом 15, строение 15

Поделиться

Твинтнуть

Поделиться

Запинить

Отправить

Классификации баз данных

Любой человек или компания генерируют данные в большом количестве. Эти сведения нужно где-то хранить и обрабатывать. Для этого используют базы данных, которые упорядочивают, систематизируют информацию. От того, какую именно БД использует разработчик, зависит, как будет работать приложение.

БД делятся на несколько видов: по типу, структуре и обращению к данным. Какая существует классификация баз данных, в чем их различие и в каких случаях использовать — рассказывают специалисты Boodet.Online.

По типу данных

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

Кстати, в таких БД можно искать не только информацию, но и критерии документов. Например, если задать поиск по критериям «дата создания» и «автор», можно будет посмотреть, сколько файлов создал определенный сотрудник за год. Этим же методом ищут официальные формы, например «Ф9»

Фактографические базы данных включают в себя информацию об объекте исследования, например, количество «больничных дней» у сотрудников. Классификаторы и словари относятся к лексикографическим БД.

По структуре данных

Базы данных классифицируются на:

  • структурированные — заполнять их можно только после того, как структура БД описана и спроектирована;

  • частично структурированные — обычный или гипертекст;

  • неструктурированные — семантические сети.

Структурированные бывают:

  • смешанными;

  • иерархическими;

  • реляционными;

  • мультимодальными;

  • сетевыми.

По обращению к данным

В зависимости от характера обращения к информации БД классифицируют на:

  • общие:

  • локальные;

  • распределенные.

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

Иерархические БД

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

Реляционные

Реляционная модель основана на математической теории множеств — «relation». В парадигме базы данных это означает визуальное представление информации в виде таблицы, где у ячеек есть свойства, описания, взаимосвязи. При этом сами отношения между сведениями не обязательно должны быть линейными (как в таблицах), они могут быть абстрактными.

В таблицах, где хранятся объекты, всегда фиксированное количество столбцов. То есть структура реляционных БД заранее известна и описана. В столбцах указывают название и вид данных. Чтобы таблицы стали базой, надо логически их связать. А чтобы управлять таким набором таблиц понадобится СУБД.

Запросы в реляционных базах данных классифицируются на структурированные и неструктурированные:

  1. Структурированные — SQL. Гибкие и хорошо организованные, можно адаптировать практически под любые типы данных. К структурированным относятся:

  • MariaDB;

  • SQLite;

  • MySQL;

  • PostgreSQL.

  • Неструктурированные — NoSQL. Благодаря согласованности информации повышают доступность и масштабируемость приложений. Относятся к реляционным базам данных, хотя и работают не по классическому реляционному шаблону. При этом в ряде случаев поддерживают запросы SQL. NoSQL СУБД:

  • Зачем нужны NoSQL? Неструктурированные базы подходят для обработки больших данных. Для Big Data нужны аппаратные платформы из серверных кластеров — это создает сложности в работе с традиционными программами.

    Например, софт для аналитики будет тормозить; если придется обрабатывать большие пакеты неструктурированных данных, начнут возникать системные ошибки.

    Это не значит, что NoSQL — единственный вариант для компаний, которые работают с Big Data. Современный подход заключается в одновременном использовании нескольких БД для одного приложения. Это позволяет предположить, что архитектура популярных баз данных будет меняться, чтобы унифицировать подход к хранению, поиску и обработке информации.

    Сетевые БД

    Сетевые модели решают некоторые недостатки иерархических, но плохо справляются с простыми запросами. Это приводит к тому, что если меняется структура организации информации, вместе с ней меняется и приложение.

    Архитектура похожа на иерархическую, есть и дочерние, и родительские элементы. Единственное отличие — связываться элементы могут в любых направлениях. То есть каждый элемент может быть связан с любым другим, независимо от иерархии.

    Многомодельные и комбинированные БД и СУБД

    Чтобы можно было применять различные представления для разного вида данных, используют многомодельные базы. Это значит, что несколько БД размещают в одной системе и настраивают взаимосвязи. Это очень удобно — можно выполнять запрос из одной БД, просматривать информацию в другой и вносить изменения в третьей. Благодаря многомодельному подходу уменьшается нагрузка на СУБД, исчезает необходимость менять основную инфраструктуру. Линейное масштабирование сокращает расходы и время разработки приложений.

    К многомодельным относятся:

    • Couchbase;

    • ArangoDB.

    Комбинированные базы данных (NewSQL) относятся к семейству распределенных. Они сочетают в себе реляционный и нереляционных подход. Основное отличие от традиционных реляционных БД — масштабируемая конструкция и высокий уровень согласованности. Основной минус: чтобы внедрить такой подход, нужен специалист не ниже Senior. Зато в итоге повысится доступность приложения, появится горизонтальное масштабирование и увеличится гибкость.

    NewSQL:

    • Spanner;

    • yugabyteDB;

    • VoltDB;

    • CockroachDB;

    • MemSQL.

    Заключение

    Нельзя однозначно сказать, что одна БД лучше другой. Это, скорее, способы решать различные задачи работы с информацией. Какую вид баз данных использовать в компании — зависит от рабочих процессов и программ, которыми пользуются сотрудники. Чтобы решить проблему размещения информации и доступа к ней, можно воспользоваться современными облачными технологиями. Например, компания Boodet.Online предлагает услугу по аренде облачного сервера SQL — пригодится тем, кто хочет сделать работу с 1С более быстрой и стабильной.

    Поделиться

    Твинтнуть

    Поделиться

    Запинить

    Отправить

    Facebook
    YouTube
    Telegram

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

    : типы, примеры и преимущества