복붙노트

[MONGODB] MongoDB를 NoSQL에 대 DynamoDB의 [폐쇄]

MONGODB

MongoDB를 NoSQL에 대 DynamoDB의 [폐쇄]

사용 A를 할 필요가 없다, 그래서 나는 우리가 첫 해에 한 달에 50 만에 대한 기록에서 가게에 계획하고 어쩌면 다음 년 동안이 수직 응용 프로그램입니다 제가 미래의 프로젝트에 사용할 수를 알아 내기 위해 노력하고있어 이것에 대한 데이터베이스, 즉 I가되는 NoSQL 데이터 저장소를 선택하기로 결정 이유입니다.

내 마음에 온 첫 번째 옵션이었다 몽고 DB A는 매우 사회의 지원이 많은 제품을 성숙하지만, 이벤트 최고 성능의 관리 서비스, 나는이 개발거야 반면에 우리는 새로운 제품을 가지고 있기 때문에 응용 프로그램하지만 아마존 규모에 탄성 방법을 제공하기 때문에 그 큰 장점이 될 것이라고 생각하므로 유지 보수 계획 (지금은 적어도)가 없습니다.

나의 주요 관심사는 내가 아직 DynamoDB의 쿼리 기능에 못 봤어하지만 이후 내가이 더 몽고 DB보다 제한 될 수 있다는 느낌 K / V 데이터 저장하고, 쿼리 구조에 관한 것입니다.

누군가가 DynamoDB의에 MongoDB를에서 프로젝트를 이동하는 경험이 있다면, 어떤 조언 완전히 이해할 수있을 것이다.

해결법

  1. ==============================

    1.나는 최근 DynamoDB의 내 MongoDB를 마이그레이션, 성능, 비용에 대한 몇 가지 경험과 데이터를 공유 할 수 3 개 블로그를 썼다.

    나는 최근 DynamoDB의 내 MongoDB를 마이그레이션, 성능, 비용에 대한 몇 가지 경험과 데이터를 공유 할 수 3 개 블로그를 썼다.

    마이그레이션하여 MongoDB에서 AWS DynamoDB의 + SimpleDB의에

    7 이유 DynamoDB의 이상 당신이해야 사용하여 MongoDB

    3 가지 이유 MongoDB를 통해 당신이해야 사용 DynamoDB의

  2. ==============================

    2.나는 이것이 오래 알고 있지만, 비교 검색 할 때 여전히납니다. 우리는 몽고는 지금 우리의 첫 번째 선택이다 디나모에 거의 전적으로 이동 한 사용되었다. 그것은 더 많은 기능을 가지고하지 때문에, 그렇지 않습니다. 몽고 당신은 구조 내에서 인덱스, 작은 일들이 많이있을 수 있습니다, 더 나은 쿼리 언어를 가지고있다. 디나모의 우수성은 영업 이익은 그의 의견에 명시된 것입니다 : 그것은 간단합니다. 당신은 어떤 서버 돌볼 필요가 없습니다. 당신이 몽고 분산됩니다 솔루션을 설정하기 시작하면, 그것은 복잡해진다. 당신은 호스팅 회사 중 하나에 갈 수 있지만, 그 중 하나가 싼 아니다. 당신이 더 많은 처리량을 필요로하는 경우 디나모으로, 당신은 단지 버튼을 클릭합니다. 당신은 자동으로 확장하는 스크립트를 작성할 수 있습니다. 그것의 시간은 디나모를 업그레이드 할 때, 그것은 당신을 위해 이루어집니다. 즉 귀중한 스트레스와 모든 시간을 많이하지 보냈다입니다. 당신이 전용 작전 사람이없는 경우, 디나모이 우수합니다.

    나는 이것이 오래 알고 있지만, 비교 검색 할 때 여전히납니다. 우리는 몽고는 지금 우리의 첫 번째 선택이다 디나모에 거의 전적으로 이동 한 사용되었다. 그것은 더 많은 기능을 가지고하지 때문에, 그렇지 않습니다. 몽고 당신은 구조 내에서 인덱스, 작은 일들이 많이있을 수 있습니다, 더 나은 쿼리 언어를 가지고있다. 디나모의 우수성은 영업 이익은 그의 의견에 명시된 것입니다 : 그것은 간단합니다. 당신은 어떤 서버 돌볼 필요가 없습니다. 당신이 몽고 분산됩니다 솔루션을 설정하기 시작하면, 그것은 복잡해진다. 당신은 호스팅 회사 중 하나에 갈 수 있지만, 그 중 하나가 싼 아니다. 당신이 더 많은 처리량을 필요로하는 경우 디나모으로, 당신은 단지 버튼을 클릭합니다. 당신은 자동으로 확장하는 스크립트를 작성할 수 있습니다. 그것의 시간은 디나모를 업그레이드 할 때, 그것은 당신을 위해 이루어집니다. 즉 귀중한 스트레스와 모든 시간을 많이하지 보냈다입니다. 당신이 전용 작전 사람이없는 경우, 디나모이 우수합니다.

    우리가 지금 기본적으로 디나모에 가고 그래서. 몽고 어쩌면, 데이터 구조는 영장,하지만 우리는 아마 SQL 데이터베이스에 다시 가고 싶어만큼 복잡합니다. 디나모는 둔각, 당신은 정말 당신이 그것을 만들려고 방법에 대해 생각해야하고, 아마 당신은 복잡한 물건 작동하도록 Elasticcache에서 레디 스를 사용합니다. 그러나 확실히 알아서 할 필요가 없게 좋다. 당신의 코드입니다. 이게 다예요.

  3. ==============================

    3.50 만 개 문서로, 규모 무엇이든지 할 이유가 없다. 램의 SSD와 8 기가 바이트 전형적인 노트북은 쉽게 당신이 있기 때문에 큰 문제가 아닙니다 당신의 선택 스케일링의 선택하려고 그렇다면, 기록의 수백만의 10 초를 할 수 있습니다. 난 당신이 가장 좋아하는 무엇을 선택할 제안, 아마도 당신이 가진 대부분의 온라인 지원을 찾을 수있는 곳.

    50 만 개 문서로, 규모 무엇이든지 할 이유가 없다. 램의 SSD와 8 기가 바이트 전형적인 노트북은 쉽게 당신이 있기 때문에 큰 문제가 아닙니다 당신의 선택 스케일링의 선택하려고 그렇다면, 기록의 수백만의 10 초를 할 수 있습니다. 난 당신이 가장 좋아하는 무엇을 선택할 제안, 아마도 당신이 가진 대부분의 온라인 지원을 찾을 수있는 곳.

  4. ==============================

    4.간략하게 비교를 들어, 정말 예 MongoDB를 대 AWS DynamoDB의 많은 비교 페이지가이 웹 사이트, 같은; http://db-engines.com/en/system/Amazon+DynamoDB%3BMongoDB

    간략하게 비교를 들어, 정말 예 MongoDB를 대 AWS DynamoDB의 많은 비교 페이지가이 웹 사이트, 같은; http://db-engines.com/en/system/Amazon+DynamoDB%3BMongoDB

  5. ==============================

    5.짧은 답변 : SQL로 시작하고 추가되는 NoSQL은 필요한 경우에만 때 /. (당신은 매우 간단한 쿼리 이외에는 아무 것도 필요하지 않는 한)

    짧은 답변 : SQL로 시작하고 추가되는 NoSQL은 필요한 경우에만 때 /. (당신은 매우 간단한 쿼리 이외에는 아무 것도 필요하지 않는 한)

    내 개인적인 경험 : 나는 쿼리 MongoDB를 사용하지 않은 있지만, 가장 기본적인 키 / 값 쿼리 이외에는 아무 것도에 관해서 년 4 월 2015 년 DynamoDB의는 여전히 매우 불구가된다. 나는 기본적인 물건을 사랑하지만 당신은 쿼리 언어를 원하는 경우 다음 실제 SQL 데이터베이스 솔루션을 찾습니다.

    DynamoDB의에서 당신은 해시 또는 해시 및 범위 키를 조회 할 수 있으며, 여러 보조 글로벌 인덱스를 가질 수 있습니다. 나는 4 개 가능한 필터 매개 변수를 하나의 테이블에 쿼리를하고있어 그 결과 정렬,이 필터 식을 가진 글로벌 보조 인덱스의 사용을 통해 (거의) 지원됩니다. 문제는 당신이 필터와 일치하는 총 결과는, 당신은 단지 필터와 일치하는 처음 10 개 항목을 검색 할 수 없습니다 얻을 때 온다, 그러나 오히려 10 개 항목을 확인하고 다시 계속 강요 0 유효한 결과를 얻을 수 있습니다 (가) 키를 계속에서 스캔 - 목 소비하는 통증 너무 많은 테이블의 간단한 시나리오에 대한 할당량을 읽어 보시기 바랍니다.

    쿼리 필터 제한 문제에 대한 구체적으로,이 (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#ScanQueryLimit) 워드 프로세서에서입니다 :

    In a response, DynamoDB returns all the matching results within
    the scope of the Limit value. For example, if you issue a Query 
    or a Scan request with a Limit value of 6 and without a filter
    expression, the operation returns the first six items in the 
    table that match the request parameters. If you also supply a
    FilterExpression, the operation returns the items within the 
    first six items in the table that match the filter requirements.
    

    내 결론은 FilterExpressions을 포함하는 쿼리가 매우 드문 경우에만 사용할 수 있으며 각 쿼리 쉽게 DynamoDB의이 단위를 읽고 너무 많은 소비 테이블의 대부분 또는 전부를 읽을 수 있기 때문에 확장 성이 아니라는 것이다. 너무 많은 읽기 단위를 사용하면 당신은 스로틀 및 성능 저하를 볼거야.

    전문가 의견 : SQL 데이터베이스로 시작하여 처음 10 만명의 사용자를 옹호에 2015년 4월 9일 브렛 홀만, 관리자, 솔루션 아키텍처, scalling에 대한 자신의 이야기에 AWS에 AWS 정상 회담에서 다음 경우에만 그것은 의미가하면되는 NoSQL을 사용. 조만간 당신은 아마 당신의 스택에 SQL 서버 곳이 필요합니다 때문입니다. 그의 슬라이드 현재 위치 : http://www.slideshare.net/AmazonWebServices/deep-dive-scaling-up-to-your-first-10-million-users 슬라이드 (28)를 참조하십시오.

  6. ==============================

    6.우리는 의료 제품에 대한 몽고 / 디나모의 조합을 선택했다. 기본적으로 몽고 더 나은 검색을 허용하지만, 호스팅 디나모 큰 때문에 추가 작업없이 HIPAA를 준수. 우리는 표준 설정에 어떠한 개인 데이터와 몽고 부분을 호스팅하고 인프라의 측면에서 HIPAA 부분과 처리 아마존 할 수 있도록. 우리는 논리적 인 사람이어야 디나모 문서의 포인터 (ID의) 문서를 불러 몽고에서 특정 항목을 조회 할 수 있습니다.

    우리는 의료 제품에 대한 몽고 / 디나모의 조합을 선택했다. 기본적으로 몽고 더 나은 검색을 허용하지만, 호스팅 디나모 큰 때문에 추가 작업없이 HIPAA를 준수. 우리는 표준 설정에 어떠한 개인 데이터와 몽고 부분을 호스팅하고 인프라의 측면에서 HIPAA 부분과 처리 아마존 할 수 있도록. 우리는 논리적 인 사람이어야 디나모 문서의 포인터 (ID의) 문서를 불러 몽고에서 특정 항목을 조회 할 수 있습니다.

    우리가 선택한 주된 이유는 몽고를 사용하는 대신에이 이유였다 발전기에 전체 응용 프로그램을 호스팅하는이 작업을 수행 할 수 있습니다. 첫째, 우리는 몽고가에와 시간에 대단한 프리폼 위치 기반 검색에 필요, 디나모는 아니었지만, 그들은 지금 옵션을 가지고 않습니다.

    ","USER1 ": {"사용자 이름 "예, 말의 유저 (A) 입력과 같이"형태 "모음에서 문서를 할 정도, 둘째 일부 문서가 구조화라고했고 우리는 앞으로 데이터가 어떻게 될지 시간을 알지 못했다 이메일을 보내 ":"me@me.com "}. 그리고 같은 컬렉션의 다른 사용자 풋이 { "전화": "813-555-3333", "위치": 28.1234, -83.2342]}. 우리는 디나모와 함께, 언제든지 이러한 동적 알 수없는 모든 필드를 검색 할 수 있습니다 몽고, 당신은이 작업을 수행 할 수 있지만 인덱스 당신이 검색 싶었 새로운 필드가 추가되었습니다 때마다 확인해야합니다. 그래서 그 전에 당신의 디나모 문서에 갑자기 전화 필드가 없었 당신이 경우, 어떤 사람은 완전히 헤아릴 수없는, 추가합니다.

    지금 이것은 당신이 언급 한 또 다른 지점을 제공합니다. 때로는 항상 작업에 가장 적합한 제품을 선택하는 것을 의미하지 않는다 작업에 적합한 솔루션을 선택. 예를 들어, 당신은 필요로하는 클라이언트를 가질 수 있으며, 당신이 10 년 위해 만든 시스템을 사용합니다. 당신이 가지고 아마존에 의존 수있는 더 좋은 옵션이 될 수 있습니다 수행 작업 얻을 수있는 좋은 충분하다 SaaS는 /의 IaaS 솔루션가는를-유지하고 장기적으로 시스템을 유지했다.

  7. ==============================

    7.난 둘 다와 종류 모두의 팬으로 일했다.

    난 둘 다와 종류 모두의 팬으로 일했다.

    그러나 당신은 무엇을 어떤 목적에 사용할 때 이해할 필요가있다.

    나는 이유는 쿼리되는 기본 및 보조 키를 제외하고 어렵다, DynamoDB의 모든 데이터베이스를 이동하는 훌륭한 아이디어라고 생각하지 않는다, 인덱싱 제한 DynamoDB의에서 스캔하는 것은 고통이다.

    나는 당신이 개선 또는 수정을 제공하기 위해 제약을 느끼지 않는다 결코 모든 그것의 기능, MongoDB를이 광범위한 쿼리 할 데이터가 있어야한다 DB의 하이브리드 정렬을 위해 갈 것입니다.

    DynamoDB의는 DynamoDB의 자주 확장 응용 프로그램의 세션에 대한 대안으로 사용되도록 번개 빠른 (빠른 MongoDB를보다 더)입니다. DynamoDB의 모범 사례도 덜 사용되는 데이터의 많음이있는 경우, 다른 테이블로 이동합니다 제안합니다.

    그래서 당신이 기사 또는 피드가 있다고 가정합니다. 사람들은 지난 주에 물건 또는이 달의 물건을 찾을 가능성이 더 높습니다. 사람들이 두 살짜리 데이터를 방문 할 기회는 정말 드물다. 이러한 목적을 위해 DynamoDB의 다른 테이블에 월 또는 년으로 저장된 데이터를 가지고 선호한다.

    DynamoDB의, 당신은 MongoDB를 수동으로해야 할 무언가를 매끄럽게 확장 가능합니다. 당신이 장면 뒤에 처리량 파티션 방법 스케일링 작품에 대해 이해하지 않는 경우 그러나 당신은 DynamoDB의 성능에 잃을 것이다.

    DynamoDB의 속도가 중요한 경우 다른 한편으로는 너무 많은 손과 기능을 가지고에, MongoDB를가 뭔가 DynamoDB의 결여 사용되어야한다.

    복제 중 하나가 8 (또는 무엇이든) 시간 이전의 데이터 인스턴스를 보유하고 있음을 예를 들어, 당신은 같은 방식으로 MongoDB를의 복제 세트를 가질 수 있습니다. 정말 유용합니다, 당신은 당신의 DB에 뭔가 큰 시간을 엉망으로하고 이전처럼 데이터를 얻으려면.

    즉하지만 제 생각입니다.

  8. ==============================

    8.마음에 곰, 난 단지 MongoDB를 실험했습니다 ...

    마음에 곰, 난 단지 MongoDB를 실험했습니다 ...

    내가 읽은 바로는, DynamoDB의이 기능의 측면에서 먼 길을왔다. 그것은 매우 제한된 저장 및 쿼리 기능을 갖춘 슈퍼 기본 키 - 값 저장소로 사용됩니다. 그것은 이후 지금 더 큰 문서를 지원하고, 성장하는 + JSON 지원 및 글로벌 보조 인덱스 크기. 기능면에서 어떤 DynamoDB의와 MongoDB를 제공 사이의 간격은 매 달 작은 성장한다. DynamoDB의의 새로운 기능은 여기에 확장됩니다.

    많은 MongoDB를 대 DynamoDB의 비교의 인해 DynamoDB의 특징의 최근 추가로 아웃 날짜의 수 있습니다. 그러나,이 게시물의 제안 다른 설득력있는 점, 즉 그 그것의 간단하고, 낮은 유지 보수, 종종 낮은 비용을 DynamoDB의를 선택합니다. 여기에 데이터베이스 선택의 또 다른 논의는하지만 약간 오래된, 읽기 흥미로웠다.

    내 테이크 아웃 : 당신이 심각한 데이터베이스 쿼리를 수행하거나 DynamoDB의 지원하지 않는 언어로 작업하는 경우, MongoDB를 사용합니다. 그렇지 않으면, DynamoDB의 고수.

  9. from https://stackoverflow.com/questions/17931073/dynamodb-vs-mongodb-nosql by cc-by-sa and MIT license