Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Badoo Development
Доклад не про БД в чистом виде а про архитектуру веб-приложений, использующих БД.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
Подробно:
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, которые потом в реальной жизни никогда не понадобятся.
• Или проектируется архитектура, которая якобы дает отказоустойчивость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологическая» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки событий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и небольших команд, техническим руководителям.
Кирилл Алешин, Ламбда Архитектура на практикеTanya Denisyuk
Кирилл расскажет о таких темах, как практичность современных распределенных файловых систем для складирования структурированных данных, сложности синхронизации данных на разных Ламбда уровнях, а также несколько Big Data новинок для закрытия брешей в традиционном описании Ламбда архитектуры. Кирилл расскажет как о пользе этой модели, так и об извлеченных уроках ее использования.
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Badoo Development
Доклад не про БД в чистом виде а про архитектуру веб-приложений, использующих БД.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
Подробно:
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, которые потом в реальной жизни никогда не понадобятся.
• Или проектируется архитектура, которая якобы дает отказоустойчивость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологическая» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки событий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и небольших команд, техническим руководителям.
Кирилл Алешин, Ламбда Архитектура на практикеTanya Denisyuk
Кирилл расскажет о таких темах, как практичность современных распределенных файловых систем для складирования структурированных данных, сложности синхронизации данных на разных Ламбда уровнях, а также несколько Big Data новинок для закрытия брешей в традиционном описании Ламбда архитектуры. Кирилл расскажет как о пользе этой модели, так и об извлеченных уроках ее использования.
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Tanya Denisyuk
Расскажу, какие подходы и инструменты практически применяются в Wargaming при обработке данных в гигантской, без преувеличений, системе. Частичный список затрагиваемых вопросов
NoSQL versus/with RDBMS или каждый инструмент на своем месте
Синхронные и асинхронные подходы к построению систем: почему асинхронные системы не могут быть быстрее синхронных, но асинхронность, тем не менее, очень полезна
API и интерфейсы — важная составляющая хорошо спроектированной системы
Performance vs Scalability
Мониторинг и профилирование
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
О компании:
Badoo — не только самая большая, но и одна из самых инновационных и высокотехнологичных компаний в сфере социальных сетей, входящий в топ-100 крупнейших мировых проектов. Она насчитывает 139 миллионов пользователей, и еще более чем 100,000 новых пользователей присоединяются к ней каждый день.
Badoo — это глобальная социальная онлайн-система, которая дает возможность знакомиться с новыми людьми, живущими пососедству и по всему миру. Мы предлагаем многочисленные технические возможности социальных сетей, делая акцент на играх и сервисах, позволяющих расширить социальный круг. Мы продолжаем расширять географию своего пребывания и использовать самые последние технологии в сетевом общении, позволяющие нашим пользователям знакомиться друг с другом и изменять реальность вокруг себя.
Видеоприглашение на конференцию:
http://www.youtube.com/watch?v=2mRGcz0UODY
Алексей Рагозин "Java и linux борьба за микросекунды"IT Event
Java используется для широкого спектра приложений, некоторые из них могут иметь жёсткие требования по времени отклика.
Но если речь идёт про сотни микросекунд, годится ли Java, в принципе, для таких задач?
Доклад осветит практические аспекты разработки решений с малым временем отклика на платформе Java + Linux
Конференция по программным решениям HPE 2016Andrey Karpov
Конференция по программным решениям HPE 14 апреля 2016
Автоматизация процесса перевода транспортного сервиса между географически распределенными площадками
Система управления ТСЭР
Подсистема автоматизации процедуры перевода обработки
ЭС между центральными серверами ЦТУ ТСЭР (ПАПО)
Автоматизация процессов управления DevOps Новые реалии – новая скорость
Электронная коммерция: от Hadoop к Spark ScalaRoman Zykov
Как обрабатывать большой объем данных быстро с наименьшими затратами? Мы смогли этого добиться в компании
RetailRocket. Обработка данных – это наш бизнес! У нас много данных: более 100 Тбайт, в сутки нам поступает более 100 млн
событий для обработки. До недавнего времени у нас все работало на кластере на базе Hadoop относительно устаревшего
дистрибутива Cloudera CDH 4.5, программный код был написан на Pig, Hive, Python и Java. Это порождало ряд проблем с
архитектурой, производительностью. Тестирование превращалось в настоящую головную боль. В конце лета RetailRocket
перешел на Yarn на базе CDH 5.1.2. Это открыло путь к более совершенным технологиям семейства Spark. Сейчас мы
находимся в фазе полного перехода на Spark на функциональном языке Scala. Это позволило нам избавиться от зоопарка
технологий, упростив архитектуру решений и автоматизировав тестирование. Первые результаты не заставили себя ждать –
получен прирост производительности на том же железе в три-пять раз. А это значит, что мы будем меньше инвестировать в
расширение парка серверов кластера. В докладе будет рассказано о проблемах, с которыми мы столкнулись, и о том как мы
их решили. Будут примеры исходного кода для оптимизации производительности и повышения удобства работы, который мы
закоммитили в наш публичный GitHub
EXPERIENCIA SIGNIFICATIVA C.INF. JUAN XXIII 2010CORLATINA
Este documento presenta un plan de atención integral a la primera infancia que incluye 5 áreas principales: 1) protección y reconocimiento del niño, 2) vida y supervivencia a través de salud y nutrición, 3) desarrollo y educación inicial mediante procesos pedagógicos, 4) participación en espacios sociales y culturales, y 5) gestión institucional que involucra a la familia, sociedad y estado. El plan describe varias actividades educativas, culturales y recreativas diseñadas para promover el cuidado, desar
The document provides an economic summary and outlook for Q4 2010. It includes:
1) Key economic indicators such as interest rates, stock prices, and consumer confidence showing mixed signs of recovery.
2) A review of important financial and industry news in Q4 2010, including the Fed announcing $600B in debt purchases and Republicans gaining control of the House.
3) An analysis of both positive and negative factors for the economic outlook, with small business and big company spending poised to increase but unemployment and the housing market remaining weak.
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Tanya Denisyuk
Расскажу, какие подходы и инструменты практически применяются в Wargaming при обработке данных в гигантской, без преувеличений, системе. Частичный список затрагиваемых вопросов
NoSQL versus/with RDBMS или каждый инструмент на своем месте
Синхронные и асинхронные подходы к построению систем: почему асинхронные системы не могут быть быстрее синхронных, но асинхронность, тем не менее, очень полезна
API и интерфейсы — важная составляющая хорошо спроектированной системы
Performance vs Scalability
Мониторинг и профилирование
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
О компании:
Badoo — не только самая большая, но и одна из самых инновационных и высокотехнологичных компаний в сфере социальных сетей, входящий в топ-100 крупнейших мировых проектов. Она насчитывает 139 миллионов пользователей, и еще более чем 100,000 новых пользователей присоединяются к ней каждый день.
Badoo — это глобальная социальная онлайн-система, которая дает возможность знакомиться с новыми людьми, живущими пососедству и по всему миру. Мы предлагаем многочисленные технические возможности социальных сетей, делая акцент на играх и сервисах, позволяющих расширить социальный круг. Мы продолжаем расширять географию своего пребывания и использовать самые последние технологии в сетевом общении, позволяющие нашим пользователям знакомиться друг с другом и изменять реальность вокруг себя.
Видеоприглашение на конференцию:
http://www.youtube.com/watch?v=2mRGcz0UODY
Алексей Рагозин "Java и linux борьба за микросекунды"IT Event
Java используется для широкого спектра приложений, некоторые из них могут иметь жёсткие требования по времени отклика.
Но если речь идёт про сотни микросекунд, годится ли Java, в принципе, для таких задач?
Доклад осветит практические аспекты разработки решений с малым временем отклика на платформе Java + Linux
Конференция по программным решениям HPE 2016Andrey Karpov
Конференция по программным решениям HPE 14 апреля 2016
Автоматизация процесса перевода транспортного сервиса между географически распределенными площадками
Система управления ТСЭР
Подсистема автоматизации процедуры перевода обработки
ЭС между центральными серверами ЦТУ ТСЭР (ПАПО)
Автоматизация процессов управления DevOps Новые реалии – новая скорость
Электронная коммерция: от Hadoop к Spark ScalaRoman Zykov
Как обрабатывать большой объем данных быстро с наименьшими затратами? Мы смогли этого добиться в компании
RetailRocket. Обработка данных – это наш бизнес! У нас много данных: более 100 Тбайт, в сутки нам поступает более 100 млн
событий для обработки. До недавнего времени у нас все работало на кластере на базе Hadoop относительно устаревшего
дистрибутива Cloudera CDH 4.5, программный код был написан на Pig, Hive, Python и Java. Это порождало ряд проблем с
архитектурой, производительностью. Тестирование превращалось в настоящую головную боль. В конце лета RetailRocket
перешел на Yarn на базе CDH 5.1.2. Это открыло путь к более совершенным технологиям семейства Spark. Сейчас мы
находимся в фазе полного перехода на Spark на функциональном языке Scala. Это позволило нам избавиться от зоопарка
технологий, упростив архитектуру решений и автоматизировав тестирование. Первые результаты не заставили себя ждать –
получен прирост производительности на том же железе в три-пять раз. А это значит, что мы будем меньше инвестировать в
расширение парка серверов кластера. В докладе будет рассказано о проблемах, с которыми мы столкнулись, и о том как мы
их решили. Будут примеры исходного кода для оптимизации производительности и повышения удобства работы, который мы
закоммитили в наш публичный GitHub
EXPERIENCIA SIGNIFICATIVA C.INF. JUAN XXIII 2010CORLATINA
Este documento presenta un plan de atención integral a la primera infancia que incluye 5 áreas principales: 1) protección y reconocimiento del niño, 2) vida y supervivencia a través de salud y nutrición, 3) desarrollo y educación inicial mediante procesos pedagógicos, 4) participación en espacios sociales y culturales, y 5) gestión institucional que involucra a la familia, sociedad y estado. El plan describe varias actividades educativas, culturales y recreativas diseñadas para promover el cuidado, desar
The document provides an economic summary and outlook for Q4 2010. It includes:
1) Key economic indicators such as interest rates, stock prices, and consumer confidence showing mixed signs of recovery.
2) A review of important financial and industry news in Q4 2010, including the Fed announcing $600B in debt purchases and Republicans gaining control of the House.
3) An analysis of both positive and negative factors for the economic outlook, with small business and big company spending poised to increase but unemployment and the housing market remaining weak.
Dan and Greg are locked in an office after hearing footsteps outside the door. Greg had been rummaging through filing cabinets and Dan pulled him behind a desk when he heard the noises. They realize the door is now locked from the outside. Dan tries to open it but cannot. Greg also tries without success. Dan blames Greg for their situation, saying without him Dan would not be in this predicament, but Greg retorts that without him Dan would be a bigger loser.
This document proposes an interactive application to create awareness about salsa dancing in Malaysia. It aims to educate Malaysians about salsa's importance by explaining its history, music, costumes, and basic steps. A survey found most people want to learn salsa in an interactive way. The application will use zone triggering technology to make learning engaging. It will have 5 sections - a splash page, history, music, costumes, and steps. Users can get costume information by touching displays and watch step videos. Diagrams show the application's flow, floor plan, and concepts.
This document presents a proposal for a digital media design project about salsa dance. The proposal aims to create awareness of salsa dance in Malaysia through an interactive application that explains the basics of salsa dance through wall or floor projections. The application would motivate Malaysians to learn more about salsa since exposure to it is currently low in Malaysia. The document identifies using Zonetrigger software to make the application interactive by triggering responses through motion detection in specific areas or zones.
Ilmu kimia mempelajari struktur, sifat, dan perubahan materi, termasuk komponen-komponen yang membentuk materi seperti atom, molekul, dan ion. Materi dapat berupa campuran, senyawa, atau unsur, yang terdiri dari partikel-partikel kecil seperti atom atau molekul. Perubahan struktur partikel-partikel ini dapat mengubah sifat materi.
The document discusses various narrative structures and theories. It describes linear and non-linear narratives, such as dual narratives that show two perspectives, and flashbacks that take the audience back in time. Theories discussed include Tzvetan Todorov's theory of narrative structure involving equilibrium, disruption, recognition, repair, and reinstatement of equilibrium. Vladimir Propp analyzed Russian folk tales and identified 31 narrative functions and 7 character types. Claude Levi-Strauss viewed narrative as creating binary oppositions that further the story through conceptual conflicts like love/hate.
Modul ini membahas pengenalan ilmu kimia sebagai cabang ilmu pengetahuan alam yang mempelajari struktur, komposisi, sifat, dan perubahan materi beserta energi yang menyertai perubahan tersebut. Ilmu kimia bermanfaat untuk memenuhi kebutuhan hidup manusia melalui aplikasinya dalam berbagai bidang seperti kedokteran, industri, dan pertanian. Ilmu kimia juga berkaitan erat dengan ilmu-ilmu
Laura goes to see her specialist Alice to get help learning sign language. In a flashback, Laura recalls going to a club with friends where she meets a boy who offers to get her a drink. He leads her down an alley where he tries to assault her. Her friends find them and intervene. Back in the present, Laura explains this traumatic event is why she now wants to learn sign language from Alice.
Este documento presenta un plan de atención integral a la primera infancia que incluye 5 áreas principales: 1) protección y reconocimiento del niño, 2) vida y supervivencia a través de salud y nutrición, 3) desarrollo y educación inicial mediante procesos pedagógicos, 4) participación en espacios sociales y culturales, y 5) gestión institucional que involucra a la familia, sociedad y estado. El plan describe varias actividades educativas, culturales y recreativas diseñadas para promover el cuidado, desar
Silabus mata pelajaran kimia SMA kelas X ini membahas tentang kompetensi inti dan kompetensi dasar yang akan dicapai siswa, materi pokok pelajaran seperti peran kimia dalam kehidupan, hakikat ilmu kimia, struktur atom, tabel periodik, ikatan kimia, dan sifat fisik senyawa, kegiatan pembelajaran seperti mengamati, menanya, mengumpulkan data, mengasosiasikan, dan mengomunikasikan, penilaian
Youth groups through the ages presentationbeccacobb
The document summarizes different youth subcultures through the 1960s-1980s, including mods, punks, and goths. Mods in the 1960s were known for tailored suits, scooters, and soul/ska music like The Who. Punks emerged in the 1970s dressing in torn clothes with safety pins and mohawks, listening to aggressive rock bands like the Sex Pistols. Goths in the 1980s took influence from gothic literature with dark fashion and dark eyeliner, inspired by gothic rock bands like Bauhaus and Siouxsie and the Banshees.
Silabus mata pelajaran kimia kelas XII ini membahas tentang sifat koligatif larutan dan sel elektrokimia. Pembelajaran mata pelajaran ini mencakup kompetensi inti seperti menghayati ajaran agama, menunjukkan perilaku yang baik, memahami konsep dasar kimia, dan mampu mengolah data hasil percobaan. Materi pokok yang diajarkan antara lain sifat koligatif larutan seperti penurunan tekanan u
La presentación describe los pasos para instalar los componentes principales de una computadora como la CPU, RAM y disipador de calor en la motherboard, incluyendo asegurar la RAM y CPU en sus lugares designados en la motherboard, aplicar pasta térmica a la CPU y atornillar el disipador de calor para enfriarla. Finalmente, muestra la motherboard completa con todos sus componentes instalados correctamente.
Dokumen tersebut berisi tentang materi pelajaran ikatan kimia yang mencakup konfigurasi elektron, cara pencapaian kestabilan atom melalui pembentukan ikatan ion dan kovalen, serta contoh soal latihan untuk membandingkan kecenderungan atom mencapai konfigurasi gas mulia melalui penerimaan atau pelepasan elektron.
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Yandex
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Я.Субботник в Санкт-Петербурге
О докладе:
Данные на UGC-сервисах очень быстро меняются, и у каждого пользователя они свои. Выборка этих данных – дорогостоящая операция, поскольку может определяться множеством параметров и сложными условиями. Что и как мы можем кешировать в этой непростой ситуации?
Распространенные ошибки применения баз данныхSergey Xek
Распространенные ошибки применения баз данных. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются раз- работчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, ко- торые потом в реальной жизни никогда не понадобится.
• Или проектируется архитектура, которая якобы дает отказоустойчи- вость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологиче- ская» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки собы- тий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и неболь- ших команд, техническим руководителям.
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Демоны в большом проекте – проблемы и их решения (Redis, RabbitMQ, Skytools, Node.JS, HBase)", Александр Чистяков (ведущий разработчик Cezurity)
Аннотация
Когда команда разработчиков собирается написать новый сервис, у нее, как правило, отсутствует свободное время, но есть необходимый энтузиазм. Из-за нехватки времени многие архитектурные решения приходится принимать, руководствуясь общими соображениями, так как провести всесторонние тесты имеющихся на рынке средств в краткие сроки невозможно. Мы, специалисты компании Cezurity, начали свой проект не вчера, и уже накопили некоторый опыт использования технологий, появившихся сравнительно недавно - таких как Skytools, Node.JS, RabbitMQ и Redis. О том, какие возникли проблемы при внедрении этих средств, и какие их ограничения пришлось преодолевать и учитывать - мой доклад. Кроме того, я расскажу о новом направлении в нашей деятельности - внедрении HBase для хранения большого объема данных.
Биография
Докладчик - узкий специалист широкого профиля, относит себя к виду, называемому в современной англоязычной литературе термином "DevOps". Любит принимать участие в создании сложных систем и постоянно это делает. Никогда не работал в Яндексе, компенсировав это работой в Mail.Ru и некоторых других местах.
Распространенные ошибки применения баз данныхSergey Xek
Доклад не про БД в чистом виде а про архитектуру веб-приложений, использующих БД.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
Подробно:
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, которые потом в реальной жизни никогда не понадобятся.
• Или проектируется архитектура, которая якобы дает отказоустойчивость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологическая» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки событий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и небольших команд, техническим руководителям.
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются раз- работчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, ко- торые потом в реальной жизни никогда не понадобится.
• Или проектируется архитектура, которая якобы дает отказоустойчи- вость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологиче- ская» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки собы- тий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и неболь- ших команд, техническим руководителям.
2. Проблемы производительности
• Время отклика
– Страница долго грузится, даже для одного
активного пользователя
• Типично обрабатывается много данных
• Пропускная способность (req/sec)
– При большом числе активных
пользователей время отклика растет и
система не справляется
• Пути решения могут быть разные
2
3. В чем еще сложности?
• Число запросов часто растет вместе с
объемом данных
– O(N) алгоритмы требуют O(N^2) ресурсов
• Данные в памяти в 1000 раз быстрее чем
на диске.
• Блокировки на уровне приложения, базы
данных, операционной системы
3
5. Динамический контент
• Пропускная способность
– Решается увеличением числа Web серверов
– Для одной и той же задачи может
использоваться в 10 раз больше железа
– Оптимизация скорости важна для
эффективности, но не жизни проекта
• Время отклика
– Изменение алгоритма
– Оптимизация, например модули на C
– Параллельные алгоритмы (на разных уровнях)
5
6. Статический контент
• Достаточность памяти и пропускной
способности дисков
• nginx/lighttpd легко отдают 20.000+
маленьких объектов в секунду на сервер
• Типичная проблема – завязка на одну
большую файловую систему
– Разделить через proxy-rewrite
– Или не иметь проблему изначально
• Photobucket
– Отдавать напрямую лучше, чем через NFS
6
7. База данных
• Обычно наиболее сложный для
масштабирования компонент
• Особенно сложно, если приложение
создано без оглядки на масштабирование
• Очень важно кэширование (как впрочем и
на других уровнях)
7
8. Пути масштабирования БД
• Купить более мощный сервер
– Хороший подход, если результаты нужны
быстро, а никакой возможности изменить
приложение нет
– Часто не решает проблемы времени отклика
– Возможности роста ограничены
– Финансово неэффективно
• Особенно учитывая, что нужен второй такой же
сервер (для надежности)
8
9. Репликация
• Относительно простое решение
– Не так много изменений в приложении
• Достаточно большой предел для ряда
приложений
– YouTube еще год назад имела одну базу
данных
• Важно ограничить запись
• Обеспечить данные в памяти
• Репликация не параллельна в MySQL
9
10. Потабличное разбиение
• Выделяются компоненты и их таблицы
располагаются на разных серверах
– И часто реплицируются
– Например “сервер регистрационных данных”,
“форумы” итд
• Относительная легкость изменения
• Не всегда легко выделить малозависимые
компоненты
• Ограниченная масштабируемость
10
11. “Шардинг” – разбиение данных
• Данные распределены на много серверов
– Которые обычно реплицируются
• На одном сервере может быть больше, чем
один “шард”
– Легкость балансировки, меньше блокировки
• Требует правильного разбиения данных
• Может требоваться более одного
разбиения
11
12. Какой путь для вас?
• Оцените требования приложения к росту
• Объем базы данных
• Интенсивность записи
• Возможности кэширования
• Навыки персонала
• Временные рамки и бюжет разработки
12
13. Как разбивать данные
• Старые приложения
– Так, чтобы минимизировать модификации
• Часто схема полностью дублируется, включая
имена баз данных, и добавляется логика
определения нахождения объекта
• Новые приложения
– Для обеспечения лучшей производительности
и сопровождаемости
• Несколько баз данных на сервере с разными
именами
13
14. Критерий разбиения
• Хэш разбиение для объектов
– Четные на сервер 1, нечетные на сервер 2
– Просто, но очень негибко
• Таблица привязки для каждого элемента
– Требуется обращение к словарю
– Гибко, удобно балансировать данные
• Блочная структура
– 1024 блока, которые приписаны к серверам
– Гибко, но “блоки” можно переносить физически
14
15. Кластеризация разбиения
• Минимизация операций, требующих
доступа ко многим (всем) группам
• Зависит от приложения – типично
пользователь, сайт
– Или группа – регион, школа итд
• Может требоваться несколько разбиений и
дублирование данных
– “Пользователь” и “Фильм”
• Некоторые приложения допускают
произвольное разбиение
15
16. Проблемы с разбиением данных
• JOIN с системными/глобальными
таблицами
– “ручной join”
• Нередко это бывает даже быстрее
– “репликация” системных/глобальных таблиц
на все сервера
• Хорошо, если данных мало и меняются нечасто
– Federated Storage Engine
• Иногда работает, обычно мееедленно
• Сложности с обеспечением доступности при
падении мастера
16
17. Агрегация данных по всем
разбиениям
• Действительно ли этого не избежать?
– Дублирование данных
– Пре-генерация данных итд
• Вручную пробегать все группы
– Простое решение, работает для группировки
• UNION ALL VIEW на Federated Tables
– Хорошо работает, когда время получения
ответа не важно
17
18. Агрегация данных по всем
разбиениям
• Самописные системы параллельной
агрегации
– Особенно хорошо, когда групп ограниченное
число
• Technorati Web Services Layer
• HiveDB (система для решения этой проблемы)
• Sphinx
– “Неожиданно” оказался полезным для
глобальной агрегации далеко за пределами
полнотекстового поиска
18
19. А как же MySQL Cluster?
• Зачем мучаться с разбиением данных
вручную, давайте поставим MySQL Cluster
и он все за нас сделает автоматически?
• Хорошо в теории, но плохо работает на
практике для многих задач
– Сложности с выполнением сложных запросов
(по меньшей мере пока)
– Не работает с большими наборами данных,
даже в версиях 5.1.x
– Достаточно хорошо работает, например, для
хранения сессий в Web приложениях
19
20. Веб 2.0 мантра –
кэшировать и еще раз кэшировать
• Набор технологий для избежания тяжелой
работы по генерации данных
– Классическое кэширование
– Прегенерация статических данных
– Таблицы содержащие суммарные данные итд
• Избежать работы лучше, чем ее
оптимизировать!
20
21. Кэширование на всех уровнях
• “Железные” CPU Cache, RAID Cache
• Память как кэш
– Файловый кэш и внутренние кэши БД
– Требуют аккуратной настройки для лучшей
производительности
– Часто определяют размер данных, с которыми
сервер будет эффективно справлятся
• MySQL Query Cache
– Кэш результатов запросов (вместо исходных
данных)
21
22. Кэши уровня приложения
• Кэширование результатов ф-ий, объектов,
малоизменяемых данных
– APC/eAccelerator/xcache как кэш данных
• высокая скорость, малый объем, локальность
• Могут быть проблемы с блокировками и
фрагментацией
– MemCache
• Распределенный “сетевой” кэш – единая копия
данных и больше объем. Медленно
– Диск (локальный или разделенный)
– “Обернутый диск” – например BDB с memcache
интерфейсом
22
23. HTTP и выше
• Прегенеренные статические данные
– Можно хитрить и генерить по 404 и стирать при
инвалидации.
• SQUID и аналоги
– Распределенный. TTL или инвалидация
• Кэш браузера
– Правильно выставлять expires, etag
– Если новой версии объекта давать новый URL,
можно не беспокоится об инвалидации
23
24. Политика кэширования
• Как избежать позавчерашних новостей?
– TTL – объект имеет ограниченное время жизни
• Просто, но менее эффективно чем могло бы быть
– Инвалидация обновленных данных
• Более сложно, но эффективно и оперативно
• Часто используется с TTL “на всякий случай”
– “Контроль версий объектов”
• Знаем, что версия пользователя равна 1000 –
значит, считаем недействительными все более
старые зависимые объекты
24
25. Боремся с сетевыми задержками
• Получить больше данных за одно
обращение
– Не считывать таблицу строку за строкой
– Использовать multi_get в memcache итд
• Делать запросы параллельно
– Параллельная работа с внешними Web
сервисами
• Избегать ненужных обращений
• “Отложенные операции”
– Можно ли это сделать после того, как страница
уже отдана?
25
26. Вот и все,
или немного рекламы
• Percona Ltd
– Мы занимаемся консалтингом в области
MySQL, оптимизациями, дизайном
архитектуры, обслуживанием MySQL
• Приходите к нам работать
– Интересная работа для активных экспертов в
Web технологиях и MySQL
• pz@mysqlperformanceblog.com
• http://www.mysqlperformanceblog.com
26