2014-10-21 3 views
1

저는 Mongo 문서 인 '사용자 객체'를 조작하는 여러 서버가있는 Minecraft 네트워크에서 작업하고 있습니다. 사용자 객체를 수정 한 후에는 즉시 데이터베이스에 기록해야합니다. 그렇지 않으면 이전 버전의 사용자 객체가있는 다른 서버에서 덮어 쓸 수 있지만, 때로는 수백 개의 객체를 짧은 양으로 쓸 필요가 있습니다 시간 .. (몇 초 안에). 내 질문은 : 데이터베이스에 실제로 오버로드하지 않고 객체를 MongoDB 데이터베이스에 쉽게 작성할 수있는 방법은 무엇입니까?수백 개의 데이터 객체를 Mongo 데이터베이스에 작성하기

아이디어를 생각해 보았지만 관련성이 있는지 전혀 알 수 없습니다. - 다른 스레드는 데이터 객체가 큐에 들어갈 때마다 데이터베이스에 저장해야하며 '큐 스레드'에서는 객체가 간격을두고 하나씩 저장됩니다.

미리 감사드립니다.

btw 임 모르 피아를 Java의 프레임 워크로 사용

답변

2

"백 물체의 [...] 몇 초 안에 "그렇게 많이 들리지 않습니다. 그 순간에 얼마를 할 수 있습니까?

쓰기 작업의 가장 중요한 설정은 WriteConcern입니다. 현재 귀하는 무엇을 사용하고 계시고 프로젝트 (데이터 안전 대 속도)에 적합한 설정입니까?

한 번에 많은 쓰기 작업을 수행해야하는 경우 대량 작업으로 작업 속도를 향상시킬 수 있습니다. 그것들은 MongoDB 2.6에 추가되었으며 Morphia도 그들을 지원합니다 - unit test을보십시오.

나는 큐 매우 신중 것입니다 : 당신은 정말

  • 필요합니까? 하드웨어 및 구성에 따라 초당 수백 또는 수천의 쓰기 작업을 수행 할 수 있어야합니다.
  • 비동기가 실제로 가장 좋은 방법입니까? 쓰기 작업/메시지의 제작자는 자신의 변경 사항이 적용되었다고 가정 할 수는 있지만 대기열에 기록되지 않은 것으로 보입니다. 이것은 의도 된 행동입니까?
  • 당신의 삶이 더 쉬워 집니까? 당신은 많은 새롭고 가장 예상하지 못한 예기치 않은 문제를 추가하는 다른 소프트웨어를 알아야합니다.
  • 쓰기를 확장해야하는 경우 샤딩을 사용하지 않는 이유는 무엇입니까? 추가 기술과 코드가 필요없이 동일하게 작동합니다.

당신은 아마 일반적으로 작동 이런 종류의 큐를 피하려는 이유에 다음 블로그 게시물 읽어보십시오 : http://widgetsandshit.com/teddziuba/2011/02/the-case-against-queues.html