Всеволод Дёмкин Новые нереляционные системы хранения данных
Зачем всё это нужно? оно в облаке обещание масштабируемости много интересных идей как ни странно, это работает :)
Ландшафт средств хранения до Web Текстовые файлы Иерархические БД навигационные Реляционные БД Сетевые БД Объектные БД BerkleyDB
(с) artlebedev.ru NOSQ L постоянные хеш-таблицы колонко- ориентированные документо- ориентированные БД для графов
Наш случай 4 млн. пользователей 20 тыс. API / час 1 API запрос ~ … сек 40 сек чтобы дать ответ пользователю БД КЕШ: волатильность списки рекомендации DB
Постоянные ХТ BerkleyDB memcached memcachedb Tokyo Cabinet + Tyrant Redis Voldemort Amazon SimpleDB
Redis списки, множества, сортированные множества, … волатильность (EXPIRE, TTL) очень быстрый (110k SET/sec, 81k GET/sec) но жрет много памяти не дружит с остальными очень быстро развивается
Документо-ориентированные БД не очень быстро простое взаимод. только MapReduce стабильная! так себе админ. хорошая док. очень быстро взаимод. сложнее MapReduce + Dynamic есть баги удобная админ. так себе док.
API для взаимодействия raw sockets JSON HTTP REST Thrift (binary protocols)
Действительно распределенные CAP-теорема Брюэра Consistency Availability Partition tolerance
Колонко-ориентированные БД Google BigTable Facebook Cassandra HBase
Cassandra BigTable-база Dynamo-архитектура супер-колонки уровни Consistency P2P-распределенный: Gossip но Thrift
Сложность фичастость plain-text memcachedTokyo Redis Berkley Couch Mongo Voldemort Cassandra HBase
За счет чего масштабируются? HT non-blocking IO (iolib) DODB Join'ы уже сделаны MapReduce СODB архитектура
Take-away самое главное (как по мне):
Плюсы + некоторые действительно масштабируются + а другие быстро работают :) + есть специфические решения для некоторых задач + есть хорошие архитектурные решения
Минусы - незрелые - хайп - не до конца понятно - библиотеки, инструменты еще недоразвиты
«Литература» nosql-if-only-it-was-that-easy/ my-thoughts-nosql/ hbase-vs-cassandra-why-we-moved/ Getting_Real_about_NoSQL_and_the_SQL_ Isnt_Scalable_Lie/