Что такое база данных «ключ-значение»?

Базы данных «ключ‑значение»

База данных «ключ-значение» – это тип нереляционной базы данных, также известной как база данных NoSQL, в которой для хранения данных используется простой метод «ключ-значение». Это дает возможность хранить данные как совокупность пар «ключ‑значение», в которых ключ служит уникальным идентификатором. Как ключи, так и значения могут представлять собой что угодно: от простых до сложных составных объектов. Базы данных «ключ-значение» (или хранилища «ключ‑значение») поддерживают высокую разделяемость и обеспечивают беспрецедентное горизонтальное масштабирование, недостижимое при использовании других типов баз данных.

В чем преимущества баз данных «ключ-значение»?

Благодаря традиционным реляционным базам данных (базам данных SQL) информация хранится в виде таблиц, содержащих строки и столбцы. Они обеспечивают жесткую структуру данных и не всегда оптимальны. С другой стороны, базы данных «ключ-значение» – это базы данных NoSQL. В определенных случаях они обеспечивают гибкие схемы баз данных и улучшенную производительность при масштабировании. Хранилища «ключ-значение» имеют следующие преимущества.

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

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

Базы данных «ключ-значение» обрабатывают постоянные операции чтения и записи при минимальных затратах на серверные вызовы. Уменьшенная задержка и сокращение времени отклика обеспечивают более высокую производительность при масштабировании. Они основаны на простых структурах с одной таблицей, а не на нескольких взаимосвязанных. Базам данных «ключ-значение» не требуется выполнять ресурсоемкое объединение таблиц, в отличие от реляционных баз данных, что значительно ускоряет их работу.

Каковы варианты использования баз данных «ключ-значение»?

Системы баз данных «ключ-значение» можно использовать в качестве основных для приложений или решения нишевых задач. Ниже мы приводим несколько примеров использования базы данных «ключ-значение».

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

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

Сайт интернет‑магазина может получать миллиарды заказов за считанные секунды во время праздничного сезона покупок. Используя базы данных «ключ‑значение», можно обеспечить необходимое масштабирование при существенном увеличении объемов данных и чрезвычайно интенсивных изменениях состояния. Такие базы данных также позволяют одновременно обслуживать миллионы пользователей благодаря распределенной обработке и хранению данных. Хранилища «ключ‑значение» также обладают встроенной избыточностью, что позволяет справляться с потерей узлов хранилища.

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

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

Как работают базы данных «ключ-значение»?

Базы данных «ключ-значение» работают по принципу организации всех данных в виде набора пар «ключ-значение». Ключ можно рассматривать как вопрос, а значение – как ответ. В приведенном ниже примере первичный ключ состоит из двух ключей: идентификатора продукта и типа. Идентификатор продукта – это ключ с описанием секции, в которой будет храниться объект. Тип – это ключ сортировки, определяющий порядок хранения элементов на диске. Комбинация ключа секции и ключа сортировки образует уникальный первичный ключ, который соответствует одному значению в базе данных.

В этом примере книга объектов данных имеет такие атрибуты, как название, автор и дата публикации. У каждого объекта данных книги есть ключ BookID. Можно напрямую связать BookID и ассоциированный с ним объект книги в хранилище «ключ-значение». Также вы можете получить данные, просмотрев BookID в таблице. Кроме того, каждый элемент имеет собственную схему, что делает хранилища «ключ-значение» очень гибкими для хранения данных различной структуры.

Каковы функции баз данных «ключ-значение»?

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

Хранилища «ключ-значение» поддерживают определенные типы данных, такие как целые числа и текст. Однако многие из них также могут поддерживать более сложные объекты, такие как массивы, вложенные словари, изображения, видео и полуструктурированные данные. Предоставление базе данных дополнительной информации о ваших данных позволяет увеличить объем хранилища и оптимизировать производительность запросов.

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

В хранилищах «ключ-значение» можно сортировать ключи, чтобы систематизировать данные и разбивать их на разделы. Например, ключи можно отсортировать следующими образами:

  • В алфавитном или цифровом порядке
  • Хронологически
  • По размеру данных

Рассмотрим хранилище «ключ-значение», в котором в качестве уникального ключа используется адрес электронной почты клиента. Адреса электронной почты можно сортировать в алфавитном порядке, поэтому все списки адресов электронной почты, начинающихся на буквы A-J, хранятся на сервере № 1, на K-S – на сервере № 2 и так далее.

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

Многие хранилища «ключ-значение» предлагают встроенную поддержку репликации путем автоматического копирования данных между несколькими узлами хранения. Это помогает автоматически восстанавливать данные – в случае сбоя сервера данные останутся в вашем распоряжении.

Многие хранилища «ключ-значение» предлагают встроенную поддержку репликации путем автоматического копирования данных между несколькими узлами хранения. Это помогает автоматически восстанавливать данные – в случае сбоя сервера данные останутся в вашем распоряжении.

Принцип ACID (атомарность, непротиворечивость, изолированность, долговечность) – это свойства базы данных, которые обеспечивают точность и надежность данных при любых обстоятельствах. Например, если вы последовательно вносите несколько изменений в данные, то атомарность требует, чтобы все изменения проходили по порядку. Если не удается одно изменение, то не удаются и все остальные.

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

Каковы ограничения баз данных «ключ-значение»?

Базы данных «ключ-значение» требуют некоторых компромиссов, как и при выборе любой технологии.

Поскольку базы данных «ключ-значение» не поддерживают сложные запросы, разработчики должны решать эту проблему с помощью кода. В операциях с данными в основном используются простые термины, такие как get, put и delete. Существуют ограничения на фильтрацию и сортировку данных перед доступом к ним.

Хранилище «ключ-значение» спроектировано так, что оно не навязывает разработчикам схему. Любой может изменить ее в программе базы данных. Команды разработчиков должны систематически планировать модель данных, чтобы избежать проблем в долгосрочной перспективе. Отсутствие жесткой схемы также означает, что приложение отвечает за правильную интерпретацию потребляемых данных. Эту схему часто называют «схемой при чтении».

Как AWS может удовлетворить ваши требования по работе с базой данных «ключ-значение»?

Amazon DynamoDB – это одна из самых популярных баз данных «ключ-значение», созданная для запуска высокопроизводительных приложений в любом масштабе. Это полностью управляемая многорегиональная и многоактивная база данных, которая предоставляет перечисленные далее функции.

  • Безграничная масштабируемость, включая масштабирование до нуля, с постоянной задержкой в несколько миллисекунд.
  • Бессерверная система без обновления версий, окон обслуживания, серверов и программного обеспечения для управления.
  • Глобальные таблицы DynamoDB обладают доступностью на уровне 99,999 % и обеспечивают активную репликацию, что позволяет создавать глобально распределенные приложения с локальной производительностью чтения.
  • Высокая безопасность и надежность: шифрование по умолчанию в состоянии покоя, восстановление на момент времени, резервное копирование и восстановление по требованию и многое другое.
  • Простота в использовании благодаря интеграции со многими сервисами AWS, включая пакетный импорт/экспорт из Amazon S3, Потоки данных Amazon Kinesis, Amazon Cloudwatch и другие.

С помощью этого пошагового руководства по созданию таблицы NoSQL и выполнению запросов можно настроить и запустить базу данных DynamoDB всего за 10 минут. Начните работу с базами данных «ключ-значение» на AWS, создав бесплатный аккаунт уже сегодня.

Amazon DynamoDB