将PostgreSQL用于JSON存储

2020-05-02 17:56:04

让我们设想一个场景,在此场景中,您在应用程序中处理JSON,并且希望将其存储在数据库中。您深深地叹了口气,然后想,我想除了我最喜欢的DB(Postgres)之外,我还得在我的体系结构中添加一些东西。我希望我能继续使用PostgreSQL。

你开始想,现在你有了很多问题,而不是一个问题。您可能需要学习新的数据查询语法、数据创建语句、安装新软件,最糟糕的是,作为应用程序开发人员,您需要在生产环境中运行一些新服务器。现在,你将把宝贵的时间花在学习、试验和祈祷上,而不是开发你的功能。

我的朋友,今天是你梦想成真的日子。在这篇博客文章中,我们将讨论一下如何使用PostgreSQL来满足您的所有JSON需求。我们还将向您介绍一些免费的学习资源,以便您可以更深入地挖掘。

从2012年9月发布的9.2开始,PostgreSQL就有了JSON类型。最初的JSON类型不仅仅是一个简单的存储字段,它允许您将JSON转储到数据库表中。它只是一个简单的文本字段,用于检查以确保您的JSON格式良好。除此之外,它不会做太多事情,我不推荐使用它。

在2014年12月的PostgreSQL 9.4版中,添加了JSOB类型。虽然我开玩笑说B代表更好,但实际上它代表的是二进制。将JSON数据放入JSONB列时,除了检查格式良好的JSON之外,现在还可以索引、查询和检索文档的各个部分。通常,对于您的所有工作,您都应该使用JSONB,除非您有令人信服的理由不这样做。这里有几个关于权衡和选择JSON和JSONB的很好的讨论……。

{";Person";:";First_Name&34;:";Steve";";Last_Name&34;:";Pouthy";";Score";Score&100,C。状态";:";令人敬畏";,";BEST_FEATURE";:";谦逊";}。

一旦将其放入名为json_content的JSOB列中(并创建一个gin Index以加快查询速度),您就可以做各种有趣的事情。请注意,我将使用PostgreSQL版本11中的JSONB导航和函数语法。版本12中对JSON文档导航和查询有了重大改进,这将是另一篇博客文章的重点。

#>;或#>;>;是JSON路径导航器,区别在于#>;返回JSON,#>;返回JSON文本值。

使用相同的文档导航语法,我们可以将其与包容检查相结合。顾名思义,我们将检查存储的JSON是否包含我们正在寻找的JSON。例如,如果我们只想返回那些状态为AWOWE的记录,我们可以这样写:

操作符在操作符的右侧查找包含JSON的JSON。在PostgreSQL中使用JSON最好的部分是,您可以利用您已经喜欢的所有普通SQL以及这些JSON函数。SQL处理可用于极大地减少应用程序中所需的代码量。例如,下面是获取表中所有不同状态类型的查询:

所以,如果你对你在这里看到的很感兴趣,并且想要了解更多,这里有一些很棒的资源(如果我自己这么说的话)。

我们有一个在线教程来帮助您开始使用PostgreSQL中的JSON。它是免费的,7天24小时都可以使用,而且我还在上面的材料中看到了一条实况流。

让我们知道@crunchydata您对这个材料的看法!我也很想听听您是如何在PostgreSQL中使用JSON的。