json 数据的存储, 是放在 redis 还是数据库

2018-02-27 17:20:09 +08:00
 hyhcoder

现在有一批用户设计的数据, 最后前端会用 json 的数据封装, 之前的设计都是直接把这个寸数据库, 导致现在那张表越来越大, text 类型过多会导致臃肿, 那这些数据是要怎么设计处理比较合理呢? 放 redis? 如果数据量一大好像也吃内存什么吧; 还是转对象单独存一张表, 但问题现在的设计数据有好多种类型, 并不一致;

大家有遇到这种的经验吗? 或者让你设计会怎么设计

2875 次点击
所在节点    数据库
32 条回复
qiayue
2018-02-27 19:36:54 +08:00
最简单改动最小的就是还用 MySQL,增加一个 json 表(可以单表也可以拆分),这个表存 json 字符串,然后原先的表只存这个表的 ID。用的时候再去 json 表取,再配合一定的缓存( Memcached 或者 Redis ),速度飞快。
prolic
2018-02-27 19:40:14 +08:00
看起来像类似用户词典之类的东西,还是存成静态文件,拿 key 取比较合适
pathbox
2018-02-27 19:41:32 +08:00
pg 欢迎你,MySQL 其实也没问题
wizardforcel
2018-02-27 20:06:23 +08:00
mongodb

无论是 redis 还是关系型数据库,都需要整个拿出来再解码才能查询里面的一个属性,开销太大,mongo 就不用。
puritania
2018-02-27 21:42:13 +08:00
将大字段从表中拆出去,单独建库,做好分表策略使得单表数据量足以满足查询速度,可以考虑用 redis 缓存数据,每个 key 设置较短的超时时间,每次 get key 时重置超时时间,让热数据一直在 cache 中,冷数据及时过期。
xpresslink
2018-02-27 21:42:43 +08:00
建议用 postgres 9.5+版,已对 json 和 jsonb 支持相对比较完善了,至少没有其它数据库比得上。存取速度和 mongodb 不相上下,所以直接用 pg 吧。250G 对于 pg 来说只是毛毛雨。
beginor
2018-02-27 22:44:05 +08:00
用 pg 吧,妥妥的
0915240
2018-02-28 00:05:59 +08:00
是单表 250G ???
killpanda
2018-02-28 00:16:11 +08:00
感觉这种场景可能是设计问题
Zzde
2018-02-28 00:18:08 +08:00
前段提交的数据不需要过滤拆分吗?需要时候在重新组合返回不行吗?
changrui0608
2018-02-28 10:21:32 +08:00
NoSQL 用 MongoDB,RDMS 用 PostgreSQL,这俩对 JSON 的直接支持已经有较久的历史了,速度都很快,最近 MySQL 不太了解
印象里 redis 这种大多是拿来存逻辑上可以非持久化的数据的,比如配置、session、数据库查询结果缓存之类的
iceiceice
2018-02-28 15:10:02 +08:00
我猜你需要 mongodb 真的适合你

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

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

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

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

© 2021 V2EX