Por decenas de miles de solicitudes/segundo quiero ver 60,000 -> +90,000 solicitudes/segundo.(¿Cómo puedo/Qué debería hacer?) Implemento una base de datos que se escala a las decenas de miles de solicitudes/segundo superiores?
Mi configuración consta de los siguientes:
usuario ---> aplicación web -> cola de mensajes -> parser -> base de datos?
Debo mencionar que el analizador actualmente puede analizar/cosas alrededor de 18750 registros/segundo usando COPY, por lo que estamos limitados en ese extremo hasta que comencemos a agregar más analizadores, esto ya no me preocupa demasiado.
Tengo un sistema que requiere la capacidad de subir a granel lo más rápido que pueda tantos registros como pueda. Este mismo sistema (o puede ser diferente dependiendo de cómo lo enfoque) debe ser capaz de responder a consultas analíticas tipo como este:
wonq = "select sum(amount) from actions where player = '@player' and " + "(type = 'award' or type = 'return') and hand = hand_num" lostq = "select sum(amount) from actions where player = 'player' and " + "type != 'award' and type != 'return' and hand = hand_num"
..... 10-15 mil veces (por usuario) ya que están codificados en otra mesa. Innecesario decir que paginemos estos resultados en 10/page por el momento.
He mirado en lo siguiente: (. Reg correr de los RDBMS molino) (suponiendo que éstos están todos en el mismo servidor)
MySQL - era capaz de entrar en el 15-20 miles de solicitudes/segundo rango; en las condiciones actuales si tratamos de escalar esto necesitamos una base de datos/host cada vez que necesitemos escalar - esto no es posible
couchdb (db orientado a documentos) - no rompió 700 solicitudes/segundo; Realmente estaba esperando que esto nos salve el culo, ¡no es una oportunidad!
vertica (columna db orientada) - estaba llegando a 60000 solicitud/segundo, fuente cerrada, muy caro; esto sigue siendo una opción, pero personalmente no me gustó en absoluto
tokyocabinet (hash based db) - pesa actualmente 45,000 inserts/second y 66,000 select/second; ayer, cuando escribí esto, estaba usando un adapater basado en FFI que funcionaba a aproximadamente 5555 solicitudes/segundo; ¡esta es por lejos la base de datos más increíble que he visto hasta ahora!
terracota - (clúster vm) Actualmente evaluando esto junto con jmaglev (no puedo esperar hasta que aparezca el mismo maglev) - ¡este es EL MÁS LENTO!
Tal vez estoy acercando a este problema mal, pero he oído siempre que RDBMS eran lentos como el infierno - ¿Dónde están estos sistemas súper rápidas que he escuchado acerca?
Condiciones de prueba ::
Solo para PPL saben las especificaciones de mi en mi caja dev son:
dual 3.2ghz intel, 1 gig ram
Mysql mysql.ediciones CNF fueron:
key_buffer = 400M # was 16M innodb_log_file_size = 100M # non existent before innodb_buffer_pool_size = 200M # non existent before
ACTUALIZACIÓN ::
Resulta que terracota podría tener un lugar en nuestra estructura de la aplicación pero de plano no va a sustituir nuestra base de datos en el corto plazo, ya que es velocidades son terribles y es la utilización del montón apesta.
Por otro lado, estaba muy contento de ver que la biblioteca de ruby NON-FFI de tokyocabinet (que significa tyrant/cabinet) es superrápida y en este momento es el primer lugar.
feydr - ¿Podría explicarnos más sobre cómo probó Terracotta? Me gustaría saber más por qué crees que Terracotta es lento. A la mayoría de las personas les resulta extremadamente rápido, por lo que tal vez sea un mal caso de uso, ¿o podría realizarse alguna adaptación? Me encantaría saber más ... –
taylor: es cierto que es un problema. un mal caso de uso; también lo estamos evaluando y probablemente lo hagamos durante algún tiempo, pero como primera prueba de simplemente compartir una lista de objetos en una instancia servidor-cliente, solo pudimos rellenar nuestros objetos a ~ 50/segundo frente a la mayoría de las otras opciones. ~ 600/seg – eyberg
taylor: acabo de notar que su blog habla de 3500 txn/segundo - la terracota otorgada se escalará mucho más fácilmente (lo que significa que todavía tiene un lugar para nosotros), pero creo que la velocidad txn es solo comparativamente hablando ralentizar para reemplazar nuestro rdbms – eyberg