Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Current Events
Join our developers event to win one of the valuable prizes!
posted 2 years ago
viewed 2779 times
Share this article

CUBRID Database driver for Node.js coming this August

cubrid_node_logo.png

Hello our dear reader,

We have been receiving many requests from the community lately to develop a Node.js driver for CUBRID. Today I am very glad to announce that we have started the Node.js driver development and the first version will be available already this August.

Preparation

We have done a lot of research on what approach we should take when developing a Node driver for CUBRID Database. We have identified two main streams for database driver development for Node.js:

  1. Dynamic database library linking
  2. Native JavaScript approach

Below are the pros and cons we have identified for each of them.

Dynamic database library linking

Advantages

  • The driver will not be affected by internal CUBRID protocol change because the dynamic CCI library will handle it.
  • Coding the driver functionality will be easier because no extra coding is required to implement the sockets protocol in JavaScript.

Disadvantages

  • Too many dependencies and a "heavier" project.
  • It is completely dependent on both architecture (x32/x64) and OS.
  • Accordingly, many distributions and packages must be made available.
  • Unlikely to provide 100% asynchronous execution.

Native JavaScript approach

Advantages

  • Will be independent from any CUBRID API.
  • Will not require multiple distributions: x32, x64, Windows, Linux etc. Only one single JavaScript library!
  • 100% asynchronous execution.
  • Verified and most preferable choice by users.
  • Can refer to existing implementations experience/models.

Disadvantages

  • More JavaScript code (needed for the communication protocol implementation).
  • Might require updates if the communication protocol is changed in the future.

Based on the above information and the feedback we have received from CUBRID users, we have decided to develop a native fully asynchronous JavaScript driver for CUBRID. We will develop all the communications with the CUBRID engine via sockets protocol. The Business Abstraction intermediate layer will be implemented to "hide" the socket packets specifics and minimize this way the impact of any future changes in the communications protocol.

node-db driver

After we release the stable version of native JavaScript driver for CUBRID, we also decided to develop a node-db compatible driver for CUBRID. We have seen some of the work has already been done by other users. So at the end you can expect two drivers to use with Node.js.

Development 

Unlike with other CUBRID APIs, this time we will follow an agile project management approach with short iterations of design, code and test. No more testing coverage added only after big chunks of code is implemented. Thus, we can receive community feedback and deliver quality product faster.

Hosting

The project will be hosted at https://github.com/CUBRID/node-cubrid.

QA and testing

  • Tools:
    • Visual Studio, ReSharper/WebStorm, Firefox + Firebug
  • Coverage goal:
    • At least one test case per interface & function
    • E2E scenarios
    • 60%+ code coverage  
  • Performance test based on https://github.com/sidorares/node-mysql-bindings-benchmarks.
  • Project unit & integration test framework(s):
  • Tests will be performed on Windows and Linux.

Release Schedule

We will have 5 milestones. Each milestone will deliver a complete working prototype:

  • Milestone 1: Basic driver interfaces: connect, queries support + result set - 3rd week of August.
  • Milestone 2: Technology preview: 80% functionality ready - 2nd week of September.
  • Milestone 3: Beta release: > 95% functionality ready - 1st week of October.
  • Milestone 4: Stable release: 100% functionality ready- end of October.
  • Milestone 5: NPM Package and tutorials - beginning of November.

The main driver release will be followed by the node-db driver release.

If you have questions, feel free to ask in our Q&A site, forum, twitter or Facebook page.



comments powered by Disqus