sql >> Base de Datos >  >> NoSQL >> MongoDB

Prácticas recomendadas de NoSQL

Creo que actualmente, toda la idea de los almacenes de datos NoSQL y el concepto de bases de datos de documentos es tan nuevo y diferente de las ideas establecidas que impulsan el almacenamiento relacional que actualmente hay muy pocas (si es que hay alguna) mejores prácticas.

Sabemos en este punto que las reglas para almacenar sus datos dentro de, por ejemplo, CouchDB (o cualquier otra base de datos de documentos) son bastante diferentes a las de una base de datos relacional. Por ejemplo, es prácticamente un hecho que la normalización y el objetivo de 3NF no es algo por lo que uno deba esforzarse. Uno de los ejemplos habituales sería el de un simple blog.

En una tienda relacional, tendría una tabla para "Publicaciones", "Comentarios" y "Autores". Cada autor tendría muchas publicaciones y cada publicación tendría muchos comentarios. Este es un modelo que funciona lo suficientemente bien y se mapea bien sobre cualquier base de datos relacional. Sin embargo, almacenar los mismos datos dentro de un docDB probablemente sería bastante diferente. Probablemente tendría algo así como una colección de documentos Post, cada uno de los cuales tendría su propio Autor y una colección de Comentarios incrustados. consultar una sola publicación es rápido:solo realiza una operación y recupera todo), pero no tiene forma de mantener la relación entre los autores y las publicaciones (ya que todo se convierte en parte del documento de la publicación).

Yo también he visto ejemplos que utilizan un atributo de "tipo" (en un ejemplo de CouchDB). Claro, eso suena como un enfoque viable. ¿Es el mejor? no tengo ni idea Ciertamente, en MongoDB usaría colecciones separadas dentro de una base de datos, haciendo que el atributo de tipo no tenga sentido. Sin embargo, en CouchDB... tal vez eso es mejor. ¿Las otras alternativas? ¿Bases de datos separadas para cada tipo de documento? Esto parece un poco descabellado, así que me inclinaría por la solución de "tipo". Pero así soy yo. Quizás haya algo mejor.

Me doy cuenta de que he divagado bastante aquí y he dicho muy poco, muy probablemente nada que no supieras ya. Sin embargo, mi punto es este:creo que depende de nosotros experimentar con las herramientas que tenemos y los datos con los que estamos trabajando y, con el tiempo, las buenas ideas se difundirán y se convertirán las mejores prácticas. Solo creo que estás preguntando demasiado pronto en el juego.