.NET 데스크톱 응용 프로그램에서 MongoDB를 사용하는 것이 좋습니다?데스크톱 응용 프로그램의 MongoDB
답변
Mongo는 복제가있는 서버에서 실행될 예정입니다. 중앙 서버의 데이터베이스에 연결하지 않는 한 데스크톱 응용 프로그램을위한 데이터베이스는 아닙니다. MongoDB 블로그에 blog post on durability이 있습니다. 일반적인 질문입니다.
쓰기가 발생하고 쓰기 명령이 리턴
, 우리는 100 %를 할 수 없다 그 순간부터 시간에 에 다른 모든 프로세스가 업데이트 된 데이터 만 볼 수 있는지 확인하십시오.
모든 드라이버에는 데이터베이스 응답을 기다리는 "안전한"삽입 또는 업데이트 옵션이 있어야합니다. 어떤 드라이버를 사용하려고하는지 알지 못합니다 (.NET 용으로는 몇 가지가 있습니다. http://github.com/samus/mongodb-csharp이 가장 공식적으로 지원됩니다). 드라이버는 안전한 옵션을 제공하지 않으므로 getLastError 명령을 실행하여 항목을 동기화 할 수 있습니다 수동으로.
MongoDB는 데이터가 하드 드라이브에 즉시 있는지 확인하지 않습니다. 결과로 서버가 쓰여지고 하드 디스크에 실제로 저장 될 때 서버가 다운 된 경우 이미 으로 작성된 데이터가 손실 될 수 있습니다. 드라이브.
정말로 원하는 경우 모든 작업 후에 실행할 수있는 fsync 명령이 있습니다. 다시 말하지만, Mongo는 "안전을위한 숫자"철학을 가지고 있으며, 프로덕션 환경에서 실행중인 모든 사람에게 백업용 슬레이브를 하나 이상 보유하도록 권장합니다.
데이터베이스에 저장하려는 항목에 따라 다릅니다.
Wikipedia에 따르면;
는 MongoDB가이 문제를 설계 쉽게 스팬 여러 서버에 데이터베이스를 필요로 문제를 포함하여, 전통적인 RDBMS에 의해 가 해결되지 무거운 트랜잭션 요구 사항없이.
.NET driver이 있습니다. 그리고 here은 시작하는 데 도움이되는 정보입니다. 하지만 먼저 물어 봐야합니다. 무엇을 저장하고 싶고 그 이상의 요구 사항은 무엇입니까? (저장 프로 시저, 트리거, 예상 크기 등에 대한 지원)
글쎄, MongoDB는 우리의 요구 사항을 충족 시키지만 몇 가지 이슈가 있습니다 : 1. 쓰기가 발생하고 쓰기 명령이 돌아 오면 그 순간부터 모든 다른 프로세스에 업데이트 된 데이터 만. 2. MongoDB는 데이터가 하드 드라이브에 즉시 있는지 확인하지 않습니다. 결과적으로 하드 드라이브에 쓰기와 실제 저장 사이에 서버가 다운 된 경우 이미 작성되었다고 생각되는 데이터는 손실 될 수 있습니다. – SHSE
그래,하지만 통계 등을 저장하고 싶다고 생각해? 그렇다면 당연히 삽입 된 데이터가 실제로 저장되었는지, 그 문제가 속도보다 중요하지 않은지 항상 확신 할 수있는 것이 중요합니다 ... 하지만 개인적으로는; 알려진 문제로 더 나은 대안을 모색 할 것입니다.예를 들어 Oracle이나 SQL Server 또는 MySQL 또는 SQLite와 같은 큰 회사 일 수 있습니다. db에 저장하려는 내용의 양과 정도에 대해 자세히 설명해 주시겠습니까? – Rhapsody
MongoDB는 빠르며, 하드 드라이브에 데이터를 즉시 저장하지 않기 때문에 더 빠릅니다. 또한 다중 노드 구성에서 전체 일관성 대신 최종 일관성을 갖기 때문에 더 빠릅니다. 트레이드 오프에 관한 모든 것입니다. 완전한 일관성과 완벽한 내구성이 필요하다면 Oracle (RAC) 또는 Sql Server를 사용해야합니다. – Theo
- 1. 데스크톱 응용 프로그램의 BIRT
- 2. 데스크톱 응용 프로그램의 자동 번역
- 3. 데스크톱 Java 응용 프로그램의 대역폭 사용량 예측
- 4. WPF와 데스크톱 응용 프로그램의 Windows Forms
- 5. 데스크톱 응용 프로그램의 사용 데이터 수집
- 6. 데스크톱 응용 프로그램의 설명적인 레이블 이름
- 7. Dentrix 데스크톱 응용 프로그램의 정보 구문 분석
- 8. 데스크톱 응용 프로그램의 도메인 기반 디자인
- 9. 데스크톱 응용 프로그램의 웹 버전 개발 경험
- 10. 데스크톱 응용 프로그램의 키 스트로크 자동화
- 11. 데스크톱 응용 프로그램의 특수 URL 처리
- 12. 스윙 - 일반적인 데스크톱 응용 프로그램의 동시성
- 13. 데스크톱 응용 프로그램의 SSRS 클라이언트 라이센스
- 14. 웹 응용 프로그램 대 데스크톱 응용 프로그램의 미래
- 15. 데스크톱 응용 프로그램의 크리스탈 보고서를 웹 응용 프로그램의 크리스탈 보고서로 변환
- 16. MongoDB + NodeJS 웹 응용 프로그램의 초기 DB 구조/데이터
- 17. . NET에서 빌드 된 데스크톱 응용 프로그램의 설정 확인
- 18. 데스크톱 응용 프로그램의 회귀 테스트를위한 자동화 테스트 도구
- 19. 데스크톱 응용 프로그램의 HTTP 요청을 웹 사이트에 인증합니다.
- 20. 벤치마킹 데스크톱 응용 프로그램
- 21. 데스크톱 응용 프로그램 서명
- 22. 데스크톱 응용 프로그램 Longevity
- 23. Java의 데스크톱 응용 프로그램
- 24. JavaScript의 데스크톱 응용 프로그램
- 25. 데스크톱 응용 프로그램으로 OpenId?
- 26. File() 웹 응용 프로그램의 FileStream
- 27. 델파이 응용 프로그램의 자바 스크립트
- 28. 오프라인 응용 프로그램의 Backbone.js
- 29. COM + 응용 프로그램의 Oracle 연결
- 30. iPhone 응용 프로그램과 데스크톱 응용 프로그램 동기화 옵션
는 나쁜 생각처럼 보입니다. – Chet
@Chet : 실제로이 답변을 작성했기 때문에 내구성 기록이 추가되어 더 이상 안전 문제가 발생하지 않습니다. 그러나 사용자가 (대부분의) 응용 프로그램에 대해 데이터베이스 서버를 실행하게하는 것은 여전히 실용적이지 않습니다. – kristina