Ben yazar değilim düğüm-Postgres'e . İlk olarak, dokümantasyon doğru seçeneği netleştiremediği için özür dilerim: bu benim hatam. Onu geliştirmeye çalışacağım. Biraz önce bunu açıklamak için bir Özet yazdım çünkü konuşma Twitter için çok uzadı.
Kullanımı pg.connect
ise gitmek için bir yol , bir web ortamında.
PostgreSQL sunucusu, bağlantı başına bir seferde yalnızca 1 sorguyu işleyebilir. Bu new pg.Client()
, arka ucunuza 1 global bağlıysanız, postgres'in sorgulara ne kadar hızlı yanıt verebildiğine bağlı olarak uygulamanızın tamamının tıkanacağı anlamına gelir . Kelimenin tam anlamıyla, her sorguyu sıraya koyarak her şeyi sıralayacaktır. Evet, eşzamansız ve sorun değil ... ama veriminizi 10x ile çarpmayı tercih etmez miydiniz? Kullanın aklı başında bir şeye pg.connect
ayarlayın
pg.defaults.poolSize
(25-100 yapıyoruz, henüz doğru sayıdan emin değiliz).
new pg.Client
ne yaptığınızı bildiğiniz zamanlar içindir. Herhangi bir nedenle tek bir uzun ömürlü müşteriye ihtiyacınız olduğunda veya yaşam döngüsünü çok dikkatli bir şekilde kontrol etmeniz gerektiğinde. Bunun güzel bir örneği, kullanım zamanıdır
LISTEN/NOTIFY
. Dinleyen istemcinin, NOTIFY
mesajları düzgün bir şekilde işleyebilmesi için etrafta olması ve bağlantılı olması ve paylaşılmaması gerekir . Diğer bir örnek, bazı asılı şeyleri öldürmek için 1 defalık bir istemciyi açarken veya komut satırı komut dosyalarında olabilir.
Çok yararlı bir şey, uygulamanızdaki veritabanınıza tüm erişimi tek bir dosyada merkezileştirmektir. pg.connect
Aramaları veya yeni müşterileri çöp kutusuna atmayın . Şuna benzer bir dosya olsun db.js
:
module.exports = {
query: function(text, values, cb) {
pg.connect(function(err, client, done) {
client.query(text, values, function(err, result) {
done();
cb(err, result);
})
});
}
}
Bu şekilde, uygulamanızı pg.connect
özel bir müşteri havuzundan veya herhangi bir şekilde değiştirebilir ve yalnızca bir yerde değişiklik yapmanız gerekir.
Bunu yapan düğüm-pg-sorgu modülüne bir göz atın .