Amazon SimpleDB es una base de datos distribuida escrita en Erlang [1] por Amazon.com . Se utiliza como un servicio web junto con Amazon Elastic Compute Cloud (EC2) y Amazon S3 y es parte de Amazon Web Services . Fue anunciado el 13 de diciembre de 2007 [2].
Al igual que con EC2 y S3, Amazon cobra tarifas por el almacenamiento, la transferencia y el rendimiento de SimpleDB a través de Internet. El 1 de diciembre de 2008, Amazon presentó un nuevo precio con la capa gratuita [3] para 1 GB de datos y 25 horas de máquina. La transferencia a otros servicios web de Amazon es gratuita. [2]
Limitaciones
SimpleDB proporciona consistencia eventual , que es una forma de consistencia más débil, en comparación con otros sistemas de administración de bases de datos . Esto a menudo se considera una limitación, porque es más difícil razonar, lo que dificulta escribir programas correctos que utilicen SimpleDB. Esta limitación es el resultado de una compensación de diseño fundamental. Al renunciar a la consistencia, el sistema puede lograr otras dos propiedades muy deseables:
- disponibilidad: los componentes del sistema pueden fallar, pero el servicio seguirá funcionando correctamente.
- tolerancia a la partición: los componentes del sistema están conectados entre sí mediante una red informática . Si los componentes no pueden comunicarse entre sí a través de la red (una condición conocida como partición de red ), el sistema continuará funcionando.
Se supone que las fallas de los componentes son inevitables; por lo tanto, ambas propiedades se consideraron necesarias para proporcionar un servicio web confiable . El teorema de CAP establece que no es posible que un sistema exhiba estas propiedades junto con la consistencia; por lo tanto, los diseñadores debían conformarse con una forma más débil de consistencia.
Limitaciones publicadas: [4]
Limitaciones de la tienda
Atributo | Máximo |
---|---|
dominios | 250 dominios activos por cuenta. Se puede solicitar más completando un formulario. [5] |
tamaño de cada dominio | 10 GB |
atributos por dominio | 1.000.000.000 |
atributos por artículo | 256 atributos |
tamaño por atributo | 1024 bytes |
Limitaciones de consultas
Atributo | Máximo |
---|---|
elementos devueltos en una respuesta a la consulta | 2500 elementos |
segundos puede ejecutarse una consulta | 5 s |
nombres de atributo por predicado de consulta | 1 nombre de atributo |
comparaciones por predicado | 22 operadores |
predicados por expresión de consulta | 20 predicados |
Características
Colocación y eliminación condicional
La colocación condicional y la eliminación condicional son operaciones nuevas que se agregaron en febrero de 2010. Abordan un problema que surge al acceder a SimpleDB simultáneamente. Considere un programa simple que usa SimpleDB para almacenar un contador, es decir, un número que se puede incrementar. El programa debe hacer tres cosas:
- Recupere el valor actual del contador de SimpleDB.
- Suma uno al valor.
- Almacene el nuevo valor en el mismo lugar que el valor anterior en SimpleDB.
Si este programa se ejecuta mientras ningún otro programa accede a SimpleDB, funcionará correctamente; sin embargo, a menudo es deseable que las aplicaciones de software (particularmente las aplicaciones web ) accedan a los mismos datos al mismo tiempo. Cuando se accede a los mismos datos al mismo tiempo, surge una condición de carrera , que daría como resultado una pérdida de datos indetectable.
Continuando con el ejemplo anterior, considere dos procesos, A y B, que ejecutan el mismo programa. Suponga que las solicitudes de datos de los servicios SimpleDB, como se describe en el paso 1, tanto de A como de B. A y B ven el mismo valor. Digamos que el valor actual del contador es 0. Debido a los pasos 2 y 3, A intentará almacenar 1. B intentará hacer lo mismo; por lo tanto, el valor final del contador será 1, aunque el valor final esperado del contador sea 2, porque el sistema intentó dos operaciones de incremento, una por A y otra por B.
Este problema puede resolverse mediante el uso de put condicional. Supongamos que cambiamos el paso 3 de la siguiente manera: en lugar de almacenar incondicionalmente el nuevo valor, el programa le pide a SimpleDB que almacene el nuevo valor solo si el valor que tiene actualmente es el mismo que el valor que se recuperó en el paso 1. Entonces, podemos asegúrese de que el valor del contador realmente aumente. Esto introduce cierta complejidad adicional; si SimpleDB no pudo almacenar el nuevo valor porque el valor actual no era el esperado, el programa debe repetir los pasos 1–3 hasta que la operación de colocación condicional realmente cambie el valor almacenado.
Lectura consistente
La lectura coherente fue una nueva característica que se lanzó al mismo tiempo que la colocación condicional y la eliminación condicional. Como sugiere el nombre, la lectura coherente aborda los problemas que surgen debido al eventual modelo de coherencia de SimpleDB (consulte la sección Limitaciones ). Considere la siguiente secuencia de operaciones:
- El programa A almacena algunos datos en SimpleDB.
- Inmediatamente después, A solicita los datos que acaba de almacenar.
La eventual garantía de consistencia de SimpleDB no nos permite decir que los datos recuperados en el paso 2 reflejan las actualizaciones que se realizaron en el paso 1. La eventual consistencia solo garantiza que el paso 2 refleja el conjunto completo de actualizaciones en el paso 1, o ninguna de esas actualizaciones. Se puede utilizar una lectura coherente para garantizar que los datos recuperados en el paso 2 reflejen los cambios en el paso 1.
La razón por la que pueden surgir resultados inconsistentes cuando no se usa la operación de lectura consistente es que SimpleDB almacena datos en múltiples ubicaciones (para disponibilidad), y es posible que los nuevos datos en el paso 1 no se escriban en todas las ubicaciones cuando SimpleDB recibe la solicitud de datos en el paso 2. En ese caso, es posible que la solicitud de datos en el paso 2 sea atendida en una de las ubicaciones donde no se han escrito los nuevos datos.
Amazon desaconseja el uso de una lectura coherente, a menos que sea necesario para la corrección. El motivo de esta recomendación es que la velocidad a la que se realizan las operaciones de lectura consistentes es menor que la de las lecturas regulares.
Relación con DynamoDB
Se ha hablado de que SimpleDB será reemplazado por DynamoDB (ya no se está "iterando", [6] aunque Amazon no planea eliminarlo). DynamoDB parece ser su sucesor. [7] [8]
Ver también
Referencias
- ^ Lo que necesita saber sobre Amazon SimpleDB
- ^ a b "AWS | Amazon SimpleDB - Servicio de base de datos simple" . Amazon Web Services, Inc .
- ^ SimpleDB - Free Tier - Un cambio en los precios de AWS Archivado 2008-12-25 en Wayback Machine
- ^ "Límites", Guía para desarrolladores de SimpleDB , Amazon (API última versión).
- ^ Solicitud para aumentar la asignación de dominios de Amazon SimpleDB . Aws.amazon.com. Consultado el 9 de agosto de 2013.
- ^ "Foros de desarrolladores de AWS: ¿el futuro de SimpleDB? ..." forums.aws.amazon.com .
- ^ http://aws.amazon.com/dynamodb/faqs/#How_does_Amazon_DynamoDB_differ_from_Amazon_SimpleDB_Which_should_I_use Dynamo creado "para abordar las limitaciones de SimpleDB".
- ^ "Amazon DynamoDB: un servicio de base de datos NoSQL rápido y escalable diseñado para aplicaciones de escala de Internet: todo distribuido" . www.allthingsdistributed.com .