2010-08-15 3 views
12

나는 두 개의 sqlite dbs를 가지고있다. (나는 약 15GB라고 말하고 싶다. 나는 mongodb을보고 있었고, 특히 데이터베이스를 구성하는 문서에서 기본적인 자연 언어 처리를 시도하고 싶다면 쉽게 작업 할 수 있습니다.몽고 - 신뢰성 문제는 여전히 중요한가요?

과거에는 몽고와 함께 일한 적이 없으며, 처음부터 배울 필요도 없습니다 (파이썬에서 작동 할 것입니다). 인터넷 검색을 조금하면서, 몽고드에 관해서 다소 끔찍한 이야기를 많이 접했습니다. 신뢰할 수 있음. 여전히 중요한 문제입니까? 위기 상황에서, 나는 물론 sqlite 백업을 유지할 것이지만, 나는 계속 mongo 데이터베이스를 계속 재구성 할 필요가 없다.

사람들이 최근 Mongo에서 실제로 직면 한 데이터 손상 문제를 궁금하게 생각하십니까? 이것이 큰 관심사입니까?

감사합니다.

답변

9

예, 내구성은 mongo에서 큰 문제입니다. 내구성을 위해 mongodb에서 복제 세트를 사용해야합니다 (최소한 2 대의 시스템이 필요합니다). 그렇지 않으면 전원 장애시 마지막 1 분까지 느슨해 질 수 있습니다. mongo에는 단일 서버 내구성이 없지만 1.7-1.8으로 개발 될 것입니다. 충돌 후 DB를 수동으로 복구해야하며 데이터가 큰 경우 rapair 작업에 몇 시간이 걸릴 수 있습니다. 거래 나 산이 없기 때문에 전자 상거래 나 은행 업무에 적합하지 않습니다.

개발 버전의 mongo (1.3.x, 1.5.x, 1.7.x와 같은 이상한 버전 번호는 개발 버전 임)를 사용하지 않아야하며 64 비트 운영 체제를 사용하는 것이 좋습니다. mongo에 대한 웹상의 재난 관련 기사를 보시면 문제의 원인이 대부분 두 가지입니다.

CouchDB, Cassandra 및 postgresql은 모두 내구성이 강합니다 (fsync는 기본적으로 cassandra 및 postgresql에서 10 밀리 초입니다). 따라서 이들 모두 단일 서버 내구성을 갖습니다.

쉬운 확장 성, 내결함성 및로드 균형 조정이 필요하면; cassandra가 최상이지만 쿼리 옵션이 좋지 않습니다. 장애가 발생한 노드가 사라지고 일정 시간이 지나면 다시 돌아올 수 있습니다. 시스템 자체가 자동으로 수리됩니다.

편집 : mongo 1.8은 저널링과 함께 제공되지만 내구성을 허용하지만 기본 설정은 아닙니다. 또한이 sqlite가 백업에서 동일한 데이터를 가지고 있다면 문제가 표시되지 않습니다,이 http://news.ycombinator.com/item?id=2684423

감사에서

세르 다르 Irmak

+0

재미있는 - 64 비트 및 개발자 버전은 내가보고있는 게시물에서 꽤 자주 올라오고있는 것처럼 보입니다. 나는 mongo가 내가 그것을 시험해 볼 것 인만큼 충분히 흥미로웠다라고 생각한다. 그러나 내가 ACID compliant db 백업 옵션도 가지고 있는지 확인해라. – malangi

+1

Mongo는 오늘날 가장 인기있는 nosql 솔루션입니다 (이유 중 하나는 10gen의 민첩한 마케팅입니다). 자신의 사이트 참조를 보시면 대부분 애널리틱스와 같은 낮은 가치의 고성능 데이터 (예 :보고, 오류 로깅, 페이지 뷰 카운터, 내부 카운터 등)에 사용됩니다. 모든 데이터를 위해 일부 사이트 (너무 많은 사이트가 아닙니다)가 있습니다. – sirmak

+2

요즘 실제 데이터로 사용하는 사이트가 많이 있습니다. http://www.mongodb.org/display/DOCS/Production+Deployments에는 많은 양질의 배포가 있습니다. "실제 데이터"로 사용하는 사이트에는 Sourceforge, Foursquare, Wordnik 및 Business Insider가 있습니다. –

3

몽고에는 ACID 속성, 특히 내구성이 없습니다. 프로세스가 정상적으로 종료되지 않거나 시스템의 전원이 꺼지면 문제가 발생할 수 있습니다. 백업 및 중복을 구현하여이를 처리해야합니다.

4

"MongoDB는 자동화 된 샤딩 아키텍처를 지원하므로 여러 노드에서 수평 확장이 가능합니다." - source 따라서 분산 및 장애 조치 지원을 위해 여러 노드를 실행해야합니다. 전원이 갑자기 끊어져도 실패하지 않는 단일 인스턴스를 실행하려면 couchDB와 같은 ACID을 지원해야합니다. 그것이 내가 한 달 동안 직장에서 몽고를 사용하고 있다고 말했고 나에게 충돌을 일으키지 않았지만 우리는 곧 6 노드 클러스터로 옮겨 가고 있습니다.

는 내구성

제품은 내구성에 서로 다른 접근 방식을 을. CouchDB는 "크래시 전용"디자인으로 db는 언제든지 을 종료 할 수 있으며 과 일치 할 수 있습니다. MongoDB는 내구성에 대해 다른 접근 방식을 사용합니다.기계를 다시 가동하면 이 다시 시작될 때 repairDatabase() 작업이 실행됩니다 (MyISAM과 유사). MongoDB는 LAN 또는 WAN 중 하나 인 복제를 사용하도록 권장합니다. 특정 서버의 내구성을 위해서는 이 영구적으로 사망 할 수 있습니다. 요약하려면 복제가없는 단일 서버를 사용하면 CouchDB의 내구성이 향상됩니다.

견적 : mongodb.org 's official site.

2

을 찾아 가라. 언제든지 MongoDb 데이터베이스를 다시 채울 수 있습니다. 리필하는 데 몇 분 밖에 걸리지 않습니다.

+0

+1. "끊임없이"이 작업을 수행 할 필요는 없지만 서버의 정전 후 (또는 마지막 업데이트 작업 후 1 분 이내에 mongod가 충돌하는 원인이 된 경우에만). 귀하의 경우에는 업데이트가 전혀 필요하지 않습니까? – Thilo

10

다른 사람들처럼 MongoDB에는 현재 단일 서버 내구성이 없습니다. 다행스럽게도 다중 노드 복제를 설정하려면 번지입니다. 다른 데이터 센터에 두 번째 시스템을 설치하고 데이터가 자동으로 복제되도록 할 수도 있습니다.

쓰기 성공해야하는 경우

는 해당 데이터가 N 노예로 복제 될 때까지 삽입/업데이트에서 반환하지 몽고가 발생할 수 있습니다. 이렇게하면 최소한 n 데이터 복사본이 있어야합니다. 복제본 세트를 사용하면 중요한 작업없이 즉시 클러스터에서 노드를 추가 및 제거 할 수 있습니다. 새 노드를 추가하면 자동으로 데이터 복사본이 동기화됩니다. 노드를 제거하면 클러스터가 자체 균형을 다시 조정합니다. 이것은 병렬 적으로 작동하는 여러 노드를 사용하여 여러 시스템에서 사용되도록 설계되었습니다. 이것은 하나의 거대한 머신이 작업을 수행 할 것으로 기대하는 MySQL과 비교되는 기본 설정입니다. 스케일 아웃해야 할 때 슬레이브를 페어링 할 수 있습니다. 데이터 저장 및 스케일링에 대한 다른 접근법이지만, 가정의 차이점을 이해하고 그 장점을 활용하는 아키텍처를 구축하는 방법을 배우는 데 시간이 많이 걸리는 경우 매우 편리합니다.

+0

+1 상세한 통찰력 - 매우 흥미 진진한 패러다임처럼 보입니다! – malangi