ruby on rails - aws - ¿Qué debe tener en cuenta al decidir entre MySQL y SimpleDB de Amazon para una aplicación RoR?
gem aws sdk s3 (5)
Estoy empezando a investigar sobre la posibilidad de utilizar el servicio SimpleDB de Amazon como el almacén de datos para la aplicación RoR que planeo construir. Usaremos EC2 para el servidor web, y también planeamos usar EC2 para los servidores MySQL. Pero ahora la pregunta es, ¿por qué no utilizar SimpleDB?
La aplicación (si tiene éxito) debe ser muy escalable en términos de # de usuarios admitidos, deberá mantener una base de códigos simple y eficiente, y deberá ser confiable.
Tengo curiosidad sobre cuáles son los pensamientos de las comunidades SO sobre esto.
Bien, considerando que DB simple no usa SQL, o incluso tiene tablas, significa que es una bestia completamente diferente de MySQL y otras cosas basadas en SQL ( http://aws.amazon.com/simpledb/ ). No hay restricciones, disparadores o uniones. Buena suerte.
Esta es una forma de ponerlo en funcionamiento: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1242 (a través de http://rubyforge.org/projects/aws-sdb/ )
Supongo que si nunca va a necesitar consultar los datos fuera de los rieles, entonces SimpleDB puede probar que está bien. Pero como no es una base de datos compatible de primera clase, es probable que se encuentre con errores que son difíciles de corregir. No me gustaría ejecutar una aplicación de carriles de producción en un servidor semi-beta.
La biblioteca Ruby SimpleDB no es tan completa como ActiveRecord (el adaptador Rails DB predeterminado), por lo que muchas de las funciones que está acostumbrado a no estarán allí.
En el lado positivo, no tiene esquemas, es escalable y funciona bien con ec2.
Si va a hacer cosas como la búsqueda de texto completo en su aplicación, entonces SimpleDB podría no ser la mejor opción, quédese con AR + sphinx.
Yo mismo estoy muy interesado en este tema. En este momento estoy en un nivel alto de computación en la nube, así que diría que vaya con SimpleDB ya que probablemente escalará mejor en el sentido de que tendrá alta disponibilidad, pero esos son solo mis pensamientos a partir del momento. No por experiencia todavía
Editar: Es cierto que SimpleDB no tiene características normales en una base de datos "normal", pero debería funcionar si solo necesitas una capa CRUD simple para trabajar en contra, que es mi caso
Para mí, esto se siente como "hey estas herramientas geniales, debería construir un proyecto usándolas", en lugar de tener que usar estas herramientas específicas. Tal vez estoy siendo malhumorado, pero se siente como un caso clásico de optimización prematura. Está intentando usar un servicio externo que cuesta dinero para una aplicación que aún no está escrita y no dice que tiene una audiencia garantizada o una que necesariamente se escalará a un nivel que así lo requiera.
"La aplicación (si tiene éxito) debe ser muy escalable en términos de # de usuarios admitidos", en serio, eso describe la mitad de Internet. Es la parte "si tiene éxito" que realmente es la pregunta. Solo concéntrese en construir la aplicación rápida y fácilmente. La forma más fácil de hacerlo es simplemente utilizar ROR, ya que está listo para usar, por así decirlo. Combínalo con una base de datos, usa ActiveRecord y crea algo y atrae a los usuarios.
De hecho, iré más allá y diré que EC2 es bastante caro para servidores siempre en uso. Despliéguelo en Slicehost u otra solución alojada y luego muévalo a EC2 si lo necesita para respaldar la demanda.
Hay una biblioteca llamada SimpleRecord que reemplaza a ActiveRecord, pero usa SimpleDB como su almacén de datos back-end.