services dynamo nosql amazon-web-services amazon-simpledb amazon-dynamodb

nosql - services - Amazon SimpleDB vs Amazon DynamoDB



amazon rds service (7)

Tengo un conocimiento básico de lo que es Amazon SimpleDB , pero de acuerdo con la descripción de Amazon DynamoDB , parece ser casi lo mismo: un servicio de almacenamiento de clave-valor NoSQL .

¿Puede alguien simplemente explicar las principales diferencias entre ellos y decir en qué casos elegir uno sobre el otro ?


3 diferencias clave:

  1. Indexación

    • SimpleDB crea un índice para el campo "TODOS" en una tabla.
    • DynamoDB tiene que establecer campos de indexación antes de crear la base de datos y no se puede modificar.
  2. Precios:

    • Los precios de SimpleDB se basan en las horas de la máquina y la capacidad de almacenamiento
    • DynamoDB carga dinero por capacidad de registros de Lectura / Escritura por segundo.
  3. Escalabilidad:

    • SimpleDB requiere partición manual si el almacenamiento de datos excede 10GB.
    • DynamoDB distribuye automáticamente datos bajo el capó, por lo tanto, proporciona una escalabilidad muy alta.

Creo que la principal diferencia en Simple DB vs Dynamo DB son

  1. Desempeño predecible en términos de latencia y poder manejar grandes volúmenes sin comprometer la latencia y el rendimiento. DynamoDB logra esto utilizando la clave de partición
  2. Optimizaciones de lectura y escritura que pueden personalizarse
  3. Mejor modelo de coherencia eventual porque el uso de un algoritmo de hash consistente

En términos simples, ambos almacenes de datos son NoSql.

La diferencia radica en la escalabilidad (y algunos otros aspectos, pero el escalado tiene el mayor valor en mi opinión). SimpleDB es bastante similar a MongoDB pero tiene un montón de limitations cuando se trata de escalar.

Pero DynamoDB te permite aprovisionarte a pequeña escala y escalar la mayor cantidad de rendimiento que necesites. Y reduzca la escala cuando no se requiera. (es decir, durante una promoción, los registros de referencias de famosos, etc., en escenarios como este tendrán un pico de requisitos de hardware basado en el tiempo)


Esto es abordado por las preguntas frecuentes respectivas P: ¿Cómo se diferencia Amazon DynamoDB de Amazon SimpleDB? ¿Qué debería usar? (el enlace hash ya no funciona, pero usa en la página Buscar para ubicar la pregunta en la página) hasta cierto punto, con el resumen más compacto al final del párrafo:

Aunque SimpleDB tiene limitaciones de escala, puede ser una buena opción para cargas de trabajo más pequeñas que requieren flexibilidad de consulta. Amazon SimpleDB indexa automáticamente todos los atributos de los elementos y, por lo tanto, admite la flexibilidad de las consultas a costa del rendimiento y la escala.

Por lo tanto, es una compensación entre rendimiento / escalabilidad y simplicidad / flexibilidad, es decir, para escenarios más simples podría ser aún más fácil comenzar con SimpleDB para evitar las complejidades de la arquitectura de su aplicación para DynamoDB (consulte a continuación una perspectiva diferente).

La entrada de FAQ enlazada hace referencia a Amazon DynamoDB de Werner Vogel, un servicio de base de datos NoSQL rápido y escalable diseñado también para aplicaciones de escala de Internet , que es de hecho una lectura elaborada y altamente recomendada sobre la historia de NoSQL en Amazon en general y Dynamo en particular; contiene muchas más ideas que abordan su pregunta también, por ejemplo

Se hizo evidente que los desarrolladores [incluso los ingenieros de Amazon] preferían la simplicidad a un control más preciso ya que votaron "con los pies" y adoptaron soluciones AWS basadas en la nube, como Amazon S3 y Amazon SimpleDB, sobre Dynamo. [además mío]

Obviamente DynamoDB se ha introducido para abordar esto y, por lo tanto, podría calificarse como un sucesor de SimpleDB en lugar de ''solo'' enmendar su oferta NoSQL existente:

Concluimos que una solución ideal combinaría las mejores partes del diseño original de Dynamo (escalabilidad incremental, alto rendimiento predecible) con las mejores partes de SimpleDB (facilidad de administración de un servicio en la nube, coherencia y un modelo de datos basado en tablas que es más rico que una tienda de valores-clave pura).

El Resumen de Werner sugiere que DynamoDB sea una buena opción para aplicaciones de cualquier tamaño ahora en consecuencia:

Amazon DynamoDB está diseñado para mantener un rendimiento predeciblemente alto y ser altamente rentable para cargas de trabajo de cualquier escala, desde las aplicaciones de escala de Internet más pequeñas hasta las más grandes.


SimpleDB no parece estar recibiendo ningún amor de Amazon en estos días; es difícil incluso encontrar dónde aprovisionarlo en AWS Console. Parece que SimpleDB ya no se itera : use DynamoDB como su primera opción para una base de datos de documentos en AWS.

SimpleDb ya no se "itera". Lo que significa que no hay un nuevo desarrollo en el futuro para simpledb. Es "mantenido y respaldado", pero no mejorará.


Una de las diferencias solía ser (como dice @Mason Zhang en su artículo anterior) en la indexación. DynamoDB solía limitar la creación de índices en el momento de crear la tabla. Sin embargo, ahora (desde principios de 2014), existe el concepto de Índice Secundario Global (GSI). El GSI se puede crear sobre la mesa en cualquier momento. Hasta 5 son compatibles. Por lo tanto, la indexación ya no es un problema de bloqueo para muchos casos de uso.

También debe saber que SimpleDB tiene límites de tamaño y rendimiento. (10GB y digamos, 25 solicitudes / seg)

Quizás eventualmente, DynamoDB reemplazará a SimpleDB en todos los casos de uso menos en los más simples.