我正在寫一個快速寫入MongoDB的應用程序。 mongodb和mgo處理太快。我的問題是,有沒有辦法讓我確定mongo無法跟上並開始阻止?但我也不想不必要地阻止。 這裏是模擬問題的代碼示例:Golang Mgo步調
package main
import (
"labix.org/v2/mgo"
"time"
"fmt"
)
// in database name is a string and age is an int
type Dog struct{
Breed string "breed"
}
type Person struct{
Name string "name"
Pet Dog `bson:",inline"`
Ts time.Time
}
func insert(session *mgo.Session, bob Person){
err := session.DB("db_log").C("people").Insert(&bob)
if err != nil {
panic("Could not insert into database")
}
}
func main() {
session, _ := mgo.Dial("localhost:27017")
bob := Person{Name : "Robert", Pet : Dog{}}
i := 0
for {
time.Sleep(time.Duration(1) * time.Microsecond)
i++
go insert(session, bob)
}
}
我經常得到這樣的錯誤:
panic: Could not insert into database
或
panic: write tcp 127.0.0.1:27017: i/o timeout
@EvanShaw你推薦什麼呢? – thwd
如果不知道有關應用程序的問題,很難提出建議,但PostgreSQL通常是一個很好的默認選擇。 –
如果寫意見很酷,那麼我會對@EvanShaw提出相反的意見。我們在生產中使用Mongo並喜歡它。我們得到了很好的表現。不要讓仇恨與你混淆。我還沒有聽到反對蒙戈的爭論,這是無法抵抗的。服務器密度部門的David Mytton在一年半之前寫道[非常好的對應點](https://blog.serverdensity.com/does-everyone-hate-mongodb/),我推薦閱讀。 – Tyson