Django orm
This presentation is the property of its rightful owner.
Sponsored Links
1 / 35

Когда начинает трещать по швам Django ORM? PowerPoint PPT Presentation


  • 75 Views
  • Uploaded on
  • Presentation posted in: General

Когда начинает трещать по швам Django ORM?. Александр Миленко, июнь 2013, Мск e-mail: [email protected] skype: alexander.milenko. СРАЗУ!. ide я! – что за диковинка из глубинки?. ide я! – что за диковинка из глубинки?. ide я! – что за диковинка из глубинки?.

Download Presentation

Когда начинает трещать по швам Django ORM?

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Django orm

Когда начинает трещать по швам Django ORM?

Александр Миленко, июнь 2013, Мск

e-mail: [email protected] skype: alexander.milenko


Django orm

СРАЗУ!


Django orm

ideя! – что за диковинка из глубинки?


Django orm

ideя! – что за диковинка из глубинки?


Django orm

ideя! – что за диковинка из глубинки?

  • 5 интернет-магазинов в 4 областях

  • 120 000 просмотров в будни, около 400 000 под НГ ежедневно

  • 1 сервер для клиентов (i7-3930K x 12, 64GB DD3)

  • 1 системный сервер (i7-2600 x 8, 32GB DDR3)

  • Анализ 90+ поставщиков и конкурентов (более 1кк номенклатуры) на совпадения, цены и др. радости. (менее 2 часов на всех)

  • Актуальность учета остатков по 40 складам с отставанием в 15 минут от 1С

  • Определение даты доставки с точностью до 10 минут


Django orm

ideя! – что за диковинка из глубинки?

  • 160 скриптов взаимодействия

  • Обновление данных номенклатур по всем сайтам (140к позиций) менее чем за 80 секунд

  • Построенный рабочий процесс: от работы контент-менеджеров (в том числе с подсчетом ЗП) до работы всех сопутствующих структур: call-центр, закуп, логистика, служба качества и т.д.

  • Порядка 50 различных отчетов и собственные анализы поведений покупателей.


Django orm

Выучить к школе:

http://bit.ly/109nXYX


Django orm

3 года ошибок и побед.1 класс. Оптимизация логики

  • Первая рекламная акция – с 300 посетителей в день до 4000. Мы открываемся через раз!

  • Фильтр в фильтре

  • Много лишнего в запросе

    http://pastebin.com/bfyH6MZm


Django orm

3 года ошибок и побед.1 класс. Оптимизация логики. Правим

  • Предварительная подготовка данных

  • .values() и .values_list() наши друзья

  • Выкидываем лишнее из запроса

    http://pastebin.com/bfyH6MZm


Django orm

3 года ошибок и побед.1 класс. Оптимизация логики. Итог

Мы начали открываться каждый раз, но все равно медленно


Django orm

3 года ошибок и побед.2 класс. Шаблоны – тихая лошадка

  • Бестолковая магия – котел бежит за вами, но каши не варит.

  • Красиво? – Да

  • Функционально – невсегда

  • Мы ускоряемся

    http://pastebin.com/7ghQWmTv


Django orm

3 года ошибок и побед.3 класс. Кэширование

  • Кэшировать все – зло!


Django orm

3 года ошибок и побед.3 класс. Кэширование

  • Кэшировать все - зло!

  • Не кэшировать – зло!


Django orm

3 года ошибок и побед.3 класс. Кэширование

  • Кэшировать все - зло!

  • Не кэшировать – зло!

  • Кэшировать часть – зло!


Django orm

3 года ошибок и побед.3 класс. Кэширование

  • Кэшировать все - зло!

  • Не кэшировать – зло!

  • Кэшировать часть – зло!

  • Что делать??


Django orm

3 года ошибок и побед.3 класс. Кэширование

  • Кэшировать все - зло!

  • Не кэшировать – зло!

  • Кэшировать часть – зло!

  • Что делать??

  • Кэшировать!


Django orm

3 года ошибок и побед.3 класс. Кэширование

  • Время кеширования – всегда меньше часа и всегда под контролем

  • Актуальные данные – не кешируем, а выносим

  • Инструменты для сброса всего кеша или его части

  • Выбор формата данных в кеше

  • Больше фрагментации– больше актуальности

  • Гибридные ключи – вай-вай красота

    http://pastebin.com/tGuWhWuy


3 3 2

3 года ошибок и побед.3 класс 2 четверть. Вынос данных

  • Много баз не бывает = MongoDB, Redis, Memcached

  • Фильтры на сайте – платим производительностью за гибкость

  • Включаем пыхтелку, начинаем подготавливать больше данных и переносить из MySQL в MongoDB

  • Надежность != скорость MongoDB


Django orm

3 года ошибок и побед.3 класс. Итоги

Мы взлетели


Django orm

3 года ошибок и побед.4 класс.

Мы тормозим


Django orm

3 года ошибок и побед.4 класс. Грязные трюки

  • session.engine – rails

  • nginx backend node – more than 1 (URL, Server, Bot-s)

  • later – the best of the best of the best (c)


Django orm

3 года ошибок и побед.4 класс. Грязные трюки

  • session.engine – rails

  • nginx backend node – more than 1 (URL, Server, Bot-s)

  • later – the best of the best of the best (c)

  • Мы опять взлетели :)


Django orm

3 года ошибок и побед.5 класс. Берем лопату

  • Хватит мяться – в области больше одного города. Нам нужна доставка, наценка, СЕО и блекджек…

  • Исходные данные vs. Правила исходных данных

  • Идем на жертву производительности и…


Django orm

3 года ошибок и побед.5 класс. Берем лопату

  • Хватит мяться – в области больше одного города. Нам нужна доставка, наценка, СЕО и блекджек…

  • Исходные данные vs. Правила исходных данных

  • Идем на жертву производительности и… выигрываем!


Django orm

3 года ошибок и побед.6 класс. Анализируй это

  • Чудеса .values()

  • DB vs. Python-lines

  • Celery + CSV = счастье логистам


3 7 1 1

3 года ошибок и побед.7 класс. Сравнение 1кк строк с 1кк строк

  • 10 поставщиков – неделя одного сравнения.

  • 20 поставщиков – что-то линейка товаров уже обновилась..

  • 21 поставщик – терпенье и труд – все перетрут

  • 22 поставщика - понеслась:


3 7 1 11

3 года ошибок и побед.7 класс. Сравнение 1кк строк с 1кк строк

  • 10 поставщиков – неделя одного сравнения.

  • 20 поставщиков – что-то линейка товаров уже обновилась..

  • 21 поставщик – терпенье и труд – все перетрут

  • 22 поставщика - понеслась:

    • Подготовка данных – 15 минут

    • Поиск и сравнение – 30 минут (Левенштейн за бортом)

    • Привет конкурентам – вы под колпаком!

  • ИТОГ: 91 поставщик, 25 минут подготовка, 2 часа сравнения


3 8 select related prefetch related

3 года ошибок и побед.8 класс. .select_related() и .prefetch_related()

  • Зло

  • Забыть

  • Переписать


3 8 select related prefetch related1

3 года ошибок и побед.8 класс. .select_related() и .prefetch_related()

  • Зло

  • Забыть

  • Переписать

  • Модели с большим количеством полей – основная проблема данной магии

    http://pastebin.com/prxnrdRR


3 9 1 1

3 года ошибок и побед.9 класс. из 1С и в 1С – идеальный рецепт

  • Избыточность

  • Подготовка данных

  • Анализ

  • Транзакция

  • Скорость, защита от потерь данных, возможность отката при отказе

    http://pastebin.com/G0TEdA3R


3 10 1 5

3 года ошибок и побед.10 класс. Ужасный порог в 1,5 секунды

  • Откуда дровишки?

  • Нужна ли жертва для поднятия производительности?

  • Цена поднятия производительности до 0,03 секунд на страницу на 3х летнем проекте


Django orm

3 года ошибок и побед.11 класс. Выпускной

  • Раз в неделю – ловим ботов


Django orm

3 года ошибок и побед.11 класс. Выпускной

  • Раз в неделю – ловим ботов

  • Именных ботов – кормим дезинформацией


Django orm

3 года ошибок и побед.11 класс. Выпускной

  • Раз в неделю – ловим ботов

  • Именных ботов – кормим дезинформацией

  • Радуемсястабильным продажам 


Django orm

Высшая школа

Если это не правда – то уж очень хорошо придумано…

(с) итальянская поговорка

Спасибо!

Александр Миленко

[email protected]

skype: alexander.milenko

+7 919 408 0178


  • Login