Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

PostgreSQL JSON vs. JSONB

PostgreSQL proporciona funciones JSON para manipular y consultar datos JSON almacenados en la base de datos. Estas funciones son esenciales para manejar los tipos de datos JSON y JSONB, permitiendo a los usuarios extraer y manipular el contenido JSON con eficacia.

Utilización

Las funciones JSON de PostgreSQL se utilizan para acceder y manipular los tipos de datos JSON y JSONB, que son ideales para almacenar datos semiestructurados. Estas funciones permiten operaciones como extraer elementos, convertir formatos de datos y realizar coincidencias de patrones.

sql
-- Extracting a JSON object field by key
SELECT json_column -> 'key' FROM table_name;

-- Extracting a JSONB object field by key
SELECT jsonb_column -> 'key' FROM table_name;

En estas sintaxis, `->` se utiliza para extraer un objeto JSON, mientras que `->>` se utiliza para extraer un valor de texto de una columna JSON o JSONB.

Funciones JSON adicionales

Aquí tienes algunas funciones adicionales que pueden ser útiles:

  • `jsonb_set`: Actualiza los valores de un documento JSONB.
  • `jsonb_insert`: Inserta un nuevo valor en un documento JSONB en una ruta especificada.
  • `jsonb_path_query`: Extrae valores JSONB que coincidan con una consulta JSONPath especificada.

Ejemplos

1. Extraer un campo JSON

sql
SELECT data -> 'name' AS name
FROM users;

Este ejemplo extrae el valor del campo `nombre` de una columna JSON `datos` de la tabla `usuarios`.

2. Convertir JSON en JSONB

sql
SELECT data::jsonb
FROM users;

Aquí, una columna JSON se convierte en JSONB, lo que proporciona ventajas como eficiencia de almacenamiento, mejoras de rendimiento e indexación y consulta más eficientes.

3. Consulta compleja con JSONB

sql
SELECT id, jsonb_array_elements(data->'items')->>'product_name' AS product_name
FROM orders;

Esta consulta extrae `nombre_producto` de cada elemento del arreglo `items` dentro de una columna JSONB `data`.

Consejos y buenas prácticas

  • Elige JSONB por eficiencia. JSONB es generalmente más rápido para consultar e indexar y ofrece una mayor eficiencia de almacenamiento en comparación con JSON.
  • Utiliza operadores adecuados. Familiarízate con operadores JSON como `->`, `->>` y `#>>` para extraer y manipular datos. Por ejemplo, `->` extrae un objeto JSON, mientras que `->>` extrae un valor de texto.
  • Indexar columnas JSONB. Crea índices en columnas JSONB para acelerar las operaciones de búsqueda.
  • Valida tus datos JSON. Asegúrate de que los datos JSON son válidos antes de insertarlos en la base de datos para evitar errores de ejecución.
  • Utiliza las funciones JSON con criterio. Aunque potentes, las funciones JSON pueden consumir mucho rendimiento; utilízalas cuando sea necesario.
  • Cuándo elegir JSON en lugar de JSONB. Opta por JSON cuando el formato original y el orden de las claves sean importantes para tu caso de uso.

Resumen de los operadores JSON

Operario Descripción
`->` Extrae el objeto JSON
`->>` Extrae un valor de texto de JSON
`#>>` Extrae el valor del texto utilizando elementos de ruta