有没有推荐用的轻量本地数据库

57 天前
 tdb11039gg

下面是 AI 推荐的:

SQLite:

优点:轻量、无需服务器、配置简单、支持 SQL 查询。 使用场景:移动应用、桌面应用、小型网站。

H2 Database:

优点:内存数据库、支持 SQL 、可嵌入 Java 应用。 使用场景:Java 应用、测试、开发。

Berkeley DB:

优点:高性能、键值存储、事务支持。 使用场景:嵌入式系统、需要高并发和事务支持的场景。

LevelDB:

优点:由 Google 开发,键值存储,性能优异。 使用场景:需要高性能键值存储的场景。

RocksDB:

优点:基于 LevelDB ,增加了更多功能和优化。 使用场景:需要高并发和持久化存储的场景。

LMDB:

优点:内存映射数据库,支持多线程读写。 使用场景:需要高并发访问和持久化存储的场景。

PouchDB/CouchDB:

优点:文档型数据库,支持 JSON 存储,易于使用。 使用场景:需要灵活数据模型和同步能力的应用。

Realm:

优点:移动端优化的数据库,支持多平台。 使用场景:移动应用,特别是需要跨平台支持的应用。

NeDB:

优点:轻量级的文档型数据库,适用于 Node.js 。 使用场景:Node.js 应用,需要轻量级存储解决方案。

3067 次点击
所在节点    数据库
26 条回复
wxf666
56 天前
@tdb11039gg #17


1. 请教下,存 json 的优势是什么呢?

- 增删查改方便?(如果不写 SQL ,而是用 ORM ,应该无所谓吧?)
- 物理上,这些数据聚在一块儿,查找起来速度更快?
- ……?



2. 逻辑上说,非关系能干的,关系应该都能干吧?

就是可能慢些,或其他缺陷?



3. SQLite 支持 json 增删查改聚合处理( json_* 或 jsonb_* 系列函数,或者 -> 及 ->> 操作符)

但没有 jsonPath 那样简洁的方式。。(做个插件,或者宿主语言里实现个函数给 SQLite 用也行)

比如查某帖里,某人近一年来的回复:

```sql
SELECT 回复 ->> '内容'
FROM 帖子表
JOIN json_each(回复数组) 回复
WHERE 帖子 ID = 1072404
  AND 回复 ->> '作者' == '某人'
  AND 回复 ->> '时间' >= '2023-09-13'
```

也支持对 json 字段做索引( Indexes On Expressions ),但目前不支持多值索引(如索引一个数组)。

真要实现,可以做个触发器,将数组里的差异项,更新到另一个索引里(如《帖子 ID ,回复人 ID ,楼层 or 楼层数组》索引)。



但我感觉,这些实现成一般关系表,就足够了。。
tdb11039gg
56 天前
@iorilu 有道理,楼上说的也没错,有 key,value 和非结构化的一些场景也可以考虑用别的。
@renguangwei 像用 sql 一样操作文件多爽呀
@MrDarnell 为啥
@wxf666 非关系型的扩展性强一些,不用去设计表了。想变就变。2 问题不大。3 用 sqlite 的 json 字段应该也可以做。
wxf666
56 天前
@tdb11039gg #22

前两天,我还见人吐槽,Python 的 *args, **kwargs (相当于支持接收一个 array 和 object )

原因是动态字段太灵活,太不严谨,文档代码对不上,后期维护太困难等问题。


我很疑惑,用 MongoDB 的,是怎么解决这些问题的呢。。

加上 json 还能字段想变就变,会不会前后期数据,字段都不统一呢。。


帖子:/t/1071840#reply91
Yjhenan
55 天前
FerretDB + SQLite ?😁

https://github.com/FerretDB/FerretDB
FerretDB 的成立是为了成为 MongoDB 事实上的开源替代品。FerretDB 是一个开源代理,它将 MongoDB 5.0+ 有线协议查询转换为 SQL—— 使用 PostgreSQL 或 SQLite 作为数据库引擎。
tdb11039gg
55 天前
@wxf666 MongoDB 虽然是 json 存储,也要考虑模型,只不过不用去维护数据结构了。实际上同一个字段又存字符串,又存结构体是不行的。
@Yjhenan SQLite 可以,FerretDB 不是本地数据库。
zzmark06
10 天前
非联网的单机 db ,oltp 用 sqlite ,olap 用 duckdb ,都是王者级

若是适配麻烦,postgre 也有 embed 版本,mysql 也有但很难搞不推荐,mysql 试着用 h2 平替,只是兼容性很垃圾。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1072404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX