关于客户端的数据存储

2022-01-05 09:55:36 +08:00
 jhqz103

现在有个需求: 1 、本地存储 20w 条左右的数据 2 、一条数据大概有 20 个左右的字段,全部都是数字 3 、本身是用 Unity 开发,希望能够跨端方案 希望能够有较快的写入和读取速度,同时体积尽量小 请问除了 Sqlite 有其他更好的方案吗?

3072 次点击
所在节点    程序员
36 条回复
vance123
2022-01-05 10:14:11 +08:00
不能全读进内存吗,应该也就十几 M
bfdh
2022-01-05 10:17:14 +08:00
20W 数据,sqlite 会不会性能不够?
jhqz103
2022-01-05 10:19:35 +08:00
@vance123 主要还是想本地存储,下次打开可以用,不然放内存是最容易的
jhqz103
2022-01-05 10:20:13 +08:00
@bfdh 我也担心这个问题 orz 自己对这个又不擅长,所以想看看各位大佬有没有推荐的
XiLingHost
2022-01-05 10:22:26 +08:00
200,000 左右的数据,每个数据是 20 个左右的字段,按数字算每个字段算 4 个 byte 应该足够了,也就是 200,000*20*4byte ,也就是约 16MB 的数据,你完全可以直接丢内存里
XiLingHost
2022-01-05 10:23:00 +08:00
@jhqz103 可以 dump 出来,比如 dump 成 gz 文件
3dwelcome
2022-01-05 10:24:36 +08:00
web 官方默认储存方案是 indexedDB ,但你又不是 web ,只是一个普通的客户端版本,无论想怎么存都可以啊。

以前都流行 WebSQL, 也就是 sqlite ,现在风向变了,chrome 完全偏爱 KeyValue 数据库。
Soar360
2022-01-05 10:36:48 +08:00
SQLite 20 万数据做好索引问题不大的。批量插入每秒几万都很轻松,只是并发不高。
nobodyknows
2022-01-05 10:48:49 +08:00
不选 sqlite 迟早后悔
2i2Re2PLMaDnghL
2022-01-05 11:07:27 +08:00
除了 sqlite 以外最好的方案就是直接 dump 数据结构,下次打开就是直接 read 进内存拿个指针指一下。
sunny352787
2022-01-05 11:10:10 +08:00
我咋觉得你实际要面对的问题不是你描述的这个样子呢?

你是做的游戏吧?策划表数据的存储?
jhqz103
2022-01-05 11:24:55 +08:00
@XiLingHost 也是,我试试这个方案
jhqz103
2022-01-05 11:27:00 +08:00
@3dwelcome 我这个是客户端,确实有很多存的方法,不过想找个较优的
jhqz103
2022-01-05 11:27:27 +08:00
@Soar360 我现在写入很慢,可能是这些没做好
jhqz103
2022-01-05 11:30:16 +08:00
@nobodyknows 阿这。。我觉得上面 dump 内存的方案也可以一试,sqlite 我现在写入太慢,估计是我姿势不对。如果 sqlite 是最好的方案,那我就往这方面做就好
jhqz103
2022-01-05 11:30:38 +08:00
@2i2Re2PLMaDnghL 谢谢哈,上面也有提到,我试一下
jhqz103
2022-01-05 11:32:34 +08:00
@sunny352787 是做的游戏,不过不是存策划表,而是存一局游戏各个时间的状态。从设计角度,我肯定会尽量减少存储的数据量,不过目前精简下来,还是有这么多数据 orz
Soar360
2022-01-05 11:35:35 +08:00
SQLite 要想插入快速,就是分批和事务。一万个 insert 语句放在一个事务里就行了。
Huelse
2022-01-05 11:40:31 +08:00
如果这个数据不需要局部更新的,总是全量读写的,那就直接放内存,像楼上说的那样。
如果需要局部更新,或者精细化的操作,最好还是上 sqlite 之类的库管理
vstar
2022-01-05 12:21:57 +08:00
又在做游戏了?

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

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

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

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

© 2021 V2EX