Pregunta

¿Alguien ha considerado utilizar algo parecido al almacén de datos de Amazon SimpleDB como su base de datos backend?

El alojamiento de SQL Server (al menos en el Reino Unido) es costoso, por lo que se podría usar algo como esto junto con el almacenamiento de archivos en la nube (S3) para crear aplicaciones que podrían crecer con su aplicación.

Genial en teoría, pero ¿alguien consideraría usarlo?De hecho, ¿alguien lo está usando ahora para software de producción real? Me encantaría leer sus comentarios.

¿Fue útil?

Solución

Este es un buen análisis de los servicios de Amazon de Atrevimiento.

S3 manejó lo que normalmente escuché describir como "almacenamiento de blobs".Una aplicación web típica suele tener archivos multimedia y otros recursos (imágenes, hojas de estilo CSS, scripts, archivos de vídeo, etc.) a los que simplemente se accede por nombre/ruta.Sin embargo, muchos de estos recursos también tienen metadatos (p. ej.un archivo de video en YouTube tiene metadatos sobre su calificación, quién lo subió, número de vistas, etc.) que también deben almacenarse.En esta necesidad de almacenamiento esquematizado y consultable es donde entra en juego SimpleDB.EC2 proporciona un servidor virtual que se puede utilizar para cálculos completos con una instancia de sistema de archivos local que no es persistente si el servidor virtual deja de funcionar por algún motivo.Con SimpleDB y S3, tiene los componentes básicos para crear una gran clase de aplicaciones de estilo "Web 2.0" cuando incorpora las capacidades computacionales proporcionadas por EC2.Sin embargo, ni S3 ni SimpleDB brindan una solución para un desarrollador que simplemente desea la experiencia típica de desarrollador LAMP o WISC de crear una aplicación web basada en bases de datos o para aplicaciones que pueden tener necesidades de almacenamiento personalizadas que no encajan perfectamente en los depósitos de almacenamiento de blobs o almacenamiento esquematizado.Sin acceso a un sistema de archivos persistente, los desarrolladores de la plataforma de computación en la nube de Amazon han tenido que idear soluciones sofisticadas que implican realizar copias de seguridad de los datos manualmente desde EC2 a S3 para obtener la experiencia deseada.

Otros consejos

Acabo de terminar de escribir una biblioteca para facilitar la migración de una aplicación a simpledb en Perl, Net::Amazon::SimpleDB::Simple porque las bibliotecas cliente de Amazon me parecieron dolorosas.La biblioteca aún no está en CPAN, pero está en http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm La idea era hacer que fuera trivial introducir y sacar hashes de SimpleDB.

Acabo de portar una aplicación para usarla.En general, estoy impresionado con SimpleDB...incluso las consultas ineficientes tardan sólo 2 o 3 segundos en responder.A SimpleDB no parece importarle el tamaño de su tabla, debido a su naturaleza Erlang/paralelo.Los escaneos de tablas son fáciles para ello.

El dolor proviene del hecho de que no puedes contar, sumar o agrupar.Si planeas hacer alguna de esas cosas...entonces SimpleDB probablemente no sea para ti.Por el momento, en términos de funcionalidad, existe en algún punto entre memcached y MySQL.Puedes SELECCIONAR PEDIDO POR LÍMITE, lo cual es bueno.También es bueno que no tengas que escalarlo tú mismo, y es bueno que no le importe cuánto le metas.Pero las operaciones más avanzadas, como la analítica, son, en el mejor de los casos, dolorosas.Tendrás que hacer tus propios cálculos del lado del servidor.También es una gran ventaja que en cualquier computadora puedo usar la CLI de simpledb. http://code.google.com/p/amazon-simpledb-cli/ para consultar mis datos.

Hay algunos 'Gotchas' confusos. Por ejemplo, los atributos pueden tener más de un valor, y debe establecer explícitamente 'reemplazar' al almacenar elementos.Además, almacenar una cadena undef o nula da como resultado un error de biblioteca, en lugar de eliminar ese par de nombre/valor de atributo o establecer una cadena nula/vacía.

Aprender a pensar en términos de una forma en gran medida no normalizada también es un poco extraño, por lo que apoyaría la sugerencia anterior que dice que es mejor para nuevas aplicaciones.Migrar desde una aplicación SQL a SimpleDB sería doloroso porque la lógica de su aplicación tendría que cambiar.La forma en que haces las cosas es un poco diferente.Los documentos de Amazon son bastante buenos para explicar esto.

Todo esto se puede extraer en una biblioteca que se encuentra encima de SimpleDB, por lo que para usar SimpleDB querrás elegir una buena biblioteca...probablemente no quieras tratarlo directamente.Hay algo de trabajo en el lado de PHP para facilitar las cosas, y ahí está mi biblioteca.Hay una fuente activa RAILS, pero no parece hacer mucho por usted.

En general, aún está en una etapa temprana del juego, pero en comparación con otras API (me viene a la mente Twitter), debo decir que la API REST de SimpleDB es bastante simple (especialmente considerando que es XML) y es cortés trabajar con ella.Yo lo recomendaría...dependiendo de los requisitos de su aplicación y la economía de su uso.Si está buscando escalar rápidamente un servicio que no supone una gran carga para la base de datos y no quiere molestarse con una combinación escalable de MySQL/memcache...entonces SimpleDB puede ofrecerle una solución "simple".

Espero que sus características sigan creciendo y que sea una buena opción para cada vez más aplicaciones que hacen cosas más complejas e interesantes.Pero ahora mismo está dirigido y es apropiado para su servicio Web 2.0 típico.

Usamos SimpleDB casi exclusivamente para nuestros nuevos proyectos.Los aspectos de mantenimiento cero, alta disponibilidad y sin instalación son demasiado buenos.Y para sus desarrolladores de Ruby, consulte Registro simple, una interfaz similar a ActiveRecord para SimpleDB que la hace muy fácil de usar.

¿Pero realmente necesitas SQL Server?¿No puedes vivir con PostgreSQL o MySQL?Ambos han demostrado estar bien para la mayoría de las tareas.

Ahora bien, si necesita funciones de SQL Server, no tiene suerte.

Otra opción es alquilar un servidor.¿Qué tan caro es caro?

(He usado Amazon S3 para almacenar imágenes para una aplicación, está bien y funciona bien, al menos para eso)

No he usado SimpleDB, pero he usado una combinación de S3, EC2 y MySQL para nuestra aplicación.

Siempre que esté dispuesto a utilizar SimpleDB, también podría considerar utilizar MySQL (que es muy escalable y no tan caro).

En el lado de S3 y EC2, también es excelente en la práctica.

SimpleDB funciona muy bien para muchas aplicaciones....Si su proyecto requerirá muchos informes analíticos, uniones, etc., puede considerar MySQL o un modelo híbrido.

Si opta por SimpleDB, desarrollamos Radquery.com para nuestro uso interno y lo abrimos al público.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top