Mongodb を使用する Flask ベースの Web アプリを実行しています (Python で使用するために Pymongo を使用)。ほぼすべてのビューがデータベースにアクセスするため、メモリと CPU リソースを最大限に活用したいと考えています。データベースへのアクセスと操作に使用される pymongo の Connection() オブジェクトをインスタンス化するための最も効率的な方法が何であるかはわかりません。現在、from pymongo import Connection
ファイルの先頭で宣言し、各ビュー関数の先頭で次のように宣言しています。
def sampleViewFunction():
myCollection = Connection()['myDB']['myCollection']
## then use myCollection to manipulation the database
## more code...
私ができるもう1つの方法は、ファイルの先頭で宣言することです:
from pymongo import Connection
myCollection = Connection()['myD']['myCollection']
その後、コードは次のようになります。
def sampleViewFunction():
## no declaration of myCollection since it's a global variable
## then use myCollection to manipulation the database
## more code...
したがって、唯一の違いは の宣言範囲ですmyCollection
。これら 2 つの方法は、メモリの処理方法と CPU 消費の点でどのように異なるのでしょうか? これは Web アプリケーションなので、複数のユーザーが同時にサイトになるシナリオを考えています。データベースへの接続の寿命に違いがあり、パフォーマンスに影響を与える可能性があると思います。