MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Phương pháp hay nhất để duy trì một phiên mgo

Tôi đề nghị không sử dụng một phiên toàn cầu như vậy. Thay vào đó, bạn có thể tạo một kiểu chịu trách nhiệm cho tất cả các tương tác với cơ sở dữ liệu. Ví dụ:

type DataStore struct {
    session *mgo.Session
}

func (ds *DataStore) ucol() *mgo.Collection { ... }

func (ds *DataStore) UserExist(user string) bool { ... }

Có rất nhiều lợi ích cho thiết kế đó. Một điều quan trọng là nó cho phép bạn có nhiều phiên trong chuyến bay cùng một lúc, vì vậy, nếu bạn có trình xử lý http, chẳng hạn, bạn có thể tạo một phiên cục bộ được hỗ trợ bởi một phiên độc lập chỉ cho một yêu cầu đó:

func (s *WebSite) dataStore() *DataStore {
    return &DataStore{s.session.Copy()}
}    

func (s *WebSite) HandleRequest(...) {
    ds := s.dataStore()
    defer ds.Close()
    ...
}

Trình điều khiển mgo hoạt động tốt trong trường hợp đó, vì các phiên được lưu trữ nội bộ và sử dụng lại / duy trì. Mỗi phiên cũng sẽ được hỗ trợ bởi một ổ cắm độc lập trong khi sử dụng và có thể có các cài đặt độc lập được định cấu hình và cũng sẽ có xử lý lỗi độc lập. Đây là những vấn đề cuối cùng bạn sẽ phải giải quyết nếu bạn đang sử dụng một phiên toàn cầu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose:CastError:Truyền tới ObjectId không thành công cho giá trị [đối tượng Đối tượng] tại đường dẫn _id

  2. Làm cách nào để lấy Spring-Data-MongoDB để xác thực các đối tượng của tôi?

  3. Tổng quan về Percona Backup cho MongoDB

  4. Xóa bản sao trong MongoDB

  5. Hỗ trợ cho nhiều kiểu người dùng bằng Passport-local mongoose node.js