冰箱研会长e-3M 发表于 2021-2-15 13:24

本地客户端应用什么情况下应该使用数据库?

本帖最后由 冰箱研会长e-3M 于 2021-2-16 19:24 编辑

RT, 最近尝试在用UWP写一个开源日记应用, 页面控件, 逻辑基本写完了,
还差本地数据的储存方式.

说是数据, 其实就是一系列时间戳标记的记录.
我第一时间想到的就是写入到Json或者xml里,
但对待这种数据, 用JSON\XML和使用sqlite之类的数据库相比, 哪种更 "合理" 呢?

可能是个蠢问题, 但一时间还是想不出个所以然来, 遂发帖问问大家

------------

开始用sqlite了 > <

DTCPSS 发表于 2021-2-15 13:50

本帖最后由 DTCPSS 于 2021-2-15 13:58 编辑

Json要增删改查一般要把整个文本文件序列化和反序列化吧,数据多了应该会慢
数据量少应该差别不大


- 发自忧郁深沉的 Stage1st UWP 非官方客户端

Jet.Black 发表于 2021-2-15 14:09

日记能写几篇,一辈子最多也就三万多天。


想用什么就用什么吧

すぴぱら 发表于 2021-2-15 14:16

c#?试试messagepack csharp和mastermemory,作者是cygames的大牛,不用学任何数据库知识,自动生成增删改查代码,直接上手

冰箱研会长e-3M 发表于 2021-2-15 14:20

Jet.Black 发表于 2021-2-15 14:09
日记能写几篇,一辈子最多也就三万多天。



是随手记那种模式的日记 一条记录是2021年2月15日14点20分 + 全局不重复ID 这种标记

nessaj 发表于 2021-2-15 14:25

naiveyan 发表于 2021-2-15 14:31

用比较流行的数据库有一个好处是死机/断电/强行关闭程序的情况下数据不容易丢。

美人希 发表于 2021-2-15 17:48

硬盘本身不就是个数据库么,文件命名归类弄弄好应用启动后直接一把梭

— from OPPO PEGM00, Android 11 of S1 Next Goose v2.4.4.1

citrus 发表于 2021-2-15 17:53

数据库。方便以后拓展多用户和数据加密功能,避免为这些造轮子

aithinkso 发表于 2021-2-15 18:26

理论上应该用数据库,而不是直接操作文件系统

—— 来自 Xiaomi Redmi K30 5G, Android 11上的 S1Next-鹅版 v2.4.4.1

手撕寿司 发表于 2021-2-15 20:26

推荐sqlite一把梭
用json之类的数据结构+持久化,容易在异常运行场景出幺蛾子;
直接文本文件存储,需要自己DIY很多方法;
用标准数据库,会把你常用的方法+一些想不到的存储异常考虑到,还是实用很多的;

Mrs4s 发表于 2021-2-15 22:15

.net的话可以试试LiteDB 简单好上手 支持linq

whzfjk 发表于 2021-2-15 23:57

Magnesium 发表于 2021-2-16 09:02

sqlite 正解,一个文件可比一堆文件方便多了

lvcha 发表于 2021-2-16 18:44

refo2613 发表于 2021-2-16 19:19

绕指流光 发表于 2021-2-16 19:25

sqlite啊,不要选其他的,将来不管是统计还是高级查询用SQL的效率都比重新实现强多了,字段扩展也方便的多,还有DBEAVER这种免费神器

Jet.Black 发表于 2021-2-16 19:31

refo2613 发表于 2021-2-16 19:19
请问一下:

为啥安装程序包,例如MSI格式的,都还是喜欢直接丢个.LOG的纯文本文件? ...

log这种只增在最末还不会删的东西,文本文件最适合。

win8 发表于 2021-2-16 20:00

数据量够少用json也不是不行,每次读写都在备份文件上操作,完成操作后对数据做验校再用备份文件替换原文件。直接操作文件真心容易出问题。(想想看为什么office打开文件会产生一个隐藏的备份文件)

NMTor 发表于 2021-2-16 22:37

lvcha 发表于 2021-2-16 18:44
看啥语言了。java用sqllite。python我用的是那个自带的本地序列化的map叫啥我忘了。 ...

pickle?

lvcha 发表于 2021-2-16 22:48

NMTor 发表于 2021-2-18 21:04

lvcha 发表于 2021-2-16 22:48
是shelve。老不写虽然天天用但还是记不住呀。 挺好使的,完全可以当个可随时序列化反序列化的字典。我存 ...

感恩
看了下shelve是pickle封装了一层
我是自己用pickle实现了一个持久化 看来又造了一个轮子

—— 来自 Xiaomi MI 9 SE, Android 9上的 S1Next-鹅版 v2.1.0
页: [1]
查看完整版本: 本地客户端应用什么情况下应该使用数据库?