我正在构建一些应用程序,其中部分应用程序将具有非常多的非结构化和更改数据,我想将其转储为JSON。作为主要数据库,我正在使用PostgreSQL。我从未使用过JSON字段类型,但之前使用过MongoDB。我不需要任何花哨的东西,99%的时间它只是存储和获取数据并通过JSON的某些字段进行查询,它具有PostgreSQL的一个实例可以处理的规模,没有任何史诗。< / p>
我的问题是,PostgreSQL JSON字段与使用MongoDB相当吗?在为此选择PosgresSQL之前,我现在应该有任何限制或绊脚石吗? Bonus问题:在使用Studio 3T应用程序进行MongoDB时,是否有一种简单的方法可以手动查看和编辑JSON字段?(我知道PostgreSQL数据库应用程序不是出于某种原因的最大...)
答案 0 :(得分:3)
对于你的json数据,使用Postgres完全没有任何问题。需要一些时间来习惯Postgres中的json和数组函数,但它们非常棒并且可以满足您的大部分需求。 Postgres的Json支持是成熟且令人敬畏的。
但是,在将数据存储在json字段之前,请先仔细思考。这是一种简单的方法,但如果您的数据实际上是关系型的,它可能会回来并咬你。即使在今天,良好的旧正常形式仍然适用。
我在几个项目中使用了MongoDB,我怀疑我会再次使用它。我认为大多数现实世界的用例实际上都是关系型的。 Postgres在关系和文档之间取得了完美的平衡(在我看来),并得到了json的大力支持。
如果您只想存储json数据的“blob”,可以使用 json 数据类型。但是,如果您知道需要操纵对象或从中获取值,则应使用 jsonb 。 Jsonb也会检查你的json数据的有效性。我还认为jsonb的索引效率更高。
在Postgres函数中使用json数据类型或json数组作为输入参数非常棒。我经常从我的API服务器获取json,当需要将数据存储为关系数据时,需要将其分解为更小的和平。这在Postgres很容易完成。我有时也会使用另一种方法,即Postgres函数整合关系数据并将其很好地打包到REST友好的json对象中以进行输出。这样我就可以隐藏我实际将数据存储在规范化数据库中的事实。