node-oracledb 是一个 Oracle 数据库的 Node.js 驱动,由 Oracle 官方基于 Apache License V2.0 开源协议发布和维护,其代码托管在 GitHub 上。Oracle 官方声称能够支持高性能的 Node.js 应用。目前该驱动的最新版本是 0.2 预览版。目前,开发团队还在不断完善相关功能。
Node-oracledb 0.2 预览版已实现了所支持的基本和高级的 Oracle 特性,具体内容如下:
- 实现 SQL 和 PL/SQL 的执行
- 利用 JavaScript 对象或数组绑定查询结果集
- 将查询结果集以 JavaScript 对象或数组形式返回
- 实现 JavaScript 和 Oracle 类型间对应转换
- 支持连接池和事务管理
- 支持 Statement 缓存,为数据库连接会话提供和管理已缓存的 Statement,从而提高应用程序的性能和可扩展性
- 支持客户端结果集缓存,从而提高了应用程序重复查询的响应时间
- 支持端到端的应用程序的跟踪调试,从而能够跟踪并查找出高负载 SQL 语句
- 实现了进程间的高效通知机制 (FAN) 、实现了运行时的负载平衡机制 (RLB) 、实现了透明的] 失效备援机制 (TAF) ,所以具有高可用性
基于 node-oracledb 实现的简单 SELECT 查询的示例代码如下:
var oracledb = require('oracledb'); oracledb.getConnection( { user : "hr", password : "welcome", connectString : "localhost/XE" }, function(err, connection) { if (err) { console.error(err.message); return; } connection.execute( "SELECT department_id, department_name " + "FROM departments " + "WHERE department_id = :did", [180], function(err, result) { if (err) { console.error(err.message); return; } console.log(result.rows); }); });
从 Oracle 的官方博客中得知,node-oracledb 开发团队还在开发团队不断完善相关功能,包括对Windows 平台、LOB、批量查询结果集的流处理以及DRCP 连接方式支持等,以及在npmjs.com 实现标准的npm 安装和发布相关测试套件。
Oracle 官方博客用户 anis 评论道:
真是棒极了,如果 Oracle 一直同 HTML5 领域和现代开发环境保持同步的话,Oracle 的未来将是一片光明。Node.js 将在成熟企业和初创公司变得越来越重要,所以 Oracle 决定提供官方的 Node.js 驱动支持意味着许多开发人员、DBA 能够在开发处理他们相关业务的高级应用中能够利用他们的辛勤学到的 Oracle 数据库的知识。
node-oracledb 是 Oracle 官方提供的 Node.js 驱动,微软也为 Node.js 提供了 SQL Server 的驱动。另外还有第三方提供的一些关系数据库的驱动,如 Oracle 驱动 node-oracle 、MySQL 驱动 node-db ,而 Node.js 访问 NoSQL 一类数据库 (如 MongoDB 和 CouchDB) 多是基于数据库提供的 JSON 的 API 来实现的。
读者可以在 Oracle 技术网络站点中的 Node.js 论坛里分享大家的反馈以及通过 GitHub 的 issues 页面反馈 node-oracledb 的 Bug。有关 node-oracledb 的相关信息,请读者登录其官方主页查看。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论