Amazon SimpleDB ofrece una interfaz de servicios web simple para crear y almacenar varios conjuntos de datos, consultar fácilmente los datos y obtener los resultados de dichas consultas. Los datos se indexan automáticamente, lo que facilita y agiliza la búsqueda de información. No es necesario predefinir ni cambiar esquemas si se añaden datos posteriormente. Y la ampliación es muy sencilla: basta con crear nuevos dominios en lugar de desarrollar nuevos servidores.
Para utilizar Amazon SimpleDB:
- Construya su conjunto de datos
- Elija una región para sus dominios a fin de optimizar la latencia, minimizar los costos o cumplir requisitos normativos. Actualmente, Amazon SimpleDB está disponible en las regiones de EE.UU. Este (Norte de Virginia), EE.UU. Oeste (Oregón), EE.UU. Oeste (Norte de California), UE (Irlanda), Asia Pacífico (Singapur), Asia Pacífico (Tokio), Asia Pacífico (Sídney) y América del Sur (São Paulo).
- Utilice CreateDomain, DeleteDomain, ListDomains, DomainMetadata para crear y administrar dominios de consultas
- Utilice Put, Batch Put y Delete para crear y administrar el conjunto de datos almacenada en cada dominio de consulta
- Recupere sus datos
- Utilice GetAttributes para recuperar un elemento específico
- Utilice Select para consultar el conjunto de datos y encontrar los elementos que cumplan determinados criterios
- Pague solo por los recursos que consuma
El modelo de datos que utiliza Amazon SimpleDB facilita el almacenamiento, la administración y la consulta de los datos estructurados. Los desarrolladores organizan sus conjuntos de datos en dominios y pueden realizar consultas en todos los datos almacenados en un dominio determinado. Los dominios son conjuntos de elementos descritos mediante pares de atributo-valor.
Considere estos términos análogos a los conceptos de una tabla de hoja de cálculo tradicional. Tomemos como ejemplo los detalles de la base de datos de administración de clientes que se muestra en la tabla siguiente y pensemos cómo se representarían en Amazon SimpleDB. La tabla entera constituiría un dominio denominado “clientes”. Cada uno de los clientes ocuparía una fila de la tabla o un elemento del dominio. La información de los contactos se describiría en encabezados de columna (atributos). Cada valor ocupa su propia celda. Ahora, imagine que estos registros corresponden a nuevos clientes que desea añadir al dominio.
ID de cliente | Nombre | Apellido | Dirección postal | Ciudad | Estado | CP | Teléfono |
---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 |
En Amazon SimpleDB, para añadir estos dos registros, necesitaría colocar (mediante el elemento PUT) los ID de cliente en el dominio junto con los pares de atributo-valor correspondientes a cada cliente. Sin la sintaxis específica, quedaría algo así:
PUT (elemento, 123), (Nombre, Bob), (Apellido, Smith), (Dirección postal, 123 Main St.), (Ciudad, Springfield), (Estado, MO), (CP, 65801), (Teléfono, 222-333-4444) PUT (elemento, 456), (Nombre, James), (Apellido, Johnson), (Dirección postal, 456 Front St.), (Ciudad, Seattle), (Estado, WA), (CP, 98104), (Teléfono, 333-444-5555)
Amazon SimpleDB presenta importantes diferencias respecto a las tablas de las bases de datos tradicionales. Tiene la flexibilidad de volver en otro momento y añadir atributos que solo se apliquen a determinados registros. Por ejemplo, imagine que comienza a capturar las direcciones de correo electrónico de los clientes para permitir alertas en tiempo real relativas al estado de los pedidos. En lugar de tener que volver a construir la tabla “clientes”, a escribir las consultas, a crear los índices, etcétera, bastaría con añadir al dominio “clientes” ya existente los registros nuevos y los atributos adicionales. El dominio resultante podría tener este aspecto:
ID de cliente | Nombre | Apellido | Dirección postal | Ciudad | Estado | CP | Teléfono | Correo electrónico |
---|---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 | |
789 | Deborah | Thomas | 789 Garfield | Nueva York | NY | 10001 | 444-555-6666 | [email protected] |
Amazon SimpleDB incluye unas cuantas llamadas de API sencillas que implementan la escritura, la indexación y la consulta de datos. La interfaz y el conjunto de características se centran, a propósito, en la funcionalidad principal. El resultado es una API básica en la que los desarrolladores pueden basarse y gracias a la cual resulta sencillo usar el servicio.
- CreateDomain – Crea un dominio que contiene el conjunto de datos.
- DeleteDomain – Elimina un dominio.
- ListDomains – Genera una lista de todos los dominios.
- DomainMetadata – Recupera información de la hora de creación del dominio, información de almacenamiento (tanto recuento de nombres como de atributos) y de elementos como el tamaño total en bytes.
- PutAttributes – Agrega o actualiza un elemento y sus atributos, o añade pares atributo-valor a elementos que ya existen. Los elementos se indexan automáticamente a medida que se reciben.
- BatchPutAttributes – Para mejorar el procesamiento general de operaciones masivas de escritura, realiza hasta 25 operaciones PutAttribute en una sola llamada.
- DeleteAttributes – Elimina un elemento, un atributo, o un valor de atributo.
- BatchPutAttributes – Para mejorar el procesamiento general de operaciones masivas de escritura, realiza hasta 25 operaciones PutAttribute en una sola llamada.
- GetAttributes – Recupera un elemento y todos o un subconjunto de sus atributos y valores.
- Select – Consulta un conjunto de datos con la sintaxis ya conocida de “select target from domain_name where query_expression”. Las pruebas de valores compatibles son: =, !=, =, like, not like, between, is null, is not null, y every (). Ejemplo: select * from midominio where every(keyword) = ‘Libro’. Ordene los resultados con el operador SORT y cuente los elementos que cumplen las condiciones especificadas por los predicados incluidos en una consulta que utilice el operador Count.
Nota: Amazon SimpleDB se ha integrado con AWS Identity and Access Management para permitir el control minucioso de los recursos de Amazon SimpleDB. Mediante la integración con AWS Identity and Access Management, una cuenta de AWS inscrita para utilizar SimpleDB puede crear varios usuarios. A su vez, estos usuarios pueden recibir permisos en la API de SimpleDB para obtener acceso a los dominios de SimpleDB que sean propiedad de la cuenta de AWS. Consulte la página de detalles de AWS Identity and Access Management para obtener más información.
Amazon SimpleDB almacena varias copias geográficamente distribuidas de cada dominio para aumentar la disponibilidad y la durabilidad de los datos. Una tarea de escritura satisfactoria (que use PutAttributes, BatchPutAttributes, DeleteAttributes, CreateDomain o DeleteDomain) significa que todas las copias del dominio persistirán de forma duradera. Amazon SimpleDB ofrece dos opciones de coherencia de lectura: lecturas finalmente coherentes y lecturas coherentes.
- Lecturas consistentes finales (predeterminado) – la opción de consistencia final maximiza el desempeño de lectura (en lo que respecta a baja latencia y alto desempeño). Sin embargo, es posible que una lectura consistente final (que use Select o GetAttributes) no refleje los resultados de una tarea de escritura completada recientemente (mediante PutAttributes, BatchPutAttributes, DeleteAttributes o BatchDeleteAttributes). La consistencia entre todas las copias de datos suele lograrse en un segundo; si se repite una lectura tras un breve intervalo de tiempo, se deberían devolver los datos actualizados.
- Lecturas consistentes – además de la consistencia final, Amazon SimpleDB ofrece la flexibilidad y el control para solicitar una lectura consistente si así lo requiere la aplicación o alguno de sus elementos. Una lectura consistente (que use Select o GetAttributes con ConsistentRead=true) devuelve un resultado que refleja todas las tareas de escritura que han recibido una respuesta satisfactoria antes de la lectura.
De forma predeterminada, GetAttributes y Select realizan una lectura consistente final. Como una lectura consistente puede suponer una latencia mayor y un menor desempeño de lectura, es mejor utilizarla solo cuando un escenario de aplicación exige que una operación de lectura ha de leer necesariamente todas las escrituras que han recibido una respuesta satisfactoria antes de esa lectura. En los demás escenarios, la lectura consistente final predeterminada ofrecerá el mejor desempeño. Recuerde que Amazon SimpleDB permite especificar valores de consistencia para cada solicitud de lectura individual, de modo que la misma aplicación puede tener distintas partes con diferentes valores de consistencia.
Amazon SimpleDB no es una base de datos relacional y sacrifica las transacciones y relaciones complejas (por ejemplo, uniones) para ofrecer características únicas de funcionalidad y desempeño. Sin embargo, Amazon SimpleDB sí que ofrece semántica transaccional, por ejemplo:
- Operaciones Put/Delete condicionales – le permiten insertar, sustituir o suprimir valores correspondientes a uno o varios atributos de un elemento si el valor existente de un atributo coincide con el valor especificado por el usuario. Si el valor no coincide o no está presente, la actualización se rechaza. Las operaciones Put/Delete condicionales son útiles para evitar la pérdida de actualizaciones cuando distintas fuentes escriben simultáneamente datos en el mismo elemento.
Las operaciones Put y Delete condicionales se exponen mediante las API PutAttributes y DeleteAttributes especificando una condición opcional con un valor esperado. Por ejemplo, en el caso de una aplicación que reserve asientos o venda entradas para un espectáculo, puede permitir una compra (es decir, una actualización de escritura) únicamente si el asiento especificado sigue disponible (la condición opcional). Esta semántica también se puede utilizar para implementar funcionalidad como los contadores, para insertar un elemento solo en el caso de que no exista todavía, y el control optimista de simultaneidad (OCC). Una aplicación puede implementar el OCC manteniendo un atributo de número de versión (o una marca de tiempo) como parte de un elemento y realizando una operación put/delete condicional basada en el valor de este número de versión.
Para obtener más información sobre la semántica transaccional o la consistencia con Amazon SimpleDB, consulte la guía para desarrolladores o el documento técnico Consistency Enhancements de Amazon SimpleDB.
Amazon RDS ofrece la posibilidad de ejecutar una completa base de datos relacional y le libera de tener que administrar la base de datos. Amazon DynamoDB es un servicio de base de datos NoSQL completamente administrado que proporciona un desempeño extraordinariamente rápido y predecible con una escalabilidad perfecta. Amazon SimpleDB proporciona un servicio no relacional diseñado para conjuntos de datos más pequeños. Al usar una de las muchas AMI de Amazon EC2 y Amazon EBS, obtiene un control completo sobre la base de datos sin la carga de tener que aprovisionar e instalar hardware.
Existen importantes diferencias entre estas alternativas que podrían hacer que una de ellas fuera más adecuada que otra para su caso de uso.
Visite la página Ejecución de bases de datos en AWS para obtener más información sobre las diversas alternativas de base de datos que tiene para sus aplicaciones.
A diferencia de Amazon S3, Amazon SimpleDB no almacena datos sin procesar. Lo que hace es recibir los datos como una entrada y expandirlos para generar varios índices, lo que permite realizar consultas rápidas en esos datos. Además, Amazon S3 y Amazon SimpleDB utilizan distintos tipos de almacenamiento físico. Amazon S3 utiliza unidades de almacenamiento denso optimizadas para almacenar objetos de gran tamaño a bajo costo. Amazon SimpleDB almacena bits de datos de menor tamaño y utiliza unidades menos densas cuya velocidad de acceso a datos está optimizada.
A fin de optimizar los costos de los servicios de AWS, los objetos o archivos de gran tamaño se deberían almacenar en Amazon S3, mientras que los elementos de datos de menor tamaño o punteros a archivos (posiblemente a objetos de Amazon S3) se deberían guardar en Amazon SimpleDB. Debido a la estrecha integración entre servicios y a la transferencia de datos gratuita en el entorno de AWS, los desarrolladores pueden beneficiarse de las capacidades de velocidad y consulta de Amazon SimpleDB, así como del bajo costo de almacenar datos en Amazon S3, integrando ambos servicios en sus aplicaciones.
Actualmente, los dominios individuales de Amazon SimpleDB pueden tener un máximo de 10 GB cada uno. Si el conjunto de datos pesa más de 10 GB, puede aprovechar la ventaja que ofrece la arquitectura de escalado horizontal de Amazon SimpleDB y distribuir los datos entre varios dominios. Puesto que Amazon SimpleDB está diseñado pensando en el paralelismo, la distribución de los datos entre más dominios aumentará también el potencial de desempeño en la escritura y la lectura. Se le asignará un máximo inicial de 250 dominios. Si necesita más, rellene este formulario.
Si quiere saber cuántos desarrolladores se benefician de utilizar Amazon SimpleDB de forma conjunta con Amazon S3, haga clic aquí.
Con Amazon SimpleDB, el mejor método para predecir el tamaño del almacenamiento de datos estructurados es el siguiente:
Tamaño en bytes brutos (GB) de todos los ID de elemento + 45 bytes por elemento + Tamaño en bytes brutos (GB) de todos los nombres de atributo + 45 bytes por nombre de atributo + Tamaño en bytes brutos (GB) de todos los pares de atributo-valor + 45 bytes por par de atributo-valor
Para calcular el costo de almacenamiento mensual estimado en la región EE.UU. Este (Norte de Virginia) o EE.UU. Oeste (Oregón), tome el tamaño resultante en GB y multiplíquelo por 0,25 USD. En el caso de la región UE (Irlanda), la región Asia Pacífico (Singapur), la región Asia Pacífico (Sídney) o la región EE.UU. Oeste (Norte de California), tome el tamaño resultante en GB y multiplíquelo por 0,275 USD. Para la región Asia Pacífico (Tokio), tome el tamaño resultante en GB y multiplíquelo por 0,276 USD. Para la región de América del Sur (São Paulo), tome el tamaño resultante en GB y multiplíquelo por 0,34 USD.
Amazon SimpleDB mide la utilización de máquina de cada solicitud y factura de acuerdo con la cantidad de capacidad de máquina utilizada para completar la solicitud en cuestión (SELECT, GET, PUT, etc.), normalizada según la capacidad por hora de un procesador Xeon de 1,7 GHz aproximadamente del año 2007. La utilización de máquina depende de la cantidad de datos (número y longitud de atributos) procesados por cada solicitud. Una operación GET que recupera 256 atributos utilizará más recursos que una operación GET que solo recupere 1 atributo. Una operación SELECT con varios predicados que examine 100 000 atributos costará más que una consulta de un único predicado que examine 250.
En el mensaje de respuesta de cada solicitud, Amazon SimpleDB devuelve un campo llamado Uso de procesador. El uso de procesador es la medida de los recursos de máquina que consume cada solicitud. No incluye ancho de banda ni almacenamiento. El uso de procesador se registra como la parte de una hora de máquina utilizada para completar una determinada solicitud. En la región de EE.UU. Este (Norte de Virginia) y EE.UU. Oeste (Oregón), el costo de una solicitud es el uso de procesador (expresado en horas) * 0,14 USD por hora de máquina de Amazon SimpleDB. El costo de todas las solicitudes es la suma del uso de procesador (expresada en horas) * 0,14 USD.
Por ejemplo, si a lo largo de un mes la suma del uso de procesador correspondiente a sus solicitudes utiliza el equivalente a un procesador Xeon de 1,7 GHz durante 9 horas, el cargo será el siguiente:
9 horas * 0,14 USD por hora de máquina de Amazon SimpleDB = 1,26 USD.
Si los dominios de consulta se encuentran en la región UE (Irlanda), Asia Pacífico (Tokio), Asia Pacífico (Singapur), Asia Pacífico (Sídney) o EE.UU. Oeste (Norte de California), las horas de máquina de Amazon SimpleDB se calcularán a un precio de 0,154 USD por hora de máquina. Si los dominios de consulta se encuentran en la región América del Sur (São Paulo), las horas de máquina de Amazon SimpleDB se calcularán a un precio de 0,19 USD por hora de máquina. Todos los cálculos de costo deben ajustarse para que reflejen los precios de la región correspondiente.
El uso que realice de este servicio está sujeto al Contrato de cliente de Amazon Web Services.