Skip to content

postgreSQL, Oracle, MySQL 의 Pool 객체를 추상화 시켜 사용하기 쉽게 만든 라이브러리

License

Notifications You must be signed in to change notification settings

SejongGroup/sejong-db-connection-pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

db-connection-pool

db-connection-pool 라이브러리는 Mysql 사용자와 Oracle 사용자 및 PostgreSQL 사용자를 위해 만들었습니다.

요약

해당 라이브러리는 MySQL과 PostgreSQL 및 Oracle의 사용을 여러대 사용하거나, 여러 서버에서 같은 설정파일을 이용하여 데이터베이스를 관리 및 접근할 때 유용할 것입니다.

설정파일을 통해 데이터베이스를 만들고, 데이터베이스의 접근은 사전에 만들어 놓은 Pool 객체에서 Connection 객체를 통해 접근하실 수 있습니다.

아래 설정을 통해 데이터베이스를 쉽게 접근하세요.

Installation

From npm:

npm install --save db-connection-pool

Usage

Importing

이 라이브러리는 CJS 형태로 제공되며 자바스크립트와 타입스크립트 프로젝트 모두에서 사용할 수 있습니다.

아래는 CJS 형태에서 임포트를 하기 위한 방법입니다.

const { dbInstance } = require("db-connection-pool");

Examples

먼저 데이터베이스의 설정 파일을 정의합니다.

[postgresql1]
host=localhost
user=postgres
password=root
idleTimeoutMillis=30000
connectionTimeoutMillis=2000
max=20

[mysql1]
host=localhost
user=root
password=root
port=3306
database=test
connectionLimit=4

[oracle1]
user=root
password=root
connectString=localhost/XE
poolAlias=cdr1
poolIncrement=0
poolMax=4
poolMin=4
poolPingInterval=30

그리고 해당 라이브러리를 사용하여 편리하게 데이터베이스를 접근할 수 있습니다.

const { dbInstance } = require("db-connection-pool");

const options = {
    type: "INI" /** 데이터베이스 설정 파일 확장자 */,
    path: "../db.ini" /** 데이터베이스 설정파일 경로 */,
    autoRepair: true /** 데이터베이스 접속 및 쿼리 진행 중 오류 발생 시 자동 리페어 기능 */,
    attemptRepairCount: 5 /** 자동리페어 기능을 수행하는 횟수 */,
    conCurrentSQL: 20 /** 하나의 데이터베이스를 동시 수행할 수 있는 최대 사용자 수 */,
    waitingForDB: 1000 /** 자동리페어 기능을 수행할 떄 기다리는 시간 */,
};

async function hello() {
    let a = await dbInstance(options);
    let cdr = a.getOracle("oracle1");

    cdr((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.execute("select * from DUAL", (err, res) => {
            console.log(res);
        });
    });

    cdr((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.execute("select * from DUAL", (err, res) => {
            console.log(res);
        });
    });

    cdr((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.execute("select * from DUAL", (err, res) => {
            console.log(res);
        });
    });

    cdr((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.execute("select * from DUAL", (err, res) => {
            console.log(res);
        });
    });

    cdr((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.execute("select * from DUAL", (err, res) => {
            console.log(res);
        });
    });

    let cdr2 = a.getPostgres("postgresql1");

    cdr2((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("SELECT NOW()", (err, result) => {
            if (err) {
                return console.error("Error executing query", err.stack);
            }
            console.log(result.rows);
        });
    });

    cdr2((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("SELECT NOW()", (err, result) => {
            if (err) {
                return console.error("Error executing query", err.stack);
            }
            console.log(result.rows);
        });
    });

    cdr2((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("SELECT NOW()", (err, result) => {
            if (err) {
                return console.error("Error executing query", err.stack);
            }
            console.log(result.rows);
        });
    });

    cdr2((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("SELECT NOW()", (err, result) => {
            if (err) {
                return console.error("Error executing query", err.stack);
            }
            console.log(result.rows);
        });
    });

    let cdr3 = a.getMySQL("mysql1");

    cdr3((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("select * from test", (err, res) => {
            console.log(res);
        });
    });

    cdr3((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("select * from test", (err, res) => {
            console.log(res);
        });
    });

    cdr3((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("select * from test", (err, res) => {
            console.log(res);
        });
    });

    cdr3((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("select * from test", (err, res) => {
            console.log(res);
        });
    });

    cdr3((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("select * from test", (err, res) => {
            console.log(res);
        });
    });

    cdr3((err, conn) => {
        if (err) {
            return console.log(err);
        }

        conn.query("select * from test", (err, res) => {
            console.log(res);
        });
    });
}

hello();

HomePage

Github © Page

NPM © Page

License

MIT © Park and Kim

MIT © Park and Kim

About

postgreSQL, Oracle, MySQL 의 Pool 객체를 추상화 시켜 사용하기 쉽게 만든 라이브러리

Resources

License

Stars

Watchers

Forks

Packages

No packages published