SlideShare uma empresa Scribd logo
1 de 23
¿Cómo funciona la
replicación en
MongoDB?
Gonzalo Ortiz Jaureguizar
Software Engineer at 8Kdata
@gortizja
Acerca de 8Kdata
Investigación y desarrollo en bases de datos
Desarrolladores de ToroDB.
Una base de datos NoSQL sobre SQL.
Compatible a nivel de protocolo con MongoDB
Disponible con licencia AGPLv3 en Github
http://www.8kdata.com/torodb/
Conceptos y
definiciones
Replicación
Mantener la misma información en múltiples nodos
Single-master vs Multi-master
Nodo
Proceso que participa en la replicación. En MongoDB los nodos son
procesos Mongod corriendo en la misma o distintas máquinas.
Replica Set
Conjunto de nodos que participan en la replicación
Conceptos y definiciones
Más conceptos y definiciones
Consistencia (Consistency):
Que cada nodo vea la misma información en cada instante
Consistencia eventual
➢ Los nodos no ven la misma información durante una pequeña
ventana de tiempo.
Disponibilidad (Availability):
Cada petición tiene una respuesta indicando si ha sido fructuosa.
Tolerancia a particiones (Partition tolerance):
Teorema CAP
“Es imposible en un sistema
distribuido garantizar, a la vez,
consistencia, disponibilidad y
tolerancia a particiones”
Ejemplos:
C&A: RBDMs
C&P: MongoDB*
A&P: DynamoDB
¿Por qué replicar los datos?
Rendimiento en lectura.
Al estar los datos en varios nodos, pueden distribuirse las lecturas
entre ellos.
Especialmente importante en datos distribuidos mundialmente.
Tolerancia a particiones de red.
Tolerancia a pérdida de datos por fallo de nodos.
Si, por ejemplo, falla el disco duro de un nodo, los datos siguen estando
en los demás.
Nodos para tareas específicas (reportes, backups…).
Por ejemplo… ¡ToroDB!
Replicación en
MongoDB
Varios nodos forman un replica set.
Cada nodo conoce las direcciones de los
demás.
Cada nodo tiene un estado/rol. Los
principales son primario y secundario.
Cuando todo va
bien
Las escrituras del cliente se aplican
siempre en el nodo primario.
El nodo primario almacena los cambios en
su oplog.
Los nodos secundarios leen de manera
constante del oplog, aplicando los
cambios que encuentran.
Cuando todo va
bien
Las escrituras del cliente se aplican
siempre en el nodo primario.
El nodo primario almacena los cambios en
su oplog.
Los nodos secundarios leen de manera
constante del oplog, aplicando los
cambios que encuentran.
Se puede leer de los secundarios, pero es
una lectura potencialmente inconsistente
debido al retardo de replicación.
Canales de
comunicación
Canal de datos
Cada nodo secundario
escoge un nodo del cual
replicar los datos
Canal de feedback
Cada nodo secundario
informa de su progreso al
nodo del cual replica
Heartbeat
Cada dos segundos, cada
Cuando las cosas
van menos bien
Cuando alguno de los nodos secundarios
no reciben noticias del maestro en 10 segs,
comienzan una votación para promocionar
a primario.
Los nodos pueden votar favorable o
desfavorablemente (por ejemplo, si el
candidato va más retrasado o si el votante
considera que el primario está sano).
Si el candidato obtiene el voto favorable de
la mayoría, es promocionado a maestro.
Todo bien...
¿Todo controlado?
Todo bien...
¿Todo controlado?
Cuando las cosas
van aún peor:
Rollbacks
Los rollbacks ocurren cuando:
1. El nodo primario (amarillo)
acepta peticiones sin replicarlas
a la mayoría
2. El nodo primario se cae
3. Un nodo secundario promociona
a primario (rosa)
4. El nuevo primario acepta
escrituras
5. El antiguo primario vuelve a ser
Cuando las cosas
van aún peor:
Rollbacks
Un rollback implica perder escrituras
que se suponían guardadas.
Para evitar rollbacks es necesario
asegurarse que cada escritura ha sido
replicada a la mayoría de los nodos
antes de confirmarla al cliente.
Para ello el cliente debe usar la opción
w: majority*.
* Esto es especialmente importante en
MongoDB 3.2 (ticket SERVER-18453)
En MongoDB Todas las acciones
ejecutadas por clientes tienen un tiempo
máximo de ejecución.
Cuando se hace una escritura con w:
majority se ha de esperar a que la mayoría
de los nodos confirmen que han replicado
el cambio.
Si la confirmación llega a la vez que el
timeout de la ejecución, el cliente puede
ver que la operación ha fallado cuando, en
realidad, se ha escrito.*
*Probado en 2.4.3
Cuando las cosas
van aún peor:
Falsos negativos
Cuando todo se
complica: Dirty
and stale reads
Las lecturas sucias y rancias ocurren
cuando se lee de un nodo que se cree
primario pero que no lo es.
Dirty read
Leer datos que luego sufrirán
un rollback.
Stale read:
Leer datos que no están
actualizados, pues han
sido modificados en el
verdadero primario.
Cuando todo se
complica: Dirty
and stale reads
Leer datos incorrectos puede suponer
inconsistencias difíciles de detectar en la
capa de aplicación.
Estas inconsistencias ocurren incluso
cuando se escribe con w: majority.
Las lecturas sucias (dirty reads) pueden
evitarse modificando las lecturas con
level: majority*.
Las lecturas rancias (stale reads) no
pueden evitarse (AFAIK)
* Solo si todos los nodos son MongoDB 3.2
Conclusiones
MongoDB puede facilitar
enormemente el desarrollo de
aplicaciones.
Permite alcanzar un gran
rendimiento si se relajan las
condiciones de persistencia y
coherencia.
Es fácil relajar las relajar estas
condiciones inconscientemente.
Incluso forzando las condiciones
más restrictivas, puede producir
incoherencias
Conclusiones
MongoDB puede facilitar
enormemente el desarrollo de
aplicaciones.
Permite alcanzar un gran
rendimiento si se relajan las
condiciones de persistencia y
coherencia.
Es fácil relajar las relajar estas
condiciones inconscientemente.
Incluso forzando las condiciones
más restrictivas, puede producir
incoherencias
Agradecimientos a...
MongoDB Inc
Por su software
¡Por su documentación!
➢ De las cuales se han usado varios diagramas.
Especialmente a Spencer T Brody.
➢ Cuya charla en MongoDB World 2016 inspira esta.
Kyle Kingsbury, o Aphyr
¿Cómo funciona la replicación en mongo db?

Mais conteúdo relacionado

Mais procurados

Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Introducción a la Capa de Red
Introducción a la Capa de RedIntroducción a la Capa de Red
Introducción a la Capa de RedJavier Peinado I
 
El procesador y sus registros internos
El procesador y sus registros internosEl procesador y sus registros internos
El procesador y sus registros internosromo91
 
Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...
Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...
Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...Francesc Perez
 
Unidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasUnidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasDeysi Hdz
 
Bases de Datos Distribuidas
Bases de Datos DistribuidasBases de Datos Distribuidas
Bases de Datos DistribuidasMiguel Serrano E
 
Normalizacion de Base de datos - Grupo 6
Normalizacion de Base de datos - Grupo 6Normalizacion de Base de datos - Grupo 6
Normalizacion de Base de datos - Grupo 6NimrodRodrguez
 
Trab. Multiplexacion
Trab. MultiplexacionTrab. Multiplexacion
Trab. MultiplexacionDiego Lucero
 
Jerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoJerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoEdwin Loayza
 
Clasificacion de los protocolos de enrutamiento
Clasificacion de los protocolos de enrutamientoClasificacion de los protocolos de enrutamiento
Clasificacion de los protocolos de enrutamientoOscar
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosEsteban Andres Diaz Mina
 
Arquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos DistribuidasArquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos DistribuidasAntonio Soria
 
Clasificación y modelos de bases de datos
Clasificación y modelos de bases de datosClasificación y modelos de bases de datos
Clasificación y modelos de bases de datosastrid2014
 
Bases de Datos Distribuidas
Bases de Datos DistribuidasBases de Datos Distribuidas
Bases de Datos DistribuidasMiguel José
 

Mais procurados (20)

Base de datos distribuidas
Base de datos distribuidasBase de datos distribuidas
Base de datos distribuidas
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Introducción a la Capa de Red
Introducción a la Capa de RedIntroducción a la Capa de Red
Introducción a la Capa de Red
 
DIRECCIONAMIENTO IP BASICO I
DIRECCIONAMIENTO IP BASICO IDIRECCIONAMIENTO IP BASICO I
DIRECCIONAMIENTO IP BASICO I
 
El procesador y sus registros internos
El procesador y sus registros internosEl procesador y sus registros internos
El procesador y sus registros internos
 
Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...
Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...
Conceptos y protocolos de enrutamiento: 3. Introducción a los protocolos de e...
 
Unidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasUnidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos Distribuidas
 
Bases de Datos Distribuidas
Bases de Datos DistribuidasBases de Datos Distribuidas
Bases de Datos Distribuidas
 
Componentes de un SGBD
Componentes de un SGBDComponentes de un SGBD
Componentes de un SGBD
 
Normalizacion de Base de datos - Grupo 6
Normalizacion de Base de datos - Grupo 6Normalizacion de Base de datos - Grupo 6
Normalizacion de Base de datos - Grupo 6
 
Trab. Multiplexacion
Trab. MultiplexacionTrab. Multiplexacion
Trab. Multiplexacion
 
Jerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoJerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismo
 
Clasificacion de los protocolos de enrutamiento
Clasificacion de los protocolos de enrutamientoClasificacion de los protocolos de enrutamiento
Clasificacion de los protocolos de enrutamiento
 
Que es MongoDB
Que es MongoDBQue es MongoDB
Que es MongoDB
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de Datos
 
Arquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos DistribuidasArquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos Distribuidas
 
Clasificación y modelos de bases de datos
Clasificación y modelos de bases de datosClasificación y modelos de bases de datos
Clasificación y modelos de bases de datos
 
Bases de Datos Distribuidas
Bases de Datos DistribuidasBases de Datos Distribuidas
Bases de Datos Distribuidas
 

Destaque

How Bengaluru became the Biotech Capital of India
How Bengaluru became the Biotech Capital of IndiaHow Bengaluru became the Biotech Capital of India
How Bengaluru became the Biotech Capital of IndiaKiran Shaw
 
Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...
Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...
Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...Rondoniadinamica Jornal Eletrônico
 
Robot In OpenGL Using Line Function
Robot In OpenGL Using Line Function Robot In OpenGL Using Line Function
Robot In OpenGL Using Line Function Jannat Jamshed
 
Manifestaciones culturales
Manifestaciones culturalesManifestaciones culturales
Manifestaciones culturalesamjomach
 
Andrea conoce a Facundo
Andrea conoce a Facundo Andrea conoce a Facundo
Andrea conoce a Facundo josefinaconca
 
Presentación 15 16-terminal
Presentación 15 16-terminalPresentación 15 16-terminal
Presentación 15 16-terminalPaula Gómez
 
Junior Cert Geography Notes
Junior Cert Geography NotesJunior Cert Geography Notes
Junior Cert Geography NotesNoel Hogan
 
Manifestaciones culturales
Manifestaciones culturalesManifestaciones culturales
Manifestaciones culturalesVM Sahariel
 
Қазақтың ұлттық тағамдары және салт-дәстүрлері
Қазақтың ұлттық тағамдары және салт-дәстүрлеріҚазақтың ұлттық тағамдары және салт-дәстүрлері
Қазақтың ұлттық тағамдары және салт-дәстүрлеріBilim All
 

Destaque (12)

Resultado de educadoras
Resultado de educadorasResultado de educadoras
Resultado de educadoras
 
How Bengaluru became the Biotech Capital of India
How Bengaluru became the Biotech Capital of IndiaHow Bengaluru became the Biotech Capital of India
How Bengaluru became the Biotech Capital of India
 
Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...
Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...
Suspeitas levam TCE a suspender licitação avaliada em mais de R$ 21,3 milhões...
 
Robot In OpenGL Using Line Function
Robot In OpenGL Using Line Function Robot In OpenGL Using Line Function
Robot In OpenGL Using Line Function
 
Manifestaciones culturales
Manifestaciones culturalesManifestaciones culturales
Manifestaciones culturales
 
Autonomía
AutonomíaAutonomía
Autonomía
 
Generosidad
GenerosidadGenerosidad
Generosidad
 
Andrea conoce a Facundo
Andrea conoce a Facundo Andrea conoce a Facundo
Andrea conoce a Facundo
 
Presentación 15 16-terminal
Presentación 15 16-terminalPresentación 15 16-terminal
Presentación 15 16-terminal
 
Junior Cert Geography Notes
Junior Cert Geography NotesJunior Cert Geography Notes
Junior Cert Geography Notes
 
Manifestaciones culturales
Manifestaciones culturalesManifestaciones culturales
Manifestaciones culturales
 
Қазақтың ұлттық тағамдары және салт-дәстүрлері
Қазақтың ұлттық тағамдары және салт-дәстүрлеріҚазақтың ұлттық тағамдары және салт-дәстүрлері
Қазақтың ұлттық тағамдары және салт-дәстүрлері
 

Semelhante a ¿Cómo funciona la replicación en mongo db?

Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresqljockbrera
 
Xombra diferencias entre_hub_vs._switch
Xombra diferencias entre_hub_vs._switchXombra diferencias entre_hub_vs._switch
Xombra diferencias entre_hub_vs._switchJohanna Moran
 
Protocolos y servicios informaticos
Protocolos y servicios informaticosProtocolos y servicios informaticos
Protocolos y servicios informaticosAlonso Almaraz
 
Bases de datos distribuidas
Bases de datos distribuidasBases de datos distribuidas
Bases de datos distribuidassandrap0
 
Niveles De Aislamiento
Niveles De AislamientoNiveles De Aislamiento
Niveles De Aislamientoguest1db220
 
Ethereum y los contratos inteligentes
Ethereum y los contratos inteligentesEthereum y los contratos inteligentes
Ethereum y los contratos inteligentesVic Perez
 
10 network applications
10 network applications10 network applications
10 network applicationscyberleon95
 
10 network applications
10 network applications10 network applications
10 network applicationsyimfer1
 
10 network applications
10 network applications10 network applications
10 network applicationsJuan Camilo
 
Multithreading a la manera de Delphi
Multithreading a la manera de DelphiMultithreading a la manera de Delphi
Multithreading a la manera de DelphiMayra Mendieta
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUSLuis Zurita
 

Semelhante a ¿Cómo funciona la replicación en mongo db? (20)

Bd nosql tecnicas III
Bd nosql tecnicas IIIBd nosql tecnicas III
Bd nosql tecnicas III
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
Modelo paso de mensajes
Modelo paso de mensajesModelo paso de mensajes
Modelo paso de mensajes
 
Xombra diferencias entre_hub_vs._switch
Xombra diferencias entre_hub_vs._switchXombra diferencias entre_hub_vs._switch
Xombra diferencias entre_hub_vs._switch
 
Redes u6
Redes u6Redes u6
Redes u6
 
Protocolos y servicios informaticos
Protocolos y servicios informaticosProtocolos y servicios informaticos
Protocolos y servicios informaticos
 
Bases de datos distribuidas
Bases de datos distribuidasBases de datos distribuidas
Bases de datos distribuidas
 
Gestion de transacciones
Gestion de transaccionesGestion de transacciones
Gestion de transacciones
 
Niveles De Aislamiento
Niveles De AislamientoNiveles De Aislamiento
Niveles De Aislamiento
 
Trabajo z
Trabajo zTrabajo z
Trabajo z
 
Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Ethereum y los contratos inteligentes
Ethereum y los contratos inteligentesEthereum y los contratos inteligentes
Ethereum y los contratos inteligentes
 
Atix23
Atix23Atix23
Atix23
 
Atix23
Atix23Atix23
Atix23
 
Auto negociacion
Auto negociacionAuto negociacion
Auto negociacion
 
10 network applications
10 network applications10 network applications
10 network applications
 
10 network applications
10 network applications10 network applications
10 network applications
 
10 network applications
10 network applications10 network applications
10 network applications
 
Multithreading a la manera de Delphi
Multithreading a la manera de DelphiMultithreading a la manera de Delphi
Multithreading a la manera de Delphi
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
 

¿Cómo funciona la replicación en mongo db?

  • 1. ¿Cómo funciona la replicación en MongoDB? Gonzalo Ortiz Jaureguizar Software Engineer at 8Kdata @gortizja
  • 2. Acerca de 8Kdata Investigación y desarrollo en bases de datos Desarrolladores de ToroDB. Una base de datos NoSQL sobre SQL. Compatible a nivel de protocolo con MongoDB Disponible con licencia AGPLv3 en Github http://www.8kdata.com/torodb/
  • 4. Replicación Mantener la misma información en múltiples nodos Single-master vs Multi-master Nodo Proceso que participa en la replicación. En MongoDB los nodos son procesos Mongod corriendo en la misma o distintas máquinas. Replica Set Conjunto de nodos que participan en la replicación Conceptos y definiciones
  • 5. Más conceptos y definiciones Consistencia (Consistency): Que cada nodo vea la misma información en cada instante Consistencia eventual ➢ Los nodos no ven la misma información durante una pequeña ventana de tiempo. Disponibilidad (Availability): Cada petición tiene una respuesta indicando si ha sido fructuosa. Tolerancia a particiones (Partition tolerance):
  • 6. Teorema CAP “Es imposible en un sistema distribuido garantizar, a la vez, consistencia, disponibilidad y tolerancia a particiones” Ejemplos: C&A: RBDMs C&P: MongoDB* A&P: DynamoDB
  • 7. ¿Por qué replicar los datos? Rendimiento en lectura. Al estar los datos en varios nodos, pueden distribuirse las lecturas entre ellos. Especialmente importante en datos distribuidos mundialmente. Tolerancia a particiones de red. Tolerancia a pérdida de datos por fallo de nodos. Si, por ejemplo, falla el disco duro de un nodo, los datos siguen estando en los demás. Nodos para tareas específicas (reportes, backups…). Por ejemplo… ¡ToroDB!
  • 8. Replicación en MongoDB Varios nodos forman un replica set. Cada nodo conoce las direcciones de los demás. Cada nodo tiene un estado/rol. Los principales son primario y secundario.
  • 9. Cuando todo va bien Las escrituras del cliente se aplican siempre en el nodo primario. El nodo primario almacena los cambios en su oplog. Los nodos secundarios leen de manera constante del oplog, aplicando los cambios que encuentran.
  • 10. Cuando todo va bien Las escrituras del cliente se aplican siempre en el nodo primario. El nodo primario almacena los cambios en su oplog. Los nodos secundarios leen de manera constante del oplog, aplicando los cambios que encuentran. Se puede leer de los secundarios, pero es una lectura potencialmente inconsistente debido al retardo de replicación.
  • 11. Canales de comunicación Canal de datos Cada nodo secundario escoge un nodo del cual replicar los datos Canal de feedback Cada nodo secundario informa de su progreso al nodo del cual replica Heartbeat Cada dos segundos, cada
  • 12. Cuando las cosas van menos bien Cuando alguno de los nodos secundarios no reciben noticias del maestro en 10 segs, comienzan una votación para promocionar a primario. Los nodos pueden votar favorable o desfavorablemente (por ejemplo, si el candidato va más retrasado o si el votante considera que el primario está sano). Si el candidato obtiene el voto favorable de la mayoría, es promocionado a maestro.
  • 15. Cuando las cosas van aún peor: Rollbacks Los rollbacks ocurren cuando: 1. El nodo primario (amarillo) acepta peticiones sin replicarlas a la mayoría 2. El nodo primario se cae 3. Un nodo secundario promociona a primario (rosa) 4. El nuevo primario acepta escrituras 5. El antiguo primario vuelve a ser
  • 16. Cuando las cosas van aún peor: Rollbacks Un rollback implica perder escrituras que se suponían guardadas. Para evitar rollbacks es necesario asegurarse que cada escritura ha sido replicada a la mayoría de los nodos antes de confirmarla al cliente. Para ello el cliente debe usar la opción w: majority*. * Esto es especialmente importante en MongoDB 3.2 (ticket SERVER-18453)
  • 17. En MongoDB Todas las acciones ejecutadas por clientes tienen un tiempo máximo de ejecución. Cuando se hace una escritura con w: majority se ha de esperar a que la mayoría de los nodos confirmen que han replicado el cambio. Si la confirmación llega a la vez que el timeout de la ejecución, el cliente puede ver que la operación ha fallado cuando, en realidad, se ha escrito.* *Probado en 2.4.3 Cuando las cosas van aún peor: Falsos negativos
  • 18. Cuando todo se complica: Dirty and stale reads Las lecturas sucias y rancias ocurren cuando se lee de un nodo que se cree primario pero que no lo es. Dirty read Leer datos que luego sufrirán un rollback. Stale read: Leer datos que no están actualizados, pues han sido modificados en el verdadero primario.
  • 19. Cuando todo se complica: Dirty and stale reads Leer datos incorrectos puede suponer inconsistencias difíciles de detectar en la capa de aplicación. Estas inconsistencias ocurren incluso cuando se escribe con w: majority. Las lecturas sucias (dirty reads) pueden evitarse modificando las lecturas con level: majority*. Las lecturas rancias (stale reads) no pueden evitarse (AFAIK) * Solo si todos los nodos son MongoDB 3.2
  • 20. Conclusiones MongoDB puede facilitar enormemente el desarrollo de aplicaciones. Permite alcanzar un gran rendimiento si se relajan las condiciones de persistencia y coherencia. Es fácil relajar las relajar estas condiciones inconscientemente. Incluso forzando las condiciones más restrictivas, puede producir incoherencias
  • 21. Conclusiones MongoDB puede facilitar enormemente el desarrollo de aplicaciones. Permite alcanzar un gran rendimiento si se relajan las condiciones de persistencia y coherencia. Es fácil relajar las relajar estas condiciones inconscientemente. Incluso forzando las condiciones más restrictivas, puede producir incoherencias
  • 22. Agradecimientos a... MongoDB Inc Por su software ¡Por su documentación! ➢ De las cuales se han usado varios diagramas. Especialmente a Spencer T Brody. ➢ Cuya charla en MongoDB World 2016 inspira esta. Kyle Kingsbury, o Aphyr