疑问贴:大佬们在什么情况下,会考虑数据库字段存 json

2021-10-27 14:57:31 +08:00
 Visitor233

RT ,新项目( C#,postgresql )还在编写中,有部分配置信息是用 json 存在表字段里,因为每个单独的配置内容部分不一样。

写着写着发现,经常要拿 json 里的部分一样的数据做查询条件,联表条件,分组条件。pg 有 json 函数好操作 json ,但又不想增加维护 sql 的工作,大家都写的 ef 或者 linq 。

跟组长讨论后,决定是放出来做单独的字段。

存 json 实用性受限呐。

5900 次点击
所在节点    程序员
53 条回复
xiang0818
2021-10-27 15:04:16 +08:00
不考虑
binux
2021-10-27 15:07:33 +08:00
当然是不需要「做查询条件,联表条件,分组条件」的时候啊
pengtdyd
2021-10-27 15:13:22 +08:00
设计这个极度依赖经验,看具体业务而定
leeg810312
2021-10-27 15:21:29 +08:00
我有在字段里存 json 数据,但仅限单表查询,不会用 json 里的数据联表、分组、排序。查询中需要处理 json 时,用 EF Core DbFunction 写一个方法注册到 DbContext 里,一般用在 Linq Where 或 Select 方法里。
bleaker
2021-10-27 15:31:17 +08:00
非常确定(在自己跑路之前)不会和其他东西做关联查询,并且 json 字段内容非常不固定的时候

非要查的话可以用 JsonPath ( linq 更好用但是非 dot net 没得)糊一下
Visitor233
2021-10-27 15:34:25 +08:00
@leeg810312 我刚才也看到了 DbFunction ,确实有意思 ,可惜 Microsoft.EntityFrameworkCore v5.0.0 包里的方法没有适合操作 json 的,json_value 也只是 sql server 中用。
itechnology
2021-10-27 15:40:28 +08:00
在记录第三方接口调用结果的时候。
cco
2021-10-27 15:43:01 +08:00
存复杂结构的时候。
Seayon
2021-10-27 15:46:52 +08:00
输入输出参数的原始日志
InDom
2021-10-27 15:47:08 +08:00
如果不确定的话,干脆上 MongoDB 吧,用的时候也省心了。
tabris17
2021-10-27 15:48:20 +08:00
在确定了产品经理有多不靠谱的情况下
tabris17
2021-10-27 15:49:18 +08:00
两个前提:
1 、结构不确定
2 、数据整存整取
Visitor233
2021-10-27 15:54:17 +08:00
@bleaker JsonPath 看了会,好像可以用上,谢谢!
wlfeng
2021-10-27 16:03:53 +08:00
举个例子,支付系统,不同平台的配置参数
MonikaCeng
2021-10-27 16:06:29 +08:00
真要存 json 我就 mongo 了
MonkeyJon
2021-10-27 16:12:22 +08:00
再不想多加字段或者满足不了业务的情况下
Chad0000
2021-10-27 16:26:59 +08:00
再举个例子:快递面单打印模板,这完全是动态化的数据,也不会用来做查询。我就用 JSON 保存。同时支付系统参数我也是这么保存的。
labulaka521
2021-10-27 16:32:08 +08:00
一些属性信息,不会被 sql 查询的
chengyiqun
2021-10-27 17:17:44 +08:00
记录第三方接口调用结果的时候
RainCats
2021-10-27 17:21:48 +08:00
一些因为业务显示加的乱七八糟的东西,并且不作查询条件字段的时候

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

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

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

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

© 2021 V2EX