From: | Eric Hill <Eric(dot)Hill(at)jmp(dot)com> |
---|---|
To: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
Cc: | Thomas Kellerer <spam_eater(at)gmx(dot)net>, PostgreSQL General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: storing large files in database - performance |
Date: | 2017-05-19 19:04:16 |
Message-ID: | CY1PR05MB22650C4E5F4E0C749693CE33F0E50@CY1PR05MB2265.namprd05.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
I am pleased to report that with Merlin's suggestion of using the pg-large-object middleware, I have a test case now showing that I can write a 25MB buffer from Node.js to Postgres in roughly 700 milliseconds. Here is the JavaScript code, which is nearly verbatim from the example in the pg-large-object doc:
packages.testLargeObjects = function(callback) {
var pgp = require('pg-promise')();
var LargeObjectManager = require('pg-large-object').LargeObjectManager;
var PassThrough = require('stream').PassThrough;
var bufSize = 1024 * 1024 * 25;
var buf = new Buffer(bufSize);
buf.fill("pgrocks");
var connInfo = {
host: 'localhost',
port: 5432,
database: 'mydb',
user: 'postgres,
password: 'secret'
};
var db = pgp(connInfo);
db.tx(function(tx) {
const lObjMgr = new LargeObjectManager({pgPromise: tx});
const bufferSize = 16384;
return lObjMgr.createAndWritableStreamAsync(bufferSize)
.then( ([oid, stream]) => {
let bufferStream = new PassThrough();
bufferStream.end(buf);
bufferStream.pipe(stream);
return new Promise(function(resolve, reject) {
stream.on('finish', resolve);
stream.on('error', reject);
});
});
})
.then(function() {
callback();
pgp.end();
})
.catch(function(err) {
callback(err);
pgp.end();
});
};
Thanks very much!
Eric
-----Original Message-----
From: Merlin Moncure [mailto:mmoncure(at)gmail(dot)com]
Another point, some googling turned up
https://www.npmjs.com/package/pg-large-object which is definitely something to consider trying.
merlin
From | Date | Subject | |
---|---|---|---|
Next Message | Micky Hulse | 2017-05-19 20:06:43 | type "xxxxxxx" does not exist |
Previous Message | cen | 2017-05-19 16:26:03 | Re: Weird periodical pg log |