Всеволод Дёмкин [email_address] Новые нереляционные системы хранения данных
Зачем всё это нужно? ->  оно в облаке ->  обещание масштабируемости ->  много интересных идей ->  как ни странно, это работает :)
Ландшафт средств хранения до Web Текстовые файлы Иерархические БД навигационные Реляционные БД Сетевые БД Объектные БД BerkleyDB
(с) artlebedev.ru NOSQL постоянные хеш-таблицы колонко- ориентированные документо- ориентированные БД для графов
Наш случай ->  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 memcached Tokyo Redis Berkley Couch Mongo Voldemort Cassandra HBase
За счет чего масштабируются? ->  HT — non-blocking IO (iolib)  ->  DODB Join'ы уже сделаны
MapReduce ->  СODB — архитектура
Take-away самое главное (как по мне):
Плюсы + некоторые действительно масштабируются + а другие быстро работают :) + есть специфические решения  для некоторых задач + есть хорошие архитектурные решения
Минусы - незрелые - хайп - не до конца понятно - библиотеки, инструменты еще недоразвиты

Новые нереляционные системы хранения данных

  • 1.
    Всеволод Дёмкин [email_address]Новые нереляционные системы хранения данных
  • 2.
    Зачем всё этонужно? -> оно в облаке -> обещание масштабируемости -> много интересных идей -> как ни странно, это работает :)
  • 3.
    Ландшафт средств хранениядо Web Текстовые файлы Иерархические БД навигационные Реляционные БД Сетевые БД Объектные БД BerkleyDB
  • 4.
    (с) artlebedev.ru NOSQLпостоянные хеш-таблицы колонко- ориентированные документо- ориентированные БД для графов
  • 5.
    Наш случай -> 4 млн. пользователей -> 20 тыс. API / час -> 1 API запрос ~ … сек -> 40 сек чтобы дать ответ пользователю БД КЕШ: -> волатильность -> списки рекомендации DB
  • 6.
    Постоянные ХТ -> BerkleyDB -> memcached -> memcachedb -> Tokyo Cabinet + Tyrant -> Redis -> Voldemort -> Amazon SimpleDB
  • 7.
    Redis -> списки, множества, сортированные множества, … -> волатильность (EXPIRE, TTL) -> очень быстрый (110k SET/sec, 81k GET/sec) но -> жрет много памяти -> не дружит с остальными -> очень быстро развивается
  • 8.
    Документо-ориентированные БД -> не очень быстро -> простое взаимод. -> только MapReduce -> стабильная! -> так себе админ. -> хорошая док. -> очень быстро -> взаимод. — сложнее -> MapReduce + Dynamic -> есть баги -> удобная админ. -> так себе док.
  • 9.
    API для взаимодействия-> raw sockets -> JSON HTTP REST -> Thrift (binary protocols)
  • 10.
    Действительно распределенныеCAP -теорема Брюэра Consistency Availability Partition tolerance
  • 11.
    Колонко-ориентированные БД -> Google BigTable -> Facebook Cassandra -> HBase
  • 12.
    Cassandra -> BigTable-база -> Dynamo-архитектура -> супер-колонки -> уровни Consistency -> P2P-распределенный: Gossip но -> Thrift
  • 13.
    Сложность — фичастостьplain-text memcached Tokyo Redis Berkley Couch Mongo Voldemort Cassandra HBase
  • 14.
    За счет чегомасштабируются? -> HT — non-blocking IO (iolib) -> DODB Join'ы уже сделаны
  • 15.
    MapReduce -> СODB — архитектура
  • 16.
  • 17.
    Плюсы + некоторыедействительно масштабируются + а другие быстро работают :) + есть специфические решения для некоторых задач + есть хорошие архитектурные решения
  • 18.
    Минусы - незрелые- хайп - не до конца понятно - библиотеки, инструменты еще недоразвиты