Sin categoría

Introducción al diseño de documentos Couchbase

La parte no digital de tu vida está llena de documentos. Su escritorio está lleno de ellos. Algunos son estructurados (facturas, tarjetas de visita), otros menos estructurados (notas, bocetos) y otros se encuentran en algún punto intermedio o son una colección de ambos (cuadernos, blocs de dibujo).

La mayoría de las tecnologías de bases de datos han roto esta experiencia común. Generalmente, la causa es tener que forzar nuestros conceptos naturales en agujeros digitales antinaturales. La creación de las bases de datos relacionales, por ejemplo, se debió a la necesidad de almacenar los datos una sola vez para evitar la duplicación debido a las limitaciones de espacio impuestas por la tecnología de la época.

Los métodos relacionales y otras abstracciones centradas en la tecnología son buenos para lo que son, pero ¿qué pasaría si no tuvieras que cambiar tu forma de pensar y trabajar cuando pasas de los conceptos naturales (como los documentos) a la creación de software?

Echemos un vistazo a la naturalidad con la que podemos diseñar documentos para Couchbase.

Datos abiertos sobre la cerveza

El conjunto de datos que vamos a examinar procede originalmente de OpenBeerDB.com y está licenciada bajo la Open Database License. Originalmente los datos eran relacionales, y las descargas del sitio contienen volcados SQL de las bases de datos originales.

Afortunadamente, es bastante fácil volver a montar los datos en su forma más natural. Vamos a profundizar en la migración de los datos de De SQL a NoSQL más adelante en un post sobre "Migración a Couchbase".

En primer lugar, veamos los dos tipos de documentos que tenemos.

Cerveza (por supuesto)
{
"_id": "beer_1554_Enlightened_Black_Ale",
"_rev": “1-191ae52a6c773fd7749b65ffd9ae8044”,
"cervecería": "New Belgium Brewing",
"nombre": "1554 Enlightened Black Ale",
"abv": “5.5”,
"descripción": "Nacida de una inundación y de un texto belga centenario, la 1554 Enlightened Black Ale utiliza una cepa de levadura lager ligera y maltas chocolatadas oscuras para redefinir lo que puede ser una cerveza oscura. En 1997, una inundación en Fort Collins destruyó la receta original que nuestro investigador, Phil Benstein, encontró en la biblioteca. Así que Phil y el maestro cervecero, Peter Bouckaert, viajaron a Bélgica para recuperar este estilo único perdido en el tiempo. Su primer reto fue descifrar una escritura anticuada y unas unidades de medida desfasadas, pero la prueba y el error (y muchos meses de muestreo interno) culminaron en 1554, una cerveza oscura muy bebible con un cuerpo y una sensación en boca moderados".,
"categoría": "Ale belga y francesa",
"estilo": "Otras cervezas belgas,
"actualizado": “22 de julio de 2010, 20:00:20”
}

Aquí está el documento que describe la 1554 Enlightened Black Ale de New Belgium Brewing. Por supuesto, probablemente ya lo sabías porque has leído el documento. No tenías (¡afortunadamente!) que leer algo como esto:

id nombre brewery_id abv style_id
1 1554 Ale Negra Iluminada 2 5.5 3

Que, aunque está muy normalizada y relacionada, no es terriblemente informativa por sí misma. Incluso con la adición de las otras dos tablas en esta relación, sigue siendo un poco de un dolor de leer y mentalmente volver a montar.

Además del nombre de la cerveza y de quién la fabrica, también encontramos su ABV, una descripción y una categoría y estilo. El único "identificador" mencionado en el documento es un identificador natural construido para la propia cerveza. Aquí se mencionan relaciones, pero siguen siendo humanamente legibles y (como veremos más adelante) recuperables.

Ahora echemos un vistazo al propio documento de New Belgium Brewing...

Cervecería
{
"_id": "cerveceria_nueva_belgica_cerveza",
"_rev": “1-e405d6f86ec028a4fe0d18be0a6d4fa1”,
"nombre": "New Belgium Brewing",
"dirección": [
"500 Linden Street"
],
"ciudad": "Fort Collins",
"estado": "Colorado",
"código": “80524”,
"país": "Estados Unidos",
"teléfono": “1-888-622-4044”,
"sitio web": "https://www.newbelgium.com/",
"descripción": "Vamos a establecer la escena: 1989. Bélgica. Un chico en bicicleta (vale, que sea un joven de 32 años). Mientras nuestro joven aspirante a cervecero casero pasea en su bicicleta de montaña con neumáticos gordos por pueblos europeos famosos por su cerveza, New Belgium Brewing Company no era más que un destello en sus ojos. O sótano. Porque Jeff Lebesch regresaba a Fort Collins con un puñado de ingredientes y una imaginación llena de recetas. Y luego estaba la cerveza. ¿Las dos primeras creaciones de Jeff elaboradas en el sótano? Una dubbel marrón con matices terrosos llamada Abbey y una ámbar extraordinariamente equilibrada a la que llamó Fat Tire. Decir que el resto fue historia sería pasar por alto la participación de su mujer. Kim Jordan fue la primera embotelladora, representante de ventas, distribuidora, comercializadora y planificadora financiera de New Belgium. Y ahora es nuestra Directora General".,
"geo": {
"loc": [
“-105,07”,
“40.5929”
],
"exactitud": "RANGO_INTERPOLADO"
},
"actualizado": “22 de julio de 2010, 20:00:20”
}

Observará que el ID de este documento es similar, pero ahora utilizamos el prefijo "brewery_". Los prefijos en los ID de ambos documentos ayudan a los seres humanos a encontrarlos de nuevo (al igual que los ID basados en nombres). Es posible utilizar UUIDs, IDs numéricos o IDs basados en fechas. Sin embargo, puede ser útil poder "crear a mano" un ID para la búsqueda en lugar de tener que cargar siempre los resultados de una consulta para encontrar lo que se busca en la base de datos.

Este documento no tiene el aspecto que cabría esperar de cualquier versión estructurada de una tarjeta de visita. De hecho, probablemente podríamos haber utilizado formatos de contacto basados en JSON.

Conclusión

Couchbase no tiene esquemas, así que introducir estos dos documentos en la base de datos no lleva más tiempo que escribirlos y añadirlos a la base de datos. El verdadero valor de la estructura, los valores y los nombres de las claves entran en juego más tarde en el proceso, en lugar de ser necesarios antes de que estemos seguros de lo que estamos construyendo.

En la próxima entrega, veremos algunas consideraciones para determinar cuándo utilizar un documento para una colección de datos y cuándo utilizar varios documentos.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Benjamin Young

Benjamin Young es un Ingeniero de Experiencia de Usuario en Couchbase especializado en diseño de fundas de cojines y asientos para Apache CouchDB y malabares con cubos para Membase.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.