Por: Juan Andrés Núñez
Juan Andrés Núñez - juanwmedia

Especialista en tecnologías Web. Me dedico a enseñar desarrollo Web moderno a cualquier persona (físicamente en clase y a través de Internet) desde una perspectiva holística: teniendo en cuenta las competencias técnicas necesarias, junto a las habilidades personales o soft skills. Tienes más información en mi Web.

  • Ahora que entendemos un poco mejor qué es Cloud Firestore y sabemos que pertenece al mundo NoSQL, es el momento examinar qué significa exactamente eso de NoSQL.
  • SQL o structured query language (importante aquí remarcar lo de estructurado) es el lenguaje estándar para trabajar con bases de datos relacionales (importante lo de relacional). Si has utilizado bases de datos anteriormente casi seguro que han sido alguna que pertenece al mundo, como MySQL, MariaDB o PostgreSQL.Si has utilizado bases de datos anteriormente casi seguro que han sido alguna que pertenece al mundo, como MySQL, MariaDB o PostgreSQL.
  • En estas bases de datos cada objeto o entidad vive en una fila de una tabla. Cada una de estas tablas están estrictamente definidas, es decir, cada una de las columnas define un tipo de dato específico como varchar, int o bool. Esto es el schema de la tabla y es inviolable, si intentas añadir un tipo de dato que no corresponde con el schema, encontrarás un error. Aquí enfatizamos la parte de estructurada porque hay una estructura que no puedes variar sobre la marcha, es decir, todos los registros de una tabla tienen la misma estructura o esquema. Esto es lo que se llama normalización de datos.
  • Cuando queremos relacionar elementos de dos o varias tablas, utilizamos una foreign key o clave foránea para trazar esa relación. Luego, a través de SQL expresamos una consulta donde se unen esas claves diferentes tablas, devolviendo el resultado.
  • Teniendo esto claro, una gran diferencia al pasar al lado NoSQL es que los datos no se almacenan en tablas per se, sino en colecciones JSON, un gran árbol JSON (como la Realtime Database) o a través de documentos y colecciones como ya vimos en Cloud Firestore.
  • Otra gran diferencia es que en las bases de datos NoSQL no existe el schema. En su lugar hay una convención pero sin obligación y esto es importante ya que permite iterar o variar el diseño de la base de datos sin tener que recurrir a las migraciones. Esta característica también tiene sus desventajas, como que nada ni nadie te garantiza esa normalización de datos del mundo SQL ya que no sabes con seguridad lo que te estás descargando. Por eso se suele chequear en el cliente que lo que hemos recibido es lo que esperábamos. Lo que perdemos en estructura lo ganamos en flexibilidad.
  • En el mundo NoSQL para obtener datos relacionados existen varias técnicas pero todas se basan en hacer el menor número de peticiones posible. Algo muy común es colocar la información relacionada en lugares donde se pueda descargar en conjunto en una única petición. Ojo, esto quiere decir que quizás tengas que duplicar alguna pieza de información. Otro shock si vienes del mundo SQL.
  • Esta libertad a la hora de estructurar nuestros datos nos permite optimizar la base de datos para lecturas (ocurren muchas más veces que las escrituras) siendo tremendamente rápidas. Además, por esa de-normalización, es más sencillo escalar la base de datos en caso de que sea necesario, de forma horizontal (en más servidores) en lugar de verticalmente (con más recursos como ancho de banda, RAM, etc).

No te pierdas ninguna novedad

Escuela Vue en Twitter

Participa en la Comunidad Escuela Vue

Comunidad Escuela Vue