Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NoSQL - взрыв возможностей

alexsun
April 18, 2012

NoSQL - взрыв возможностей

NoSQL - что это? Новомодное словечко или современных подход, который позволяет обслуживать сотни миллионов запросов в день без использования супер-компьютеров? Почему все крупнейшие интернет-проекты используют базы данных, которые не поддерживают операций по связыванию данных, не гарантируют ACID при проведении транзакций и не имеют фиксированных схем хранения данных? В данном докладе будут проанализированы области применения NoSQL, раскрыты основные принципы, которые используются для хранения записей в неряционных БД, а также приведены характеристики по которым можно классифицировать сотни существующих на данный момент NoSQL базы данных.

alexsun

April 18, 2012
Tweet

Other Decks in Technology

Transcript

  1. О  себе   ì  10  лет  в  индустрии   информационных

     технологий   ì  SoluGon  Architect  в  компании   Infopulse  Украина   ì  Agile  волонтёр   ì  Организатор  и  координатор   краудсорсинг-­‐переводов  книг  на   русский  язык   ì  Тренер    в  центре  XP  InjecGon   Алексей   Солнцев   @a_solntsev  
  2. Этимология  термина   ì  NoSQL   ì  No  значит  Not

     Only   ì  SQL  значит  RDBMS   ì  NoSQL  значит  NotOnlyRDMBS   Эрик  Эванс   @a_solntsev  
  3.  Троллинг  off   ì  Это  не  движение   ì  Это

     не  противостояние  РСУБД   ì  Это  не  серебряная  пуля   ì  Пока  что  без  стандартов  
  4. Информация  в  фактах   Обрабатывает   24  петабайта   информации

     в   день   Хранит  свыше   2  миллиардов   фотографий   Получает  200   миллионов   твиттов  в  день   За  20  минут   добавляют  10   миллионов   комментариев   @a_solntsev  
  5. Проблемы  цифровой  вселенной   ì  Объёмы  данных   ì  Связанность

     данных   ì  Слабая  структурируемость  данных   ì  Обработка  данных  при  помощи   независимых  сервисов   @a_solntsev  
  6. Ограничения  реляционных  СУБД   ì  Фиксированная  структура   ì  Разряженные

     таблицы   ì  JOIN  плохо  масштабируется   ì  Блокировки  при  записи   ì  Работа  с  медленными  дисками   @a_solntsev  
  7. Масштабирование   0   5   10   15  

    20   25   0   1   2   3   4   5   Цена  решения     Производительность     Масштабирование   @a_solntsev  
  8. Репликация   Клиент   Slave   (Ведомый)   Slave  

    (Ведомый)   Нагрузка  на  Master     сервер  при  записи   Master   (Ведущий)   @a_solntsev  
  9. Репликация   Клиент   Peer   (Равноправный  узел)   Peer

      (Равноправный  узел)   Peer   (Равноправный  узел)   Проблемы   синхронизации   обновлений   @a_solntsev  
  10. Шардинг   Клиент   Peer   (K-­‐S)   Slave  

    (T-­‐Z)   Как  добавить   новый  узел?   Peer   (A-­‐J)   Роутер     запросов   @a_solntsev  
  11. Разнообразие  типов   ì  Key-­‐Value   ì  Column  Families  

    ì  Объектно-­‐ориентированные   ì  Документ-­‐ориентированные   ì  Граф-­‐ориентированные  
  12. Key  -­‐Value   ì  Ключ  –  DHT   ì  Value

     –  String,  Set   ì  Примитивные  операции   ì  Нет  составных  запросов     Кэширование   Хранение  сессий   Хранение  логов   In-­‐memory   Сохранение  на   диск     @a_solntsev  
  13. Amazon  Dynamo  и  Basho  Riak   ì  Решение  для  систем,

      требующих  высокую   степень  доступности   ì  Децентрализованная,   распределённая  база   данных   @a_solntsev  
  14. Инкрементальная  масштабируемость   A L T W (A, L] (W,

    A] (T, W] (L, T] Узлы  объединены  в  кольцо   Все  знают  о  всех   @a_solntsev  
  15. Инкрементальная  масштабируемость   A L T W F (A, F]

    (F, L] Пересчёт   k/n  ключей   @a_solntsev  
  16. Согласованность  «в  конечном  итоге»   N  –  количество  копий  

    R  –  кворум  на  чтение   W  –  кворум  на  запись   W  >  N/2   R+W  >  N   Если   Тогда   Иначе   Дано   При  чтении  получите   последнюю  версию   Получите  согласованность     в  «конечном  итоге»  
  17. Согласованность  и  скорость  ответа   Надёжно,  но  медленно   R

     =  2,  W  =  3,  N  =  4   Быстро,  но  не  совсем  надёжно   R  =  1,  W  =  1,  N  =  3  
  18. Google  BigTable  и  Apache  HBase   ì  Хранение  огромных  

    объёмов  данных   ì  Обработка  огромных   объёмов  данных   ì  Анализ  огромных  объёмов   данных   @a_solntsev   @a_solntsev  
  19. Cassandra   Cassandra   Facebook   Dynamo   BigTable  

    Модель  данных   Метод  хранения  данных   MapReduce   P2P  архитектура   Управление  кластером   DTH   @a_solntsev  
  20. Схемы  и  запросы   Схема   Запросы   MySQL  

    Фиксированная   Динамические   CouchDB   Динамическая   Фиксированные   MongoDB   Динамическая   Динамические  
  21. Формат  документов     {    "_id"  :  ObjectId("497ce96f395f2f052a494fd4"),  

     "title"  :  "Awesome  Blog  Post",    "body"  :  "Text  text  text  text,  text  text  text  ...",    "created":  "Tue,  3  Jan  2011  11:13:56  GMT",    "tags"  :  [  "css",  "javascipt",  "jquery"  ],    "comments"  :  [            {                "name"  :  "Kelly  Glover"                "created"  :  "Tue,  22  Jan  2011  2:22:32  GMT",                "text"  :  "This  is  a  very  good  ..."            },      ],    "shortUrl"  :  "awesome-­‐blog-­‐post"   }  
  22. API  для  запросов     //  найти  записи  по  условию

      db.stat.find({clicks:  {$gt:  10}  });         //  найти  все  записи  и  отсортировать   db.users.find({}).sort({name:  1});         //найти  все  записи,  пропустить  первые  20  записей   db.users.find().skip(20).limit(10);      
  23. Граф-­‐ориентированные   ì  Нахождение  кратчайшего  пути   ì  Построение  социальных

      графов   ì  Работа  с  информационными   потоками   @a_solntsev  
  24. Take  away   ì   Знайте  свой  продукт   ì  Следите

     за  комьюнити   ì  Следите  за  спонсорами   проектов   ì  Будьте  аккуратней  с   новинками  и  клонами   @a_solntsev