GVKun编程网logo

DB2 NoSQL JSON 功能,第 1 部分: DB2 NoSQL JSON 介绍(db2not in)

20

最近很多小伙伴都在问DB2NoSQLJSON功能,第1部分:DB2NoSQLJSON介绍和db2notin这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展com.ibm.db2.j

最近很多小伙伴都在问DB2 NoSQL JSON 功能,第 1 部分: DB2 NoSQL JSON 介绍db2not in这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610, SQLERRMC...、DB2 NoSQL JSON资料索引、db2 SQL1390C 环境变量 db2instance 未定义、db2 数据库表操作错误 SQL0668N Operation not allowed for reason code "1" on table "表". S...等相关知识,下面开始了哦!

本文目录一览:

DB2 NoSQL JSON 功能,第 1 部分: DB2 NoSQL JSON 介绍(db2not in)

DB2 NoSQL JSON 功能,第 1 部分: DB2 NoSQL JSON 介绍(db2not in)

Ref:http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1306nosqlforjson1/index.html

快速变化的应用程序环境需要一种灵活的机制来存储数据,并在不同应用程序层之间传递数据。事实证明,JSON (Java™ Script Object Notation) 是一种用于移动、交互式应用程序的重要技术,它减少了模式设计的开销,消除了数据转换的需要。

DB2® Nosql JSON 使开发人员能够使用 MongoDB 创建的面向 JSON 的流行查询语言来编写应用程序,以便与 IBM® DB2 for Linux®,UNIX®,and Windows® 中存储的数据进行交互。这个基于驱动程序的解决方案提高了 RDBMS 上下文中的 JSON 数据表示的灵活性,该上下文提供了既有的企业特性和服务质量。此 DB2 Nosql JSON 功能支持一个命令行处理器、一个 Java API 和一个处理 JSON 文档的 Wire Listener。
本文将介绍 DB2 Nosql JSON 技术预览,本系列的后续文章还会进一步介绍它。


简介

一个新的应用程序开发时代

现在有一种新的应用程序演化风格,它受到多种揉合在一起的力量的推动。移动和社交应用程序的极速增多和普及激起人们通过电子途径进行更深入地交互。云计算使得计算资源随时可用,大数据技术的出现使得从 Internet、传感器和移动设备收集的海量数据中获取洞察成为可能。用户交互数据的可用性、对计算资源的轻松访问,以及大数据技术中的进步,这些使得企业能够比以往快得多的速度预测客户的行为和需要。所有这些力量相结合,为企业提供了以有意义的方式与其客户打交道的新机会。事实上,使用社交媒体和移动应用程序的用户期望应用程序更富吸引力,而且很容易通过许多规格的设备(具体来讲他们的移动设备)进行访问。

为了把握这些新机会,一个开发新应用程序的时代应运而生。应用程序不再需要 6 到 9 个月或更长时间才能完成从概念到部署的过程。应用程序能够迅速实现,以应对业务问题或机会,而且它们的寿命通常很短。许多不同技术可组合在一起快速实现解决方案,而 JavaScript 和 JSON(JavaScript 的数据表示语言)几乎是通用的。尽管这种开发应用程序的新方式最初出现在创业团队中,但越来越多的人利用它们来解决企业和公共领域的敏捷开发需要。

这些新应用程序最先是为移动设备而设计和提供的,它们推动了社交和移动交互的发展。企业目前希望快速为这些企业系统开辟通道,使它们能参与这些新的移动和社会交互。它们正从基于简单事务的世界转移到基于交互的世界。企业需要能够使用参与性系统扩展企业记录系统和为其提供补充,与此同时,需要保持企业功能完整无缺 — 健全性、隐私、安全和高可用性。IBM 在我们的 DB2 平台中实现了一个流行的 JSON API - MongoDB API,用它来促进 JSON 的这种用法。

什么是 JSON?

JSON (JavaScript Object Notation) 是IETF RFC 4627中指定的一种轻量型数据交换格式。它被设计为极小的、可移植、文本化的 JavaScript 子集,JSON 易于实现、容易阅读且容易使用。它不依赖于语言,因为大多数语言都拥有能与 JSON 轻松对应的特性。JSON 可用于在使用所有现代编程语言编写的程序之间交换数据。另外,由于 JSON 采用了文本格式,所以它容易被人类和机器阅读。

以下是一个 JSON 文档的简单示例:

清单 1. JSON 文档的一个简单示例
{"isbn": "123-456-222","author": 
   [
    {
      "firstname": "Doe","lastname": "Jane"
    },{
      "firstname": "Doe","lastname": "John"
    }
   ]
 "title": "The Ultimate Database Study Guide","abstract": "What you always wanted to kNow about databases and were afraid to ask","price": 28.00,"sales": 
    { qty: 1234,amt: 31532.50
    }
 "category": ["Non-Fiction","Technology"]
 "ratings": [10,5,32,78,112]
}

JSON 通过定义很少的一些概念,帮助实现结构化数据的可移植性。JSON 中的主要概念是对象,它是名称/值对的一个无需集合,其中的值可以是任何 JSON 值。JSON 中有 4 个可在大多数编程语言中通用的原子概念:

  1. 字符串
  2. 数字
  3. 布尔值
  4. 特殊的 “null” 值

数组引入了有序的值序列,这同样可以是具有前面提到的 4 种 JSON 类型之一的 JSON 值。JSON 对象可以嵌套,但通常不会嵌套很深。

尽管 JSON 是JavaScript 编程语言的子集,但它本质上是与语言无关的。大多数语言,无论新旧,都拥有可轻松地与 JSON 概念建立对应关系的特性。例如,哈希图、对象、结构、记录和关联数组都是与 JSON 对象类型相关的数据类型,而数组、矢量和列表类型与 JSON 数组类型相关。

为什么选择 JSON?

“我们在互操作方面需要达成一致的意见越少,我们就越容易实现互操作” - Doug Crawford,JavaScript,The Good Parts。

JSON 是应用程序新时代的首选数据交换格式。它的出现和流行有一些推动因素。最重要的因素是 JavaScript 的普遍性。JavaScript 无处不在!它赢得了浏览器战争,它进入了智能电话。最近,随着服务器端 JavaScript 框架的出现,它又在服务器端应用程序中流行起来,比如 node.js。

常常流传的对 JSON 的一种赞美是,它基于文本且不依赖于位置,但 XML 也拥有相同的特性。为什么 JSON 在 API 中大受欢迎,而不是 XML 大受欢迎呢?在 2011 年,Programmable Web 报告 1/5 的新 API 选择使用 JSON 而不是 XML,这一比例到 2012 年 12 月增长到了 1/4(参见参考资料一节,获取一个关于选择 JSON 而不是 XML 的博客主题的链接)。而且,许多既有的企业(比如 Box.net 和 YouTube)正在从 XML 转向 JSON。一些因素促成了这一转变。首先,JSON 更简单,它的所有操作都与对象相关。它没有试图成为一种文档标记语言,或者是数据交换语言。这种标记和交换语言的双重用途会使人们更难使用 XML。由于 JSON 的简单性,它更加紧凑,需要存储、流经网络并在移动和嵌入式设备上处理的信息更少。

鉴于此,JSON 成为了 Nosql 文档存储(比如 MongoDB 和 CouchDB)所利用的主要技术,这不足为奇。通过在数据库层中提供 JSON 支持,我们为新时代应用程序的开发人员带来了敏捷性(通过模式灵活性实现)。此外,JSON 使开发人员能够更容易配合他们选择的编程语言,支持直接本机存储从移动设备流经应用程序层,再流到磁盘的数据。这减少了数据转换和散发的开销。

图 1. DB2 JSON

什么是 DB2 Nosql JSON?

DB2 Nosql JSON 是一个基于驱动程序的解决方案,它在一个 RDBMS 的上下文内实现了 JSON 数据表示的灵活性,这个 RDBMS 提供了著名的企业特性和服务质量。借助此产品,用户可以使用一种模仿 MongoDB 数据模型和查询语言的 JSON 编程范式,编写 DB2 中需要的现代应用程序数据,这种编程范式已成为业界最流行且硕果累累的 JSON 数据存储之一。JSON 数据被存储为一种称为 BSON (Binary JSON) 的二进制编码格式。BSON 被设计为轻量型的数据,容易遍历,并且可以非常高效地进行编码和解码。此外,MongoDB 提供了对应用程序开发人员常用的其他数据类型(比如日期)的原生支持。这些扩展也已添加到 DB2 Nosql JSON 支持中。

使用 DB2 Nosql JSON,用户可通过许多方式与 JSON 数据进行交互。首先,他们可使用命令行 shell 管理和交互式地查询 JSON 数据。其次,他们可以编程方式存储和查询来自 Java 程序的数据,使用 IBM 提供的用于 JSON 的 Java 驱动程序,使用户能够通过用于 sql 访问的相同 JDBC 驱动程序连接到他们的 JSON 数据。最后,他们可使用任何实现MongoDB 协议的驱动程序。这使他们能够从各种现代语言(包括 node.js、PHP、Python 和 Ruby)以及更传统的语言(比如 C、C++ 和 Perl)访问他们的 DB2 Nosql JSON 存储。

这些功能的细节将在下面列出的一个配套文章系列中详细介绍:

  • 管理和查询 JSON 数据的命令行 shell(DB2 NoSQL JSON 功能,第 2 部分:使用命令行处理器)
  • 用于应用程序开发的 Java API(DB2 NoSQL JSON 功能,第 3 部分:使用 JAVA API)
  • 一个 Wire Listener(线侦听器)解释了 MongoDB 连接协议,并被用作 DB2 前面的网关。它接受并响应通过网络发送的请求(DB2 NoSQL JSON 功能,第 4 部分:使用 Wire Listener)。

回页首

DB2 Nosql JSON 支持概述

下图演示了 JSON API 支持的设置和控制流。

图 2. DB2 JSON 概述

DB2 Nosql JSON 命令行

DB2 Nosql JSON 命令行是一个命令 shell,用于对 JSON 文档集合执行管理命令,并对 JSON 集合运行查询和更新操作。它非常类似于 DB2 CLP 接口。

有关该命令行的更多信息,请参阅DB2 NoSQL JSON 功能,第 2 部分:使用命令行处理器。

DB2 Nosql JSON JAVA API

DB2 Nosql JSON Java API 提供了一组方法来存储、检索和操作 JSON 文档。这些方法可由原生 Java 应用程序直接通过 API 调用,以处理数据库中的文档。因为 DB2 是数据存储,所以此组件将方法调用中请求的操作转换为 sql 语句。

有关 Java API 的更多信息,请参阅 “DB2 NoSQL JSON 功能,第 3 部分:使用 JAVA API”。

DB2 for Nosql JSON Wire Listener

DB2 Nosql for JSON Wire Listener 是一个服务器应用程序,用于解释 Mongo Wire Protocol。它充当着 MongoDB 应用程序与 DB2 之间的一个中间层网关服务器。它利用 DB2 Nosql for JSON API 来连接 DB2 作为数据存储。用户可执行使用期望的应用编程语言(JAVA、NodeJS、PHP、Ruby 等)编写的 MongoDB 应用程序,或者可使用 MongoDB CLI 与 DB2进行 通信。有关 Wire Listener 的更多信息,请参阅 “DB2 NoSQL JSON 功能,第 4 部分:使用 Wire Listener”。

回页首

结束语

本文概述了 DB2 Nosql 技术预览,它使开发人员能够使用 MongoDB 创建的一种面向 JSON 的流行查询语言来编写应用程序,以便与 IBM DB2 for Linux,UNIX,and Windows 中存储的数据进行交互。

借助 DB2 JSON 支持,开发人员可获得两个领域的优势:敏捷性与 DB2 值得信赖的基础。用户无需淘汰并更换他们的 DB2 实现,就能够利用新应用程序时代中的敏捷范例。DB2 10.5 是第一个在同一个存储引擎中提供了关系、列式 (DB2 BLU)、XML 和 JSON 数据的系统。您现在能够利用 Nosql JSON 范例和灵活的模式来快速设计新应用程序的原型,通过参与性系统为企业记录系统提供补充,通过 DB2 BLU 列式存储为分析以及著名的关系应用程序提供快速存储。与此同时,您还可以保留传统的 DBMS 功能,并利用现有的技能和工具。

要找到该技术预览的下载图像的链接,请参见参考资料一节。

总结

以上是小编为你收集整理的DB2 NoSQL JSON 功能,第 1 部分: DB2 NoSQL JSON 介绍全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610, SQLERRMC...

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610, SQLERRMC...

写了一条 sql,在 db2 数据库中可以执行,但是转换成 mybatis 的 mapper 文件后,在执行排序操作时报该错误。

我排序是这样写的

<if test="orderStr != null">
ORDER BY #{orderStr}
</if>

看了一下其他地方的写法发现使用 $,而不是 #, 改成如下就可以了

<if test="orderStr != null">
ORDER BY ${orderStr}
</if>

 

DB2 NoSQL JSON资料索引

DB2 NoSQL JSON资料索引

(大致喵了一下,和mongodb基本完全一样)

安装成功后的DB2 10.5 FP1目录下的readme不错!值得一看
C:\IBM\SQLLIB\json\readme.txt


然后是以下四篇文章 

http://www.ibm.com/Search/?q=DB2+NoSQL+JSON&v=17&en=utf&lang=en&cc=us

DB2 JSON capabilities, Part 1: Introduction to DB2 JSON

DB2 JSON capabilities, Part 2: Using the command-line processor

DB2 JSON capabilities, Part 3: Writing applications with the Java API

DB2 JSON capabilities, Part 4: Using the IBM NoSQL Wire Listener ...

db2 SQL1390C 环境变量 db2instance 未定义

db2 SQL1390C 环境变量 db2instance 未定义

1. 在运行中输入 "CMD", 进入命令窗口
2. 输入如下命令:db2icrt db2
3. 输入如下命令:set db2instance=db2 

db2 数据库表操作错误 SQL0668N Operation not allowed for reason code

db2 数据库表操作错误 SQL0668N Operation not allowed for reason code "1" on table "表". S...

 

错误 sql

Operation not allowed for reason code "1" on table "MARKET.PURE_USER".. SQLC

//执行sql
select * from PURE_USER

  

可能有一行或多行违反了对数据定义的约
束。此表不能用于操作。若从属表处于检查暂挂状态,则对不处于检查暂挂
状态的父表的操作也可能接收到此错误。 

用户响应:执行带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY
语句,并确保数据符合对该表或从属于它的表定义的所有约束。

//解决:
set integrity for 表名 immediate checked

  

对表进行任何操作都不被允许,提示 SQLSTATE=57016 SQLCODE=-668 ,原因码 "7" 的错误:SQL0668N Operation not allowed for reason code "7" on table XXX. 解决方法为:

//执行 
CALL SYSPROC.ADMIN_CMD(''reorg table 表名'')  

参考原文为:
Operation not allowed for reason code reason-code on table table-name.
Explanation: Access to table table-name is restricted. The cause is based on the following reason codes reason-code: 7
The table is in the reorg pending state. This can occur after an ALTER TABLE statement containing a REORG-recommended operation.7
Reorganize the table using the REORG TABLE command (note that INPLACE REORG TABLE is not allowed for a table that is in the reorg pending state).
其中:
reorg table <tablename> 通过重构行来消除 “碎片” 数据并压缩信息,对表进行重组。
runstats on table <tbschema>.<tbname> 收集表 <tbname> 的统计信息。
reorgchk on table all 确定是否需要对表进行重组,对于对所有表自动执行 runstats 很有用。
>>> reorg 和 runstats 都是单个表优化,初始化的命令: 
runstats on table administrator.test;
reorg table administrator.test;

关于DB2 NoSQL JSON 功能,第 1 部分: DB2 NoSQL JSON 介绍db2not in的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610, SQLERRMC...、DB2 NoSQL JSON资料索引、db2 SQL1390C 环境变量 db2instance 未定义、db2 数据库表操作错误 SQL0668N Operation not allowed for reason code "1" on table "表". S...等相关内容,可以在本站寻找。

本文标签:

上一篇NoSQL之Redis - CentOS 6.5安装测试(centos yum安装redis)

下一篇nosql数据库STSDB的一般性使用