답변:
실제로 DynamoDB와 MySQL은 사과와 오렌지입니다. DynamoDB는 NoSQL 스토리지 계층이고 MySQL은 관계형 스토리지에 사용됩니다. 응용 프로그램의 실제 요구 사항에 따라 사용할 항목을 선택해야합니다. 실제로 일부 응용 프로그램은 둘 다 사용하여 잘 제공 될 수 있습니다.
예를 들어, 단일 키 또는 키 / 범위 조합에 대해 조회 할 수있는 관계형 스키마 (트리 구조, 스키마없는 JSON 표현 등)에 적합하지 않은 데이터를 저장하는 경우 DynamoDB ( 또는 다른 NoSQL 저장소)가 최선의 방법 일 것입니다.
관계형 구조에 잘 맞을 수있는 데이터에 대해 잘 정의 된 스키마가 있고 다양한 방법으로 데이터를 쿼리 할 수있는 유연성이 필요한 경우 (물론 필요에 따라 인덱스 추가) RDS가 더 나은 솔루션이 될 수 있습니다. .
DynamoDB를 NoSQL 스토어로 사용할 때의 주요 이점은 클러스터 된 데이터 스토어 관리에 대해 걱정할 필요없이 필요한 수준에서 읽기 / 쓰기 처리량이 보장된다는 것입니다. 따라서 애플리케이션에 초당 1000 개의 읽기 / 쓰기가 필요한 경우 해당 수준의 처리량에 대해 DynamoDB 테이블을 프로비저닝 할 수 있으며 기본 인프라에 대해 걱정할 필요가 없습니다.
RDS는 인프라 자체에 대해 걱정할 필요가 없다는 것과 동일한 이점이 있지만 가장 큰 인스턴스 크기가 더 이상 유지되지 않는 지점까지 상당한 수의 쓰기 작업을 수행해야하는 경우에는 옵션 (읽기 전용 복제본을 사용하여 읽기를 위해 수평으로 확장 할 수 있음).
업데이트 된 참고 사항 : DynamoDb는 이제 글로벌 보조 인덱싱을 지원하므로 이제 해시 또는 해시 및 범위 키 조합 이외의 데이터 필드에서 최적화 된 조회를 수행 할 수 있습니다.
방금 모든 DynamoDB 테이블을 RDS MySQL로 마이그레이션했습니다.
특정 작업에 DynamoDB를 사용하는 것이 합리적 일 수 있지만 DynamoDB 위에 새로운 시스템을 구축하는 것은 정말 나쁜 생각입니다. 최적의 계획 등, 항상 DB에서 추가 유연성이 필요합니다.
DynamoDB에서 이전 한 이유는 다음과 같습니다.
이제 일부 시스템의 백업으로 DynamoDB를 사용하고 있으며, 앞으로 잘 정의 된 특정 작업에 DynamoDB를 사용할 것이라고 확신합니다. 나쁜 DB가 아니라 핵심 시스템의 100 %를 제공하는 DB가 아닙니다.
장점에 관한 한, 확장 성과 내구성이라고 말하고 싶습니다. 엄청나게 투명하게 확장되며 항상 (일종의) 증가합니다. 이것들은 정말 훌륭한 기능이지만 단점을 보완하지 않습니다.
DynamoDB를 사용할 때 DynamoDB의 항목 / 레코드가 400KB로 제한된다는 사실도 알아야합니다 ( DynamoDB 제한 참조 ). 많은 사용 사례에서 이것은 작동하지 않습니다. 따라서 DynamoDB는 일부에 적합하지만 전부는 아닙니다. 다른 많은 NoSQL 데이터베이스에서도 마찬가지입니다.