Pull to refresh
VK
Building the Internet

В чем проблема с базами данных «ключ-значение» и как ее решают Wide-column-хранилища

Reading time2 min
Views8.3K
Original author: Szymon Warda


Базы данных «ключ-значение» великолепные — ультрабыстрые, простые, почти линейно масштабируемые по количеству узлов. Но с ними все не так просто. Команда VK Cloud Solutions перевела статью о том, какие у таких баз есть проблемы и как их решить с помощью Wide-column-хранилищ.

Проблемы с базами данных «ключ-значение»


Основная концепция базы данных «ключ-значение» в том, что сами значения ее не беспокоят. Ее работа основана на некоторых допущениях, например, как у Redis, но на структуру данных она вообще не обращает внимания. Из-за этого могут возникнуть три проблемы.

1. База не может фильтровать поля атрибутов. Ведь с ее точки зрения значение — это большой блок двоичных данных.

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



Производительность большинства этапов зависит от размера передаваемых данных, а не от них самих. Именно поэтому команда  SELECT * говорит о том, что человек ничего не смыслит в производительности.

3. Значение можно обновить только целиком. Из-за этого нам приходится:

  • выводить клиенту полные данные;
  • работать с данными целиком;
  • отправлять в базу данные целиком.

Это звучит даже хорошо, ведь мы обновляем объект целиком, разве нет? Но подумайте о вариантах, когда нужно:

  • обновить дату последнего входа пользователя в систему;
  • прикрепить элемент к списку (например, в корзине интернет-магазина);
  • заменить цены на некоторые товары по акции.

Как решить эти задачи и не потерять в скорости?

Wide-column-базы данных


В основе такой базы лежит простой принцип работы: давайте снова структурировать данные (то есть их значения) в пары «ключ-значение». Вот что у нас есть в базах «ключ-значение»:



А вот как представляют данные Wide-Column-базы:



Столбцы позволяют определять подмножество данных, которое нужно вывести клиенту или обновить. В чем здесь отличие от обычной таблицы реляционной базы данных? В большинстве Wide-column-баз столбцы определяются на уровне одного элемента. Здесь нет схемы на уровне всей БД, что наводит на мысль о некоторых интересных характеристиках Wide-column-баз.

Преимущества Wide-column-баз данных


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

  • частичные операции. Можно добавить или обновить значение столбца;
  • сжатие данных. При работе с разреженными данными не нужно хранить пустые значения или null. Можно сэкономить обычно зарезервированное место, так как значения определяет схема;
  • предложение WHERE. Эта функция редко встречается в базах этого типа, но появляется фильтрация данных.

Команда VK Cloud Solutions развивает собственные Big-Data-решения. Будем признательны, если вы их протестируете и дадите обратную связь. Для тестирования пользователям при регистрации начисляем 3000 бонусных рублей.

Что еще почитать:

Tags:
Hubs:
Total votes 21: ↑18 and ↓3+15
Comments11

Articles

Information

Website
vk.com
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия
Representative
Миша Берггрен