开发者社区> 问答> 正文

在数据库中存储JSON与为每个密钥添加一个新列

我正在实现以下用于在表中存储与用户相关的数据的模型-我有2列- uid(主键),该meta列以JSON格式存储有关用户的其他数据。

uid | meta

1 | {name:['foo'], | emailid:['foo@bar.com','bar@foo.com']}

2 | {name:['sann'], | emailid:['sann@bar.com','sann@foo.com']}

这是一个更好的方式(性能明智的,设计明智)比一列,每个属性模型,其中表将有很多像列uid,name,emailid。

我喜欢第一个模型,您可以添加尽可能多的字段,没有限制。

另外,我想知道,既然我已经实现了第一个模型。我该如何对其执行查询,例如,我想获取所有名称如“ foo”的用户?

问题 -使用JSON或每字段列数,哪种更好的方式将用户相关数据(请记住字段数是固定的)存储在数据库中?另外,如果实现了第一个模型,如何如上所述查询数据库?我是否应该通过将查询可以搜索的所有数据存储在单独的行中以及将其他数据存储在JSON(是不同的行)中来使用这两种模型?

更新资料 由于将没有太多列需要执行搜索,因此同时使用两个模型是否明智?我需要搜索的数据的每列关键字和其他人的JSON(在同一MySQL数据库中)?

展开
收起
保持可爱mmm 2020-05-11 14:59:17 520 0
1 条回答
写回答
取消 提交回答
  • 如果您确实希望能够无限制地添加任意多个字段(除了任意文档大小限制),请考虑使用NoSQL解决方案,例如MongoDB。

    对于关系数据库:每个值使用一列。将JSON Blob放在一列中实际上几乎不可能进行查询(并且当您实际找到有效的查询时会非常缓慢)。

    关系数据库在建立索引时会利用数据类型的优势,并打算通过规范化的结构来实现。

    附带说明:这并不是说您永远不要将JSON存储在关系数据库中。如果您要添加真实的元数据,或者您的JSON描述的信息不需要查询而仅用于显示,那么为所有数据点创建单独的列可能就太过麻烦了。来源:stack overflow

    2020-05-11 14:59:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载