Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ORM vs plain SQL, why not both?

ORM vs plain SQL, why not both?

Юрий Благовещенский (Домклик, Python Developer) @ MoscowPython Meetup 74

"Буду рассказывать о ложной дихотомии ORM и запросов в голом SQL. Расскажу, как Django с одной стороны и aiohttp+asyncpg с другой позволяли нам катиться как угорелые".

Слайды: http://www.moscowpython.ru/meetup/74/orm-vs-sql/

Moscow Python Meetup

June 25, 2020
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. ORM vs plain SQL
    Why not both?

    View full-size slide

  2. Реляционные базы данных

    View full-size slide

  3. Object-Relational Mapping

    View full-size slide

  4. Проблемы
    • Неявный менеджмент состояния

    View full-size slide

  5. Проблемы
    • Неявный менеджмент состояния
    • Не масштабируется под более сложные требования

    View full-size slide

  6. Проблемы
    • Неявный менеджмент состояния
    • Не масштабируется под более сложные требования
    • N + 1

    View full-size slide

  7. Положение дел в индустрии

    View full-size slide

  8. Принцип Разделяй и властвуй единой
    ответственности
    Роли:
    •API
    •Admin interface
    •Event handlers

    View full-size slide

  9. Предметная область

    View full-size slide

  10. verbose_name

    View full-size slide

  11. Dict considered harmful

    View full-size slide

  12. Работа с данными
    • namedtuple

    View full-size slide

  13. Работа с данными
    • Namedtuple
    • Dataclass

    View full-size slide

  14. Работа с данными
    • Namedtuple
    • Dataclass
    • Pydantic

    View full-size slide

  15. Работа с данными
    • Namedtuple
    • Dataclass
    • Pydantic
    • FastAPI

    View full-size slide

  16. Миграции

    View full-size slide

  17. Используйте ORM
    • Библиотека уже наступила на все грабли

    View full-size slide

  18. Используйте ORM
    • Библиотека уже наступила на все грабли
    • Заставляет принимать важные решения

    View full-size slide

  19. Рекап рецептов
    • Описывайте предметную область upfront
    • db_table
    • Избегайте наследования в коде

    View full-size slide

  20. Обо мне
    • Юрий Благовещенский IRL
    • @strmwalker on Twitter
    • @strmwalker on Telegram

    View full-size slide