SlideShare a Scribd company logo
Боевой опыт
использованияNoSqlхранилищ




            Новиков Андрей.
            Failsafe Payments
История одной статистики




        N графиков * N данным


Получение данных ~ 30 секунд
Выбор методов




 • Эволюция
 • Революция
Эволюция

       • Создание индексов
       • Профилирование и
         оптимизация запросов
       • Подготовка части данных
       • Рефакторинг кода


Получение данных ~ 20 секунд
Революция


     • CouchBase
     • Redis
     • Handler Socket
Redis

• Данные в оперативной
  памяти
• Хранение данных на диске
• Типы данных:
  строки, числа, списки, хэши
• Выборка множества ключей
• Атомарность операций
• Динамическое потребение
  памяти
Redis


  • Master / Slave
    репликация
    приведшая к потере
    хранилища
Расширение архитектуры
Couchbase
   • Master/Master
     репликация
   • Удобный веб интерфейс
   • Красивые графики
     нагрузки
   • Ограничение доступа
Couchbase
   • Объединение узлов
     через VPN приводит к
     потере данных
   • Для работы в режиме
     кластера каждый
     клиент должен видеть
     все узлы
Handler Socket Plugin
        • Все плюсы MySQL
          (репликации, работа с
          данными через
          ActiveRecord)
        • Отсуствие парсинга SQL
          запросов
        • Скорость работы
Handler Socket Plugin
        • Невозможность сборки
          под некоторые версии
          MySQL
        • Несовместимость
          пакетов в
          репозиториях Ubuntu
        • Проблемы при
          компиляции
Выводы
• Redis – отлично подходит для проектов с
  простой сетевой архитектурой.
• Couchbase – Хорошо подходит для создания
  кластера данных, но ограничен в плане
  работы с ключами.
• Handler Socket – отлично подходит для
  существующего MySQLрешения
Спасибо за внимание
 Вопросы приветствуются

More Related Content

PPTX
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
PPTX
от авгиевых конюшен к звездам
PDF
Виртуальный дата-центр КРОК
PDF
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
PPTX
NoBigData - потоковая система аналитики clientside производительности, Сергей...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
от авгиевых конюшен к звездам
Виртуальный дата-центр КРОК
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
NoBigData - потоковая система аналитики clientside производительности, Сергей...

What's hot (20)

PPTX
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
PDF
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PDF
6. InterBase 2017 (Дмитрий Кузьменко)
PDF
Сергей Аверин "Распространенные ошибки применения баз данных"
PDF
Cергей Коржнев, 2ГИС
PDF
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
PDF
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
PDF
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
PDF
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
PDF
Максим Богук. Postgres-XC
PDF
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
PDF
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
PPTX
Errors Tracker
PDF
Вадим Мадисон "Опыт разработки через микросервисы"
PDF
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
PPTX
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
PPTX
Построение Read Model-ей с использованием потоков событий
PPTX
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
6. InterBase 2017 (Дмитрий Кузьменко)
Сергей Аверин "Распространенные ошибки применения баз данных"
Cергей Коржнев, 2ГИС
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Максим Богук. Postgres-XC
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
Errors Tracker
Вадим Мадисон "Опыт разработки через микросервисы"
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Построение Read Model-ей с использованием потоков событий
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Ad

Viewers also liked (15)

PDF
За гранью NoSQL: NewSQL на Cassandra
PDF
Getting Started with Couchbase Ruby
PDF
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
PPT
Web весна 2012 лекция 6
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PDF
Класс!ная Cassandra
PPTX
NoSQL - World IT Planet, Saint Petersburg 2015
PPT
Как устроен NoSQL, Андрей Аксенов (Sphinx)
PPTX
Oracle NoSQL Database
PPTX
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
PDF
NoSQL и Zend Framework (Ростислав Михайлив)
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PPTX
NoSQL - взрыв возможностей
PDF
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
PDF
NoNoSQL = Not Only NoSQL, HappyDev'13
За гранью NoSQL: NewSQL на Cassandra
Getting Started with Couchbase Ruby
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
Web весна 2012 лекция 6
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Класс!ная Cassandra
NoSQL - World IT Planet, Saint Petersburg 2015
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Oracle NoSQL Database
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
NoSQL и Zend Framework (Ростислав Михайлив)
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
NoSQL - взрыв возможностей
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
NoNoSQL = Not Only NoSQL, HappyDev'13
Ad

Similar to Опыт использования NoSQL-хранилищ (Андрей Новиков) (20)

PPTX
Hosting for forbes.ru_
PDF
High load2007 scaling-web-applications-rus
PDF
Обзор Redis storage / Symfony Camp UA 2011
PPTX
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
PDF
Александр Соловьёв, Griddynamics.com
PDF
Дизайн небольшого ЦОД часть 2
PPTX
Mysql replication DevConf 2012
PPT
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
PPTX
Презентация технологии веб-кластеров
PPTX
IOP202 Redis in Azure
PDF
Анатомия веб-сервиса, Андрей Смирнов
PDF
Анатомия веб-сервиса (РИТ-2014)
PPTX
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
PPTX
Практический опыт использования некоторых современных решений репликации MySQL
PPTX
Daemons In Web on #devrus
PDF
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
PPTX
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
PPTX
Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 R...
PPTX
Cassandra db
PPTX
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
Hosting for forbes.ru_
High load2007 scaling-web-applications-rus
Обзор Redis storage / Symfony Camp UA 2011
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Александр Соловьёв, Griddynamics.com
Дизайн небольшого ЦОД часть 2
Mysql replication DevConf 2012
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
Презентация технологии веб-кластеров
IOP202 Redis in Azure
Анатомия веб-сервиса, Андрей Смирнов
Анатомия веб-сервиса (РИТ-2014)
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
Практический опыт использования некоторых современных решений репликации MySQL
Daemons In Web on #devrus
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 R...
Cassandra db
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...

More from Olga Lavrentieva (20)

PPTX
15 10-22 altoros-fact_sheet_st_v4
PPTX
Сергей Ковалёв (Altoros): Practical Steps to Improve Apache Hive Performance
PPTX
Андрей Козлов (Altoros): Оптимизация производительности Cassandra
PDF
Владимир Иванов (Oracle): Java: прошлое и будущее
PPTX
Brug - Web push notification
PDF
Александр Ломов: "Reactjs + Haskell + Cloud Foundry = Love"
PPTX
Максим Жилинский: "Контейнеры: под капотом"
PPTX
Александр Протасеня: "PayPal. Различные способы интеграции"
PPTX
Сергей Черничков: "Интеграция платежных систем в .Net приложения"
PPTX
Антон Шемерей «Single responsibility principle в руби или почему instanceclas...
PDF
Егор Воробьёв: «Ruby internals»
PDF
Андрей Колешко «Что не так с Rails»
PDF
Дмитрий Савицкий «Ruby Anti Magic Shield»
PPTX
Сергей Алексеев «Парное программирование. Удаленно»
PPTX
«Почему Spark отнюдь не так хорош»
PPTX
«Cassandra data modeling – моделирование данных для NoSQL СУБД Cassandra»
PPTX
«Практика построения высокодоступного решения на базе Cloud Foundry Paas»
PPTX
«Дизайн продвинутых нереляционных схем для Big Data»
PPTX
«Обзор возможностей Open cv»
PPTX
«Нужно больше шин! Eventbus based framework vertx.io»
15 10-22 altoros-fact_sheet_st_v4
Сергей Ковалёв (Altoros): Practical Steps to Improve Apache Hive Performance
Андрей Козлов (Altoros): Оптимизация производительности Cassandra
Владимир Иванов (Oracle): Java: прошлое и будущее
Brug - Web push notification
Александр Ломов: "Reactjs + Haskell + Cloud Foundry = Love"
Максим Жилинский: "Контейнеры: под капотом"
Александр Протасеня: "PayPal. Различные способы интеграции"
Сергей Черничков: "Интеграция платежных систем в .Net приложения"
Антон Шемерей «Single responsibility principle в руби или почему instanceclas...
Егор Воробьёв: «Ruby internals»
Андрей Колешко «Что не так с Rails»
Дмитрий Савицкий «Ruby Anti Magic Shield»
Сергей Алексеев «Парное программирование. Удаленно»
«Почему Spark отнюдь не так хорош»
«Cassandra data modeling – моделирование данных для NoSQL СУБД Cassandra»
«Практика построения высокодоступного решения на базе Cloud Foundry Paas»
«Дизайн продвинутых нереляционных схем для Big Data»
«Обзор возможностей Open cv»
«Нужно больше шин! Eventbus based framework vertx.io»

Опыт использования NoSQL-хранилищ (Андрей Новиков)

  • 1. Боевой опыт использованияNoSqlхранилищ Новиков Андрей. Failsafe Payments
  • 2. История одной статистики N графиков * N данным Получение данных ~ 30 секунд
  • 3. Выбор методов • Эволюция • Революция
  • 4. Эволюция • Создание индексов • Профилирование и оптимизация запросов • Подготовка части данных • Рефакторинг кода Получение данных ~ 20 секунд
  • 5. Революция • CouchBase • Redis • Handler Socket
  • 6. Redis • Данные в оперативной памяти • Хранение данных на диске • Типы данных: строки, числа, списки, хэши • Выборка множества ключей • Атомарность операций • Динамическое потребение памяти
  • 7. Redis • Master / Slave репликация приведшая к потере хранилища
  • 9. Couchbase • Master/Master репликация • Удобный веб интерфейс • Красивые графики нагрузки • Ограничение доступа
  • 10. Couchbase • Объединение узлов через VPN приводит к потере данных • Для работы в режиме кластера каждый клиент должен видеть все узлы
  • 11. Handler Socket Plugin • Все плюсы MySQL (репликации, работа с данными через ActiveRecord) • Отсуствие парсинга SQL запросов • Скорость работы
  • 12. Handler Socket Plugin • Невозможность сборки под некоторые версии MySQL • Несовместимость пакетов в репозиториях Ubuntu • Проблемы при компиляции
  • 13. Выводы • Redis – отлично подходит для проектов с простой сетевой архитектурой. • Couchbase – Хорошо подходит для создания кластера данных, но ограничен в плане работы с ключами. • Handler Socket – отлично подходит для существующего MySQLрешения
  • 14. Спасибо за внимание Вопросы приветствуются

Editor's Notes

  • #2: Я хочу расказать вам историю внедрение и смены нескольких NoSql хранилищ а так же об опыте реально их использвоания на продакшен серверах.
  • #3: Перед нами встала задача порадовать наших клиентов красивыми отчетами о продажах.У каждого клиента есть магазины в системе, по магазина есть платежи. И все они в разной валюте. На тестовой базе все здорово – Графики красивые, отрисовка быстрая.В боевых услових печалька, чем крупней клиент тем печальнее выглядел его вход в систему.
  • #4: Проблему надо было решать, и решать быстро поэтому первый метод был естественно – эволюционный, мы попытались улутшить скорость отрисовки средствами mysqlи Rails.
  • #5: Скорость обработки выросла в 2 раза, но данный метод все равно был ограничен, ибо если клиент будет работать еще эффективней и заведет большее колчество магазинов ты мы получаем арифметическую прогресссию. Поэтому мы решили координальнос менить подход.
  • #6: Обращение к чужому опыту показало, что большая часть времени при выборке из mysql базы данных по первичному ключу уходит на сам парсинг SQL запроса. Поэтмоу для подобных здач иделаьно подходят NoSQLрешения.
  • #7: В результате анализа в качестве инструмента был выбран Redis.В жизненных условиях редас был разогнан до 20 000 оперция чтения записи в секунду. Никаких особоых нагрузок на камень и память не оказывал.Подкупил удобный руби клиент, реализованные методы работы с разными типами данных, очень удобно хранить массивы.Массовая выборка/удаление ключей по маске.
  • #8: Что же произошло, 2 редис сервера работали в режиме мастер слэв. Мастер сервер должен был переехать на более производительную
  • #9: Был развернут 2ой дата центр, полностью изолированный от первого. MySqlрепликация мастер мастер по выделенному VPN каналу. Репликация редиса нам не подходила и мы были вынуждены искать новое решение.