Базы данных «ключ — значение»
В последние годы появились базы данных нового типа, получившие название «ключ — значение» (англ. «key-value» database), которые хорошо показали себя в распределённых системах с большой нагрузкой, в том числе в поисковых системах Интернета.
Базу данных «ключ — значение» можно представить себе как огромную таблицу, в каждой ячейке которой могут храниться произвольные данные («значения»), их структура никак не ограничена. Каждому значению присваивается некоторый код («ключ»), по которому его можно найти. Все данные, относящиеся к конкретном объекту, хранятся в одном месте, поэтому при запросе не нужно обращаться к разным таблицам, а достаточно просто найти значение по ключу.
СУБД поддерживает только добавление записи, поиск значения по ключу, а также изменение и удаление найденной таким образом записи. Никакие связи между значениями в явном виде не поддерживаются. Хотя объект может содержать ссылки на другие объекты (их ключи), СУБД не проверяет их правильность. Обеспечение надёжности и целостности данных возлагается не на СУБД, а на прикладную программу, которая работает с базой данных.
Ключи — это хэш-коды хранящихся данных (значений). Ключи объединяются в группы так, что все данные, связанные с ключами одной группы, хранятся на одном сервере. Таким образом, по ключу можно сразу определить нужный сервер и напрямую получить от него данные. За счет этого обеспечивается масштабируемость — если один сервер не справляется с нагрузкой, нужно добавить ещё один и разделить данную группу ключей на две части.
Многие базы типа «ключ — значение» хранят документы — объекты, которые имеют произвольный набор полей-свойств, например:
{ ключ: 1231239786234762394769237 автор: "А.С. Пушкин" название: "Евгений Онегин" }
Важно, что другие документы могут иметь совершенно другой набор полей. Такие базы данных называют документоориентированными.
Итак, базы данных «ключ — значение» обладают достоинствами, которые принципиально важны в некоторых задачах:
• масштабируемость — возможность наращивания мощности распределенной системы простым добавлением новых серверов;
• простота представления данных, близость к человеческому восприятию.
В то же время у них есть и недостатки:
• СУБД не поддерживают связи между данными, не обеспечивает целостность данных;
• нет стандарта на язык описания и управления данными (для реляционных БД таким стандартом стал язык SQL);
• основной вид запросов — поиск значения по ключу, поэтому очень сложно, например, выполнить сортировку данных.
В первую очередь, базы данных «ключ — значение» используются при «облачных» вычислениях: в поисковой системе Google (система хранения данных BigTable), интернет-магазине Amazon (www.amazon.com, база данных SimpleDB), социальной сети Facebook fwww.facebook.com. СУБД Cassandra), сервисе микроблогов Twitter (twitter.com, СУБД Cassandra).
Кроме того, есть бесплатные СУБД этого класса, например MongoDB (www.mongodb.org) или CouchDB (couchdb.apache.org).
Следующая страница Вопросы и задания