1.1.71 • Published 4 years ago

pg.io v1.1.71

Weekly downloads
7
License
ISC
Repository
github
Last release
4 years ago

pg.io

Speed driver node js for PostgreSQL (100 000 request/sec and more), LISTEN, NOTIFY, pool, castom Types, minimal dependencies

Install

npm i pg.io

Сonnect

Сonnection is not explicit, you do not need to worry about it, you can immediately send requests

const PG = require('pg.io');

const db = new PG({
    user: 'username',
    password: 'password',
    database: 'database',
    rowFormat: 'JSON',
    max: 6
});

rowFormat: 'JSON' if you want the result of a string in JSON res = [{...},{...}...]

max: 6 The number of simultaneous connections to the database, balancing is based on the Round Robin principle.

Query

db.query('SELECT 1', (err, res) => {
  console.log(err, res);
});

let res = await db.query('SELECT 1');

db.query('SELECT $1', 1, (err, res) => {
  console.log(err, res);
});

db.query('SELECT $1::INT, $2::TEXT', 1, 'param', (err, res) => {
  console.log(err, res);
});

let res = await db.query('SELECT $1::INT, $2::TEXT', 1, 'param');

LISTEN, NOTIFY

db.on('Users.update', (id, name) => {
  console.log(id, name); //1, 'user';
});

db.emit('Users.update', 1, 'user');

These methods can be run on different machines or in different threads

db.emit this is the same as SELECT pg_notify("Users.update", '[1, "user"]'); or NOTIFY "Users.update", '[1, "user"]'

Custom types

You can determine how to convert a given specific type

114 - code JSON 3802 - code JSONb

select typname, typelem, typarray from pg_type; --return all code pg_type
db.setType(114, JSON.parse);
let res = await db.query('SELECT $1::JSON', JSON.stringify({name: 'maksim snytko'}));
console.log(res);//[ { json: { name: 'maksim snytko' } } ]

db.setType(1184, str => {
    return 'Minsk UNIX '+Date.parse(str);
});
let res = await db.query('SELECT now()');
console.log(res);//[{ now: 'Minsk UNIX 1513101706805'}]

Benchmark

PostgreSQL = 10

CPU = i7-6700HQ

OS = Windows 10

Node = 9.50

const PG = require('pg.io');

const db = new PG({
    user: 'postgres',
    password: 'password',
    database: 'postgres',
    max: 6
});

var k = 0;
console.time('test');
for (var i = 0; i < 1000000; i++) {
    db.query('SELECT 1', () => {
        if (++k === 1000000) {
            console.timeEnd('test');
        }
    });
}

test: 7618.609ms ~ 130 000 i/o sec

1.1.71

4 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.14

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago