Skip to content

7. Altibase Node.js 커넥터(node-odbc-altibase)#

node-odbc-altibase 개요#

node-odbc-altibase는 자바스크립트 기반의 애플리케이션에서 Altibase 서버에 접근할 수 있게 도와주는 드라이버이다.

node-odbc-altibase는 기존에 존재하던 node-odbc 드라이버를 fork하여 개발 되었으며 내부적으로는 ODBC를 사용한다.

node-odbc-altibase에 대한 자세한 내용은 npm의 node-odbc-altibase를 참고한다.


요구사항#

  • Altibase ODBC 라이브러리

    • ODBC 라이브러리는 Node.js 커넥터와는 별도로 설치해야 한다. Altibase ODBC 설치방법은 ODBC User's Manual을 참고한다.
  • Altibase 7.3.0.0.5 이상

  • Noje.js 18, 20, 22

지원 OS#

Node.js가 지원하는 OS 중에서 Altibase 7.3 클라이언트가 지원하는 OS이다.


node-odbc-altibase 사용 방법#

설치#

node-odbc-altibase 다운로드#

node-odbc-altibase는 npm 사이트를 통해 제공되며, 다음과 같이 npm 명령어를 이용해 설치할 수 있다.

$ npm install node-odbc-altibase

기본적으로 node-odbc-altibase는 SQLLEN 8 셋팅으로 설치가 된다. 만약, SQLLEN 4용 ODBC Manager를 사용한다면, 아래의 SQLLEN 4 모드로 설치 방법을 참고하여 바이너리 모듈을 직접 빌드해서 사용해야 한다.

SQLLEN 4 모드로 설치 방법#
  • 소스 다운로드 url: https://github.com/ALTIBASE/node-odbc-altibase

    GitHub 에서 소스를 다운로드한 다음, 아래와 같이 설정 후 odbc 바이너리 모듈을 직접 빌드한다.

    export CXXFLAGS=-DBUILD_LEGACY_64_BIT_MODE=1
    $ npm run build
    

node-odbc-altibase 사용 선언#

자바스크립트 기반의 애플리케이션에서 node-odbc-altibase를 사용하려면 먼저 아래와 같이 선언해야 한다.

const odbc = require('node-odbc-altibase');

연결 설정#

이 절에서는 자바스크립트 기반의 애플리케이션에서 Altibase에 접속하는 방법을 설명한다.

constructor: odbc.connect(connectionString, callback?)
  • connectionString: 일반적으로 DSN의 이름을 지정할 수도 있고 다음과 같은 속성을 가진 구성 객체일 수도 있다.
    • connectionString(필수): 데이터베이스에 연결할 연결 문자열.
    • connectionTimeout: 연결 요청이 완료되어 애플리케이션으로 돌아가기 전까지 대기하는 최대 시간(초)
    • loginTimeout : 연결 시도 중 대기할 수 있는 최대 시간(초)
  • callback?
    • 연결이 완료되었을 때 호출되는 함수이다. 콜백 함수가 지정되지 않으면 자바스크립트의 네이티브 프로미스 객체를 반환한다. 콜백 함수는 다음의 두가지 매개변수를 갖는다.
      • error: 실행 중에 발생한 오류 또는 오류가 없는 경우 null
      • connection: 연결에 성공한 경우의 Connection 객체
    • ? 는 생략가능함을 나타낸다.

예제 1: 연결 문자열 사용

const odbc = require('node-odbc-altibase');
const connection1 = await odbc.connect('DSN=MYDSN');

예제 2: 연결 구성 객체 사용

const odbc = require('node-odbc-altibase');

const connectionConfig = {
    connectionString: 'DSN=MYDSN',
    connectionTimeout: 10,
    loginTimeout: 10,
}
const connection1 = await odbc.connect(connectionConfig);

연결 풀링#

연결 풀을 가져오기 위해서는 node-odbc-altibase에서 제공하는 pool 함수를 사용해야 한다. 이 함수를 사용하면 여러 연결 풀이 비동기적으로 생성되어 사용자에게 반환되며, 다른 비동기 함수와 마찬가지로 콜백 함수 또는 프로미스를 사용하여 작업을 수행할 수 있다.

constructor: odbc.pool(connectionString, callback?)
  • connectionString: 일반적으로 DSN의 이름을 지정하며 풀의 모든 연결에 대해 데이터베이스에 연결할 연결 문자열을 나타낸다. 또는 다음 속성을 가진 구성 객체일 수도 있다.
    • connectionString(필수): 데이터베이스에 연결할 연결 문자열
    • connectionTimeout: 연결 요청이 완료되어 애플리케이션으로 돌아가기 전까지 대기하는 최대 시간(초)
    • loginTimeout: 연결 시도 중 대기할 수 있는 최대 시간(초)
    • initialSize: 풀에서 생성되는 초기 연결 수
    • incrementSize: 풀의 연결이 새로 생성될 때 생성할 추가 연결 수
    • maxSize: 풀이 만들어 질 수 있는 연결의 최대 수
    • reuseConnections: 새 연결을 만드는 대신 기존 연결을 다시 사용할지 여부
    • shrink: 연결이 해제됨에 따라 풀의 크기를 축소해야 하는지 여부
  • callback?: 연결이 완료되었을 때 호출되는 함수이다. 콜백 함수가 지정되지 않으면 자바스크립트의 네이티브 프로미스 객체를 반환한다. 콜백 함수는 다음의 두가지 매개변수를 갖는다.
    • error: 실행 중에 발생한 오류 또는 오류가 없는 경우 null
    • connection: 연결에 성공한 경우 생성된 Connection 객체

예제:

const odbc = require('node-odbc-altibase');

async function createPool() {
    const pool = await odbc.pool(`${process.env.CONNECTION_STRING}`);
}

트랜잭션 처리#

beginTransaction#

트랜잭션을 시작하려면 beginTransaction()함수를 사용해야 한다. 이때 생성된 트랜잭션은 커밋이나 롤백을 통해 처리할 수 있다.

.beginTransaction(callback?)
  • callback?: 실행이 완료되었을 때 호출되는 함수이다. 콜백 함수가 지정되지 않으면 자바스크립트의 네이티브 프로미스 객체를 반환한다. 콜백 함수는 다음의 매개변수를 갖는다.
    • error: 실행 중에 발생한 오류 또는 오류가 없는 경우 null

예제:

const odbc = require('node-odbc-altibase');

async function transaction() {
    const connection = await odbc.connect(`${process.env.CONNECTION_STRING}`);
    await connection.beginTransaction();
    // transaction is now open
}

transaction();

commit#

트랜잭션을 커밋한다. 만약 오픈된 트랜잭션이 없을 경우에는 아무일도 일어나지 않는다.

.commit(callback?)
  • allback?: 실행이 완료되었을때 호출되는 함수이다. 콜백 함수가 지정되지 않으면 자바스크립트의 네이티브 프로미스 객체를 반환한다. 콜백 함수는 다음의 매개변수를 갖는다.
    • error: 실행 중에 발생한 오류 또는 오류가 없는 경우 null

예제:

const odbc = require('node-odbc-altibase');

async function commitTransaction() {
    const connection = await odbc.connect(`${process.env.CONNECTION_STRING}`);
    await connection.beginTransaction();
    const insertResult = await connection.query('INSERT INTO MY_TABLE VALUES(1, \'Name\')');
    await connection.commit();
    // INSERT query has now been committed
}

commitTransaction();

rollback#

트랜잭션을 롤백한다. 만약 오픈된 트랜잭션이 없을 경우에는 아무일도 일어나지 않는다.

.rollback(callback?)
  • callback? : 콜백 함수가 지정되지 않으면 자바스크립트의 네이티브 프로미스 객체를 반환한다. 콜백 함수는 다음의 매개변수를 갖는다.
  • error: 실행 중에 발생한 오류 또는 오류가 없는 경우 null

예제:

const odbc = require('node-odbc-altibase');

async function rollbackTransaction() {
    const connection = await odbc.connect(`${process.env.CONNECTION_STRING}`);
    await connection.beginTransaction();
    const insertResult = await connection.query('INSERT INTO MY_TABLE VALUES(1, \'Name\')');
    await connection.rollback();
    // INSERT query has now been rolled back
}

rollbackTransaction();

API#

자세한 내용은 GitHub 문서를 참조한다.