SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Подходы	
  к	
  кешированию	
  
в	
  UGC-­‐сервисе	
  
Сергей	
  Чистович	
  
Руководитель	
  группы	
  сервисов	
  общения	
  



Я.Субботник,	
  Санкт-­‐Петербург,	
  3	
  декабря	
  2011	
  года	
  
Какую	
  проблему	
  решаем?	
  

         	
  
   —  Повышение	
  надёжности	
  и	
  производительности 	
  
   —  уменьшение	
  нагрузки	
  на	
  базу	
  данных	
  


                для	
  определённого	
  типа	
  сервисов	
  



 2	
  
Что	
  за	
  сервис?	
  

    Социальная	
  сеть,	
  форум,	
  блогохостинг:	
  
    —  Много	
  пользователей	
  
    —  Много	
  статей	
  
    —  Много	
  настроек	
  
    —  Уведомления,	
  сообщения,	
  ограничения	
  доступа	
  
       и	
  т.д.	
  
                             например,	
  Я.ру	
  
  3	
  
В	
  каком	
  смысле	
  кеширование?	
  

   Кеширование	
  –	
  это	
  набор	
  средств	
  и	
  приёмов	
  для	
  
   повышения	
  надёжности	
  и/или	
  производительности	
  
   системы	
  за	
  счёт	
  уменьшения	
  потребности	
  в	
  
   формировании	
  и/или	
  передачи	
  данных.	
  	
  	
  




 4	
  
Что	
  насчёт	
  архитектуры?	
  

    Типичный	
  веб-­‐сервис:	
  
    —  Снаружи	
  пользователи	
  
    —  Перед	
  ними	
  веб-­‐сервер	
  
    —  За	
  ним	
  бэкэнд	
  
    —  А	
  за	
  ним	
  база	
  данных	
  (MySQL,	
  да?)	
  



  5	
  
Где	
  может	
  тормозить?	
  

    —  Получить	
  данные	
  из	
  БД	
  
    —  Сформировать	
  html/json/whatever	
  
    —  Передать	
  по	
  сети	
  
    —  Отобразить	
  в	
  браузере	
  




  6	
  
Как	
  будем	
  лечить?	
  




7	
  
Есть	
  проблема?	
  Есть	
  решение!	
  

    —  Тормозит	
  форматирование?	
  Поставь	
  больше	
  
       бэкэндов!	
  
           —  Работает	
  всегда	
  
           —  Просто	
  в	
  реализации	
  
    —  Тормозят	
  запросы?	
  Шардируй	
  базу!	
  
           —  Работает	
  отчасти	
  
           —  Требует	
  программирования	
  
          Будем	
  фокусироваться	
  на	
  проблемах	
  с	
  БД.	
  
  8	
  
Коллективное	
  бессознательное	
  

   Рекомендации	
  по	
  кешированию	
  из	
  интернетов:	
  
   —  Закешируйте	
  самые	
  популярные	
  блоки	
  
   —  В	
  query	
  cache	
  БД	
  или	
  в	
  memcache	
  
   —  Прямо	
  готовым	
  html	
  

                  не	
  работают	
  (в	
  нашем	
  случае)	
  



 9	
  
Кто	
  виноват?	
  

   —  У	
  нас	
  нет	
  «популярных»	
  блоков	
  
   —  У	
  каждого	
  пользователя	
  свой	
  взгляд	
  на	
  сервис	
  
           —  Ограничения	
  доступа	
  
           —  Настройки	
  
           —  Уведомления	
  и	
  счётчики	
  
           —  Френдлента	
  
   —  Активных	
  данных	
  гораздо	
  больше	
  

  10	
  
Что	
  делать?	
  

   База	
  не	
  справляется	
  со	
  сложными	
  запросами?	
  
   —  Оптимизируй	
  их!	
  
   —  Настрой	
  её!	
  
   —  Прокачай	
  её!	
  
   —  Не	
  помогло?	
  Слишком	
  много	
  данных?	
  
   —  Включи	
  голову!	
  



  11	
  
Корни	
  проблемы	
  

  —  Данные	
  меняются	
  очень	
  быстро	
  
          —  Кеш	
  инвалидируется,	
  не	
  успев	
  сработать	
  
  —  Слишком	
  много	
  параметров	
  
          —  Засорение	
  кеша,	
  низкий	
  hit	
  rate	
  
                                          	
  

                      но	
  мы	
  всё-­‐таки	
  попробуем.	
  


 12	
  
Где	
  можно	
  кешировать?	
  

  —  В	
  приложении	
  
  —  В	
  базе	
  
  —  Во	
  внешнем	
  кеше	
  

          	
  

                         (и	
  в	
  чём	
  разница?)	
  



 13	
  
Пример:	
  глобальные	
  константы	
  

  —  Можно	
  кешировать	
  в	
  приложении	
  
  —  Экономия	
  на	
  запросах	
  или	
  
  —  Экономия	
  на	
  сложности	
  запросов	
  




 14	
  
Пример:	
  счётчики	
  

  Счётчики	
  уведомлений,	
  друзей	
  и	
  т.д.	
  
  	
  
  SELECT COUNT(*) FROM messages WHERE uid=12345;

  	
  
  При	
  большом	
  объёме	
  данных	
  начинает	
  тормозить.	
  



 15	
  
Счётчики	
  –	
  в	
  кеш	
  

   —  Очень	
  компактные	
  данные	
  
   —  Ключ	
  –	
  только	
  один	
  uid	
  
   —  Изменяются	
  не	
  очень	
  часто	
  
   Положим	
  результат	
  запроса	
  в	
  кеш?	
  
                                         	
  
                работает	
  до	
  какого-­‐то	
  предела.	
  
   	
  
  16	
  
Счётчики	
  -­‐	
  инкрементальные	
  

   —  Изменяем	
  значение	
  в	
  ответ	
  на	
  действия	
  
           — 	
  триггерами/процедурами	
  в	
  БД	
  
           — 	
  или	
  просто	
  в	
  коде	
  
   —  Храним	
  в	
  БД	
  (персистентность)	
  
   —  Нужно	
  иногда	
  пересчитывать	
  



  17	
  
Пример:	
  френдлента	
  

  —  Тоже	
  может	
  быть	
  инкрементальной	
  
  —  Но	
  очень	
  много	
  данных	
  
  —  И	
  очень	
  много	
  обновлений	
  




 18	
  
А	
  если	
  более	
  мощный	
  ключ?	
  

   —  Количество	
  общих	
  друзей	
  (UID1,	
  UID2)	
  
   —  Информация	
  о	
  записи	
  (FEED,	
  ITEM,	
  UID)	
  
   —  Блоки	
  в	
  анкете	
  (UID1,	
  CATEGORY,	
  UID2)	
  
   	
  




  19	
  
Это	
  ни	
  в	
  какой	
  кеш	
  не	
  лезет!	
  

   —  Хранить	
  только	
  для	
  избранных	
  
           — 	
  предсказывать	
  востребованность	
  ключа	
  
   —  Уменьшать	
  кардинальность	
  ключа	
  




  20	
  
Пример:	
  информация	
  о	
  посте	
  

   В	
  лоб:	
  
   return getMessage(FEED, ITEM, VIEWER)
   Мощность	
  пространства	
  ключей	
  –	
  N2,	
  и	
  к	
  тому	
  же	
  
   объём	
  данных	
  большой.	
  
   Фактически	
  зависит	
  не	
  от	
  VIEWER,	
  а	
  от	
  
   relation(FEED, VIEWER).	
  



  21	
  
Пример:	
  информация	
  о	
  посте	
  

   По	
  уму:	
  
   rel = relation(FEED, VIEWER);
   return getMessage(FEED, ITEM, rel);
   Мощность	
  пространства	
  ключей	
  –	
  N	
  *	
  C	
  
   Вдобавок	
  rel	
  можно	
  повторно	
  использовать	
  в	
  
   пределах	
  одного	
  вызова	
  или	
  даже	
  закешировать.	
  



  22	
  
Пример:	
  блоки	
  в	
  анкете	
  
   В	
  лоб:	
  
   return getCategories(FEED, UID, category_list)

   (нам	
  нужны	
  некоторые	
  блоки,	
  с	
  учётом	
  доступов)	
  
   Сложность:	
  N	
  *	
  N	
  *	
  2c	
  




  23	
  
Пример:	
  блоки	
  в	
  анкете	
  
   По	
  уму:	
  
   rel = relation(FEED, VIEWER)
   return [c for c in getCategories(FEED, rel) 
           if c.name in category_list)]

   	
  Сложность:	
  N,	
  повторно	
  используем	
  rel	
  из	
  
   предыдущего	
  примера.	
  




  24	
  
СУБД	
  vs	
  кеш	
  

СУБД	
                                Кеш	
  
—  Не	
  требует	
  инвалидации	
     —  Гибкая	
  схема	
  
—  Есть	
  репликация	
               —  Гибкое	
  управление	
  
                                         ключами	
  
—  Гарантирует	
  наличие	
  
   данных	
                           —  Самоочищается	
  
—  Джойны	
  и	
  сложные	
           —  Глупый	
  –	
  значит,	
  
   запросы	
                             быстрый!	
  

    25	
  
Инвалидация	
  кеша	
  
  —  Всегда	
  явная,	
  по	
  событию	
  
  —  Протухание	
  по	
  времени	
  –	
  только	
  для	
  
     очистки	
  кеша	
  
  —  Не	
  замусоривать	
  невостребованными	
  
     ключами	
  




 26	
  
Пара	
  слов	
  о	
  фронтэнде	
  




27	
  
Фронтэнд	
  может	
  помочь	
  бэкэнду	
  

   Отделить	
  мясное	
  от	
  молочного:	
  
   —  OMG	
  фреймы	
  
   —  AJAX	
  
   —  localStorage	
  и	
  т.д.	
  




  28	
  
Кеширование	
  статики	
  

  —  Условное:	
  If-­‐Modified-­‐Since,	
  Etag	
  
          —  Лишний	
  запрос	
  
          —  Нечёткая	
  инвалидация	
  
  —  Безусловное:	
  Expires,	
  Cache-­‐Control	
  
          —  Без	
  запроса	
  
          —  Требует	
  версионирования	
  для	
  инвалидации:	
  
          css/v2.0/index.css	
  или	
  css/index.css?v=2.0	
  


 29	
  
Сергей	
  Чистович	
  
Руководитель	
  группы	
  сервисов	
  общения	
  
	
  
theigel@yandex-­‐team.ru	
  

@theigel	
  

	
  

Contenu connexe

Tendances

MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...IT-Portfolio
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusOntico
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Ontico
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектsportgid
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Ontico
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
 
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераHighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераИгорь Мызгин
 
Производительность Docsvision 5.1
Производительность Docsvision 5.1Производительность Docsvision 5.1
Производительность Docsvision 5.1Docsvision
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?Tim Mironov
 
Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Yandex
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Ontico
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Ontico
 
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)Nikolay Sivko
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Ontico
 

Tendances (20)

Cache in web (Secon 2008)
Cache in web (Secon 2008)Cache in web (Secon 2008)
Cache in web (Secon 2008)
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
 
ClickHouse
ClickHouseClickHouse
ClickHouse
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
 
Kosmodemiansky
KosmodemianskyKosmodemiansky
Kosmodemiansky
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проект
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
 
NoCaptcha
NoCaptchaNoCaptcha
NoCaptcha
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераHighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
 
Производительность Docsvision 5.1
Производительность Docsvision 5.1Производительность Docsvision 5.1
Производительность Docsvision 5.1
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
 

En vedette

Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"Yandex
 
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"Yandex
 
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Yandex
 
Сергей Горобцов "Веб для незрячих"
Сергей Горобцов "Веб для незрячих"Сергей Горобцов "Веб для незрячих"
Сергей Горобцов "Веб для незрячих"Yandex
 
Наталия Макишвили "Вёрстка для мобильных устройств"
Наталия Макишвили "Вёрстка для мобильных устройств"Наталия Макишвили "Вёрстка для мобильных устройств"
Наталия Макишвили "Вёрстка для мобильных устройств"Yandex
 
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...Yandex
 
Богдан Гаркушин "Способы организации поиска по сайту"
Богдан Гаркушин "Способы организации поиска по сайту"Богдан Гаркушин "Способы организации поиска по сайту"
Богдан Гаркушин "Способы организации поиска по сайту"Yandex
 
Валентин Коновалов "Кэш МЯК"
Валентин Коновалов "Кэш МЯК"Валентин Коновалов "Кэш МЯК"
Валентин Коновалов "Кэш МЯК"Yandex
 
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"Yandex
 
Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Yandex
 
Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»Yandex
 
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"Yandex
 
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"Yandex
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Yandex
 
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Yandex
 

En vedette (17)

Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
 
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
 
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
 
Сергей Горобцов "Веб для незрячих"
Сергей Горобцов "Веб для незрячих"Сергей Горобцов "Веб для незрячих"
Сергей Горобцов "Веб для незрячих"
 
Наталия Макишвили "Вёрстка для мобильных устройств"
Наталия Макишвили "Вёрстка для мобильных устройств"Наталия Макишвили "Вёрстка для мобильных устройств"
Наталия Макишвили "Вёрстка для мобильных устройств"
 
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
 
Богдан Гаркушин "Способы организации поиска по сайту"
Богдан Гаркушин "Способы организации поиска по сайту"Богдан Гаркушин "Способы организации поиска по сайту"
Богдан Гаркушин "Способы организации поиска по сайту"
 
Валентин Коновалов "Кэш МЯК"
Валентин Коновалов "Кэш МЯК"Валентин Коновалов "Кэш МЯК"
Валентин Коновалов "Кэш МЯК"
 
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
 
Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"
 
Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»
 
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
 
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"
 
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
 

Similaire à Сергей Чистович "Подходы к кешированию на UGC-сервисе"

High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.mikhaelsmirnov
 
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. "YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. Yandex
 
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...Yandex
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеAlexandre Kalendarev
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...IT-Portfolio
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Devs
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхСергей Макрушин
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхSergey Makrushin
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.Serguei Gitinsky
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программистаSlach
 
Дедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДДедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДКРОК
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraSveta Smirnova
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridMikhail Shcherbakov
 
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)Ontico
 

Similaire à Сергей Чистович "Подходы к кешированию на UGC-сервисе" (20)

High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. "YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
 
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrain
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программиста
 
Дедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДДедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОД
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data Grid
 
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
 

Plus de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Plus de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Сергей Чистович "Подходы к кешированию на UGC-сервисе"

  • 1. Подходы  к  кешированию   в  UGC-­‐сервисе   Сергей  Чистович   Руководитель  группы  сервисов  общения   Я.Субботник,  Санкт-­‐Петербург,  3  декабря  2011  года  
  • 2. Какую  проблему  решаем?     —  Повышение  надёжности  и  производительности   —  уменьшение  нагрузки  на  базу  данных   для  определённого  типа  сервисов   2  
  • 3. Что  за  сервис?   Социальная  сеть,  форум,  блогохостинг:   —  Много  пользователей   —  Много  статей   —  Много  настроек   —  Уведомления,  сообщения,  ограничения  доступа   и  т.д.   например,  Я.ру   3  
  • 4. В  каком  смысле  кеширование?   Кеширование  –  это  набор  средств  и  приёмов  для   повышения  надёжности  и/или  производительности   системы  за  счёт  уменьшения  потребности  в   формировании  и/или  передачи  данных.       4  
  • 5. Что  насчёт  архитектуры?   Типичный  веб-­‐сервис:   —  Снаружи  пользователи   —  Перед  ними  веб-­‐сервер   —  За  ним  бэкэнд   —  А  за  ним  база  данных  (MySQL,  да?)   5  
  • 6. Где  может  тормозить?   —  Получить  данные  из  БД   —  Сформировать  html/json/whatever   —  Передать  по  сети   —  Отобразить  в  браузере   6  
  • 8. Есть  проблема?  Есть  решение!   —  Тормозит  форматирование?  Поставь  больше   бэкэндов!   —  Работает  всегда   —  Просто  в  реализации   —  Тормозят  запросы?  Шардируй  базу!   —  Работает  отчасти   —  Требует  программирования   Будем  фокусироваться  на  проблемах  с  БД.   8  
  • 9. Коллективное  бессознательное   Рекомендации  по  кешированию  из  интернетов:   —  Закешируйте  самые  популярные  блоки   —  В  query  cache  БД  или  в  memcache   —  Прямо  готовым  html   не  работают  (в  нашем  случае)   9  
  • 10. Кто  виноват?   —  У  нас  нет  «популярных»  блоков   —  У  каждого  пользователя  свой  взгляд  на  сервис   —  Ограничения  доступа   —  Настройки   —  Уведомления  и  счётчики   —  Френдлента   —  Активных  данных  гораздо  больше   10  
  • 11. Что  делать?   База  не  справляется  со  сложными  запросами?   —  Оптимизируй  их!   —  Настрой  её!   —  Прокачай  её!   —  Не  помогло?  Слишком  много  данных?   —  Включи  голову!   11  
  • 12. Корни  проблемы   —  Данные  меняются  очень  быстро   —  Кеш  инвалидируется,  не  успев  сработать   —  Слишком  много  параметров   —  Засорение  кеша,  низкий  hit  rate     но  мы  всё-­‐таки  попробуем.   12  
  • 13. Где  можно  кешировать?   —  В  приложении   —  В  базе   —  Во  внешнем  кеше     (и  в  чём  разница?)   13  
  • 14. Пример:  глобальные  константы   —  Можно  кешировать  в  приложении   —  Экономия  на  запросах  или   —  Экономия  на  сложности  запросов   14  
  • 15. Пример:  счётчики   Счётчики  уведомлений,  друзей  и  т.д.     SELECT COUNT(*) FROM messages WHERE uid=12345;   При  большом  объёме  данных  начинает  тормозить.   15  
  • 16. Счётчики  –  в  кеш   —  Очень  компактные  данные   —  Ключ  –  только  один  uid   —  Изменяются  не  очень  часто   Положим  результат  запроса  в  кеш?     работает  до  какого-­‐то  предела.     16  
  • 17. Счётчики  -­‐  инкрементальные   —  Изменяем  значение  в  ответ  на  действия   —   триггерами/процедурами  в  БД   —   или  просто  в  коде   —  Храним  в  БД  (персистентность)   —  Нужно  иногда  пересчитывать   17  
  • 18. Пример:  френдлента   —  Тоже  может  быть  инкрементальной   —  Но  очень  много  данных   —  И  очень  много  обновлений   18  
  • 19. А  если  более  мощный  ключ?   —  Количество  общих  друзей  (UID1,  UID2)   —  Информация  о  записи  (FEED,  ITEM,  UID)   —  Блоки  в  анкете  (UID1,  CATEGORY,  UID2)     19  
  • 20. Это  ни  в  какой  кеш  не  лезет!   —  Хранить  только  для  избранных   —   предсказывать  востребованность  ключа   —  Уменьшать  кардинальность  ключа   20  
  • 21. Пример:  информация  о  посте   В  лоб:   return getMessage(FEED, ITEM, VIEWER) Мощность  пространства  ключей  –  N2,  и  к  тому  же   объём  данных  большой.   Фактически  зависит  не  от  VIEWER,  а  от   relation(FEED, VIEWER).   21  
  • 22. Пример:  информация  о  посте   По  уму:   rel = relation(FEED, VIEWER); return getMessage(FEED, ITEM, rel); Мощность  пространства  ключей  –  N  *  C   Вдобавок  rel  можно  повторно  использовать  в   пределах  одного  вызова  или  даже  закешировать.   22  
  • 23. Пример:  блоки  в  анкете   В  лоб:   return getCategories(FEED, UID, category_list) (нам  нужны  некоторые  блоки,  с  учётом  доступов)   Сложность:  N  *  N  *  2c   23  
  • 24. Пример:  блоки  в  анкете   По  уму:   rel = relation(FEED, VIEWER) return [c for c in getCategories(FEED, rel) if c.name in category_list)]  Сложность:  N,  повторно  используем  rel  из   предыдущего  примера.   24  
  • 25. СУБД  vs  кеш   СУБД   Кеш   —  Не  требует  инвалидации   —  Гибкая  схема   —  Есть  репликация   —  Гибкое  управление   ключами   —  Гарантирует  наличие   данных   —  Самоочищается   —  Джойны  и  сложные   —  Глупый  –  значит,   запросы   быстрый!   25  
  • 26. Инвалидация  кеша   —  Всегда  явная,  по  событию   —  Протухание  по  времени  –  только  для   очистки  кеша   —  Не  замусоривать  невостребованными   ключами   26  
  • 27. Пара  слов  о  фронтэнде   27  
  • 28. Фронтэнд  может  помочь  бэкэнду   Отделить  мясное  от  молочного:   —  OMG  фреймы   —  AJAX   —  localStorage  и  т.д.   28  
  • 29. Кеширование  статики   —  Условное:  If-­‐Modified-­‐Since,  Etag   —  Лишний  запрос   —  Нечёткая  инвалидация   —  Безусловное:  Expires,  Cache-­‐Control   —  Без  запроса   —  Требует  версионирования  для  инвалидации:   css/v2.0/index.css  или  css/index.css?v=2.0   29  
  • 30. Сергей  Чистович   Руководитель  группы  сервисов  общения     theigel@yandex-­‐team.ru   @theigel