2016-08-22 8 views
5

için tavsiye işim biter bitmez (close() yöntemiyle). Programlarımda, doğal olarak, MongoDB'ye karşı çok sayıda işlem yapmam gerekiyor ve bu yüzden bağlantıyı birçok kez açıp kapatıyorum.MongoDB - açılış ve kapanış bağlantı - Ben node.js</p> <p>Genellikle (<code>connect()</code> yöntemle) bir bağlantı açmak Ameliyat olmam ve yakın gerçekleştirmek için gereken herhangi bir süre için onun sürücü yoluyla MongoDB kullanıyorum iyi uygulama

Bunun iyi bir uygulama olup olmadığını veya ilk işlem yürütüldüğünde bağlantıyı açmanın daha iyi olup olmayacağını, bir değişkendeki saklanıp saklanmadığını ve programın kapatılması sırasında aşağıdaki işlemleri kapatmak için önceden açılan bağlantıları kullanıp kullanmayacağını merak ediyorum biter.

Herhangi bir tavsiye çok takdir edilmektedir.

+0

Hangi çerçeveyi kullanıyorsunuz (node, python, C#)? – profesor79

+0

node.js. kullanıyorum Thx – Picci

+0

node.js'yi kullanıyorum ve bağlantı havuzunun node.js sürücüsü ile çalışıp çalışmayacağını merak ediyorum. Thx – Picci

cevap

6

Bağlantıyı bir kez açmak, bir değişkende saklamak ve en sonunda kapatmak en iyi uygulamadır. MongoDB bunu açıkça önerir. Bağlantının açılması ve kapatılmasının, her sorgu için otomatik olarak gerçekleşmesi yerine MongoDB API'sinin bir parçası olmasının nedeni budur.

Her bir sorgu için bağlantıların açılması ve kapatılması, hem istemci için değil, hem de sunucunun kendisi için, performans (CPU + gecikme), ağ trafiği, bellek yönetimi (nesne oluşturma ve silme) açısından önemli bir ek yük getirecektir. diğer müşterileri de etkiler. Ne aslında oluşturulan ve bir değişkene depolanan bir fiziksel bağlantı değildir Java gibi bazı sürücülerde ama MongoClient örneği: bağlantı terminolojisi hakkında

. Özet (API) perspektifinden bir bağlantıya benziyor, ama aslında fiili fiziksel bağlantı (ları) kaplar ve karmaşıklığı kullanıcıdan gizler. Bunu desteklemek sürücüler için, sadece bir kez MongoClient örneğini oluşturma

, ayrıca sizin de tek MongoClient oluşturmanız gerekir, böylece sürücü, sizin için paralel olarak etkin bağlantıları korur havuzlaması bağlantısından faydalanmak sağlayacak Birden çok iş parçacığı arasında örnek.

+0

Cevabınız için teşekkür ederiz. Yine de son nokta benim için tamamen açık değil. Bağlantı havuzunu desteklediğini düşünen node.js sürücüsünü kullanıyorum. Benim anlayışım şudur: bağlantı havuzu, programların ihtiyacı olan her an bağlantıyı sormasına izin verirken, sürücü havuzun korunmasından sorumludur. Bağlantıyı programım içinde saklamak gerekirse, bağlantı havuzu konseptini kullanmıyorum. Bana açıklayabilir misiniz? Şimdiden teşekkürler – Picci

+0

Yardım etmekten mutluluk duyuyorum! Ne yazık ki, node.js ile aşina değilim, tek iş parçacığı olduğunu duydum. Bağlantı havuzu, hala bir şekilde "boru hatları" sorguları varsa oluşabilir. Her halükarda, bağlantıyı yalnızca bir kez açıp kapamanız size tek bir iş parçacığında ve hatta tek bir bağlantıda bile önemli bir performans artışı sağlamalıdır. API doğru tasarlanmışsa, sadece "sadece" çalışmalıdır. –

+0

Belki de bu bazı karışıklıkların giderilmesine yardımcı olabilir: değişkende saklanan (en azından Java'da), kendi başına bir bağlantı değildir, tüm bağlantı ve bağlantı havuzu makinelerini içine alan "MongoClient" nesnesidir. –