SQLite 是一个轻量级的嵌入式关系数据库管理系统,存储在单个文件中,无需独立服务器。对于博客等小型应用来说,能节省不少的内存性能。使用 ORM 工具开发,也方便后续迁移为其他数据库系统,适合在服务规模不大、并发写入要求不高时使用。
记录一些SQLite 的使用笔记,包括数据库更新部署、备份数据库、编辑线上数据等。
数据库更新部署
SQLite 是一种嵌入式数据库,无法直接远程访问、管理。
数据库更新部署,需要到远程服务器上执行 SQL 脚本,也不能利用 Datagrip 之类的数据库管理工具提供的对比及部署功能。
这时候,使用 ORM 框架的迁移功能就很方便,上线时直接执行迁移即可。
备份数据库
SQLite 数据库是一整个文件,可写一个脚本,直接把它从远程拉到本地,并使用当前时间作为标识:
DATE=$(date +"%Y_%m_%d_%H_%M_%S")
scp -r remote_host:/home/user1/db-files/test.db ./backup/test-$DATE.db
编辑线上数据
sshfs 远程文件系统
通过远程文件系统,可以间接实现远程管理。可通过 sshfs 来实现。
但这个在 mac 上需要较高的权限,暂时就没有使用这个方案来尝试,仅做记录。
可在 github 的 releases 页面下载到 dmg 文件:
比如将远程路径的 test.db
挂载到本地桌面的 db-files 里。
sshfs user1@remote_host:/home/user1/db-files/test.db ~/Desktop/db-files
服务器启动 web 服务
服务器启动一个可以管理 SQLite 的服务,也可以实现远程管理。
比如使用 Prisma Studio 启动,结合限制 IP 等方式仅允许自己的电脑访问。
直接通过应用本身管理数据
减少软删除等界面与数据内容不一致的特性,这样界面的内容和数据库基本能保持一致,无特殊情况不需要直接管理数据。
数据安全防护方面,通过失效等功能代替删除、删除二次确认、权限判断等来保障。