2012-01-13 13 views
7

Veo una gran cantidad de declaraciones como: "Cassandra muy rápido en las escrituras", "Cassandra tiene lee realmente más lento que las escrituras, pero mucho más rápido que MySQL"Cassandra es mucho más lento que Mysql para operaciones simples?

En mi sistema Windows 7: he instalado MySQL de configuración por defecto. Instalé PHP5 de configuración predeterminada. Instalé Casssandra de configuración predeterminada.

Haciendo prueba de escritura simple en mysql: "INSERT INTO wp_test (id, title) VALUES ('ID01', 'test')" me da resultado: 0,0002 (s) Para 1000 inserciones: 0,1106 (s)

Hacer la misma prueba de escritura en Cassandra: $ column_faily-> insert ('id01', array ('title' => 'test')) me da el resultado de: 0.005 (s) Para 1000 inserciones: 1.047 (s)

Para las pruebas de lectura también tengo que Cassandra es mucho más lenta que mysql.

Entonces, la pregunta, ¿suena correcto que tengo 5 ms para una operación de escritura en Cassadra? O algo está mal y debería ser de al menos 0.5ms.

+1

http://stackoverflow.com/questions/4068946/a-bit-of-advice-on-cassandra-vs-mysql y http://stackoverflow.com/questions/2332113/switching-from-mysql-to -cassandra-pros-cons puede tener algunos consejos útiles. –

+0

No me sorprendería si Cassandra estuviera más feliz en un sistema Linux. – ceejayoz

+1

No puede realizar la prueba con 1 registro solamente. Prueba con un millón. MySQL será más lento en la escritura (especialmente si se usa InnoDB) pero puede ser tan rápido o más rápido cuando se trata de leer basado en la clave principal. –

Respuesta

0

Es probable que la madurez de los controladores MySQL, especialmente los controladores MySQL mejorados en PHP 5.3, tengan algún impacto en las pruebas. También es muy posible que la simplicidad de los datos en su consulta esté afectando los resultados; quizás en 100 inserciones de valor, Cassandra se vuelva más rápida.

Pruebe la misma prueba desde la línea de comandos y vea cuáles son las marcas de tiempo, luego intente con números variables de valores. No puedes hacer una sola prueba y basar tu decisión en eso.

+0

Pensemos que intento liberar la situación típica: tengo millones de usuarios y cada usuario quiere cargar 1000 nombres (por ejemplo, títulos de libros). Y a partir de mis pruebas (lo mismo desde la línea de comandos), cada usuario esperará el resultado más de 1 segundo. Si tengo menos de millones de usuarios, entonces mysql me da 0.1 segundos. ¿Esto suena correcto o no? –

2

Cassandra se beneficia enormemente de la paralelización y el procesamiento por lotes. Intente hacer 1 millón de inserciones en cada uno de los 100 hilos (cada uno con su propia conexión & en lotes de 100) y vea cuál es más rápido.

Finalmente, el rendimiento de inserción de Cassandra debe ser relativamente estable (manteniendo un alto rendimiento durante un tiempo muy largo). Con MySQL, encontrará que se desvanece bastante dramáticamente una vez que los btrees utilizados para los índices crezcan demasiada memoria.

+0

la pregunta era sobre la velocidad habitual de 1 o 1000 inserciones por un proceso (pensemos que un usuario hace clic en el botón). Por favor, corrígeme, si envío todas estas 1000 inserciones en paralelo, ¿obtendré velocidad más rápido que 1 segundo? –

11

Cuando la gente dice "Cassandra es más rápido que MySQL", significa que cuando se trata de terabytes de datos y muchos usuarios simultáneos. Cassandra (y muchas bases de datos NoSQL distribuidas) está optimizado para cientos de lectores y escritores simultáneos en muchos nodos, a diferencia de MySQL (y otros DB relacionales) que están optimizados para ser realmente rápido en un solo nodo, pero tienden a caer a piezas cuando intenta escalarlas a través de múltiples nodos. Por cierto, hay una generalización de esta disyuntiva: la E/S de disco más rápida absoluta es simple, los archivos planos de UNIX, y muchas aplicaciones financieras sensibles a la latencia los utilizan por ese motivo.

Si está construyendo el próximo Facebook, quiere algo así como Cassandra porque un solo cuadro de MySQL nunca va a soportar el castigo de miles de lecturas y escrituras simultáneas, mientras que con Cassandra puede escalar a cientos de datos nodos y manejar esa carga fácilmente. Ver scaling up vs. scaling out.

Otro caso de uso es cuando necesita aplicar una gran cantidad de potencia de procesamiento por lotes a los terabytes o petabytes de datos. Cassandra o HBase son geniales porque están integrados con MapReduce, lo que le permite ejecutar su procesamiento en los nodos de datos.Con MySQL, necesitaría extraer los datos y pulverizarlos a través de una red de nodos de procesamiento, lo que consumiría una gran cantidad de ancho de banda de red e implicaría una gran cantidad de complicaciones innecesarias.

+1

He leído mucho sobre los beneficios de Cassandra. Mi pregunta era acerca de 5 ms por una operación de escritura para un solo servidor. ¿Esta velocidad suena correcta? Por ejemplo, si alguien me dice que su mysql toma 5 ms para una operación de escritura (pensemos en el servidor promedio), le respondería con "generalmente debería ser más rápido" –

Cuestiones relacionadas