oracle / node-oracledb

Oracle Database driver for Node.js maintained by Oracle Corp.
http://oracle.github.io/node-oracledb/
Other
2.26k stars 1.08k forks source link

Node-oracledb 1.x and 2.x: Plans for 2017 #601

Closed cjbj closed 7 years ago

cjbj commented 7 years ago

I wanted to give you all an update about the strong year ahead for node-oracledb. In the short term we want to release node-oracledb 1.13. This will be enhanced to allow BLOBs to be fetched as Buffers (an alternative to the current streaming method). A new fetchAsBuffer mode will be a counterpart to the node-oracledb 1.12 feature that allows CLOBs to be fetched as Strings. There will also be some small bug fixes, doc improvements etc, as normal.

In the medium term, there are bigger plans this year. If you haven't already heard, read about the ODPI-C release on GitHub. This is a refactoring of the thin DPI database access layer that has successfully been the "bottom-half" of node-oracledb 1.x. Having ODPI-C as a standalone project makes it easier for other projects to use and share the same features. What does this mean for node-oracledb?

While node-oracledb 1.13 will be a straightforward evolution of the current node-oracledb 1.x code base, a subsequent node-oracledb 2.x branch will use ODPI-C instead of DPI.

Once node-oracledb 2.x stabilizes, new features will be added only to node-oracledb 2.x while node-oracledb 1.x will go into maintenance mode. Maintenance of node-oracledb 1.x will end on 1st April 2018, coinciding with the end-of-life of Node 4. New versions of NAN - Node's compatibility layer will only be taken into node-oracledb 1.x to resolve bug fixes, so if you want Node.js 8+ support you should look at using node-oracledb 2.x.

After node-oracledb 1.13 is out we'll create a development branch of 2.x for you to poke at. Initially 2.x will have the same functionality as node-oracledb 1.x. Since ODPI-C is very thin, node-oracledb 2.x should stabilize relatively quickly and migration of your applications from node-oracledb 1.x to 2.x should be a no-brainer. Most of what makes node-oracledb great will remain unchanged: the bulk of its functionality is provided by Oracle client libraries, and by the NJS code layer that interacts with Node.js, exposing the node-oracledb API.

As with all open source, feature development is all a matter of time and priorities. You know I can't commit to when, or if, node-oracledb will expose the various new and advanced database features that ODPI-C supports, but the year ahead looks exciting.

Stay tuned.

sagiegurari commented 7 years ago

thanks for the update :+1:

question about ODPI-C, I read the blog post, but I'm not sure if this will be something that we will have to installed on top of the oci in the machine or will it be installed automatically once I install node-oracledb via npm? If it is on top, it will add even more complexity to the installation which is already complex to begin with.

anthony-tuininga commented 7 years ago

Although ODPI-C can be built as a shared library it can also simply be compiled along with the application or driver that is using it. This is the plan for the node-oracledb driver. Effectively it will simply be taking the place of the original DPI layer so no additional complexities for installation are required! The ODPI-C repository will be added as a git submodule -- so that whatever version of the ODPI-C library is required for a particular node-oracledb version will automatically be present in the same repository as node-oracledb. It should (in theory!) be very little changes for you. When the new version is released for your review we will definitely appreciate any feedback you can give.

sagiegurari commented 7 years ago

thanks for the clarification, sounds good to me.

anthony-tuininga commented 7 years ago

No problem.

sreenivasulun commented 7 years ago

thanks for the update :+1:

michaelabuckley commented 7 years ago

Sounds well planned. Low risk.

cjbj commented 7 years ago

Just an update on node-oracledb v2 - there is progress. Testers are filing issues; @anthony-tuininga has been updating odpi-c and @pvenkatraman is getting up to speed with it; a lot of time was spent tracking down a nasty, obscure test failure with LOBs; small, blocking issues with external authentication and pool connection release due to ODPI-C's slightly different model have been addressed. Overall, I have yet to do a full review of what needs attention and review and documentation before we can push out a Beta.

Also we're tracking ODPI-C's use in Python's cx_Oracle 6.x e.g. https://github.com/oracle/python-cx_Oracle/issues/15. Comments welcome.

jeffm13 commented 7 years ago

Any chance V2 will run on Alpine Linux?

cjbj commented 7 years ago

@jeffm13 if SQL*Plus works, then so should node-oracledb (and cx_Oracle and ruby-oci8 etc). But I believe Alpine may not have the C library functionality required - unless advances have been made.

cjbj commented 7 years ago

In case you're wondering, our current plan is to push the first node-oracledb v2 dev release to GitHub next week. There are still some warts - our testers have been busy - but it's looking good overall. The fundamental change in this first v2 is the use of ODPI-C. There are some extra data types supported now, courtesy of ODPI-C, which is nice. More things will come in future, I'm sure.

cjbj commented 7 years ago

I've pushed the first v2 dev release. Check the release announcement. Thanks for your patience. And thanks to everyone who has contributed.

I'll track known issues in #716.

We're still planning that maintenance of node-oracledb 1.x will end on 1st April 2018, coinciding with the end-of-life of Node 4.

cjbj commented 1 year ago

Any chance V2 will run on Alpine Linux?

@jeffm13 we got there in the end: v6 runs on Alpine Linux !