Все данные нужно где-то хранить, будь то список сотрудников компании, меню в ресторане или пароли пользователей сайта. Чаще всего для этого используют базы данных (БД). Они бывают нескольких типов, по-разному структурирующих сведения об объектах. В зависимости от процесса разработки продукта бизнес может создать БД с подходящей логической структурой и эффективно управлять ею с помощью систем управления базами данных (СУБД). В этом материале специалисты ITGLOBAL.COM рассказали про основные типы баз данных, разобрались, в чем их особенности и чем они отличаются друг от друга.
Зачем нужны базы данных
Базы данных позволяют:
- быстро находить нужную информацию в большом массиве информации;
- получать, добавлять и обновлять данные с минимальными трудозатратами;
- настраивать разные уровни доступа. Например, одним сотрудникам можно запретить просматривать данные, а другим разрешить их редактировать;
- работать одновременно всей командой. Несколько человек могут одновременно работать в базе данных;
- хранить большие объемы информации, которые не позволяют сохранять другие инструменты.
Простейшие базы данных
Простейшие БД можно создать с помощью обычных текстовых редакторов без применения специализированного ПО. Главное, чтобы данные имели четкую структуру и содержимое полей легко можно было различить. Такие базы данных подойдут, например, для списков сотрудников, номеров карт или клиентов, которые состоят в программе лояльности. Чаще всего это небольшие объемы данных.
Текстовые файлы
Информация в текстовых форматах (txt, csv), где поля разделяются пробелами, табуляцией и знаками препинания: запятыми, точками с запятой и двоеточиями. Простейшие базы данных подойдут, когда необходима простая БД, которая содержит 50-200 записей. Например, для телефонного справочника.
Преимущества:
- можно редактировать обычным текстовым редактором;
- удобно работать с конфигурационными данными.
Недостатки:
- сложно установить взаимосвязи между данными;
- не подходит для больших объемов данных.
Примеры: etc/passwd и etc/fstab, csv-файлы, ini-файлы и прочие.
Иерархические
Иерархическая БД — это система с корневым каталогом и иерархией из подкаталогов и файлов. Все объекты делятся на предков и потомков и тесно взаимосвязаны. У каждой записи может быть не более одного предка, поэтому база данных имеет древовидную структуру. Иерархические БД подойдут, например, для создания организационной структуры компании.
Преимущества:
- путь к объекту строится из имен корневых и вложенных каталогов;
- можно моделировать отношения подчиненности.
Недостатки:
- система хранения данных ограничена.
Примеры: файловые системы, DNS и LDAP.
Сетевые
Сетевые базы данных похожи на иерархические, но они могут иметь более одного родителя. Это позволяет моделировать сложные отношения между объектами. Таким образом организованы огромные массивы информации в сети Интернет, где гиперссылки связывают между собой миллионы документов.
Пример: IDMS.
Реляционные базы данных
В реляционных БД данные формируются в таблицы и имеют жесткую структуру, где строки — это значение свойств, а столбцы — это свойства объектов. Этот тип часто используют на начальном этапе разработки приложений и сервисов. Например, при составлении меню для нового ресторана или создания БД библиотеки, где важно распределить объекты по разным категориям.
Преимущества:
- удобное отображение данных в виде строк и столбцов;
- позволяет использовать функционал языка запросов SQL;
- возможность горизонтальной и вертикальной масштабируемости данных;
- сложные отношения позволяют строить графовые БД, реляционные — только примитивные родитель-потомок.
Недостатки:
- низкая производительность из-за сложных отношений между данными;
- строгая структура реляционных таблиц, которая не позволяет программистам писать в свои объекты произвольные наборы атрибутов.
Примеры: Oracle, Microsoft SQL Server, MySQL, PostgreSQL, SQLite.
NoSQL и нереляционные базы данных
В реляционных БД сложно хранить и обрабатывать плохо структурированные или вовсе не структурированные данные. Для решения этих задач есть отдельный тип баз данных — нереляционные.
Базы данных «Ключ-значение»
Данные хранятся в виде таблицы с ключами и конкретными значениями. Базы данных «Ключ-значение» часто используют вместе с другими базами данных в качестве механизма кэширования.
Преимущества:
- подходит для разных данных (файлы, текст, цифры) под разными ключами;
- быстрый доступ к данным за счет адресного хранения;
- правила шардирования по определенным ключам.
Недостатки:
- нет стандартных возможностей баз данных: атомарность транзакций, согласованность данных при одновременном выполнении нескольких транзакций;
- тяжело поддерживает уникальные ключи при увеличении объемов данных.
Примеры: Amazon DynamoDB, Redis, Riak, LevelDB, Memcached и пр.
Документоориентированные базы данных
Данные хранятся в виде документов JSON. Их группируют в коллекции, которые образуют системы баз данных. Содержимое документа может иметь различный набор свойств и характеристик. Поэтому такие базы данных используют для создания каталогов, книг, блогов и платформ с потоковыми видео.
Преимущества:
- подходит для разработки сервисов, которые работают с по-разному структурированными данными;
- легко масштабируется и изменяет структуру;
- быстрое создание документов и их минимальное обслуживание;
- нет внешних ключей, поэтому все документы независимы друг от друга;
- использует для описания документов XML, JSON и другие.
Недостатки:
- ограничения по проверке на согласованность, которая снижает производительность баз данных;
- сложности в получении данных из нескольких связанных источников;
- риски утечки конфиденциальных данных веб-приложений.
Примеры: MongoDB, RethinkDB, CouchDB, DocumentDB.
Графовые
Графовые базы данных моделируют отношения между сложно взаимосвязанными объектами. Они основаны на топографической структуре сети и математической теории графов. Графы представляют наборы данных в виде узлов, ребер и свойств. Такие БД помогают давать пользователям ресурсов рекомендации в режиме реального времени и улучшать пользовательский опыт. Например, музыкальные сервисы предлагают индивидуальные подборки треков, а маркетплейсы — списки товаров на основе избранных.
Преимущества:
- высокая производительность и адаптивная структура;
- четкая взаимосвязь между сущностями;
- результаты в режиме реального времени.
Недостатки:
- нет стандартизированного языка запросов;
- графы не подходят для систем на основе транзакций.
Примеры: Neo4J, JanusGraph, Dgraph, OrientDB.
Колоночные
В колоночных базах данные хранятся не в таблицах, а в столбцах. Ключи указывают на формат строки записи информации об объекте. У каждой строки есть свой набор свойств, поэтому в рамках одного семейства можно хранить по-разному структурированные данные. Колоночные базы данных применяют для аналитики больших объемов данных. Например, для фильтрации и сортировки товаров в интернет-магазине или для получения статистики с сайта в разрезе дней, категорий, цен и так далее.
Преимущества:
- возможность делать сложные выборки на больших таблицах;
- мгновенное изменение структуры больших таблиц;
- выполнение быстрых запросов;
- легкая масштабируемость и модифицируемость структуры.
Недостатки:
- медленно работает на запись;
- не поддерживает транзакции;
- ограничения для разработчиков.
Примеры: Cassandra, HBase, ClickHouse.
Базы данных временных рядов
Временные ряды — это все, что можно измерить в разрезе временных отрезков: часа, дня, месяца или года и т.д. Метриками могут быть различные данные: изменение трафика на дорогах, уровень воды в реке, нагрузка на сервер и другие. Данные можно запросить, построить, проанализировать и найти зависимость между различными метриками. Производительность БД зависит от разных факторов: объема информации, количества запросов и метрик.
Примеры: OpenTSDB, Prometheus, InfluxDB, TimescaleDB.
Комбинированные типы
Комбинированные типы совмещают SQL- и NoSQL-подходы и включают в себя NewSQL и многомерные решения.
NewSQL базы данных
Компромиссный и достаточно молодой тип решений. NewSQL базы данных подходят для отраслей, которые работают с критически важными данными: финансовый и банковский сектор, здравоохранение и другие. Компаниям, которым важна масштабируемость и надежность проведения транзакций.
Преимущества:
- легко масштабируется;
- высокая производительность и доступность данных.
Недостатки:
- высокие требования к аппаратным ресурсам разработчиков.
Примеры: MemSQL, VoltDB, Spanner и др.
Многомерные
Многомерные базы сочетают несколько подходов к организации данных в одну серверную систему, поэтому могут хранить, запрашивать и индексировать их из нескольких моделей. Такие БД могут преобразовывать информацию из одного формата в другой. Обычно их применяют для управления ИТ-системами, централизации данных и поиска больших данных.
Преимущества:
- согласованность данных между моделями;
- отказоустойчивость из-за ACID-совместимости;
- легкая интеграция новых моделей баз данных в систему;
- подходит для сложных проектов.
Недостатки:
- сложность многомерных баз данных;
- многомерная модель еще совсем молодая и не имеет завершенного вида;
- ограниченная доступность различных методов моделирования;
- не подходит для простых проектов или систем.
Пример: ArangoDB.
На что ориентироваться при выборе базы данных
Каждый год растут требования к скорости и производительности систем и сервисов, изменяются типы данных, растут объемы информации, с которыми работают организации. Эти факторы подталкивают разработчиков развивать уже существующие базы данных и создавать новые типы. Поэтому важно тщательно выбирать БД с необходимой структурой.
Выбор в пользу того или иного типа баз данных необходимо принимать с учетом:
- типа и сложности хранимых данных;
- взаимосвязи между данными;
- производительности операций чтения/записи и модификации структуры БД;
- опыта команды разработки;
- стадии жизненного цикла разрабатываемого продукта;
- предполагаемого объема данных;
- рода запросов при обращении к базе данных.
Managed Databases от ITGLOBAL.COM
Компании могут самостоятельно администрировать свои базы данных, но это требует много времени, денег и сил. Сэкономить ресурсы можно, если делегировать задачи облачному провайдеру. Например, специалисты ITGLOBAL.COM в рамках услуги Managed Databases берут на себя управление базами данных «под ключ», круглосуточную техническую поддержку, масштабирование без простоев и резервное копирование.