Lecciones del módulo (1/2)
Integración de JSON y JSONB
Integración JSON y JSONB
PostgreSQL ha reescrito las reglas de las bases de datos combinando la tranquilizadora y colosal naturaleza ACID de SQL con la flexibilidad dinámica y fluctuante de NoSQL. Y lo hizo ofreciendo columnas dedicadas de forma nativa a guardar datos JSON.
Advertencia: en postgres casi siempre se recomienda utilizar JSONB. "B" significa Binario: los documentos JSON insertados en estas columnas pierden su formato puramente textual, pero ganan en que pueden ser validados, consultados con un rendimiento muy alto, manipulados e incluso indexados con el clásico INDEX B-tree o GIN.
Navegando por JSON: el operador "Flecha"
Lamentablemente, la base de datos `ecommerce` actualmente no tiene columnas JSON puras predefinidas. Sin embargo, podemos crear JSON temporales y "transmitirlos" palabra por palabra.
Cuando se trabaja con JSON, los operadores que descienden a objetos y matrices son -> (mantiene los datos como un formato jsonb/json puro) o su versión "extendida" ->> (convierte los datos json encontrados palabra por palabra).
Ejemplo académico si hubiera una columna JSON de "metadatos":
-- Cerca il valore associato alla chiave info
SELECT metadata->'info' FROM users;
-- Cerca dentro info, e prendi testuale city
SELECT metadata->'info'->>'city' FROM users;Consultamos JSON sobre la marcha. Proyecte este json literal `'{"user": {"name": "Mario"}}'::json` y use el operador `->` asociado textualmente (`->>`) para extraer su 'nombre', llamando a la columna extraída 'nombre_usuario'.
Mostrar pista
Transmita a ::json o ::jsonb y use ->'usuario'->>'nombre'.
Solución disponible después de 3 intentos
¿Qué pasa si pasamos una matriz? El acceso a una matriz en json_b en postgres se realiza mediante INDEX (base 0). Extraiga el SEGUNDO elemento palabra por palabra de `'["A", "B", "C"]'::json` y llámelo 'letra'.
Mostrar pista
->>1 (¡es de base cero!)
Solución disponible después de 3 intentos