JSON 数据类型 GSoC 2010
概述
JSON [1] 是一种数据交换格式,其目的与 XML 有些相似。类似于 PostgreSQL 如何拥有 XML 数据类型和相关函数;这个项目将添加 JSON 数据类型和函数。由于 XML 和 JSON 之间的结构差异,函数集需要不同。
在 PostgreSQL 中添加 JSON 支持将使用户能够以类似于他们今天使用 XML 的方式存储和处理 JSON 内容。JSON 不是一个“移动目标”,并且比 XML 更轻便,这意味着它应该更快,并且可能不会依赖于外部库。如果社区决定 JSON 支持应该内置而不是外部模块,那么 JSON 可能会成为 PostgreSQL 中存储结构化数据和 EAV 类型数据的首选媒介。
学生姓名:Joseph Adams 导师姓名:Magnus Hagander
可交付成果
完成后,PostgreSQL 将拥有 JSON 支持(内置或作为附加模块),以及必要的文档和测试用例。将字符串转换为 JSON 将执行验证(例如,`SELECT '[1, '::json` 将因缺少结束括号而失败)。用户将能够将集合转换为 JSON(例如 SELECT json_object('abc' AS foo, 123 AS bar))和从 JSON 转换(例如 SELECT * FROM json_each('{"a":1, "b":2}'))。确切的细节将取决于社区的意见,但可能会受到现有的 XML 和 hstore 函数的启发。
项目时间表(待完成)
截止 5 月 24 日:
- 与 PostgreSQL 开发者社区讨论 JSON 支持的命名和语义,主要是集合和值转换函数。
- 了解如何编写 PostgreSQL 模块(JSON 支持可能会成为一个附加提供的模块,但这取决于社区)。
- 为我的项目创建一个公共存储库,最有可能在 http://git.postgresql.org/ 上。
5 月 24 日 - 5 月 31 日:将 JSON 库 PostgreSQL 化。将 malloc 更改为 palloc,使用 pg_wchar.h 中的编码函数,从 Node 继承 JSON 节点结构(也许等等)。
5 月 31 日 - 6 月 7 日:实现 JSON 数据类型(没有其他函数)。这应该很简单,因为我可以参考 src/backend/utils/adt/ 中的类型代码。
6 月 7 日 - 6 月 14 日:冻结。编写文档和测试用例,并使用此功能创建 json 模块的可使用草稿版本。
6 月 14 日 - 6 月 28 日(2 周):为将字符串、数字和布尔值转换为 JSON 实现 *_to_json 函数,以及为相反转换实现 json_to_* 函数。
6 月 28 日 - 7 月 5 日:实现将元组转换为 JSON 对象的函数(类似于 xmlforest 的目的 [2])。
7 月 5 日 - 7 月 12 日:冻结。编写文档和测试用例,并使用此功能创建 json 模块的可使用草稿版本。
7 月 12 日 - 7 月 19 日:实现将 JSON 对象转换为一组键/值元组的函数(类似于 hstore 中的 each
[3])。
7 月 19 日 - 7 月 26 日:实现 JSON 连接运算符(类似于 hstore 中的 ||),以及聚合连接函数(类似于 xmlagg [4])。
7 月 26 日 - 8 月 9 日:待完成
8 月 9 日 - 8 月 16 日:冻结:编写文档和测试用例,并使用此功能创建 json 模块的可使用草稿版本。8 月 16 日是最后的截止日期。