外接数据库给streamlit等web APP带来的变化
之前我采用sreamlit制作了一个调查问卷的APP, 又使用MongoDB作为外部数据存储,隐约觉得外部数据库对于web APP具有多方面的意义,代表了web APP发展的趋势之一,似乎是作为对这种趋势的响应,streamlit官方近期开发了st.connection组件,开发者也提供了st_mongo_connection包,看来有必要厘清一下外部数据库对web APP的多方面的意义和影响。
1. 数据存储与管理
使用了外部数据库之后,填写的数据可以存储在数据库中,不会因为重新启动应用而损失掉,调用的时候,也可以对历史的数据进行调用,应该是最明显的变化,带动了APP功能的扩展。
- 数据集中管理:所有应用数据集中存储在外部数据库中,方便统一管理和维护。
- 数据共享:多个应用可以共享同一个数据库,实现数据共享和复用。
- 数据持久化:数据不再局限于单个应用的内存中,即使应用重启,数据依然存在,保证了数据的持久性。
- 数据备份与恢复:外部数据库通常提供完善的备份和恢复机制,保障数据安全。
2. APP功能扩展和改变:
在可以长期存储数据之后,web APP的功能可以作为数据库输入数据和展示数据的终端,实现像调查问卷、留言板一类的功能。感觉这时候的APP中的统计数字和图表不再是固定不变的,而是可以随着数据库中数据的变化而自动变化。
- 数据量扩展:外部数据库可以存储海量数据,突破了本地内存的限制,适用于处理大规模数据集。
- 应用功能增加:实现调查问卷、留言板一类的功能。
- 已有应用设计策略的改变:比如预测模型类的APP,可以实现表单收集数据,存储到数据库中,而模型从数据库中调用数据进行训练,实现实时地产生模型。
3. APP架构变化:
数据和APP分离,减小对机器内存的依赖。
- 数据层分离:应用的业务逻辑与数据存储分离,提高了代码的可维护性。
- 分布式部署:外部数据库可以部署在分布式环境中,提高系统的可扩展性。
- 云端集成:外部数据库可以轻松集成云端服务,实现数据的云端存储和管理。
4. 开发流程变化:
主要是多了APP与数据库交互的过程,需要了解这一部分的内容,导致APP开发成本增加,好在数据库、streamlit等都对这方面有相应的介绍,对有前期APP构建基础的来说,上手相对容易。也稍微考察了shiny对外部数据库的支持,也可以通过mongolite R包来实现,但是似乎对部署的安全性考虑的较少,因为数据库的账号和密码是存在代码中的,这一点上不如streamlit(也可能是我考察的不完全。)
- 数据连接配置:需要配置应用与数据库的连接信息,包括数据库类型、主机地址、端口号、用户名、密码等。
- 数据模型设计:需要设计数据库表结构,以适应应用的数据需求。
- 错误处理:需要处理数据库连接异常、SQL执行错误等各种异常情况。
5. 性能影响:
性能上应该会有一定影响。
- 网络延迟:数据库访问涉及网络通信,可能会引入一定的延迟。
- 查询优化:需要优化 SQL 查询语句,减少数据库查询的耗时。
总结:
使用外部数据库,可以说给APP的制作带来了不小的变化,代表了未来发展的一种趋势。
相关文章:
外接数据库给streamlit等web APP带来的变化
之前我采用sreamlit制作了一个调查问卷的APP, 又使用MongoDB作为外部数据存储,隐约觉得外部数据库对于web APP具有多方面的意义,代表了web APP发展的趋势之一,似乎是作为对这种趋势的响应,streamlit官方近期开发了st.c…...

Gitpod: 我们正在离开 Kubernetes
原文:Christian Weichel - 2024.10.31 Kubernetes 似乎是构建远程、标准化和自动化开发环境的显而易见选择。我们也曾这样认为,并且花费了六年时间,致力于打造最受欢迎的云开发环境平台,并达到了互联网级的规模。我们的用户数量达…...

1.每日SQL----2024/11/7
题目: 计算用户次日留存率,即用户第二天继续登录的概率 表: iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…...

普通一本大二学生,软件工程,想考研985,想知道哪个大学的软件工程好,又不至于完全考不起的?
竞争难度适中:相较于顶尖985院校,重庆大学作为实力派985高校,其竞争烈度较为温和,考研难度适中偏易,为追求高性价比深造路径的考生提供了理想之选。 考试难度友好:重庆地区考研评分标准相对宽松࿰…...

「QT」几何数据类 之 QMatrix4x4 4x4矩阵类
✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

让Apache正确处理不同编码的文件避免中文乱码
安装了apache2.4.39以后,默认编码是UTF-8,不管你文件是什么编码,统统按这个来解析,因此 GB2312编码文件内的中文将显示为乱码。 <!doctype html> <html> <head><meta http-equiv"Content-Type" c…...

人员密集场所遇到突发火灾事故该如何应对
0引言 在繁华喧嚣的都市中,人员密集场所如购物中心、电影院、办公楼等,是人们日常生活不可或缺的一部分。然而,在这些看似繁华的背后,隐藏着不可忽视的安全隐患——火灾。火灾无情,往往在不经意间爆发,瞬间…...

使用QtWebEngine的Mac应用如何发布App Store
前言 因为QtWebEngine时第三方包,苹果并不直接支持进行App Store上签名和发布,所以构建和发布一个基于使用QtWebEngine的应用程序并不容易,这里我们对Qt 5.8稍微做一些修改,以便让我们的基于QtWeb引擎的应用程序并让签名能够得到苹果的许可。 QtWebEngine提供了C++和Qml的…...
微机原理与接口技术——中断系统与可编中断控制芯片8259A
目录 一、8259A 芯片介绍 二、8259A 的内部结构和引脚 三、8259A 的中断工作过程 四、8259A 的工作方式 五、8259A 的编程 六、外部中断服务程序 一、8259A 芯片介绍 Intel 8259A 是可编程中断控制器,可用于管理 Intel 8080/8085、8086/8088、80286/80386 的…...

【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
目录 1. start() (1) start() 的性质 (2) start() 和 Thread类 的关系 2. 终止一个线程 (1)通过共享的标记结束线程 1. 通过共享的标记结束线程 2. 关于 lamda 表达式的“变量捕获” (2) 调用interrupt()方法 1. isInterrupted() 2. currentThread() …...
面试题分享11月7日
1、ThreadLocal 是什么 是 Java 中线程的本地方法变量,用来存储每个线程的私有数据,每个线程都有它的独立副本,相互隔离,互不影响 2、ThreadLocal 实现原理 每个 ThreadLocal 都有一个 ThreadLocalMap 对象,用来存储…...

数据结构_哈夫曼树及其应用
构造算法的例子 构造算法的实现 初始化,置权值 int i, m, s1, s2;m 2 * n - 1;for (i 1; i < m; i){HT[i].lch 0;HT[i].rch 0;HT[i].parent 0;}for (i 1; i < n; i){cin >> HT[i].weight;}合并结点 // 创建哈夫曼树for (i n 1; i < m; i){s1…...
从0开始学习机器学习--Day19--学习曲线
一般来说,如果一个算法的表现不理想,那么多半是因为出现了欠拟合或过拟合问题,这种时候我们要做的就是搞清楚出现的是偏差问题还是方差问题,亦或是二者皆有,这有助于我们精准定位问题所在。 之前,我们发现…...
2.索引:深入解析 B+ 树:原理、MySQL 应用及与其他数据结构的对比
B 树是一种高效的平衡树结构,在数据库和文件系统中被广泛应用,尤其在 MySQL 中,InnoDB 存储引擎通过 B 树实现索引结构,提升了大数据量条件下的查询性能。 本文将深入介绍 B 树的原理和设计特点,分析 MySQL 中使用 B …...

[全网最细数据结构完整版]第六篇:3分钟带你吃透栈并模拟实现
目录 1->栈的概念和结构 1.1栈的概念 1.2栈的结构 2->栈的实现 2.1定义关于栈的结构体和各种函数 2.2栈的初始化 STInit 函数 2.3栈的销毁 STDestroy 函数 2.4栈的插入操作 STPush 函数 2.5栈的判断是否为空操作 STEmpty 函数 2.6栈的删除操作 STPop 函数 2.7…...
如何在 Docker 容器中启动 X11 图形界面程序
如何在 Docker 容器中启动 X11 图形界面程序 在使用 Docker 时,我们通常会发现,容器中的图形应用没法直接显示到宿主机的界面上。不过,我们可以通过共享 X11 的 Unix 套接字,让容器把显示数据传递给宿主机的 X11 服务器ÿ…...

pycharm保存是自动格式化
在PyCharm中设置保存时自动格式化代码,可以按照以下步骤进行: 1. 打开设置 在Windows和Linux系统中,可以通过File(文件)->Settings(设置)打开设置窗口;在Mac系统中,…...
.netCore WebAPI中字符串加密与解密
In today’s digital landscape, securing sensitive information is more critical than ever. If you’re using ASP.NET Core, you might store configuration settings in appsettings.json. However, hardcoding sensitive data like connection strings or API keys in p…...

Next.js + Move 石头剪刀布
rock-paper-scissors 写在前面 本地 源码:https://github.com/zcy1024/SuiStudy/tree/main/rock-paper-scissors # 或其它等价的命令来安装依赖并将项目跑起来 pnpm install pnpm run dev # http://localhost:3000/在线(如果没过期的话) …...
[面试]关于Redis 的持久化你了解吗
Redis的持久化是指Redis服务器在关闭或重启时,将内存中的数据保存到磁盘上的一种机制。Redis支持多种持久化方式。 一、RDB(Redis Database)持久化 RDB持久化是Redis默认采用的持久化方式,它将Redis在某个时间点的数据保存到磁盘上…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...