SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
Распространенные ошибки
применения баз данных
Аверин Сергей, Badoo
— это:
• Социальная сеть для знакомств с новыми людьми
• В Top-200 Alexa c 2007 года
• 180+ миллионов зарегистрированных пользователей
• 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, Solr, Lucene/ElasticSearch
Поиск
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[[:>:]]'
http://www.slideshare.net/billkarwin/practical-full-text-search-with-mysql
Поиск
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 часов, так и не дождавшись
http://www.percona.com/files//presentations/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, лучше и не скажешь
http://www.youtube.com/watch?v=zAbFRiyT3LU
7. Используйте хорошо
изученные инструменты
Используйте хорошо
изученные инструменты
• Неизвестность → опасность
• Выше скорость разработки
• Не поддавайтесь просто так на моду NoSQL
Используйте хорошо
изученные инструменты
“Психологическая” популярность NoSQL:

• marketing hype
• мало знаний в области SQL: ACID, CAP, 3 НФ, транзакции
• пытается сделать вид, что БД-специалист не нужен
Используйте хорошо
изученные инструменты
“Психологическая” популярность NoSQL:
Идеальная БД для программиста

• хранит объекты классов приложения (сериализация)
• работает быстро (чтобы можно было похвастаться друзьям)
• обо всем остальном заботится сама
Используйте хорошо
изученные инструменты
“Психологическая” популярность NoSQL:
Выбор БД

• техн. менеджмент спускает вопрос на тормозах, хотя это его
задача

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

Выводов нет, думайте своей головой!
Вопросы?

We’re hiring!

Аверин Сергей
twitter.com/ryba_xek
s@averin.ru
averin.ru/slides/

Weitere ähnliche Inhalte

Was ist angesagt?

Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Ontico
 
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...Ontico
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Ontico
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Anton Baranov
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Ontico
 
Мониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаМониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаNikolay Sivko
 
Cергей Aверин, Badoo
Cергей Aверин, BadooCергей Aверин, Badoo
Cергей Aверин, BadooOntico
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaRoman Zykov
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Ontico
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...IT-Portfolio
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Ontico
 

Was ist angesagt? (18)

Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
Мониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаМониторинг качества работы вашего проекта
Мониторинг качества работы вашего проекта
 
Sivko
SivkoSivko
Sivko
 
Cергей Aверин, Badoo
Cергей Aверин, BadooCергей Aверин, Badoo
Cергей Aверин, Badoo
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 

Andere mochten auch

pre launch project in Bhiwadi 9717762246
pre launch project in Bhiwadi 9717762246pre launch project in Bhiwadi 9717762246
pre launch project in Bhiwadi 9717762246Adore Global Pvt. Ltd
 
Borobudur
BorobudurBorobudur
BorobudurEma Aja
 
Social Media in Practice
Social Media in PracticeSocial Media in Practice
Social Media in Practicemarinabooh
 
Kudavi 1.26.2016
Kudavi 1.26.2016Kudavi 1.26.2016
Kudavi 1.26.2016Tom Currier
 
Juveline Crime in Bulgaria
Juveline Crime in BulgariaJuveline Crime in Bulgaria
Juveline Crime in BulgariaTanya Madjarova
 
Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)
Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)
Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)Oscar Habeenzu
 
Throw out best practices, double email conversion (15 minute version)
Throw out best practices, double email conversion (15 minute version)Throw out best practices, double email conversion (15 minute version)
Throw out best practices, double email conversion (15 minute version)A. Litsa
 
Pro bono 101 for Organizations
Pro bono 101 for OrganizationsPro bono 101 for Organizations
Pro bono 101 for OrganizationsCatchafire
 
Dallas 2012 Trailer Analysis
Dallas 2012 Trailer AnalysisDallas 2012 Trailer Analysis
Dallas 2012 Trailer AnalysisSammi Wilde
 
Libguide template
Libguide templateLibguide template
Libguide templategranimal
 
Ливоблисс Надежная защита Вашей печени
Ливоблисс  Надежная защита Вашей печениЛивоблисс  Надежная защита Вашей печени
Ливоблисс Надежная защита Вашей печениЕлена Шальнова
 
Why is internet’s Democracy Rebirth so Sexy?
Why is internet’s Democracy Rebirth so Sexy?Why is internet’s Democracy Rebirth so Sexy?
Why is internet’s Democracy Rebirth so Sexy?Tomislav Korman
 
Projekt E- građani: Središnji državni portal
Projekt E- građani: Središnji državni portalProjekt E- građani: Središnji državni portal
Projekt E- građani: Središnji državni portalTomislav Korman
 
Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...
Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...
Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...Kouluterveyskysely
 
гугулакс – классика аюрведической медицины для очищения клеток
гугулакс – классика аюрведической медицины для очищения клетокгугулакс – классика аюрведической медицины для очищения клеток
гугулакс – классика аюрведической медицины для очищения клетокЕлена Шальнова
 

Andere mochten auch (20)

pre launch project in Bhiwadi 9717762246
pre launch project in Bhiwadi 9717762246pre launch project in Bhiwadi 9717762246
pre launch project in Bhiwadi 9717762246
 
Borobudur
BorobudurBorobudur
Borobudur
 
Social Media in Practice
Social Media in PracticeSocial Media in Practice
Social Media in Practice
 
1 15
1 151 15
1 15
 
Kudavi 1.26.2016
Kudavi 1.26.2016Kudavi 1.26.2016
Kudavi 1.26.2016
 
Juveline Crime in Bulgaria
Juveline Crime in BulgariaJuveline Crime in Bulgaria
Juveline Crime in Bulgaria
 
Презентация
ПрезентацияПрезентация
Презентация
 
Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)
Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)
Zimbabwe Teenage Behaviour Survey Report 2009 (Summarized)
 
Throw out best practices, double email conversion (15 minute version)
Throw out best practices, double email conversion (15 minute version)Throw out best practices, double email conversion (15 minute version)
Throw out best practices, double email conversion (15 minute version)
 
Pro bono 101 for Organizations
Pro bono 101 for OrganizationsPro bono 101 for Organizations
Pro bono 101 for Organizations
 
Dallas 2012 Trailer Analysis
Dallas 2012 Trailer AnalysisDallas 2012 Trailer Analysis
Dallas 2012 Trailer Analysis
 
Libguide template
Libguide templateLibguide template
Libguide template
 
Ливоблисс Надежная защита Вашей печени
Ливоблисс  Надежная защита Вашей печениЛивоблисс  Надежная защита Вашей печени
Ливоблисс Надежная защита Вашей печени
 
Why is internet’s Democracy Rebirth so Sexy?
Why is internet’s Democracy Rebirth so Sexy?Why is internet’s Democracy Rebirth so Sexy?
Why is internet’s Democracy Rebirth so Sexy?
 
Solar is the solution!
Solar is the solution!Solar is the solution!
Solar is the solution!
 
Projekt E- građani: Središnji državni portal
Projekt E- građani: Središnji državni portalProjekt E- građani: Središnji državni portal
Projekt E- građani: Središnji državni portal
 
Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...
Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...
Alanne: Yhteisöllisyyteen kannustava vanhempainmalli - nuorten päihteettömyyt...
 
Амла сладкая и с специями
Амла сладкая и с специямиАмла сладкая и с специями
Амла сладкая и с специями
 
Being business minded
Being business mindedBeing business minded
Being business minded
 
гугулакс – классика аюрведической медицины для очищения клеток
гугулакс – классика аюрведической медицины для очищения клетокгугулакс – классика аюрведической медицины для очищения клеток
гугулакс – классика аюрведической медицины для очищения клеток
 

Ähnlich wie Распространенные ошибки применения баз данных

Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхSergey Xek
 
Выступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceВыступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceEYevseyeva
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Tanya Denisyuk
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)Roman Dvornov
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Ontico
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, PerconaOntico
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Ontico
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...Alexey Zinoviev
 
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...HappyDev
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest
 

Ähnlich wie Распространенные ошибки применения баз данных (20)

Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Выступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceВыступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance Conference
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
 
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 

Mehr von Sergey Xek

Формирование технической команды на старте
Формирование технической команды на старте Формирование технической команды на старте
Формирование технической команды на старте Sergey Xek
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
Стартап: формирование технической команды
Стартап: формирование технической командыСтартап: формирование технической команды
Стартап: формирование технической командыSergey Xek
 
Ездим на батарейках
Ездим на батарейкахЕздим на батарейках
Ездим на батарейкахSergey Xek
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьSergey Xek
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL Sergey Xek
 
Mysql+handlersocket=nosql
Mysql+handlersocket=nosqlMysql+handlersocket=nosql
Mysql+handlersocket=nosqlSergey Xek
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
 
Pconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяныPconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяныSergey Xek
 
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Sergey Xek
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
 

Mehr von Sergey Xek (11)

Формирование технической команды на старте
Формирование технической команды на старте Формирование технической команды на старте
Формирование технической команды на старте
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Стартап: формирование технической команды
Стартап: формирование технической командыСтартап: формирование технической команды
Стартап: формирование технической команды
 
Ездим на батарейках
Ездим на батарейкахЕздим на батарейках
Ездим на батарейках
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL
 
Mysql+handlersocket=nosql
Mysql+handlersocket=nosqlMysql+handlersocket=nosql
Mysql+handlersocket=nosql
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 
Pconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяныPconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяны
 
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
 

Kürzlich hochgeladen (9)

СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 

Распространенные ошибки применения баз данных

  • 2. — это: • Социальная сеть для знакомств с новыми людьми • В Top-200 Alexa c 2007 года • 180+ миллионов зарегистрированных пользователей • 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, Solr, Lucene/ElasticSearch
  • 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[[:>:]]' http://www.slideshare.net/billkarwin/practical-full-text-search-with-mysql
  • 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 часов, так и не дождавшись http://www.percona.com/files//presentations/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, лучше и не скажешь http://www.youtube.com/watch?v=zAbFRiyT3LU
  • 45. Используйте хорошо изученные инструменты • Неизвестность → опасность • Выше скорость разработки • Не поддавайтесь просто так на моду NoSQL
  • 46. Используйте хорошо изученные инструменты “Психологическая” популярность NoSQL: • marketing hype • мало знаний в области SQL: ACID, CAP, 3 НФ, транзакции • пытается сделать вид, что БД-специалист не нужен
  • 47. Используйте хорошо изученные инструменты “Психологическая” популярность NoSQL: Идеальная БД для программиста • хранит объекты классов приложения (сериализация) • работает быстро (чтобы можно было похвастаться друзьям) • обо всем остальном заботится сама
  • 48. Используйте хорошо изученные инструменты “Психологическая” популярность NoSQL: Выбор БД • техн. менеджмент спускает вопрос на тормозах, хотя это его задача • БД выбирает тот самый программист • Выбираете NoSQL — понимайте, почему вы это делаете К. О. предупреждает: так бывает далеко не всегда
  • 49. Используйте хорошо изученные инструменты NoSQL: − запись в один поток − memory-mapped files, IO scheduling не для БД − один индекс на запрос − не очень гибкий шардинг − производительность тюнится только на уровне ОС − нет атомарности на уровне одного запроса − иногда скудный мониторинг, статистика
  • 50. Используйте хорошо изученные инструменты NoSQL: − зачастую приходится писать кучу довольно скучного кода на уровне приложения + чаще всего быстрее SQL-баз + проще развертывать, особенно шардинг + нет схемы, ALTER TABLE забыто, как страшный сон
  • 51. Используйте хорошо изученные инструменты SQL: − медленнее − сложнее (−) много каверзных настроек − в редких случаях непредсказуемо работает (−) позволяет писать медленные/плохие запросы
  • 52. Используйте хорошо изученные инструменты SQL: + более популярно, язык у всех на 80% совпадает + хорошо изучено, стабильно + оптимизировано хранение данных + куча рычагов оптимизации + constraint'ы, триггеры, хранимые процедуры + ACID + B-Tree, R-Tree, GIN, GIST, hash-индексы
  • 53. Используйте хорошо изученные инструменты SQL: (+) Join'ы, которые зло, но иногда выручают + очень навороченный оптимизатор запросов + параллельное исполнение (под)запросов + многоуровневое кеширование + статистика, мониторинг + можно писать сложные запросы, не перенося логику в код приложения
  • 54. EVERYBODY LIES Выводов нет, думайте своей головой!