Como en el 9.2 versión, PostgreSQL agregó un tipo de datos JSON bastante básico. Debajo de la cubierta, el tipo de datos JSON es texto, con una verificación de que quizás el diseño sea una entrada JSON correcta similar a XML. Eventualmente, el equipo descubrió que el volumen de procesamiento JSON y la búsqueda especializada necesaria en PostgreSQL habría sido difícil o racional de aplicar un tipo de datos textual. Por lo tanto, crearon una representación binaria del tipo de datos JSON con una gama completa de operadores y métodos. Aquí viene el tipo de datos JSONB. El tipo de datos JSONB es de hecho un diseño de almacenamiento binario versátil con procesamiento completo, indexación y capacidad de búsqueda. Como resultado, preprocesas la información de JSON a un diseño interno, que tiene solo un valor por clave e ignora el espacio en blanco o depresión adicional, o puede decir la sangría. Dentro de esta guía, aprenderá cómo interactuar con el formulario de datos JSONB en PostgreSQL, así como algunos operadores y métodos útiles para tratar con datos JSONB.
El tipo de datos probablemente requerirá y elegirá usar es JSONB, no la versión temprana de JSON, que solo se usa para la compatibilidad hacia atrás. Entonces, abra el shell de comando PostgreSQL y proporcione los nombres, la base de datos, el puerto y el nombre de usuario del servidor.
Ejemplo 01:
Aquí hay una breve ilustración de las variaciones entre los dos tipos de datos. Tenemos que crear una tabla 'nueva' con una de sus columnas debe ser el tipo de datos 'JSON' de la siguiente manera:
>> Crear tabla nueva (clave de identificación de serie primaria, val json);Inserte algunos valores en la columna 'Val'.
>> Inserte en nuevos valores (Val) ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"clave": "valor"') ;Uso del operador '@>'
Una vez que intentamos buscar entradas con un entero en la lista de columnas 'extra', siempre recibimos un mensaje de error como se adhiere a continuación.
>> seleccionar * de nuevo donde val @> '11';Sí. JSON es solo texto y no es muy eficiente, y no contiene la configuración del operador. Deje que el contenido se cambie a JSONB.
>> ALTER TABLA NUEVA ALTER COLUMN TIPO JSONB;Ahora ejecute la misma consulta en el shell, y el resultado muestra que una fila tiene el número '11' en su matriz como se da a continuación.
>> seleccionar * de nuevo donde val @> '11';Ejemplo 02:
Hagamos una tabla 'bolsa' para ser utilizada en nuestras ilustraciones hasta que comencemos a hablar sobre los métodos y operadores utilizables para el tipo de datos JSONB PostgreSQL. Una de sus columnas, e.gramo. 'Brand' debe ser 'JSONB' DataType de la siguiente manera:
>> Crear bolsa de mesa (ID Serial Primary Key, Brand JSONB no NULL);Usaremos la siguiente declaración de inserción SQL para agregar información a la tabla de PostgreSQL 'Bag':
>> Insertar en valores de bolsa (marca) ('"nombre": "gucci", "color": ["rojo", "negro"], "precio": 10000, "vendido": verdadero,]') , ('"nombre": "Allure", "Color": ["Rojo", "Gris"], "Precio": 85000, "Vendido": Falso,]'), ('"Nombre": "Kidza", "color": ["negro", "blanco"], "precio": 75000, "vendido": verdadero,] ');Puede ver que los datos se han agregado en forma de un diccionario, e.gramo., claves y valores.
Los elementos de esta tabla 'bolsa' se pueden ver utilizando una oración selecta, como se ve a continuación:
>> seleccionar * de la bolsa;Uso del operador '->'
Busquemos los valores en la columna de 'marca' a través de la clave 'nombre' utilizando el operador '->' en nuestra consulta. Obtendrá todos los registros de la clave 'Nombre' de la columna 'Brand'. La salida se mostrará en la nueva columna 'marca'. La salida final aparecerá como se adjunta a continuación. Como puede ver, tenemos tres valores: 'Gucci, Allure, Kidza' para el 'nombre' clave '.
>> Seleccionar marca -> 'Nombre' como marca de la bolsa;Uso del operador '->' usando la cláusula WHERE
Vamos a buscar todas esas filas de la tabla 'bolsa' donde la columna 'marca' tiene el valor 'verdadero' para su clave 'vendida'. La consulta para esta selección es la siguiente:
>> seleccionar * de la bolsa donde marca -> 'vendida' = 'verdadero';Allí se ve, la consulta obtuvo dos filas solo de la mesa 'bolsa' porque solo tiene dos filas que tienen valor 'verdadero' para la clave 'vendida'.
Funciones de PostgreSQL JSONB:
Con información de JSONB, parece haber una variedad de métodos incorporados que se pueden usar. Echemos un vistazo a ellos uno por uno.
Jsonb cada función:
La función JSONB toma los datos y los convierte en el par Key_Value. Considere la siguiente consulta del método jsonb_each donde hemos proporcionado valores. Los datos JSON de nivel más alto se amplían en una serie de combinaciones de valor clave en el resultado. Tenemos dos pares de valor clave, como se muestra a continuación.
>> seleccione jsonb_each ('"nombre": "Allure", "Vendido": "True"' :: JSONB);Función de teclas de objeto JSONB:
Ahora, echaremos un vistazo a la función jsonb_object_keys. Esta función toma los datos y se separa e identifica los valores clave en él. Pruebe la consulta de selección a continuación, en la que hemos estado utilizando el método jsonb_object_keys y proporcionó algunos valores. Este método solo devolverá las claves del documento de nivel más alto JSON para los datos particulares, como se muestra a continuación.
>> seleccione jsonb_object_keys ('"nombre": "kidza", "vendido": "verdadero"' :: jsonb);Función de ruta de extracto de JSONB:
La función de ruta de extracto de JSONB toma el camino para mostrar el valor en el resultado. Pruebe la siguiente consulta en el shell de comando, donde hemos proporcionado 'marca' como el camino al método JSONB JSONB_EXTRAT_PATH. Desde la salida presentada en la imagen a continuación, puede ver que el 'Gucci' es un valor devuelto a la ruta 'Nombre'.
>> seleccione jsonb_extract_path ('"nombre": "gucci", "vendido": true' :: jsonb, 'name');JSONB Función bonita:
Si desea mostrar sus archivos JSON con un diseño fácil de leer, entonces la función JSONB Pretty es la mejor opción. Pruebe la consulta a continuación y obtendrá una salida simple.
>> seleccione jsonb_pretty ('"nombre": "Allure", "Vendido": False' :: JSONB);Conclusión:
Cuando almacena información JSONB en las bases de datos PostgreSQL, obtiene el mejor resultado posible: la simplicidad y la confiabilidad de una base de datos NoSQL combinada con las ventajas de una base de datos relacional. Utilizando numerosos operadores y métodos, demostramos cómo usar el PostgreSQL JSONB. Será capaz de trabajar con datos JSONB utilizando nuestras ilustraciones como referencia.