Estoy buscando construir una API RESTful en Go que estaría a cargo de insertar datos basados en los datos enviados por múltiples aplicaciones móviles (que se almacenarían en un clúster de Amazon Redshift). Posiblemente recibiendo decenas de miles de solicitudes por segundo.
Por lo que he leído, Redshift da velocidades de inserción lentas. Es por eso que pocas personas me han aconsejado usar una base de datos intermedia como dynamodb o s3 en la que realizaría las inserciones primero. Luego, en una segunda vez, importaría los datos a Redshift.
Me pregunto por qué tendría que usar Redshift en ese caso, ya que los datos ya estarían almacenados en una base de datos. ¿Crees que puedo proceder de otra manera?
También he pensado en una solución más simple escribiendo en una cola e insertando progresivamente los datos en corrimiento al rojo, pero creo que podría ser un problema si la cola se vuelve cada vez más grande ya que la velocidad de inserción no es lo suficientemente rápida para compensar los datos entrantes.
¡Gracias de antemano por tu ayuda! :-)
Consejos como este normalmente están fuera de tema para StackOverflow, pero...
Amazon Redshift es una base de datos de procesamiento paralelo masivo (MPP) con una interfaz SQL. Se puede usar para consultar TB e incluso PB de datos y puede hacerlo de manera muy eficiente.
Usted pregunta "¿por qué necesitaría usar Redshift?"; la respuesta es si sus requisitos de consulta no se pueden satisfacer con una base de datos tradicional . Si puede usar satisfactoriamente una base de datos normal para sus consultas, entonces no hay una razón real para usar Redshift.
Sin embargo, si sus consultas necesitan Redshift, entonces debe continuar usándolo. El diseño de Redshift es tal que la forma más eficiente de insertar datos es cargarlos desde Amazon S3 a través del comando COPY . Es ineficiente insertar datos a través de INSERT normales a menos que se inserten muchas filas por INSERT (por ejemplo, cientos o miles).
Entonces, algunas preguntas para hacer:
También podría considerar usar Amazon Kinesis Firehose , que puede aceptar un flujo de datos e insertarlo en una base de datos de Amazon Redshift automáticamente.