mongodb에 빠르게 쓰는 응용 프로그램을 작성 중입니다. mongodb와 mgo가 처리하기에는 너무 빠릅니다. 제 질문은, 몽고가 계속 따라 잡고 막기 시작할 수 없다는 것을 결정하는 방법이 있습니까? 그러나 불필요하게 차단하고 싶지도 않습니다.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은 종종 좋은 선택입니다. –
의견을 쓰는 것이 멋지다면, @ EnvanShaw에게 반대 의견을 제시 할 것입니다. 우리는 몽고를 생산에 사용하고 그것을 좋아합니다. 우리는 훌륭한 성과를 거둘 수 있습니다. 싫어하는 사람이 너를 혼란스럽게하지 마라. 나는 아직 대처할 수없는 몽고에 대한 논쟁을 듣지 않았다. Server Density의 David Mytton은 1 년 반 전에 [읽기에 좋은 대명사] (https://blog.serverdensity.com/does-everyone-hate-mongodb/)를 썼습니다. – Tyson