SlideShare a Scribd company logo
Распространенные  ошибки  
 применения  баз  данных
       Аверин  Сергей
Badoo  —  это:
•   Социальная  сеть  для  знакомств  с  новыми  людьми
•   В  Top-­‐200  Alexa  c  2007  года
•   140+  миллионов  зарегистрированных  пользователей
•   150+  тысяч  новых  пользователей  в  день
•   3+  миллиона  фотографий  загружаются  ежедневно
•   2+  тысячи  серверов
•   30+  тысяч  запросов  в  секунду  к  бекендам
•   MySQL,  PHP,  C(++),  Linux,  nginx,  PHP-­‐fpm,  memcache
7  советов  стартапам
1.  Масштабирование
Масштабирование
•   Стартап  тратит  кучу  сил  и  времени  на  «готовность»  к  highload,  большому  
    масштабированию
•   Тратим  большие  ресурсы  без  быстрой  отдачи  
•   Сложные  вопросы  не  рассматриваются  по  причине  того,  что  мало  опыта  
    или  проблемы  еще  непонятны
Масштабирование
•   Стартап  тратит  кучу  сил  и  времени  на  «готовность»  к  highload,  большому  
    масштабированию
•   Тратим  большие  ресурсы  без  быстрой  отдачи  
•   Сложные  вопросы  не  рассматриваются  по  причине  того,  что  мало  опыта  
    или  проблемы  еще  непонятны

    На  самом  деле,  это  предполагет,  что  ваши  бизнес-­‐метрики  
    тоже  вырастут  в  десятки  и  сотни  раз,  а  архитектура  
    сохранится
Масштабирование
Что  имеем:
Масштабирование
Что  рассчитываем  получить:
Масштабирование
Способ  масштабирования:
Масштабирование
•   «Серебряной  пули»  масштабирования  нет
•   Проблемы  будут  уникальными  для  вашего  проекта
•   Понадобится  творческое  решение
•   И  многое  придется  переделывать
Масштабирование
•   Для  стартапа  главными  ценностями  являются  быстрый  старт  и  дешевизна  
    изменений
•   Начните  с  простых,  быстрых  и  несложных  решений  «по  рецепту»
•   Клиенты  →  опыт  →  понимание,  какая  архитектура  нужна



                  К.  О.  предупреждает:  истиной  для  100%  случаев  не  является
2.  Отказоустойчивость
Отказоустойчивость
•   При  проектировании  архитектуры  проблемы  нижних  уровней  во  внимание  
    не  принимаются
•   Железо,  человеческий  фактор,  внешние  риски  и  т.  д.
•   Взаимосвязанность  сбоев
•   В  рамках  одного  сервера  на  практике  не  бывает
Отказоустойчивость
Как  это  сделано  в  Баду,  на  примере  пользовательских  данных:
Выделенные  БД-­‐серверы
•   проверенного  вендора
•   резервирование  по  питанию
•   RAID  1+0
Отказоустойчивость
Как  это  сделано  в  Баду,  на  примере  пользовательских  данных:
Софт
•   фаервол
•   Percona  Server
•   разные  права  доступа
•   chroot-­‐окружение
Отказоустойчивость
Как  это  сделано  в  Баду,  на  примере  пользовательских  данных:
Архитектура
•   запись  в  транзакции,  на  один  сервер
•   синхронизация  с  другим  ДЦ  через  общую  очередь
3.  БД  c  запасом  на  вырост
БД  c  запасом  на  вырост
•   Выбирается  БД  без  большого  запаса  фич,  которые  могут  понадобиться  в  
    будущем
•   Ни  один  стартап  не  становился  огромным  в  один  день
•   Узкоспециализированные  БД  →  теряется  гибкость
•   NoSQL  →  нет  возможности  делать  сложные  вещи  худо-­‐бедно,  но  ценой  
    малых  затрат  на  кодирование
4.  БД  —  хранилище  событий
БД  —  хранилище  событий
Использование  БД  как  хранилища  событий  чаще  всего  оправдано  только  
ленью
Распространенные  use  case’ы:
•   события,  порожденные  транзакциями
•   события,  которые  должны  надежно  доставляться
•   события,  которые  можно  потерять
БД  —  хранилище  событий
Cпециализированный  движок  —  RabbitMQ,  Kestrel,  Scribe,  и  даже  Redis:
•   скорость
•   простота
•   фичи
•   масштабируемость
БД  —  хранилище  событий
В  Баду  для  некоторых  задач  используем  Scribe:
•   своя  обертка  с  агрегацией  данных,  вставкой  в  БД
•   меньше  сетевых  соединений
•   передаем  данные  между  ДЦ
•   гибкие  настройки
•   при  сбоях  сохраняет  данные  локально
•   очень  быстрый
Старые  песни  о  главном
5.  Поиск
Поиск
•   Либо  быстро,  просто,  плохо
•   Либо  используем  бесплатный  движок  —  
    Sphinx,  Lucene/Solr/ElasˆcSearch
Поиск
99%  случаев  —  быстро,  просто,  плохо:


    SELECT  `id`,  `body`  FROM  `entries`  WHERE  `body`  LIKE  '%one%'
Поиск
99%  случаев  —  быстро,  просто,  плохо:


    SELECT  `id`,  `body`  FROM  `entries`  WHERE  `body`  LIKE  '%one%'


    SELECT  `id`,  `body`  FROM  `entries`  WHERE  `body`  RLIKE  '[[:<:]]one[[:>:]]'


    h”p://www.slideshare.net/billkarwin/pracˆcal-­‐full-­‐text-­‐search-­‐with-­‐my-­‐sql
Поиск
99%  случаев  —  быстро,  просто,  плохо:


   Some people, when confronted with a problem, think
   “I know, I’ll use regular expressions.”


   Now they have two problems.
                                                        — Jamie Zawinsky
Поиск
99%  случаев  —  быстро,  просто,  плохо:
 • потом  используем  MySQL  FULLTEXT  Index
 • для  простых  решений  прекрасно  работает  обратный  индекс
 • Но  с  полноценным  поиском  по  тексту  проблема  в  том,  что  просто  
   плохо  ищет  =)
 • а  также:  мало  фич,  медленно,  хуже  масштабируется
Поиск
99%  случаев  —  быстро,  просто,  плохо:
 • а  для  каких-­‐то  задач  просто  неприменимо

Тест  Percona:  индекс  по  всем  статьям  Википедии.
2,5  млн  записей,  15  Гб  текста  на  одном  сервере
 • Sphinx:  20  минут
 • MySQL:  админ  уснул  через  6  часов,  так  и  не  дождавшись

h”p://www.percona.com/files//presentaˆons/opensql2008_sphinx.pdf
Поиск
Используйте  специализированный  софт:
 •   проще  в  разработке
 •   быстрее
 •   больше  возможностей
 •   масштабируется
 •   а  главное,  лучше  ищет
6.  Сильная  consistency
Сильная  consistency
• Не  всегда  нужна  в  вебе
• Часто  сложно  достигаема
• Особенно,  когда  данные  в  один  сервер  не  помещаются  и  надо  что-­‐то  
  придумывать
Сильная  consistency
• Eventual  consistency  рулит
• Можно  писать  в  базу  выборочно  или  писать  агрегированные  данные,  не  
  нагружая  БД
• Денормализация  может  дать  большой  прирост  производительности
• Важно  знать  меру,  и  что  мы  теряем,  а  что  получаем
Сильная  consistency
Чтобы  не  получилось  так:

   SQL  DB  =  ‘A consistent transactional datastore with schema guarantees
   that uses relational algebra to access normalized tables.’
Сильная  consistency
Чтобы  не  получилось  так:
+  добавляем  slave  —  репликация
Сильная  consistency
Чтобы  не  получилось  так:
+  добавляем  slave  —  репликация
+  мемкеш
Сильная  consistency
Чтобы  не  получилось  так:
+  добавляем  slave  —  репликация
+  мемкеш
+  добавляем  еще  slave’ов  —  репликация  репликации
Сильная  consistency
Чтобы  не  получилось  так:
+  добавляем  slave  —  репликация
+  мемкеш
+  добавляем  еще  slave’ов  —  репликация  репликации
+  шардинг
Сильная  consistency
Чтобы  не  получилось  так:
+  добавляем  slave  —  репликация
+  мемкеш
+  добавляем  еще  slave’ов  —  репликация  репликации
+  шардинг
+  один  столбец  на  таблицу,  храним  в  нем  сериализованный  объект
Сильная  consistency
Чтобы  не  получилось  так:

   SQL  DB  =  ‘A consistent transactional datastore with schema guarantees
   that uses relational algebra to access normalized tables.’
Сильная  consistency
Чтобы  не  получилось  так:

   SQL  DB  =  ‘A consistent transactional datastore with schema guarantees
   that uses relational algebra to access normalized tables.’
                     Много  данных                  кривые  руки
Сильная  consistency
Чтобы  не  получилось  так:

   SQL  DB  =  ‘A consistent transactional datastore with schema guarantees
   that uses relational algebra to access normalized tables.’
                     Много  данных                  кривые  руки
   ‘A consistent transactional datastore with schema guarantees that uses
   relational algebra to access normalized tables.’
   =  datastore  with  access  to  data,  лучше  и  не  скажешь

h”p://www.youtube.com/watch?v=zAbFRiyT3LU
7.  Используйте  хорошо  
изученные  инструменты
Используйте  хорошо  изученные  
          инструменты
• Неизвестность  →  опасность
• Выше  скорость  разработки
• Не  поддавайтесь  просто  так  на  моду  NoSQL
Используйте  хорошо  изученные  
        инструменты
“Психологическая”  популярность  NoSQL:
 • markeˆng  hype
 • мало  знаний  в  области  SQL:  ACID,  CAP,  3  НФ,  транзакции
 • пытается  сделать  вид,  что  БД-­‐специалист  не  нужен
Используйте  хорошо  изученные  
        инструменты
“Психологическая”  популярность  NoSQL:
Идеальная  БД  для  программиста
 • хранит  объекты  классов  приложения  (сериализация)
 • работает  быстро  (чтобы  можно  было  похвастаться  друзьям)
 • обо  всем  остальном  заботится  сама
Используйте  хорошо  изученные  
        инструменты
“Психологическая”  популярность  NoSQL:
Выбор  БД
 • техн.  менеджмент  спускает  вопрос  на  тормозах,  хотя  это  его  задача
 • БД  выбирает  тот  самый  программист
 • Выбираете  NoSQL  —  понимайте,  почему  вы  это  делаете



                       К.  О.  предупреждает:  так  бывает  далеко  не  всегда
Используйте  хорошо  изученные  
        инструменты
NoSQL:
     −  запись  в  один  поток
     −  memory-­‐mapped  files,  IO  scheduling  не  для  БД
     −  один  индекс  на  запрос
     −  не  очень  гибкий  шардинг
     −  производительность  тюнится  только  на  уровне  ОС
     −  нет  атомарности  на  уровне  одного  запроса
Используйте  хорошо  изученные  
        инструменты
NoSQL:
         −  иногда  скудный  мониторинг,  статистика
         −  зачастую,  приходится  писать  кучу  довольно  скучного  кода  на  
         уровне  приложения
         +  чаще  всего  быстрее  SQL-­‐баз
         +  проще  развертывать,  особенно  шардинг
         +  нет  схемы,  ALTER  TABLE  забыто,  как  страшный  сон
Используйте  хорошо  изученные  
        инструменты
SQL:
       −  медленнее
       −  сложнее
       (−)  много  каверзных  настроек
       −  в  редких  случаях  непредсказуемо  работает
       (−)  позволяет  писать  медленные/плохие  запросы
       +  более  популярно,  язык  у  всех  на  80%  совпадает  
Используйте  хорошо  изученные  
        инструменты
SQL:
       +  хорошо  изучено,  стабильно
       +  оптимизировано  хранение  данных
       +  куча  рычагов  оптимизации
       +  constraint'ы,  триггеры,  хранимые  процедуры
       +  ACID
       +  B-­‐Tree,  R-­‐Tree,  GIN,  GIST,  hash-­‐индексы
Используйте  хорошо  изученные  
        инструменты
SQL:
       (+)  join'ы,  которые  зло,  но  иногда  выручают
       +  очень  навороченный  оптимизатор  запросов
       +  параллельное  исполнение  (под)запросов
       +  многоуровневое  кеширование
       +  статистика,  мониторинг
       +  сложные  запросы  позволяют  меньше  писать  код  приложения
EVERYBODY  LIES




Выводов  нет,  думайте  своей  головой!
Спасибо!

Вопросы?

           twitter.com/ryba_xek
                     s@averin.ru
                 averin.ru/slides/

More Related Content

What's hot

2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
HappyDev
 
Хорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеХорошо поддерживаемое приложение
Хорошо поддерживаемое приложение
Nikolay Sivko
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
Ontico
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
Nikolay Sivko
 
Code'n'Coffee SPb., вводный доклад по оптимизации производительности
Code'n'Coffee SPb., вводный доклад по оптимизации производительностиCode'n'Coffee SPb., вводный доклад по оптимизации производительности
Code'n'Coffee SPb., вводный доклад по оптимизации производительности
Alex Chistyakov
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Mail.ru Group
 
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
Roman Zykov
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ontico
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Ontico
 
Мониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаМониторинг качества работы вашего проекта
Мониторинг качества работы вашего проекта
Nikolay Sivko
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
Nikolay Sivko
 
Вы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийВы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийFuenteovejuna
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
Alexey Zinoviev
 
CodeFest 2013. Бабаев А. — Сервер для самых маленьких
CodeFest 2013. Бабаев А. — Сервер для самых маленькихCodeFest 2013. Бабаев А. — Сервер для самых маленьких
CodeFest 2013. Бабаев А. — Сервер для самых маленькихCodeFest
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
Ontico
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
Aleksey Solntsev
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 

What's hot (19)

2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
 
Хорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеХорошо поддерживаемое приложение
Хорошо поддерживаемое приложение
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Code'n'Coffee SPb., вводный доклад по оптимизации производительности
Code'n'Coffee SPb., вводный доклад по оптимизации производительностиCode'n'Coffee SPb., вводный доклад по оптимизации производительности
Code'n'Coffee SPb., вводный доклад по оптимизации производительности
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
 
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
 
Мониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаМониторинг качества работы вашего проекта
Мониторинг качества работы вашего проекта
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
 
Вы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийВы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья Космодемьянский
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
 
CodeFest 2013. Бабаев А. — Сервер для самых маленьких
CodeFest 2013. Бабаев А. — Сервер для самых маленькихCodeFest 2013. Бабаев А. — Сервер для самых маленьких
CodeFest 2013. Бабаев А. — Сервер для самых маленьких
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 

Viewers also liked

Виталий Шуб, ТТК
Виталий Шуб, ТТКВиталий Шуб, ТТК
Виталий Шуб, ТТКconnectica-lab
 
How to use many core CPUs
How to use many core CPUsHow to use many core CPUs
How to use many core CPUsOntico
 
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Badoo Development
 
Максим Лапшин (Erlyvideo)
Максим Лапшин (Erlyvideo)Максим Лапшин (Erlyvideo)
Максим Лапшин (Erlyvideo)Ontico
 
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Ontico
 
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсоновсервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсоновOntico
 
Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)
Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)
Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)Ontico
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуYandex
 

Viewers also liked (9)

Виталий Шуб, ТТК
Виталий Шуб, ТТКВиталий Шуб, ТТК
Виталий Шуб, ТТК
 
How to use many core CPUs
How to use many core CPUsHow to use many core CPUs
How to use many core CPUs
 
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
 
Максим Лапшин (Erlyvideo)
Максим Лапшин (Erlyvideo)Максим Лапшин (Erlyvideo)
Максим Лапшин (Erlyvideo)
 
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
 
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсоновсервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
 
Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)
Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)
Приёмы разработки высоконагруженных приложений на Twisted (Андрей Смирнов)
 
17 cti bugay
17 cti bugay17 cti bugay
17 cti bugay
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизу
 

Similar to Распространенные ошибки применения баз данных (Сергей Аверин)

Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
Sergey Xek
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
Roman Dvornov
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
Vladd Ev
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
Ontico
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
Tanya Denisyuk
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
Илья Середа
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ontico
 

Similar to Распространенные ошибки применения баз данных (Сергей Аверин) (20)

Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Как разраба
Как разрабаКак разраба
Как разраба
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Распространенные ошибки применения баз данных (Сергей Аверин)

  • 1. Распространенные  ошибки   применения  баз  данных Аверин  Сергей
  • 2. Badoo  —  это: • Социальная  сеть  для  знакомств  с  новыми  людьми • В  Top-­‐200  Alexa  c  2007  года • 140+  миллионов  зарегистрированных  пользователей • 150+  тысяч  новых  пользователей  в  день • 3+  миллиона  фотографий  загружаются  ежедневно • 2+  тысячи  серверов • 30+  тысяч  запросов  в  секунду  к  бекендам • MySQL,  PHP,  C(++),  Linux,  nginx,  PHP-­‐fpm,  memcache
  • 5. Масштабирование • Стартап  тратит  кучу  сил  и  времени  на  «готовность»  к  highload,  большому   масштабированию • Тратим  большие  ресурсы  без  быстрой  отдачи   • Сложные  вопросы  не  рассматриваются  по  причине  того,  что  мало  опыта   или  проблемы  еще  непонятны
  • 6. Масштабирование • Стартап  тратит  кучу  сил  и  времени  на  «готовность»  к  highload,  большому   масштабированию • Тратим  большие  ресурсы  без  быстрой  отдачи   • Сложные  вопросы  не  рассматриваются  по  причине  того,  что  мало  опыта   или  проблемы  еще  непонятны На  самом  деле,  это  предполагет,  что  ваши  бизнес-­‐метрики   тоже  вырастут  в  десятки  и  сотни  раз,  а  архитектура   сохранится
  • 10. Масштабирование • «Серебряной  пули»  масштабирования  нет • Проблемы  будут  уникальными  для  вашего  проекта • Понадобится  творческое  решение • И  многое  придется  переделывать
  • 11. Масштабирование • Для  стартапа  главными  ценностями  являются  быстрый  старт  и  дешевизна   изменений • Начните  с  простых,  быстрых  и  несложных  решений  «по  рецепту» • Клиенты  →  опыт  →  понимание,  какая  архитектура  нужна К.  О.  предупреждает:  истиной  для  100%  случаев  не  является
  • 13. Отказоустойчивость • При  проектировании  архитектуры  проблемы  нижних  уровней  во  внимание   не  принимаются • Железо,  человеческий  фактор,  внешние  риски  и  т.  д. • Взаимосвязанность  сбоев • В  рамках  одного  сервера  на  практике  не  бывает
  • 14. Отказоустойчивость Как  это  сделано  в  Баду,  на  примере  пользовательских  данных: Выделенные  БД-­‐серверы • проверенного  вендора • резервирование  по  питанию • RAID  1+0
  • 15. Отказоустойчивость Как  это  сделано  в  Баду,  на  примере  пользовательских  данных: Софт • фаервол • Percona  Server • разные  права  доступа • chroot-­‐окружение
  • 16. Отказоустойчивость Как  это  сделано  в  Баду,  на  примере  пользовательских  данных: Архитектура • запись  в  транзакции,  на  один  сервер • синхронизация  с  другим  ДЦ  через  общую  очередь
  • 17. 3.  БД  c  запасом  на  вырост
  • 18. БД  c  запасом  на  вырост • Выбирается  БД  без  большого  запаса  фич,  которые  могут  понадобиться  в   будущем • Ни  один  стартап  не  становился  огромным  в  один  день • Узкоспециализированные  БД  →  теряется  гибкость • NoSQL  →  нет  возможности  делать  сложные  вещи  худо-­‐бедно,  но  ценой   малых  затрат  на  кодирование
  • 19. 4.  БД  —  хранилище  событий
  • 20. БД  —  хранилище  событий Использование  БД  как  хранилища  событий  чаще  всего  оправдано  только   ленью Распространенные  use  case’ы: • события,  порожденные  транзакциями • события,  которые  должны  надежно  доставляться • события,  которые  можно  потерять
  • 21. БД  —  хранилище  событий Cпециализированный  движок  —  RabbitMQ,  Kestrel,  Scribe,  и  даже  Redis: • скорость • простота • фичи • масштабируемость
  • 22. БД  —  хранилище  событий В  Баду  для  некоторых  задач  используем  Scribe: • своя  обертка  с  агрегацией  данных,  вставкой  в  БД • меньше  сетевых  соединений • передаем  данные  между  ДЦ • гибкие  настройки • при  сбоях  сохраняет  данные  локально • очень  быстрый
  • 23. Старые  песни  о  главном
  • 25. Поиск • Либо  быстро,  просто,  плохо • Либо  используем  бесплатный  движок  —   Sphinx,  Lucene/Solr/ElasˆcSearch
  • 26. Поиск 99%  случаев  —  быстро,  просто,  плохо: SELECT  `id`,  `body`  FROM  `entries`  WHERE  `body`  LIKE  '%one%'
  • 27. Поиск 99%  случаев  —  быстро,  просто,  плохо: SELECT  `id`,  `body`  FROM  `entries`  WHERE  `body`  LIKE  '%one%' SELECT  `id`,  `body`  FROM  `entries`  WHERE  `body`  RLIKE  '[[:<:]]one[[:>:]]' h”p://www.slideshare.net/billkarwin/pracˆcal-­‐full-­‐text-­‐search-­‐with-­‐my-­‐sql
  • 28. Поиск 99%  случаев  —  быстро,  просто,  плохо: Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems. — Jamie Zawinsky
  • 29. Поиск 99%  случаев  —  быстро,  просто,  плохо: • потом  используем  MySQL  FULLTEXT  Index • для  простых  решений  прекрасно  работает  обратный  индекс • Но  с  полноценным  поиском  по  тексту  проблема  в  том,  что  просто   плохо  ищет  =) • а  также:  мало  фич,  медленно,  хуже  масштабируется
  • 30. Поиск 99%  случаев  —  быстро,  просто,  плохо: • а  для  каких-­‐то  задач  просто  неприменимо Тест  Percona:  индекс  по  всем  статьям  Википедии. 2,5  млн  записей,  15  Гб  текста  на  одном  сервере • Sphinx:  20  минут • MySQL:  админ  уснул  через  6  часов,  так  и  не  дождавшись h”p://www.percona.com/files//presentaˆons/opensql2008_sphinx.pdf
  • 31. Поиск Используйте  специализированный  софт: • проще  в  разработке • быстрее • больше  возможностей • масштабируется • а  главное,  лучше  ищет
  • 33. Сильная  consistency • Не  всегда  нужна  в  вебе • Часто  сложно  достигаема • Особенно,  когда  данные  в  один  сервер  не  помещаются  и  надо  что-­‐то   придумывать
  • 34. Сильная  consistency • Eventual  consistency  рулит • Можно  писать  в  базу  выборочно  или  писать  агрегированные  данные,  не   нагружая  БД • Денормализация  может  дать  большой  прирост  производительности • Важно  знать  меру,  и  что  мы  теряем,  а  что  получаем
  • 35. Сильная  consistency Чтобы  не  получилось  так: SQL  DB  =  ‘A consistent transactional datastore with schema guarantees that uses relational algebra to access normalized tables.’
  • 36. Сильная  consistency Чтобы  не  получилось  так: +  добавляем  slave  —  репликация
  • 37. Сильная  consistency Чтобы  не  получилось  так: +  добавляем  slave  —  репликация +  мемкеш
  • 38. Сильная  consistency Чтобы  не  получилось  так: +  добавляем  slave  —  репликация +  мемкеш +  добавляем  еще  slave’ов  —  репликация  репликации
  • 39. Сильная  consistency Чтобы  не  получилось  так: +  добавляем  slave  —  репликация +  мемкеш +  добавляем  еще  slave’ов  —  репликация  репликации +  шардинг
  • 40. Сильная  consistency Чтобы  не  получилось  так: +  добавляем  slave  —  репликация +  мемкеш +  добавляем  еще  slave’ов  —  репликация  репликации +  шардинг +  один  столбец  на  таблицу,  храним  в  нем  сериализованный  объект
  • 41. Сильная  consistency Чтобы  не  получилось  так: SQL  DB  =  ‘A consistent transactional datastore with schema guarantees that uses relational algebra to access normalized tables.’
  • 42. Сильная  consistency Чтобы  не  получилось  так: SQL  DB  =  ‘A consistent transactional datastore with schema guarantees that uses relational algebra to access normalized tables.’ Много  данных                  кривые  руки
  • 43. Сильная  consistency Чтобы  не  получилось  так: SQL  DB  =  ‘A consistent transactional datastore with schema guarantees that uses relational algebra to access normalized tables.’ Много  данных                  кривые  руки ‘A consistent transactional datastore with schema guarantees that uses relational algebra to access normalized tables.’ =  datastore  with  access  to  data,  лучше  и  не  скажешь h”p://www.youtube.com/watch?v=zAbFRiyT3LU
  • 44. 7.  Используйте  хорошо   изученные  инструменты
  • 45. Используйте  хорошо  изученные   инструменты • Неизвестность  →  опасность • Выше  скорость  разработки • Не  поддавайтесь  просто  так  на  моду  NoSQL
  • 46. Используйте  хорошо  изученные   инструменты “Психологическая”  популярность  NoSQL: • markeˆng  hype • мало  знаний  в  области  SQL:  ACID,  CAP,  3  НФ,  транзакции • пытается  сделать  вид,  что  БД-­‐специалист  не  нужен
  • 47. Используйте  хорошо  изученные   инструменты “Психологическая”  популярность  NoSQL: Идеальная  БД  для  программиста • хранит  объекты  классов  приложения  (сериализация) • работает  быстро  (чтобы  можно  было  похвастаться  друзьям) • обо  всем  остальном  заботится  сама
  • 48. Используйте  хорошо  изученные   инструменты “Психологическая”  популярность  NoSQL: Выбор  БД • техн.  менеджмент  спускает  вопрос  на  тормозах,  хотя  это  его  задача • БД  выбирает  тот  самый  программист • Выбираете  NoSQL  —  понимайте,  почему  вы  это  делаете К.  О.  предупреждает:  так  бывает  далеко  не  всегда
  • 49. Используйте  хорошо  изученные   инструменты NoSQL: −  запись  в  один  поток −  memory-­‐mapped  files,  IO  scheduling  не  для  БД −  один  индекс  на  запрос −  не  очень  гибкий  шардинг −  производительность  тюнится  только  на  уровне  ОС −  нет  атомарности  на  уровне  одного  запроса
  • 50. Используйте  хорошо  изученные   инструменты NoSQL: −  иногда  скудный  мониторинг,  статистика −  зачастую,  приходится  писать  кучу  довольно  скучного  кода  на   уровне  приложения +  чаще  всего  быстрее  SQL-­‐баз +  проще  развертывать,  особенно  шардинг +  нет  схемы,  ALTER  TABLE  забыто,  как  страшный  сон
  • 51. Используйте  хорошо  изученные   инструменты SQL: −  медленнее −  сложнее (−)  много  каверзных  настроек −  в  редких  случаях  непредсказуемо  работает (−)  позволяет  писать  медленные/плохие  запросы +  более  популярно,  язык  у  всех  на  80%  совпадает  
  • 52. Используйте  хорошо  изученные   инструменты SQL: +  хорошо  изучено,  стабильно +  оптимизировано  хранение  данных +  куча  рычагов  оптимизации +  constraint'ы,  триггеры,  хранимые  процедуры +  ACID +  B-­‐Tree,  R-­‐Tree,  GIN,  GIST,  hash-­‐индексы
  • 53. Используйте  хорошо  изученные   инструменты SQL: (+)  join'ы,  которые  зло,  но  иногда  выручают +  очень  навороченный  оптимизатор  запросов +  параллельное  исполнение  (под)запросов +  многоуровневое  кеширование +  статистика,  мониторинг +  сложные  запросы  позволяют  меньше  писать  код  приложения
  • 54. EVERYBODY  LIES Выводов  нет,  думайте  своей  головой!
  • 55. Спасибо! Вопросы? twitter.com/ryba_xek s@averin.ru averin.ru/slides/