Обзор того, почему 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.
Давайте проверим основные шаги:
- Установите Django и django-snowflake с помощью
pip install django django-snowflake
(и давайте отметим, как теперь коннектор синхронизируется с последними версиями Django). - Создайте пользователя и базу данных в Snowflake, которые вы хотели бы использовать в Django.
- Запустите миграции Django, доказав, что Django может создавать свои административные таблицы внутри Snowflake.
- Загрузите данные в Snowflake и создайте модели Django с помощью
inspectdb
. Это быстрый способ подключить ваши существующие таблицы Snowflake к Django, если они соответствуют ожиданиям Django. - Просматривайте свои данные с помощью представления Django и его административного интерфейса.
Это основы. Это легко и круто. Но мы только начинаем.
Следующие шаги для разработчиков 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 и хранимых процедур.
Хочу больше?
- Попробуйте это с учетной записью Бесплатная пробная версия Snowflake — вам нужен только адрес электронной почты, чтобы начать.
- Оставляйте свои отзывы и пожелания по трекеру Snowflake Django Connector GitHub.
- Следите за будущими сообщениями на эту тему, включая более подробные советы с обзором мой доклад на саммите Snowflake о коннекторе Django.
Я Фелипе Хоффа, специалист по Data Cloud Advocate Snowflake. Спасибо, что присоединились ко мне в этом приключении. Вы можете подписаться на меня в Twitter и LinkedIn. И подписывайтесь на reddit.com/r/snowflake, чтобы быть в курсе самых интересных новостей Snowflake.