這幾天因為剛開始新的工作,
整個進度落下了三天,
新工作讓我挺有期待的。
還是來談談Connection pooling的問題吧,
一般來說我們作一次資料庫的動作(CRUD任一的時候)標準流程是:
連線 ->發request->依照需求與request的data作相對應的資料庫控制,
基本的sample code 是這樣的
from pymongo import MongoClient
db = MongoClient('localhost', 27017)
db = client.test_database
collection = db.test_collection
collection.insert(title="Hello World")
db.close()
關掉每一個使用完畢的連線是一種好習慣,
因為若是少了關閉的這個動作,
這個連線將會一直佔用您的記憶體空間,
但是若是每次的request 都要進行一次新的 DB Connect,
是一件很沒有效率的事情,
建立一個新的DB Connect是一個很沒有效率的事情,
太頻繁的建立連線與關閉連線稱之為Connection Churn,
所以我們要如何避免這些事情呢?
通常都會建立一個Connection 的 cache,
Flask 中 通常都是在app/__init__.py中 建立連線,
然後在app/model.py 中規範資料庫的相關欄位與驗證,
目前大部分的MongoDB Framework都有這部份的防護。
在我的 Sample 中也有範例可以參考。
今天先到這吧!
謝謝各位
參考資料:Dive into Connection pooling