1. Ключ-значение key / value
1.1. Основные особенности
1.1.1. Хорошее горизонтальное масштабирование
1.1.2. Partitioning
1.1.3. Простые API
1.1.4. Отказ от встроенной транзакционной целостности
1.1.5. Нетабличная структура
1.1.6. Возможность сжатия ключей
1.2. Примеры
1.2.1. memcached
1.2.1.1. Memcache::CAS для предотвращения коллизий
1.2.1.1.1. уникальный token
1.2.1.1.2. теперь мы уверены, что "до нас ничего не меняли"
1.2.1.2. unix-socket на 20% быстрее TCP
1.2.1.3. tcp / udp, можно одновременно
1.2.2. BerkleyDB
1.2.2.1. библиотека
1.2.3. MemcacheDB
1.2.4. Redis
1.2.5. MongoDB
1.2.6. tarantool
1.2.6.1. хранимые процедуры на Lua
1.2.6.1.1. атомарные сверхбыстрые транзакции на сервере
1.2.6.1.2. сервер бизнес-логики
1.2.6.2. кортежи
1.2.6.3. поддержка простого SQL
1.2.6.4. 100K writes, 260K reads
1.2.6.5. запросы могут посылаться пачками
1.2.6.6. поддержка асинхронного выполнения запросов
1.2.7. CouchDB
1.2.8. Membase
1.3. Протоколы
1.3.1. UnQL
1.3.1.1. Unstructured Query Language
1.4. Кластеризация k/v NoSQL
1.4.1. Распределение ключей по инстансам
1.4.1.1. builtin
1.4.1.1.1. обращаемся к любому серверу кластера, он отроутит
1.4.1.2. ручное
1.4.1.2.1. crc32($key) % srv_count
1.4.1.2.2. consistent_hash (кольцевой алгоритм)
1.4.1.3. ketama
1.4.1.3.1. a consistent hashing algo for memcache clients
1.4.2. Обеспечение избыточности
1.4.2.1. builtin
1.4.2.2. ручное
1.4.2.2.1. надо дублировать вручную ключи на нескольких серверах
1.4.2.3. либо мы готовы потерять часть данных :(
1.5. Выбор ключа кэширования
1.5.1. serialize($options)
1.5.2. Если получаются длинные ключи?
1.5.2.1. hash($key)
1.6. Советы
1.6.1. Асинхронные операции на изменения (не ожидаем ответа)
2. Полнотекстовый поиск
2.1. sphynx
2.2. apache solr
3. Объектные БД
3.1. Caché
3.2. FastDB
3.3. GigaBase
3.3.1. http://www.garret.ru/gigabase.html
3.3.2. http://www.garret.ru/compare.html
3.4. http://en.wikipedia.org/wiki/Comparison_of_object_database_management_systems
4. Column-based СУБД
4.1. Плюсы
4.1.1. Каждую колонку можно отсортировать по своему
4.1.2. Не нужны индексы
4.1.3. Эффективное сжатие данных
4.1.4. Уже посчитанная статистика
4.2. примеры
4.2.1. Infobright
4.2.2. InfiniDB
4.2.3. MonetDB
5. Гибридные механизмы
5.1. HandlerSocket
5.1.1. OLAP + OLTP в одном флаконе
6. Текстовые файлы и текстовые утилиты
6.1. Отсортированные файлы
6.1.1. intersection
6.1.2. merge
6.1.3. diff
6.1.4. map
6.1.5. reduce
6.2. Неотсортированные файлы
6.2.1. grep
6.2.2. merge (with dups)
6.2.3. map
6.2.4. reduce
7. Файлы в ФС
7.1. иерархическая k/v СУБД
7.2. поддержка блокировок
7.3. может быть много файлов
7.3.1. xfs
8. Модели данных
8.1. key / value
8.1.1. put
8.1.2. get
8.1.3. get_multy
8.1.4. delete
8.1.5. increment / decrement
8.1.6. append / prepend
8.2. extended record
8.2.1. lists
8.2.1.1. lpush, rpush
8.2.1.2. lpop, rpop
8.2.1.3. len, range, ..
8.2.2. sets
8.2.2.1. add, rem
8.2.2.2. find, ...
8.3. document
8.4. кортежи
8.4.1. произвольный набор полей
8.4.2. могут быть индексы