Streamlit и MongoDB хранение ваших данных в облаке

Streamlit и MongoDB в облаке

Streamlit Cloud не имеет локального хранилища, поэтому данные, созданные приложением, теряются при его завершении — если вы не используете стороннее хранилище, такое как MongoDB

Винтажная база данных NoSQL — Фото: Jan Antonin Kolar на Unsplash

Streamlit позволяет бесплатно размещать ваши общедоступные приложения в их облаке, но любые файлы или базы данных, созданные локально, перестанут существовать после завершения приложения. Возможно, это не то поведение, которое вам нужно, поэтому мы рассмотрим решение с использованием MongoDB.

Для многих приложений потеря этих данных не является проблемой. Например, если вы создали панель управления, которая считывает данные из внешнего источника, любые данные, которые вы генерируете, скорее всего временны и нужны только при работе приложения.

Но, как я отметил, разрабатывая свое приложение для статьи “Простые опросы с использованием Streamlit”, если само приложение генерирует данные, которые нужно сохранить, это не так просто. В этом приложении я сохранял данные в локальном файле, но при развертывании в облаке они перестанут существовать после остановки приложения — правильным решением будет использование внешнего хранилища данных.

Мы увидим, как мы можем достичь этого с помощью MongoDB, но есть и альтернативы.

Какие варианты?

В документации Streamlit есть руководства по подключению к различным базам данных и поставщикам облачного хранения. Они в основном разделяются на три области: хранилища данных, такие как AWS S3 и Google Cloud Storage, где можно хранить все; SQL-базы данных, такие как Microsoft SQL Server, MySQL, PostgreSQL; и базы данных NoSQL, примерами которых являются Firestore и MongoDB. Для каждого типа вам, очевидно, понадобится доступ к серверу, на котором размещена конкретная база данных.

Буду честным, я не являюсь самым большим поклонником SQL. Мне кажется, что между SQL-кодом и Python есть несоответствие, что вызывает дискомфорт. (Сказав это, я определенно ценю мощь и удобство SQL и писал об этом здесь, здесь и здесь.)

Но NoSQL-базы данных, такие как MongoDB, кажутся более простыми для использования в стиле Python.

Я уверен, что есть все возможные аргументы о скорости, эффективности, удобстве использования, безопасности и я не знаю что еще. Но я не пойду в эту сторону…