2012-02-19 5 views
8

현재 MongoDB가있는 단일 서버에서 내 웹 사이트를 실행합니다. 내 서버에 나는 두 가지 구성 요소를 (1) 시간마다 실행하고 내 MongoDB를 인스턴스 (2) 크롤러 인덱스에서 읽고 또한 사용자의 개인 DB에 기록 웹 사이트에 데이터를 추가 크롤러. 자동 스케일링을 위해 Amazon EC2로 이동 중이므로 웹 서버가 자동 확장 할 수 있으므로 웹 트래픽이 증가 할 때 서버 수를 늘릴 수 있습니다. 내 크롤러에는 자동 크기 조정이 필요하지 않습니다. 이것은 내가 MongoDB를 사용하는 방법에 대한 도전이된다. 내 최선의 선택이 내 코드에EC2에서 MongoDB를 확장하거나 DynamoDB로 전환해야합니까?

  • 최소한의 변화를 최적화하기 위해 무엇인지 궁금하네요 완벽하게 DB에서 데이터 손실에 대한 걱정없이 웹 서버를 추가/제거 할 수
  • 능력 (코드는 펄에)
  • 단기간에 저렴한 비용

의 DB는 확실히 2GB가 아래에있을 것입니다 이후의 모든 machies를 통해 메모리에 들어갈 수있을 것입니다. 사용자 개인 설정 DB를 다시 작성할 수 없으므로 색인을 쉽게 다시 작성할 수있는 반면 사용자 개인 설정 DB는 다시 작성할 수 없습니다. 현재 MongoDB 크롤링 색인은 ~ 15 개의 서로 다른 열에서 입력되는 약 100,000 개의 항목이 있습니다. 이것은 온라인 데이트 사이트 (여러 가지 방법으로 검색 가능)에서 일하고 있기 때문에 속도를 높이기 위해 만들어졌습니다.

나는 몇 가지 옵션

인덱스에 대한
  1. 를 사용하여 사용자의 개인 저장소에 대한 SimpleDB에, 그리고 MongoDB를 생각할 수 있습니다. 색인은 모든 컴퓨터에서 복제되지만, MongoDB 복제에 대해서는 너무 많이 알지 못합니다. SimpleDB는
  2. 이동 모든 것을 내가 SimpleDB에 및/또는 DynamoDB의에 대해 너무 많이 알고하지 않습니다 DynamoDB의

에 모든 이동

  • . 필자는 DynamoDB를 자연스럽게 선택하는 것 같지만 모든 열, 색인 등을 가질 수 있는지 여부는 잘 모르겠다. 누구나 경험이 있거나 조언이 있습니까?

  • 답변

    3

    당신은 웹 팜의 각 상자가 연결 EC2에 단일 서버에서 몽고를 호스팅 할 수 있습니다. 그런 다음 동일한 DB 상자를 사용하는 다른 웹 인스턴스를 쉽게 스핀 업할 수 있습니다.

    우리는 현재 복제 세트를 실행할 때 3 개의 Mongo 서버를 보유하고 있으며, Mongo로 수평 확장해야하는 시점에 새로운 인스턴스를 생성하고 큰 컬렉션을 분할합니다.

    +0

    감사합니다. Joe! 이것은 매우 통찰력이 있습니다. 따라서 Mongo 데이터가 3 대의 컴퓨터에 분산되어 있거나 3 대의 컴퓨터에 복제되어 있습니까? 이것은 Mongo 확장을 사용하여 웹 서버의 크기 조정을 분리하는 좋은 방법입니다. mongo 서버를 확장 할 때 가동 중지 시간이 있습니까? 더 많은 용량이 필요할 때 Mongo를 확장하는 좋은 방법에 대한 조언이나 링크가 있습니까? – ZenoriInc

    +0

    우리는 복제본 세트가있는 3 개의 개별 시스템 (하나는 마스터, 2 개는 복제본)을 사용합니다. 이것은 주로 자동 장애 극복을위한 것입니다. 따라서 마스터가 죽으면 복제본 중 하나가 마스터가되도록 승격됩니다. 각 복제본 데이터의 데이터는 동일합니다. – Joe

    +0

    데이터 크기를 조정할 때 샤딩이라고하는 것을 사용할 수 있습니다. 여기서 여러 개의 Mongo 인스턴스에 걸쳐 하나 이상의 콜렉션에서 데이터를 분산시킵니다. 이렇게하면 수평으로 확장 할 수 있습니다. 데이터는 여러 실제 시스템에 분산되어 있으며 프록시는 Mongo에게 샤드 키를 기반으로 할 위치를 알려줍니다. 우리는 이것이 작동 하는지를 확인하기위한 인프라를 설정했지만, 현재 인스턴스를 부팅 한 후에는 사용하기에 충분한 데이터가 없습니다. – Joe

    3

    나는 현재 MongoDB를 단일 서버에 내 웹 사이트를 실행합니다. 우선

    이 큰 붉은 깃발입니다. 프로덕션 환경에서 실행하는 경우 적어도 세 개의 노드가 모두 포함 된 복제 세트를 실행하는 것이 좋습니다.

    복제는 자동 중복 및 장애 복구를 제공한다. 완벽하게 DB

    하여 MongoDB에서 데이터 손실에 대한 걱정없이 웹 서버를 추가/제거 할 수

    능력은 sharding라는 개념을 지원합니다. 샤딩은 데이터를 자동으로 분할하여 수평으로 확장하는 방법을 제공합니다. 파티셔닝은 shard key을 통해 이루어집니다.

    샤딩을 사용하려는 경우 해당 링크 매우을주의 깊게 읽고 제한 사항을 인식하십시오. MongoDB 샤딩의 경우 샤드를 통해 쿼리를 고르게 분산시킬 수있는 올바른 키를 선택해야합니다.

    현재 MongoDB 크롤링 색인에는 약 15 개의 다른 열이 입력되는 약 100,000 개의 항목이 있습니다.

    이것은 샤딩의 문제 일 수 있습니다. 샤딩은 샤드 키를 사용하는 쿼리의 배율 만 조정할 수 있습니다. 샤드 키에 대한 쿼리는 단일 컴퓨터로 직접 라우팅 될 수 있습니다. 보조 색인에 대한 조회는 모든 기계로 이동합니다.

    15 가지 인덱스가 있으므로 기본적으로 모든 쿼리는 모든 샤드로 이동합니다. 그것은 "자동 스케일"되지 않습니다.

    1

    EC2에는 64 비트의 작은 인스턴스가 없으므로 잠재적으로 비용이 많이 듭니다. MongoDB 메모리는 파일을 매핑하므로 32 비트 OS는 권장되지 않습니다.

    +1

    지난 주 아마존은 마침내 모든 인스턴스 크기와 새로운 중간 크기에 대해 64 비트를 발표했습니다. – Bryce

    1

    나는 SimpleDB에 대해 매우 나쁜 경험을했으며 근본적으로 결함이 있다고 생각하므로 피해야 할 것입니다. 재 작성-에 대한/DynamoDB의 마이그레이션-에 비해 가장 빠른 솔루션 http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

    을 내가 EC2에 MongoDB를을 설정 용의자 :

    세 아마존 EC2에 MongoDB를 설정하는 방법에 대한 좋은 백서입니다.

    행운을 빈다.