Обзор того, почему Django и Snowflake важны друг для друга, как создать простое приложение с новым соединителем Django с открытым исходным кодом, используя данные из Snowflake, и как соединитель не отстает от последних обновлений.

Snowflake объявила, что Snowflake Connector for Django теперь обновлен и доступен в Snowflake Labs на GitHub. Это отличная новость для всех, кто уже подключил Django к Snowflake, и для всех, кто собирается открыть для себя возможности, стоящие за этим.

В моем выступлении 2022 года Зачем кому-то использовать Snowflake в качестве бэкенда для Django? django-snowflake», созданный первоначальным парнем Django Тимом Грэмом, первоначально спонсировался Cedar Cares — и теперь Snowflake спонсирует его обслуживание и развитие.

Давайте рассмотрим здесь, почему люди хотят, чтобы Snowflake и Django были вместе, и с чего начать.

Что такое Джанго

Мое резюме из трех предложений о том, что такое Django:

«Django — это универсальная среда Python, широко используемая для поддержки крупных веб-сайтов и бесчисленных сайтов интрасети. Благодаря своим комплексным инструментам, масштабируемости и акценту на безопасность Django предоставляет разработчикам эффективную и удобную среду. Его гибкость и надежность сделали его лучшим выбором, позволяющим создавать мощные веб-приложения для различных целей».

Если вы покопаетесь в истории Интернета, вы обнаружите, что Django поддерживает Instagram с самого начала и до сих пор является лучшим выбором для создания маленьких и больших сайтов. Например, Опрос Stack Overflow 2022 показывает, что он входит в топ-10 с долей веб-фреймворков 15%. Но Django выходит за рамки веб-фреймворков — он также может выступать в качестве мощного уровня API между вашими данными в Snowflake и приложениями, которым требуется REST API (см. django-rest-framework — лучший сторонний пакет Django на Django developer опрос"). Как слой REST, «Django может быть отличным бэкендом для приложений ReactJS.



Django ORM особенно интересен для веб-разработчиков, мобилизующих данные в Snowflake — если бы мне пришлось резюмировать это (с помощью GPT):

«Django ORM упрощает взаимодействие с базой данных, предлагая высокоуровневый API, устраняя необходимость в ручном написании SQL-запросов. Это отлично подходит для веб-разработчиков, которые находят синтаксис и структуру Python более удобными, чем SQL. С помощью Django ORM разработчики могут определять модели баз данных как классы Python, что позволяет создавать более интуитивно понятный код. Система генерации запросов ORM может автоматически оптимизировать SQL-запросы, повышая производительность и сводя к минимуму риск уязвимостей SQL-инъекций. Кроме того, архитектура Django MVC улучшает организацию кода, удобство сопровождения и возможность со временем развивать схему базы данных. Интеграция Django ORM с более широкой экосистемой Django предоставляет разработчикам, ориентированным на Python, ряд дополнительных инструментов, включая аутентификацию, обработку форм и интерфейс администратора, оптимизируя процесс веб-разработки. В конечном счете, Django ORM расширяет возможности веб-разработчиков, любящих Python, предлагая знакомую и надежную платформу для беспрепятственного взаимодействия с базами данных Snowflake».

А как насчет Snowflake и Streamlit?

В то время как Django и Snowflake могут быть отличной парой, мы не должны забывать обо всех потрясающих качествах, которые Snowflake готовит с Streamlit и Native Application Framework: Streamlit дает нам невероятно простой способ создания интерактивных приложений данных — и анонсированная встроенная интеграция со Snowflake означает, что мы можем быстро и безопасно развернуть эти приложения в периметре безопасности Snowflake.

При мобилизации данных у вас есть выбор: невероятная гибкость Streamlit, универсальные и мощные функции Django и его экосистемы, а иногда достаточно просто создать интерактивную информационную панель в традиционном инструменте BI.

Что Snowflake может предложить разработчикам Django?

Традиционно Django работает в паре с транзакционными базами данных, такими как MySql и Postgres. Во многих случаях использования с большими объемами данных разработчики решили построить конвейеры, которые реплицируют данные из Snowflake в одну из этих баз данных. Это добавляет сложности и не должно быть необходимым, если хранение этих данных в Snowflake может обеспечить лучшую производительность, безопасность, управление, своевременность и простоту.

Как сказал мне Скотт Фаут, который разработал внутренний коннектор внутри своей компании до появления django-snowflake:

«Я не большой фанат Django. Я одержим оптимизацией. Меня привлекли к проекту, который использовал Django для PostgreSQL, и у них были задания, которые не выполнялись из-за недостаточной производительности Postgres. Мы попытались запустить экземпляр, но производительности не было, потому что он не масштабировал запросы (однопоточный). Я написал серверную часть как POC, чтобы доказать, что хотя время транзакций было медленнее, как только БД выполняет достаточно работы, преимущество переключилось на Snowflake. Я укрепил серверную часть, и несколько команд до сих пор используют ее в своих проектах».

Компании, выбравшие Snowflake, теперь могут нанимать разработчиков Django, предлагая им возможность Snowflake обрабатывать невероятные объемы данных; изоляция вычислений; неактуальность индексов; управляемость использования основных таблиц данных при сохранении их защиты с помощью политик на уровне строк, столбцов и маскирования данных; богатство публичных и премиальных данных на Snowflake Marketplace; и многое другое.

Также особенно привлекательной для разработчиков Django является способность Snowflake понимать и запускать Python — язык, который предпочитает Django. Благодаря этому они могут помещать логику и код в базу данных — с помощью пользовательских функций и хранимых процедур, которые могут обрабатывать огромные объемы данных без необходимости копировать их между различными платформами для выполнения работы.

В ближайшем будущем мы также можем ожидать, что коннектор будет поддерживать Unistore и гибридные таблицы, что позволит выполнять транзакционные рабочие нагрузки, не выходя из безопасности хорошо управляемой базы данных.

Достаточно теории — с чего начать?

Если вам все это нравится, давайте приготовимся к кодированию: Gilberto Hernandez уже опубликовал Краткий старт для Django и Snowflake.

Давайте проверим основные шаги:

Это основы. Это легко и круто. Но мы только начинаем.



Следующие шаги для разработчиков Snowflake

Если вы новичок в Django и хотите подключить его к Snowflake, есть интересная тема, о которой мы могли бы рассказать подробнее в следующих постах.

Например:

  • Понимание основ Django: контроллер, модель, представления.
  • Адаптируйте существующие таблицы к Django ORM:ORM имеет определенные ограничения, например требование, чтобы все таблицы имели столбец с уникальным идентификатором. Вы можете создать представления над вашими существующими таблицами, чтобы сделать это сопоставление.
  • Сопоставление временных рядов Knoema на Snowflake Marketplace с Django ORM:Частным примером предыдущего пункта являются временные ряды, используемые Knoema. Например, если вы хотите сопоставить Временную шкалу Knoema с историческими обменными курсами валют — вам нужно создать как минимум 2 представления (одно с добавлением столбца с уникальным идентификатором для каждой строки, а другое со списком различных валют). .
  • Внешние ключи в ORM.После того, как у вас есть две указанные выше таблицы, ORM может создавать SQL-запросы, используя соединение между ними, используя описанные вами внешние ключи.
  • Оптимизация вызовов ORM: ORM — это мощное средство, и вы можете извлечь из него максимальную пользу, изучив концепции оптимизации Django ORM, такие как проекции, select_related, prefetch_related, а также способы перехода к агрегации и фильтрации Snowflake.


  • Пользовательские функции Python с Django ORM.ORM использует ваши пользовательские функции Python в Snowflake, сопоставляя их с представлениями SQL.
  • Аутентификация с помощью закрытого/открытого ключа:вы можете использовать для аутентификации классический логин/пароль, а также более безопасные способы подключения.
  • Информационные панели в Django.Вы можете использовать для своей любимой среды JS-панелей в Django — например, Chart.js.


  • Развертывание Django.Когда вы переводите свой сервер Django в рабочую среду, где вы собираетесь его развернуть? Альтернатив много, и как пример — с AWS Elastic Beanstalk.


  • Поэкспериментируйте с GeoDjango:это в моем списке TO-DO, так как я хотел бы создавать карты, используя возможности ГИС Snowflake и Django.

Следующие шаги для разработчиков Django

Если вы новичок в Snowflake, есть несколько основных концепций, которые мы можем более подробно обсудить в следующем посте:

  • Бесплатная пробная версия Snowflake: вам не нужна кредитная карта, просто создайте новую учетную запись и попробуйте все это.

Снежинка отличается:

  • Вам не понадобятся табличные индексы — без них ваши запросы должны выполняться быстро.
  • Неограниченное изолированное вычисление — ваши рабочие нагрузки Django будут выполняться параллельно, не затрагивая других пользователей тех же данных.
  • The Snowflake Marketplace: найдите готовые общедоступные и платные наборы данных, которые постоянно обновляются и находятся на месте.
  • Управление на основе ролей: узнайте, как защитить свои данные с помощью ролей и политик, таких как уровень строки, уровень столбца и маскирование данных.
  • Перенос кода Python в Snowflake.Snowflake выходит за рамки SQL — как разработчик Python вы можете перенести свой код внутрь с помощью UDF и хранимых процедур.

Хочу больше?

Я Фелипе Хоффа, специалист по Data Cloud Advocate Snowflake. Спасибо, что присоединились ко мне в этом приключении. Вы можете подписаться на меня в Twitter и LinkedIn. И подписывайтесь на reddit.com/r/snowflake, чтобы быть в курсе самых интересных новостей Snowflake.