DB2® NoSQL JSON 使">开发人员能够使用 MongoDB 创建的面向 JSON 的流行查询语言来编写应用程序,以便与 IBM® DB2 for Linux®, UNIX®, and Windows® 中存储的数据进行交互。这个基于驱动程序的解决方案提高了 RDBMS 上下文中的 JSON 数据表示的灵活性,该上下文提供了既有的企业特性和服务质量。此 DB2 NoSQL JSON 功能支持命令行处理器、Java API 和处理 JSON 文档的 Wire Listener。
在本文中,您将设置一个 DB2 数据库来支持 NoSQL 应用程序,本文将通过一个场景来介绍 NoSQL 命令行处理器的基本特性,帮助您开始创建自己的应用程序。
开始之前
DB2 NoSQL JSON 是 DB2 for Linux, UNIX, and Windows 10.5 中提供的一个技术预览版,它提供了以下特性,如图 1 所示:
一个管理和查询 JSON 数据的命令行 shell。 一个用于应用程序开发的 Java API。 一个接受并响应通过网络发送的请求的 Wire Listener。
图 1. DB2 JSON 组成部分
了解能从本文学到什么以及如何最充分地掌握本文中的知识
本文将介绍 DB2 NoSQL 在命令行 shell 中管理 JSON 数据和执行查询的基本特性,将指导您完成以下任务:
设置 处理集合和文档 管理 清理
有关的一般概述以及关于其他组成部分的详细信息,请参阅本系列中的其他文章。
设置
系统前提条件
要完成以下步骤,您的系统上必须至少安装 IBM DB2 10.5 for Linux, UNIX, and Windows。要简化对本文中的示例的授权需求的管理,请确保您拥有希望使用的数据库的 DBADM 授权。如果创建下一节中所述的数据库,则会自动分配必要的授权。
创建一个数据库
在这一步中,创建一个适合后续示例的数据库。使用一个 DB2 命令窗口或您最喜爱的 DB2 管理工具来执行该命令,如清单 1 所示。
清单 1. 创建数据库的命令
CREATE DATABASE myjsondb automatic storage yes using codeset utf-8 territory US collate using system pagesize 32 k
另请注意数据库服务器主机名或 IP 地址,以及端口号。下一步需要使用它们。
准备和启动 JSON 命令行处理环境
命令行处理器使用 db2nosql 脚本(位于 <db2home>/sqllib/json/bin 目录)启动,需要使用数据库连接信息。为确保解决了依赖性,可验证以下方面:
PATH 中包含一个 Java 运行时环境(最低为 JRE 1.5)。 CLASSPATH 包含 JDBC 驱动程序(db2jcc.jar 或 db2jcc4.jar)。
该脚本假设数据库位于 localhost:50000 之上,除非您使用 -hostName 和 -port 选项指定了不同的位置或端口。可使用 -help 选项了解有关的更多细节,如清单 2 所示。
清单 2. 使用 db2nosql 脚本的示例
db2nosql -helpdb2nosql -db bobdb -
user bob -password mypassworddb2nosql -hostName bob.bobhome.com -port 50003 -db bobdb -user bob -password mypwd
脚本参数提示:
数据库名称是强制性的。如果未提供数据库名称,
那么该脚本将提示输入该名称。 如果提供了一
个用户名但未提供密码,那么该脚本会提示您输入密码。 如果用户名和密码均未提供,那么该脚本会提示您使用 JDBC-Type2 连接,该连接使用操作系统的登录用户。
技巧:复制脚本并编辑副本,以便提供硬编码的值,简化为某个特定设置启动处理环境的过程。
JSON 命令行处理器将显示一个 “nosql” 提示,如清单 3 中摘录的示例所示。
清单 3. 命令行处理器
nosql>Type your JSON query and end it with <ENTER>nosql>Type help() or help for usage information
启用 DB2 数据库
运行该脚本,然后在命令行处理环境中,键入 enable(true) 为 NoSQL 命令准备数据库。这一步将添加必要的系统对象,一个数据库只需要创建一次,如清单 4 所示。
清单 4. 启用数据库
nosql>enable(true)Executing SQL...Database Artifacts created successfullynosql>
使用 enable(false) 选项将会打印有关联的 DDL,但不会执行该命令。