Ключ-значение
Обзор лекции 1.Ключ-значение 2. Колоночные 3.Документо-ориентированные 4. Графовые 2
1. Базы данных типа «ключ- значение» ( ) 3
Свойства баз «ключ-значение» Простейшее NoSQL хранилище, быстрая запись, но доступ только к одной ячейке Хранит хэш-таблицу ключей, где каждый ключ связан с непрозрачным бинарным объектом Легко горизонтально масштабируется, не поддерживает другие типы данных Идеально для приложений с большими массивами простых данных Варианты использования: значения датчиков, изменение курсов акций, кэширование, результаты промежуточной обработки. Пример: Redis, Amazon DynamoDB 4
Redis – хранилище «ключ- значение» Ключи в Redis бинарно-безопасные (binary safe) строки. Слишком длинные ключи плохая идея, не только из-за занимаемой памяти, но так же и в связи с увеличением времени поиска определенного ключа в множестве в связи с дорогостоящим сравнением. Хорошая идея придерживаться схемы при построении ключей: «object-type:id:field». «Шпаргалка по Redis» 5
Redis. Информация API: Tons of languages, Written in: C, Concurrency: in memory and saves asynchronous disk after a defined time. Append only mode available. Different kinds of fsync policies. Replication: Master / Slave, Misc: also lists, sets, sorted sets, hashes, queues. Cheat-Sheet: cheatsheet-v1.pdfhttp://masonoise.files.wordpress.com/2010/03/redis- cheatsheet-v1. pdf Slides Admin UI 6
Типы данных Redis Строки (strings). Базовый тип данных Redis. Строки в Redis бинарно-безопасны, могут использоваться так же как числа, ограничены размером 512 Мб. Списки (lists). Классические списки строк, упорядоченные в порядке вставки, которая возможна как со стороны головы, так и со стороны хвоста списка. Максимальное количество элементов Множества (sets). Множества строк в математическом понимании: не упорядочены, поддерживают операции вставки, проверки вхождения элемента, пересечения и разницы множеств. Максимальное количество элементов Хеш-таблицы (hashes). Классические хеш-таблицы или ассоциативные массивы. Максимальное количество пар «ключ-значение» Упорядоченные множества (sorted sets). Упорядоченное множество отличается от обычного тем, что его элементы упорядочены по особому параметру «score». Структуры данных, используемые в Redis 7
Операции Redis Cоздание, выборка, модификация, удаление и базовая информация об объектах. set test:1:string "my binary safe string" get test:1:string getset test:1:string "other value set test:1:vlaue "487 rename test:1:vlaue test:1:value exists test:1:value del test:1:value keys test:1:* 8
Операции Redis 2 Время жизни redis :6379> ttl test:1:string > expire test:1:string 6000 Списки rpush test:1:messages "Hello, world!« lrange test:1:messages 0 2 llen test:1:messages lpop test:1:messages 9
Транзакции в Redis MULTI начать запись команд для транзакции. EXEC выполнить записанные команды. DISCARD удалить все записанные команды. WATCH команда, обеспечивающая поведение типа «check-and-set» (CAS) транзакция выполняется только в случае, если другие клиенты не изменили значение переменной. Иначе EXEC не выполнит записанные команды. 10
Pub/Sub, сообщения в Redis redis :6379> SUBSCRIBE messages redis :6379> PUBLISH messages "Hello world!" (integer) 1 redis :6379> SUBSCRIBE messages Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "messages" 3) (integer) 1 1) "message" 2) "messages" 3) "Hello world!" 11
Репликация в Redis 12 Клиент Мастер Слейв Чтение Слейв Запись Чтение