আমি নোড-পোস্টগ্রেসের লেখক । প্রথমত, আমি ক্ষমা চেয়েছি ডকুমেন্টেশন সঠিক বিকল্পটি পরিষ্কার করতে ব্যর্থ হয়েছে: এটি আমার দোষ। আমি এটি উন্নত করার চেষ্টা করব। এটি ব্যাখ্যা করার জন্য আমি ঠিক এখনই একটি গিস্ট লিখেছি কারণ টুইটারের জন্য কথোপকথনটি অনেক দীর্ঘ হয়েছে।
ওয়েব পরিবেশে যাওয়ার উপায়টি ব্যবহার pg.connect
করা ।
পোস্টগ্রিএসকিউএল সার্ভার সংযোগ প্রতি একযোগে কেবলমাত্র 1 টি ক্যোয়ারিকে পরিচালনা করতে পারে। এর অর্থ যদি new pg.Client()
আপনার ব্যাকএন্ডের সাথে যদি 1 টি বিশ্বব্যাপী সংযুক্ত থাকে তবে দ্রুত পোস্টগ্রাইস কীভাবে প্রশ্নের জবাব দিতে পারে তার উপর ভিত্তি করে আপনার পুরো অ্যাপ্লিকেশনটি বোতলজাত রয়েছে। এটি প্রতিটি কোয়েরিকে সারিবদ্ধভাবে আক্ষরিকভাবে সমস্ত কিছু সীমাবদ্ধ করবে। হ্যাঁ, এটি async এবং তাই ঠিক আছে ... তবে আপনি বরং নিজের থ্রুটপুটকে 10x দিয়ে গুণাবেন না? বুদ্ধিমান কিছুতে pg.connect
সেটটি
ব্যবহার করুন pg.defaults.poolSize
(আমরা 25-100 করি, সঠিক নম্বরটি এখনও নিশ্চিত নই)।
new pg.Client
যখন আপনি জানেন আপনি কি করছেন for যখন কোনও কারণে আপনার দীর্ঘকালীন ক্লায়েন্টের প্রয়োজন হয় বা খুব সাবধানে জীবনচক্রটি নিয়ন্ত্রণ করতে হয়। এর ভাল উদাহরণ হ'ল ব্যবহার করার সময়
LISTEN/NOTIFY
। শ্রোতা ক্লায়েন্টের চারপাশে থাকা এবং সংযুক্ত হওয়া এবং ভাগ করার দরকার নেই যাতে এটি NOTIFY
বার্তাগুলি সঠিকভাবে পরিচালনা করতে পারে । অন্য উদাহরণটি হ'ল কিছু হ্যাং স্টাফ বা কমান্ড লাইন স্ক্রিপ্টগুলিতে মারার জন্য 1-অফ ক্লায়েন্ট খোলার সময়।
একটি খুব সহায়ক জিনিস হ'ল আপনার অ্যাপ্লিকেশনটিতে আপনার ডাটাবেসে সমস্ত ফাইল অ্যাক্সেসকে একটি ফাইলে কেন্দ্রিয় করে তোলা। কোনও জায়গায় লিটার pg.connect
কল বা নতুন ক্লায়েন্ট করবেন না । এর মতো একটি ফাইল 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);
})
});
}
}
এইভাবে আপনি নিজের প্রয়োগটি pg.connect
ক্লায়েন্টের কাস্টম পুলে বা যে কোনও কিছুতে পরিবর্তন করতে পারবেন এবং কেবল কোনও জায়গায় জিনিসগুলি পরিবর্তন করতে হবে।
কটাক্ষপাত আছে নোড-PG-ক্যোয়ারী মডিউল যে শুধু এই আছে।