Posting

Machbase의 최신 소식을 지금 만나보세요

[MACHBASE JS] nodeJS 설치

마크베이스(Machbase)를 위한 nodejs 설치 하기

들어가며

웹 기반의 많은 응용 프로그램들이 출현하면서 자바스크립트를 기반으로 한 혁신적인 기술이 개발되었고, 그 중에 하나가 바로 이 nodejs 가 아닌가 한다.

이 nodejs는 자바스크립트를 기반으로 서버급의 빠른 응용 어플리케이션을 개발할 수 있게 해 주는 좋은 도구이다.

이 블로그에서는 nodejs와 마크베이스와의 연동을 통해 손쉽게 데이터를 웹기반으로 주고 받을 수 있도록 하는 과정에 대해 기술한다.

그리고, 마크베이스와 nodejs는 JDBC 드라이버를 통해 서로 통신하도록 하는 방법을 채택하였다.

사용된 환경은 마크베이스가 설치된 도커 이미지(ubuntu 14.04)를 사용했으나, 얼마든지 자신의 환경에 따라 변경이 가능할 것이다.

도커 기반의 마크베이스를 사용하는 법은 다음의 링크를 참조한다.

마크베이스 도커(Docker)에서 설치 및 실행하기

nodejs의 설치

패키지 다운 로드

nodejs는 nodejs.org 라는 공식 홈페이지에서 개발 및 배포하고 있다. 이 곳에서 자신의 적절한 환경에 맞는 패키지를 다운 받으면 된다. 여기에서는 Linux Binaries(x64)를  받아서 설치하는 것으로 하겠다.

wget https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz

패키지 압축 풀기

다운 받은 패키지는 다음과 같다.

machbase@d33024ca8d74:~/nodejs$ ls -al total 9148 drwxr-xr-x 2 machbase machbase    4096 Sep  9 06:12 . drwxr-xr-x 9 machbase machbase    4096 Sep  9 06:12 .. -rw-r--r-- 1 machbase machbase 9356032 Sep  9 06:12 node-v6.11.3-linux-x64.tar.xz 
xz 유틸리티가 없는 경우에는 (우분투) 다음과 같이 설치한다.
sudo apt-get update sudo apt-get install xz-utils

다음과 같이 압축을 푼다.

xz -d node-v6.11.3-linux-x64.tar.xz

수행되면 아래의 파일이 생성된다.
node-v6.11.3-linux-x64.tar
이제 압축을 풀어주세요.

tar -xvf node-v6.11.3-linux-x64.tar

압축이 모두 풀리면 다음과 같은 디렉토리 구성이 된다.

achbase@d33024ca8d74:~/nodejs/node-v6.11.3-linux-x64$ ls -al total 164 drwxr-xr-x 6 machbase machbase 4096 Sep 5 17:15 . drwxr-xr-x 3 machbase machbase 4096 Sep 9 06:25 .. -rw-r--r-- 1 machbase machbase 56054 Sep 5 17:15 CHANGELOG.md -rw-r--r-- 1 machbase machbase 60255 Sep 5 17:15 LICENSE -rw-r--r-- 1 machbase machbase 23304 Sep 5 17:15 README.md drwxr-xr-x 2 machbase machbase 4096 Sep 5 17:15 bin drwxr-xr-x 3 machbase machbase 4096 Sep 5 17:15 include drwxr-xr-x 3 machbase machbase 4096 Sep 5 17:14 lib drwxr-xr-x 5 machbase machbase 4096 Sep 5 17:14 share machbase@d33024ca8d74:~/nodejs/node-v6.11.3-linux-x64$

런타임 패스 설정

실제 nodejs의 실행환경을 가져오기 위해 다음과 같이 bin 패스를 설정한다.

machbase@d33024ca8d74:~/nodejs/node-v6.11.3-linux-x64$ pwd /home/machbase/nodejs/node-v6.11.3-linux-x64
machbase@d33024ca8d74:~/nodejs/node-v6.11.3-linux-x64$ export PATH=$PATH:/home/machbase/nodejs/node-v6.11.3-linux-x64/bin
machbase@d33024ca8d74:~/nodejs/node-v6.11.3-linux-x64$ which node /home/machbase/nodejs/node-v6.11.3-linux-x64/bin/node



위와 같이 node 라는 실행화일이 설치된 것을 볼 수 있다.

도커를 위한 부가 패키지 설치(optional)

이 글에서 사용하는 공식 도커 패키지는 아무것도 설치되어 있지 않기에 다음과 같은 패키지를 설치한다.

다른 리눅스 패키지를 활용하는 경우 필요 없다.

sudo apt-get install default-jdk make g++ 

NPM 모듈 설치

마크베이스를 위한 전용 nodejs 모듈이 없기 때문에 jdbc를 통해 nodejs를 구동할 수 있는 모듈을 미리 설치해야 한다.

그 중에 대표적인 jdbc 모듈을 아래와 같이 설치한다.

machbase@d33024ca8d74:~/nodejs/node-v6.11.3-linux-x64$ npm install jdbc > java@0.8.0 install /home/machbase/nodejs/node-v6.11.3-linux-x64/node_modules/java > node-gyp rebuild ............... 생략 ............. `-- jdbc@0.5.1    `-- java@0.8.0      +-- async@2.0.1      +-- find-java-home@0.1.3      | `-- which@1.0.9      +-- glob@7.1.1      | +-- fs.realpath@1.0.0      | +-- inflight@1.0.6      | | `-- wrappy@1.0.2      | +-- inherits@2.0.3      | +-- minimatch@3.0.4      | | `-- brace-expansion@1.1.8      | |   +-- balanced-match@1.0.0      | |   `-- concat-map@0.0.1      | +-- once@1.4.0      | `-- path-is-absolute@1.0.1      +-- lodash@4.16.4      `-- nan@2.4.0   npm WARN enoent ENOENT: no such file or directory, open '/home/machbase/nodejs/node-v6.11.3-linux-x64/package.json' npm WARN node-v6.11.3-linux-x64 No description npm WARN node-v6.11.3-linux-x64 No repository field. npm WARN node-v6.11.3-linux-x64 No README data npm WARN node-v6.11.3-linux-x64 No license field.

테스트를 위한 simple.js 만들기

다음은 JDBC 드라이버를 활용하여, v$tables 에서 테이블을 가져오는 질의인 select * from v$tables를 수행하는 js 화일 소스코드이다.

var JDBC = require('jdbc'); var jinst = require('jdbc/lib/jinst');  if (!jinst.isJvmCreated()) {     jinst.addOption("-Xrs");     jinst.setupClasspath(['/home/machbase/machbase_home/lib/machbase.jar']); }  var config = {     url :'jdbc:machbase://localhost:5656/mhdb',     drivername: 'com.machbase.jdbc.driver',     minpoolsize: 10,     maxpoolsize: 100,     user: 'SYS',     password: 'MANAGER',     properties: {} };  var machdb = new JDBC(config);  machdb.initialize(function(err) {     if (err) {         console.log(err);     } });  machdb.reserve(function(err, connObj) {     var conn = connObj.conn;     conn.createStatement(function(err, statement) {         if (err) {             callback(err);         } else {             statement.executeQuery("SELECT * FROM v$tables limit 3;", function(err, resultset) {                 if (err) {                     callback(err)                 } else {                     // Convert the result set to an object array.                     resultset.toObjArray(function(err, results) {                         if (results.length > 0) {                             console.log(results);                         }                     });                 }             });         }     }); }); 

위에서 중요한 부분은 다음과 같다.
  • 마크베이스가 설치된 디렉토리의 jar 라이브러리를 지정해야 한다.
    
    
    
    
    
    /home/machbase/machbase_home/lib/machbase.jar
    
    
    
    
    
    • JDBC URL을 다음과 같이 지정한다. (포트와 호스트IP를 적절하게 변경한다)
    
    
    
    
    
    jdbc:machbase://localhost:5656/mhdb
    
    
    
    
    
    • 드라이버 Name도 적절하게 지정한다.
    
    
    
    
    
    com.machbase.jdbc.driver
    
    
    
    
    

    simple.js 실행하기

    실행 화면은 다음과 같다.

    machbase@d33024ca8d74:~/nodejs$ node simple.js  [ { NAME: 'V$STORAGE_DC_TABLESPACES',     TYPE: 1,     DATABASE_ID: '-1',     ID: '1000018',     USER_ID: 0,     COLCOUNT: 7 },   { NAME: 'V$STORAGE_DC_TABLESPACE_DISKS',     TYPE: 1,     DATABASE_ID: '-1',     ID: '1000019',     USER_ID: 0,     COLCOUNT: 9 },   { NAME: 'V$STORAGE_DC_DWFILES',     TYPE: 1,     DATABASE_ID: '-1',     ID: '1000027',     USER_ID: 0,     COLCOUNT: 16 } ] machbase@d33024ca8d74:~/nodejs$  
    

    위와 같이 성공적으로 nodejs를 활용하여 마크베이스로부터 데이터를 읽는 코드가 완성되었다.

    Contact the Machbase team with your questions!
    info@machbase.com

    연관 포스트

    C언어로 Binary data를 Machbase에 넣기

    1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

    [MACHBASE 연동] Android studio에서 JDBC 연결하기

    마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을