2012-12-20 7 views
55

DynamoDB의 나는 등의 구조 & SQL 쿼리 편안 해요 대AWS MySQL의 RDS AWS 나는 잠시 지금은 박람회의 MySQL을 사용하고

현재 AWS에서 새로운 시스템을 구축하고 내가 찾아 봤는데 DynamoDB에서. 현재 나는 그것에 대해 조금만 알고 있습니다.

다른 하나가 더 낫습니까?

DynamoDB의 장점은 무엇입니까?

MySQL 쿼리와 같은 전환이이 플랫 스타일 DB에 어떤 것이 있습니까?

답변

32

here에 대한 AWS 설명을 읽을 수 있습니다.

간단히 말해서 조회 인 경우 조회 (조인 조회 제외)를 사용하는 경우 DynamoDB (및 기타 NoSQL DB)가 더 좋습니다. 많은 데이터을 처리해야하는 경우 MySQL (및 기타 RDBMS)을 사용할 때 제한됩니다.

MySQL 쿼리 나 데이터 스키마를 다시 사용할 수는 없지만 NoSQL을 배우려는 노력을 기울이면 도구 상자에 중요한 도구가 추가됩니다. DynamoDB가 가장 간단한 솔루션을 제공하는 경우가 많이 있습니다.

138

정말 DynamoDB와 MySQL은 사과와 오렌지입니다. DynamoDB는 NoSQL 스토리지 계층이며 MySQL은 관계형 스토리지로 사용됩니다. 응용 프로그램의 실제 요구 사항에 따라 사용할 항목을 선택해야합니다. 사실, 일부 응용 프로그램은 둘 다 사용하여 잘 서비스 될 수 있습니다.

예를 들어 단일 키 또는 키/범위에 대해 조회 할 수있는 관계형 스키마 (트리 구조, 스키마가없는 JSON 표현 등)에 잘 맞지 않는 데이터를 저장하는 경우 그 다음에 DynamoDB (또는 다른 NoSQL 상점)가 가장 좋은 방법 일 것입니다.

데이터에 대한 스키마가 잘 정의되어 있고 관계형 구조에 잘 맞고 다양한 방식으로 데이터를 쿼리 할 수있는 유연성이 필요한 경우 (물론 필요한 인덱스 추가) RDS는 더 나은 해결책이 될 수 있습니다.

DynamoDB를 NoSQL 저장소로 사용하면 얻을 수있는 주요 이점은 클러스터 된 데이터 저장소 관리에 대해 걱정할 필요없이 필요한 수준에서 읽기/쓰기 처리량을 보장받을 수 있다는 것입니다. 따라서 응용 프로그램에서 초 당 1000 개의 읽기/쓰기가 필요한 경우 해당 처리량 수준의 DynamoDB 테이블을 프로비저닝하고 기본 인프라에 대해 실제로 걱정할 필요가 없습니다.

RDS는 인프라 스트럭처 자체에 대해 걱정할 필요가없는 것과 동일한 이점을 많이 가지고 있지만 최대 인스턴스 크기가 더 이상 유지되지 않을 정도로 상당한 양의 쓰기 작업이 필요하면 결국 종류가없는 왼쪽의 옵션 (읽기 복제본을 사용하여 읽기를 수평 적으로 확장 할 수 있음)

업데이트 됨 참고 사항 : DynamoDb는 이제 글로벌 보조 인덱싱을 지원하므로 해시 또는 해시 및 범위 키 조합 이외의 데이터 필드에서 최적화 된 조회를 수행 할 수 있습니다.

+6

100으로 답변을 upvote 수 있다면. – Salil

+0

당신은 거의 100 upvotes의 소원을 가지고 :) – Luke

+0

당신이있어! 100. –

6

DynamoDB를 사용할 때 DynamoDB의 항목/레코드가 400KB로 제한된다는 것도 알아야합니다 (DynamoDB Limits 참조). 많은 유스 케이스에서 이것은 작동하지 않을 것이다. 따라서 DynamoDB는 몇 가지 사항에 유용 할 수 있지만 전부는 아닙니다. 많은 다른 NoSQL 데이터베이스에서도 마찬가지입니다.

89

모든 DynamoDB 테이블을 RDS MySQL로 마이그레이션했습니다.

특정 작업에 DynamoDB를 사용하는 것이 의미가있을 수 있지만 DynamoDB 위에 새 시스템을 구축하는 것은 실제로 바람직하지 않습니다. 최고의 계획을 세웠다 등, 당신은 항상 귀하의 DB에서 여분의 유연성이 필요합니다. 즉석에서 온 새 테이블을 생성하지 않고 불가능 변경 또는 추가 키 -

  1. 색인 : 여기

    우리가 DynamoDB의에서 이동 우리의 이유이다.
  2. 쿼리 - 데이터 쿼리가 극히 제한적입니다. 특히 인덱싱되지 않은 데이터를 쿼리하려는 경우 조인은 물론 불가능하므로 코드/캐시 계층에서 복잡한 데이터 관계를 관리해야합니다.
  3. 백업 - 지루한 백업 절차는 RDS의 매끄러운 백업과 비교하여 실망스러운 놀라움입니다.
  4. GUI - 잘못된 UX, 제한된 검색, 재미 없음.
  5. 속도 - 응답 시간은 RDS에 비해 문제가 있습니다. RDS의 내부 캐싱을 위해 정한 장소에서이를 보상하기 위해 정교한 캐싱 메커니즘을 구축하는 자신을 발견하게됩니다.
  6. 데이터 무결성 - 유동적 인 데이터 구조의 개념이 좋은 것처럼 들리지만 일부 데이터는 "돌이켜보기"가 더 좋습니다. 강력한 타이핑은 작은 버그가 데이터베이스를 파괴하려고 할 때 축복입니다. DynamoDB를 사용하면 무엇이든 가능하며 실제로 잘못 될 수있는 것이 있습니다.

이제 우리는 DynamoDB를 일부 시스템의 백업으로 사용합니다. 앞으로는 명확하고 명확하게 정의 된 작업을 위해이 유틸리티를 사용할 것입니다. 나쁜 DB는 아니며 핵심 시스템의 100 %를 제공하는 DB가 아닙니다.

장점으로는 확장 성 및 내구성입니다. 그것은 믿을 수 없을 정도로 투명하게 확장되며 항상 (일종의) 그것입니다. 이것들은 정말 훌륭한 기능이지만, 단점을 보완하지는 못합니다.

+0

또한 매우 다른 모델이기 때문에 사용법을 이해할 필요가 있습니다. 문서를 잘 작성한다고 생각하지 않습니다. –

+4

매우 구체적인 장점/단점. 위대한 답변 – stevendesu

+5

일부 내용이 오래되었습니다. 예를 들어, 1은 더 이상 참이 아 U니다. – mbroshi