Олег Чуркин (Rambler&Co) - Django: правильно готовим ORM

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 พ.ย. 2024

ความคิดเห็น • 23

  • @Shmidtelson
    @Shmidtelson 8 ปีที่แล้ว +29

    Очень познавательно. Побольше бы таких докладов =) Да хрен с этим кофебрейком. Как будто каждый день такую инфу дают.

    • @fannigurt
      @fannigurt 7 ปีที่แล้ว +4

      Вы когда организовываете конференции, вы не про кофе думайте, а про контент. Если бы просмотрели презентацию заранее и подготовились по таймингу, то поняли бы, что она часовая.

  • @PythonDevelopment
    @PythonDevelopment 2 ปีที่แล้ว

    Жаль что не продолжили. Такой суперский докладчик и его так слили в конце! Печально, ребята!

  • @torroot4142
    @torroot4142 8 ปีที่แล้ว +4

    офигенный доклад спасибо

  • @МиколаБоровенський
    @МиколаБоровенський 5 ปีที่แล้ว

    Спасибо за доклад. Очень толково!

  • @delir0
    @delir0 8 ปีที่แล้ว +3

    Спасибо за доклад, он хорош. Хотя, есть пара ошибок:
    1) М2М связь Django создаёт уникальный составной индекс, в докладе утверждается иное;
    2) Аргумент поля для создания модели называется db_index, а не index_db;
    3) Докладчик рекомендует к использованию iterator, однако для psycopg2, драйвера, который мы все используем для постгреса, iterator не имеет смысла, поскольку сам драйвер кэширует результат.

    • @Bahusss
      @Bahusss 8 ปีที่แล้ว +3

      Спасибо за замечания. Однако, итератор работает не на уровне драйвера, а на уровне ORM и с помощью него можно избежать создания экземпляров модели в памяти. А из бд все данные подтягиваются всегда (если не использовать streaming).

    • @delir0
      @delir0 8 ปีที่แล้ว

      Ух ты, вот это вы меня обрадовали.

    • @TyVik
      @TyVik 5 ปีที่แล้ว

      @@Bahusss Upd. Мне кажется, что Django ORM уже умеет работать через server-side cursor - docs.djangoproject.com/en/2.2/ref/models/querysets/#django.db.models.query.QuerySet.iterator

  • @SamoilenkoLev
    @SamoilenkoLev 7 ปีที่แล้ว

    Спасибо, очень круто.
    Не понял, правда, почему prefetch_related так плох. Если дополнительный запрос генерит не так много данных, мне кажется, проще его использовать чем raw SQL

  • @alexeyluzin4485
    @alexeyluzin4485 4 ปีที่แล้ว

    огонь

  • @vmgrussia
    @vmgrussia 7 ปีที่แล้ว +3

    докладчик молодец )) хотя я хз что такое ORM ))

  • @NMelis
    @NMelis 5 ปีที่แล้ว +1

    и что юзать тогда вместо order_by("?")

    • @kostyaminkov5659
      @kostyaminkov5659 4 ปีที่แล้ว

      создай масив с полями таблицы, в пайтоне импортируй рандом, а в ордер уже закидуй рандомное поле с твоего массива

    • @NMelis
      @NMelis ปีที่แล้ว

      @@kostyaminkov5659 ну такое себе решение

    • @NMelis
      @NMelis ปีที่แล้ว

      from django.db.models.functions import Random
      random_records = YourModel.objects.annotate(random_number=Random()).order_by('random_number')

  • @funkindy
    @funkindy 6 ปีที่แล้ว

    Доклад супер. Но удивило несколько, что скорость БД выше скорости питона, по части манипуляции с данными. Разные сложные решейпы и агрегации я делаю в pandas, загружая queryset в датафрейм, и не совсем понятно как in-memory обработка может быть медленней. Но я далеко не гуру.

    • @TyVik
      @TyVik 5 ปีที่แล้ว

      Фишка в том, что pandas, numpy и пр. - расширения на C, которые работают напрямую с памятью, не создавая промежуточных python объектов. Так что скорость должна быть сравнима с БД. А вот если будете строки, которые обычные str сортировать или int, то тогда всё будет очень плохо.

    • @funkindy
      @funkindy 4 ปีที่แล้ว

      @@TyVik с этим согласен

  • @peas8556
    @peas8556 2 ปีที่แล้ว

    Зздззз

  • @hansolo5665
    @hansolo5665 4 ปีที่แล้ว

    хранить деньги в decimal field ? он серьезно ?