在 RDBMS 中将数据存储为 JSON 有何优点和缺点?

May*_*ary 7 database postgresql json hibernate jpa

我有一个数据库表(在 Postgresql 中),其中有一列为 JSON,其中存储了一堆键值对。一位朋友查看了我的架构,并建议我将这些键值对存储在单独的表中,而不是将其存储为 JSON 对象,特别是如果我想将来执行搜索操作的话。

我使用 JSON 是因为 JSON 对象中的键值对可能会随时间变化。键值对的数量以及键值对本身。

他的建议主要基于两个事实。

  1. 我确实计划对我当前存储的这个 JSON 对象中的至少一个字段执行搜索。
  2. 我希望使架构尽可能通用,以便在考虑数据库迁移时有尽可能多的选择,并且对后端代码所需的更改最少,这种情况发生在使用 JPA Hibernate 的 Java 上

我同意我朋友的观点。但在进行更改之前,我想充分了解在关系数据库管理系统中使用 JSON 的优点和缺点。欢迎一般答案以及适合我的特定用例的答案。