mongodb, redis, diferencia mysql

36d412ce19584cf78bd2a1d2988c32a6.jpg1. mysql

 

Base de datos relacional.

 

Hay diferentes métodos de almacenamiento en diferentes motores.

 

La declaración de consulta utiliza la declaración sql tradicional, que tiene un sistema relativamente maduro y un alto grado de madurez.

 

La proporción de bases de datos de código abierto sigue aumentando y la proporción de mysql sigue creciendo.

 

La desventaja es que la eficiencia será significativamente más lenta cuando se procesen cantidades masivas de datos.

 

2. MongoDB

Base de datos no relacional (nosql), que pertenece a la base de datos de documentos. Primero explique la base de datos de documentos, que puede almacenar datos de tipo xml, json y bson. Estos datos son autodescriptivos y presentan una estructura de datos similar a un árbol jerárquico. La estructura de datos consta de pares clave-valor (clave=>valor).

 

Método de almacenamiento: memoria virtual + persistencia.

 

Declaración de consulta: es un método de consulta único de Mongodb.

 

Escenarios adecuados: grabación de eventos, gestión de contenidos o plataforma de blogs, etc.

 

Características de la arquitectura: se puede lograr una alta disponibilidad a través de conjuntos de réplicas y fragmentación.

 

Procesamiento de datos: los datos se almacenan en el disco duro, pero los datos que deben leerse con frecuencia se cargarán en la memoria y los datos se almacenarán en la memoria física para lograr una lectura y escritura de alta velocidad.

 

Madurez y amplitud: Bases de datos emergentes con baja madurez Las bases de datos Nosql son las más cercanas a las bases de datos relacionales, una de las bases de datos más completas, y la población aplicable está en constante crecimiento.

 

Ventaja:

 

¡rápido! El rendimiento de Mongodb en el nivel adecuado de memoria es muy rápido. Almacena datos calientes en la memoria física, lo que hace que la lectura y escritura de datos calientes sea muy rápida.

 

¡Alta expansión!

 

¡Mecanismo de conmutación por error propio!

 

El formato de almacenamiento de json!

 

Desventajas: ¡principalmente sin mecanismo de transacción!

 

3. redis

Base de datos no relacional (nosql)

 

Todos los datos de Redis se almacenan en la memoria y se escriben en el disco regularmente. Cuando la memoria no es suficiente, puede elegir el algoritmo LRU especificado para eliminar los datos.

 

Cuarto, la diferencia entre MongoDB y Redis

Tanto MongoDB como Redis son NoSQL y usan almacenamiento de datos estructurados. Hay ciertas diferencias entre los dos en los escenarios de uso, que se debe principalmente a

Los dos tienen diferentes métodos de procesamiento para el mapeo de memoria y la persistencia. MongoDB recomienda la implementación de clústeres, más teniendo en cuenta la solución de clúster, Redis

Más énfasis en la escritura secuencial de procesos, aunque admite clústeres, se limita al modo maestro-esclavo.

 

Índice MongoDB (v2.4.9) Redis (v2.4.17) Comparación Descripción

Lenguaje de implementación C++ C/C++ -

Protocolo BSON, clase binaria personalizada Telnet -

El rendimiento depende de la memoria, el TPS alto depende de la memoria, el TPS es muy alto Redis es mejor que MongoDB

Expresión e indexación de datos operativos y enriquecidos; más similar a las bases de datos relacionales, admite datos de lenguaje de consulta enriquecidos enriquecidos, menos IO MongoDB es mejor que Redis

La memoria y el almacenamiento son adecuados para el almacenamiento de datos de gran tamaño, se basan en la gestión de la memoria virtual del sistema y utilizan el almacenamiento de archivos de imagen; la tasa de ocupación de la memoria es relativamente alta y la recomendación oficial es implementar de forma independiente en un sistema de 64 bits (32 bits tiene un límite de archivo máximo de 2,5 G, y 64 bits no tiene límite) Después de Redis 2.0, se agrega la función de memoria virtual para superar la limitación de la memoria física, se puede configurar la puntualidad de los datos, similar a Memcache. perspectivas de aplicación, cada una tiene sus propias ventajas

La disponibilidad admite maestro-esclavo, conjunto de réplicas (uso interno del algoritmo de elección de paxos, recuperación automática de fallas), mecanismo de fragmentación automática, que protege al cliente de la conmutación por error y el mecanismo de segmentación y depende del cliente para lograr la lectura y escritura distribuidas; durante la replicación maestro-esclavo , todos los nodos esclavos secundarios que se vuelvan a conectar al nodo maestro deben confiar en la instantánea completa, sin replicación incremental; no es compatible con la fragmentación automática, necesita confiar en el programa para establecer un mecanismo hash consistente Es más complicado y requiere que el cliente resuelva activamente él. (MongoDB generalmente usa la combinación de conjuntos de réplicas y funciones de fragmentación. Los conjuntos de réplicas se enfocan en alta disponibilidad y alta confiabilidad, mientras que la fragmentación se enfoca en el rendimiento y la fácil expansión)

Confiabilidad Después de la versión 1.8, se adopta el método binlog (MySQL también adopta este método) para respaldar la persistencia, aumentando la confiabilidad y confiando en instantáneas para la persistencia; AOF mejora la confiabilidad; mientras mejora la confiabilidad, afecta el rendimiento de acceso MongoDB es mejor que Redis

La consistencia no es compatible con las cosas, depende del propio cliente para garantizar el soporte de las cosas, es relativamente débil y solo puede garantizar que las operaciones en las cosas se ejecuten para que Redis sea mejor que MongoDB.

Análisis de datos La función de análisis de datos integrada (mapreduce) no es compatible con MongoDB es mejor que Redis

Escenarios de aplicación La eficiencia de acceso a datos masivos mejora el rendimiento y el funcionamiento de pequeños volúmenes de datos MongoDB es mejor que Redis

Escenarios de aplicaciones Five, Mysql y Mongodb

Los escenarios aplicables de MongoDB son: los datos no son particularmente importantes (como notificaciones, inserciones), la estructura de la tabla de datos cambia con frecuencia, la cantidad de datos es particularmente grande, la concurrencia de los datos es particularmente alta y los datos La estructura es especial (como las coordenadas de ubicación del mapa).Use MongoDB en algunos casos y use MySQL en otros casos, para que la combinación pueda lograr la máxima eficiencia.

 

1. Si necesita usar mongodb como base de datos back-end en lugar de mysql, es decir, aquí mysql y mongodb pertenecen al nivel paralelo, entonces dicho uso puede tener las siguientes consideraciones: (1) La parte responsable de mongodb se almacena en forma de documentos, puede tener mejor afinidad de código, y es conveniente escribir directamente en formato json. (como registros) (2) La atomicidad se ha tenido en cuenta desde la etapa de diseño de modelos de datos, sin asistencia como transacciones. Es más conveniente para el desarrollo usar un lenguaje como nodejs para el desarrollo. (3) El mecanismo de conmutación por error de mongodb en sí mismo no necesita implementarse de una manera como MHA.

 

2. Use mongodb como una base de datos de caché similar a redis y memcache, proporcione servicios para mysql o recopile y analice registros de back-end. Teniendo en cuenta que mongodb es una base de datos nosql, la declaración de sql y la estructura de datos no son tan amigables como mysql, y hay muchas ocasiones en que mongodb se usa como una base de datos de caché, como redis memcache, que se usa para ayudar a mysql. O simplemente para la recopilación y el análisis de registros.

 

Una de las mayores desventajas de MongoDB es que ocupa mucho espacio, porque pertenece al tipo del principio típico de espacio por tiempo. Entonces, su espacio en disco se desperdiciará más que las bases de datos ordinarias, y hasta ahora no ha implementado la función de compresión en línea.Cuando se agregan, eliminan y modifican datos con frecuencia en MongoDB, si el registro cambia, como cambios en el tamaño de los datos, es fácil Se generan algunos fragmentos de datos y aparecen los resultados causados ​​por la fragmentación, uno es que el índice tendrá problemas de rendimiento.

La otra es que después de un cierto período de tiempo, el espacio ocupado aumentará inexplicablemente, por lo que la base de datos debe repararse y reindexarse ​​regularmente, lo que mejorará la estabilidad y la eficiencia de MongoDB.

 

1.MySQL proviene del nombre de la hija; MongoDB proviene de enorme

2. MySQL usa Tabla/Fila/Columna; MongoDB usa Colección/Documento

3. MySQL necesita especificar el esquema de la tabla, el esquema de cada documento en la colección de MongoDB se puede modificar libremente

4. MySQL admite unión, MongoDB no tiene unión

5. MySQL usa el lenguaje SQL, MongoDB usa funciones similares a JavaScript

 

comparación de comandos

Comparación de los comandos de MongoDB y MySQL Las bases de datos relacionales tradicionales generalmente se componen de tres niveles de conceptos: base de datos, tabla y registro MongoDB se compone de tres niveles: base de datos, colección y documento. Para tablas en bases de datos relacionales, MongoDB no tiene el concepto de columnas, filas y relaciones en la colección, lo que refleja las características del esquema libre.

 

6. La diferencia entre MySQL y Redis

MySQL es un almacenamiento persistente, que se almacena en el disco.Recuperarlo implicará una cierta cantidad de IO.Para resolver este cuello de botella, aparece un caché, como memcached (denominado mc), que es el más utilizado ahora. . Primero, el usuario accede a mc, y si falla, accede a MySQL y luego copia los datos a la parte mc como la memoria y el disco duro.

 

  Redis y mc son cachés y ambos se ejecutan en la memoria, lo que mejora en gran medida la velocidad de acceso del acceso web con un gran volumen de datos. Sin embargo, mc solo proporciona estructuras de datos simples, como el almacenamiento de cadenas; Redis proporciona una gran cantidad de estructuras de datos, como cadenas, listas, conjuntos, hashset, conjuntos ordenados, etc., lo que hace que los usuarios sean mucho más convenientes, después de todo, encapsula una capa de función práctica, mientras logra el mismo efecto, por supuesto, use Redis y abandone lentamente mc.

  La relación entre la memoria y el disco duro. El disco duro coloca los datos principales para el almacenamiento persistente, mientras que la memoria es la parte de los datos que se están ejecutando actualmente. La CPU accede a la memoria en lugar del disco, lo que mejora en gran medida la velocidad de ejecución. Por supuesto , esto se basa en la localización del principio de acceso del programa.

  Razonando a Redis + MySQL, es un mapeo de memoria + relación de disco. MySQL se coloca en el disco y Redis se coloca en la memoria. De esta manera, las aplicaciones web solo acceden a Redis cada vez, y solo acceden a MySQL si no hay datos. encontró.

  Sin embargo, Redis + MySQL y el uso de memoria + disco son preferiblemente diferentes.

La primera es una base de datos en memoria, los datos se almacenan en la memoria y, por supuesto, la velocidad es rápida.

Esta última es una base de datos relacional con funciones potentes pero un acceso lento a los datos.

Al igual que memcache, MongoDB, Redis, todos pertenecen a la serie No SQL.

No es un tipo de cosa, y los escenarios de aplicación también son diferentes. Todavía depende de tus necesidades.

Supongo que te gusta

Origin blog.csdn.net/weixin_57763462/article/details/131713016
Recomendado
Clasificación