En esta página se describe cómo trabajar con el tipo de datos JSONB al usar Spanner.
JSONB es un tipo de datos de PostgreSQL que se usa para almacenar datos semiestructurados en el dialecto PostgreSQL de Spanner. JSONB contiene datos en formato de notación de objetos JavaScript (JSON), que sigue la especificación descrita en RFC 7159.
Especificaciones
El tipo de datos JSONB de Spanner almacena una representación normalizada del documento de entrada. Esto implica lo siguiente:
- No se conservan las comillas ni los espacios.
- No se admiten comentarios. Las transacciones o las consultas con comentarios fallan.
- Las claves de objeto se ordenan primero por la longitud de la clave y, después, lexicográficamente por la longitud de la clave de objeto equivalente. Si hay claves de objeto duplicadas, solo se conserva la última.
- Los tipos primitivos (
string,boolean,numberynull) conservan su tipo y su valor.- Los valores de tipo
stringse conservan exactamente. - Los ceros finales se conservan. El formato de salida de los valores de tipo
numberno usa notación científica.
- Los valores de tipo
Los valores
JSONBnullse tratan como noNULLde SQL. Por ejemplo:SELECT null::jsonb IS NULL; -- Returns true SELECT 'null'::jsonb IS NULL; -- Returns false SELECT '{"a":null}'::jsonb -> 'a' IS NULL; -- Returns false SELECT '{"a":null}'::jsonb -> 'b' IS NULL; -- Returns true SELECT '{"a":null}'::jsonb -> 'a'; -- Returns a JSONB 'null' SELECT '{"a":null}'::jsonb -> 'b'; -- Returns a SQL NULLSe conserva el orden de los elementos de la matriz JSONB.
Restricciones
Se aplican las siguientes restricciones con Spanner JSONB:
- Los argumentos de la función
to_jsonbsolo pueden ser de los tipos de datos de PostgreSQL que admite Spanner. - Los valores de tipo numérico pueden tener 4932 dígitos antes del punto decimal y 16.383 dígitos después del punto decimal.
- El tamaño máximo permitido del formato de almacenamiento normalizado es de 10 MB.
- Los documentos
JSONBdeben estar codificados en UTF-8. Las transacciones o consultas conJSONBdocumentos codificados en otros formatos devuelven un error.
Crear una tabla con columnas JSONB
Puedes añadir una columna JSONB a una tabla cuando la crees.
CREATE TABLE Venues (
VenueId BIGINT PRIMARY KEY,
VenueName VARCHAR(1024),