Node-oracledb 6.6 brings more vector and configuration capabilities to support Oracle Database 23ai

Sharad Chandran
Oracle Developers
Published in
3 min readJul 25, 2024
Photo by Onur Binay on Unsplash

Release announcement: A new release of node-oracledb, the Node.js and TypeScript module for accessing Oracle Database, is available from npm.

Continuing with the theme of the previous release, node-oracledb 6.6 brings further support to the latest Oracle Database 23ai features like BINARY Vectors and Centralized Configuration Providers. It also introduces support for Oracle’s BFILE datatype, Two-Phase Commits (in Thin mode) and in-memory wallets for authentication.

Another good news is that the macOS ARM64 binaries are now available with node-oracledb, thanks to the availability of macOS ARM64 Instant Client.

BINARY Vector support
BINARY Vector is the latest addition to Oracle Database 23ai Vector types. With the new BINARY vector format, the value of each vector dimension can be represented as a single bit (0 or 1). Node-oracledb 6.6 supports the BINARY vector format in both Thin and Thick modes.

Centralized Configuration Providers Support
Centralized Configuration Providers enable users to centrally store and manage the configuration information of their application in a single location on the cloud. They enable users to isolate the configuration settings from their application code.

With node-oracledb 6.6, users can now retrieve configuration information from two cloud-based Centralized Configuration ProvidersMicrosoft Azure App Configuration and Oracle Cloud Infrastructure (OCI) Object Storage and connect to Oracle Database.

Two-Phase Commit Support in Thin Mode
In distributed transaction processing involving altering data on multiple Oracle Databases, the two-phase commit mechanism ensures that the entire transaction commits, or the entire transaction rolls back.

Node-oracledb Thin mode now supports Two-Phase Commits. This support was already available in Thick mode.

BFILE Support
BFILEs are data objects stored in operating system files, outside the database tablespaces. BFILEs are read-only data types. The database allows read-only byte stream access to data stored in BFILEs. Users cannot write to or update the contents of a BFILE from within their application. BFILEs are fetched as LOBs in node-oracledb.

The new lob.fileExists() method checks if the file specified by the LOB exists in the directory alias or not. The new synchronous methods, lob.getDirFileName() and lob.setDirFileName() are used to get and set the directory alias and file name of the BFILE LOB object, respectively.

Other Features and Updates
A very useful feature in node-oracledb 6.6 is the support of ‘in-memory’ wallets. In this case, the user does not need to point to a wallet location to get the wallet contents for authentication. They can directly specify the security credentials in the walletContent property of oracledb.createPool() and oracledb.getConnection().

Node-oracledb now can also connect to Oracle Database using tnsnames.ora files that contain IFILE directives.

Last, but not by any means least, we have fixed multiple internal and external issues raised by our GitHub users.

See the latest Release Notes for all the changes.

Installing or Upgrading node-oracledb

You can install or upgrade node-oracledb by updating your package.json requirements:

"dependencies": {
"oracledb": "^6.6"
},

Resources

Finally, contributions to node-oracledb are more than welcome, see CONTRIBUTING.

--

--

Sharad Chandran
Oracle Developers

Sharad Chandran is a Principal Product Manager at Oracle driving development of client interfaces & APIs for Oracle Database in C/C++, Python, Node.js, Go etc.