Consideraciones importantes de MongoDB

Posted by in MongoDB

En la entrada anterior se describió cómo poner en funcionamiento MongoDB, pero para empezar a trabajar con esta base de datos NoSQL, necesitamos algunos conocimientos previos.

Básicamente, MongoDB está muy vinculado a JavaScript (un lenguaje muy relacionado con la Web), y de hecho, la propia consola de MongoDB es un intérprete Javascript.

Para trabajar con bases de datos MongoDB (y engeneral, con todas las bases de datos NoSQL), es necesario y muy importante tener en cuenta una serie de aspectos:

  • No existe integridad referencial
  • No existe una base de datos separada, sino que es un documento gigante sin ningún tipo de normalización, esto es, aquí no hay reglas de diseño, sino que dependen muy mucho de la información (los registros se llaman documentos)
  • El lenguaje SQL no es el que se utiliza para interactuar con la base de datos, sino que es uno nuevo
  • Las matrices son base fundamental para trabajar con los documentos

En resumen, se puede guardar lo que se quiera y cómo se quiera, sin ningún tipo de reglas. Flexibilidad!!

Esto es bueno, y malo.

A veces, que existan reglas es muy interesante, pues permite «orientar» al usuario, imponer límites, recomendaciones, … siguiendo unas pautas! Saltarse las normas tiene sus implicaciones (restricciones). Por otro lado, la ausencia de reglas deja total libertad al usuario, y …. si no sabemos lo que estamos haciendo, mal asunto!

A mi, me sorprende que esta «libertad» sea tendencia, pero … es lo que hay, y por eso estamos investigando de que va todo esto de las bases de datos NoSQL.

Ahondando más en la documentación, aparecen las primeras «normas» de obligado cumplimiento (ya me extrañaba a mi tanta libertad!!):

  • Lo que son tablas, son llamadas colecciones.
  • Los registros de las tablas, ahora se llaman documentos
  • Los documentos no tienen estructura prefijada (de ahí, la libertad!)
  • Las claves son cadenas, o sea, tipo string
  • No se deben utilizar caracteres punto y coma o signo de dólar ; $ (¿pero … no se podía guardar cualquier cosa?)
  • No puede tener claves duplicadas, por lo que cada documento (registro) tendrá su _ID única (generada por MongoDB, con lo que es una preocupación menos!)

Consecuencias de la flexibilidad:

  • Se pierde el poder de integridad en las transacciones
  • Se pierde el poder de la indexación de usar índices
  • La realización de consultas se hace más complejas cuando hay que trabajar con varias colecciones

En las siguientes entradas pondremos un ejemplopráctico, donde veremos qué podemos hacer, qué no podemos hacer, que ventajas tiene y qué precio hay que pagar por usar bases de datos NoSQL.

Espero que os sirva!