您的位置:首页 > 数据库

PostgreSQL和Sqlserver对json数据的支持

2018-02-01 10:54 465 查看
首先说几点数据库存json格式数据的好处(经验尚浅,望大牛们不吝赐教):(1)将对象转成json格式存入数据库中,避免了主外键的设置和多表联合查询(2)想增加或减少字段时,不必频繁地去修改数据库,尤其 是使用三层框架,改一个字段要改好多内容的。接下来就我接触到的对json格式支持比较好的数据库进行一些分享。1.PostgreSQLPostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。psql对json格式数据有很好的读写支持。首先对于写没有什么过多可说了,就是一个字段,存储了一个json格式的字符串。通常会把对象里的子对象转成json存入对象的表中,避免了主外键设置和联合查询,并且增加或减少子对象的字段,其他地方几乎不怎么需要重写。主要想对psql对于json格式数据的查询详细介绍一下。更多的场景是我们往往需要对json格式数据中的某一个属性进行查询匹配,psql给了我们十分便利的方式来解决这一问题,首先看一段sql语句:select money from aa.count whereperson::json->>'age' > '30';不考虑实际情况,我们认为这是一个银行账户的表,把每个人的个人信息转成的json格式存在的一个字段中,现在我们想查出年龄在30岁以上的人的存款金额,便可以使用如上格式进行查询。是不是很方便呢。2.SqlServerSQL Server 2005开始支持XML数据类型,提供原生的XML数据类型、XML索引及各种管理或输出XML格式的函数。随着JSON的流行,SQL Server2016开始支持JSON数据类型,不仅可以直接输出JSON格式的结果集,还能读取JSON格式的数据。对于有用到JSON格式的应用程式来说,这无疑是一利器,因为不再需要使用JSON.Net这类工具进行分析和处理JSON数据,直接利用SQL Server内置函数就可以处理,轻松将查询结果输出为JSON格式,或者搜索JSON文件内容。下面通过实例的方式,展现SQL Server 2016这一新功能。同样详细介绍sqlserver数据库对于json格式数据的查询或者说是解析json格式的数据库内置函数。主要有三个:*openjson() *JSON_VALUE() 从JSON字符串中提取标量值。*JSON_QUERY() 从JSON字符串中提取对象或数组。如果直接对JSON进行标量查询,可以使用JSON_VALUE函数。该函数使用一种类似JavaScript的符号定位JSON对象中的值。它使用$符号表示object的根,点号表示属性,方括号表示数组索引。它与PostgreSQL中的json_extract_path_text函数等效。JSON数据可以直接索引,但开发者可以毫不费力地在标量数据上实现同样的效果。只需要使用JSON_VALUE函数创建一个计算列,然后在这个列上创建索引。下面还是上面那个例子我们来写一下查询年龄在30岁以上人的存款金额,我们可以使用JSON_VALUE来处理:select money from aa.count where JSON_VALUE(person,'$.age') > '30';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐