MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Praktik terbaik untuk mempertahankan sesi mgo

Saya sarankan untuk tidak menggunakan sesi global seperti itu. Sebagai gantinya, Anda bisa membuat tipe yang bertanggung jawab untuk semua interaksi database. Misalnya:

type DataStore struct {
    session *mgo.Session
}

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

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

Ada banyak manfaat dari desain itu. Yang penting adalah memungkinkan Anda untuk memiliki beberapa sesi dalam penerbangan pada saat yang sama, jadi jika Anda memiliki penangan http, misalnya, Anda dapat membuat sesi lokal yang didukung oleh sesi independen hanya untuk satu permintaan itu:

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

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

Driver mgo berperilaku baik dalam kasus itu, karena sesi di-cache secara internal dan digunakan kembali/dipelihara. Setiap sesi juga akan didukung oleh soket independen saat digunakan, dan mungkin memiliki pengaturan independen yang dikonfigurasi, dan juga akan memiliki penanganan kesalahan independen. Ini adalah masalah yang pada akhirnya harus Anda tangani jika Anda menggunakan satu sesi global.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pertempuran Database NoSQL - Membandingkan MongoDB &Cassandra

  2. Memantau Instans MongoDB Menggunakan MongoDB Monitoring Service (MMS)

  3. MongoDB menarik elemen array dari koleksi

  4. MongoDB :temukan nilai dalam Array dengan banyak kriteria

  5. Cari di beberapa koleksi di MongoDB