1
LANB0 2022-03-03 09:55:47 +08:00 1
嵌入式设备,内存、CPU 和 flash 性能都有限,跑不了大型数据库。主要以 C/C++开发,sqlite 有良好的 C 接口提供。
|
2
adoal 2022-03-03 09:57:16 +08:00
不用部署,就一个本机数据文件。
|
3
roundgis 2022-03-03 09:58:32 +08:00 via Android
|
4
watcher 2022-03-03 09:59:59 +08:00
server side
|
5
lisongeee 2022-03-03 10:00:18 +08:00 2
android 默认支持 Sqlite ,所以用 Sqlite ,另外本地应用存储数据量大的时候也适合 Sqlite ,用 json 或者 xml 这类只能整存整取,数据量大的时候会 io 阻塞比较严重
|
6
iyear 2022-03-03 10:02:19 +08:00 via Android
单文件应用工具用着真的爽,应用本身性质也决定了不用特别强的数据库。sqlite+go 真的爽
|
7
BingoXuan 2022-03-03 10:03:30 +08:00
你需要一个数据库的功能,但又不想或没条件启动独立数据库进程,那就选 sqlite 。python 有 sqlitedict 这个库,能把字典持久化。连 orm 都省了
|
8
felixcode 2022-03-03 10:05:36 +08:00 via Android 1
与大多数其他 SQL 数据库不同,SQLite 没有单独的服务器进程,可以按应用程序需求进行静态或动态连接。SQLite 直接读取和写入普通磁盘文件,具有多个表,索引,触发器和视图的完整 SQL 数据库包含在单个磁盘文件中。
|
9
wangtian2020 2022-03-03 10:06:01 +08:00
electron 要存订单信息、作业信息,几百条数据。数据大到不适合 localstorage ,但又不至于上大数据库,数据库要在程序内置
|
10
youthfire 2022-03-03 10:07:34 +08:00 via iPhone
本地 Python+sqlite ,不连接外网,速度快
|
11
RickyC 2022-03-03 10:09:13 +08:00
数据库免安装,免部署。比如 showdoc 。
|
12
icyalala 2022-03-03 10:13:07 +08:00
手机里到处都是 sqlite ,比如 iOS/Android 的短信、通信录、邮件等数据都是 sqlite 存储的,各个 App 比如微信聊天记录、复杂配置也都是 sqlite ,无处不在。
对于需要存储关系模型、需要查询、又没有太高的安全性和事务处理需求的地方,都适合用 sqlite ,移动端尤为适合。 |
13
dooonabe 2022-03-03 10:14:03 +08:00 via Android
说个反例:现在做的仿知乎 web 项目,cto 让给每个用户的三四个用户相关表创建独立的 db ,曰提高并发,降低死锁概率
|
14
wonderfulcxm 2022-03-03 10:16:11 +08:00 via iPhone
买了个万网的那啥共享空间挂域名,想做点东西,一看,mysql 只有 50m ,那只能用 sqlite 了
|
15
Vegetable 2022-03-03 10:23:22 +08:00
手机里多的是吧。你可以理解为,客户端需要使用数据库的时候,文件型数据库几乎是唯一选择。
|
16
aegon466 2022-03-03 10:25:46 +08:00
@iyear 请教下 我用 sqlite+go 在 win 上编译后放到 linux 运行不了 说是编译不了 gcc 是什么原因
|
17
izzy27 2022-03-03 10:28:28 +08:00
轻量呗,一些小项目用 sqlite 足够了
|
18
zjj19950716 2022-03-03 10:35:33 +08:00
@aegon466 要 cgo ,你可以用 pure go 版本的 sqlite 库,就是性能差点
|
19
Nich0la5 2022-03-03 10:42:58 +08:00
主要是本地应用 内置到应用包不用额外部署,单线程下性能不错,没有用户权限体系。反正你当个更高级的配置文件用就好
ps 高并发下不建议用,之前我们的 gitea 后端是个 sqlite 天天卡住,换 mysql 就没事了 |
20
wangjiang 2022-03-03 10:46:28 +08:00
@wangtian2020 #9 为啥不用 IndexDB
|
21
CoCoMcRee 2022-03-03 11:12:35 +08:00
app 内置数据库, 大量数据 app 本地存储, 就是用的 sqlite
|
22
cmdOptionKana 2022-03-03 11:36:52 +08:00
sqlite 优点多:稳定可靠(真的身经百战,极难撞到 bug 了)、运行效率高占用资源小、备份容易、支持广泛(几乎一切语言都可以操作同一个数据库文件)、关系型数据库功能比 kv 多,便于编程。
虽然 kv 数据库也具有 sqlite 的多数优点,但 kv 通常用起来是麻烦一点,很多操作需要额外编程处理。 |
23
libook 2022-03-03 11:41:22 +08:00
见到最多的场景就是客户端上需要比较强的数据查询能力,跑个常规数据库太重了,SQLite 比较轻量,容易打包到客户端安装包里,跟常规关系型数据库的使用方式差别较小。
还有一个场景是做原型产品,很多 ORM 可以支持多种数据库,避免折腾常规数据库服务可以先挂个 SQLite ,后面产品化的时候迁移到正式数据库成本也不会很高。 |
24
littlewing 2022-03-03 11:49:04 +08:00
客户端 APP 本地保存一些数据
|
26
imn1 2022-03-03 12:02:59 +08:00
“非要”这个词,估计只有“无网+便携”场景可以符合
如果只是问选择理由 0. 便携场景 1. 我写了几个单机程序,基本都是用 sqlite ,因为没什么并发,没必要装服务端数据库 2. 单用户不定设备同步,只需要同步一个数据库文件就可以了,因为单用户甚少同时操作两个设备。同时指的是秒级或更高频手动操作,不是指软件自动运算写数据库 还有一个场景,但比较少见,就是目的是数据共享、分发给不定人群,至于他怎么用这些数据,并非主要目的,github 上一些项目就是这样,分享的不是代码,而是数据 |
27
devld 2022-03-03 12:05:34 +08:00
自己的小项目,想要一键无痛启动。
|
28
GoLand 2022-03-03 12:28:37 +08:00 via iPhone
单元测试用 sqlite 来 mock MySQL
|
29
ackfin01 2022-03-03 12:39:31 +08:00
最主要就是方便啊 而且性能也满足
|
30
dany813 2022-03-03 12:42:15 +08:00
小巧,方便
|
31
leavic 2022-03-03 13:26:33 +08:00
不需要服务器
|
32
kingfalse 2022-03-03 13:37:27 +08:00
各种工控客户端机器,手机 app,等
|
33
james2013 2022-03-03 13:48:31 +08:00
android 手机上就这个数据库最方便好用
|
34
smallpython 2022-03-03 13:49:56 +08:00
sqlite 这种文件型数据库有对应的 nosql 吗
|
35
37Y37 2022-03-03 13:50:55 +08:00 via Android
我的博客数据库就用的 sqlite ,小巧方便,不用安装
|
36
bthulu 2022-03-03 14:16:15 +08:00
典型案例: 微信客户端
|
37
star7th 2022-03-03 14:39:59 +08:00
我的开源软件 showdoc:
https://github.com/star7th/showdoc 就使用 sqlite . showdoc 使用 Sqlite 的理由如下: PHP 环境默认支持 Sqlite ,所以只需要安装好 PHP 环境,即可使用 showdoc ,无须再安装 mysql 。这对于不懂 mysql 的开发者(如 App 开发者)来说会更容易一些。同时方便官方维护 showdoc ,不用维护和测试两个数据库版本 sqlite 的性能并不差,对于总项目数在一万以内的情况,基本不用考虑性能问题。所以完全足够普通公司或者团队的使用。关于对 sqlite 性能的质疑,可以参考这位不知名网友的文章 https://www.cnblogs.com/derekhan/p/10897421.html sqlite 数据库文件放在 /Sqlite 目录下,迁移和备份都十分简单,直接复制 /转移该目录即可 |
38
MoeWang 2022-03-03 14:47:46 +08:00 via Android
博客,数据量小,单独开个数据库性能过剩,索性 sqlite ,缓存好了速度很快。轻量也好迁移。
|
39
MarquesMa 2022-03-03 14:59:45 +08:00
客户端里内嵌很常见,比如手机,桌面应用等等
另外如果在服务器的话,存文件很不错 还有就是小应用单台机器起步的时候也可以简单用下 |
40
Buges 2022-03-03 15:06:56 +08:00 via Android
@aegon466 交叉编译可以利用 zig ( zig 受 go 启发,能像 go 一样简单的交叉编译 c 代码)
https://dev.to/kristoff/zig-makes-go-cross-compilation-just-work-29ho |
41
imklay 2022-03-03 15:27:45 +08:00
@wangtian2020 #9 这种场景是不是也可以考虑 IndexDB ?
|
42
shellc 2022-03-03 15:45:11 +08:00
|
43
Jason86 2022-03-03 15:51:11 +08:00
移动端的项目
|
44
soulzz 2022-03-03 16:11:03 +08:00
blog 场景下
迁移 blog 可能只需要 commit 下 docker 镜像 直接迁移就可以 或者直接复制过去,没有任何迁移成本 |
45
joApioVVx4M4X6Rf 2022-03-03 16:28:15 +08:00
@star7th 这个开源真的很牛,上家公司离线环境用了很久
|
46
wangtian2020 2022-03-03 16:44:49 +08:00
|
47
tairan2006 2022-03-03 16:45:58 +08:00
各种客户端 /边缘端环境都经常使用,服务端倒是用得不多
|
48
Ciallo 2022-03-03 17:57:16 +08:00
客户端开发我自己用过几次,或者是离线的工具或服务
|
49
ilylx2008 2022-03-03 17:59:01 +08:00
单机环境,copy 带走,批量写入性能不错。并发读写不行。
|
50
jianghu52 2022-03-03 18:18:45 +08:00
我给人做了一个.net 的流水明细转化系统,为了存一些发票头,还用 sqlite 呢。一个轻,另外一个是不用在别人系统上装什么其他的东西。
|
51
0x2CA 2022-03-03 18:33:28 +08:00
我这边是游戏开发,会用到,策划配表大量数据,全加载内存占用内存,而且加载慢,通常游戏进程原因只会用到配置一部分数据,所以选择 sqlite ,使用查询不占用内存直接获取配置是最好的选择,而且通常是只读不写,只做配置数据库
|
52
biubiuF 2022-03-04 02:04:08 +08:00
本地数据
|
53
jupiter157 2022-03-04 04:11:25 +08:00
数据有四个操作:创建,读取,修改,删除。
数据可以以多种形式存储,比如常见的文本文件,格式可以是 json ,csv 或甚至二进制。它们的局限在于,对于任何数据操作,都需要整个文件读取,即使你只需要添加 /查询十万条记录中的某一条,因此效率十分低下。有些文件格式,例如 nc ,也支持片段读入,但是需要预先指定位置。 鉴于此,数据库可以实现按需查询、读取和写入,减少 io 负担。 sqlite 是很轻量化的数据库。 sqlite 的缺点是:对高并发写入支持差;只能本地调用;支持数据不能太大(几十 G 没问题) 应用场景是:需要经常更新和添加数据中的很小一部分;需要经常查询数据并返回一小部分。 博客没必要上数据库,文本就够了。 |
54
feelinglucky 2022-03-04 09:14:19 +08:00
@GoLand 如果是 Java 技术栈的话,我还是习惯用 H2 来 mock 数据库做单元测试(话说兄弟的 ID 好亮眼,甚至怀疑是不是潜规则了站长,哈哈哈
|
55
yiqiao 2022-03-04 09:35:38 +08:00
单元测试我用它
|