lunes, 13 de marzo de 2017

JSON en SQL Server 2016: Página 2 de 4 Páginas

Almacenamiento de datos de JSON en SQL Server:

Desde sistemas externos formato información como texto JSON, JSON también se almacena en SQL Server como texto. Puede utilizar columnas NVARCHAR estándar para almacenar datos JSON. Una simple mesa donde algunos datos como JSON se muestran en el ejemplo siguiente:
CREATE TABLE Person (
 Id int IDENTITY PRIMARY KEY NONCLUSTERED,
 FirstName nvarchar(100) NOT NULL, 
 LastName nvarchar(100) NOT NULL,
 InfoJson nvarchar(max)

) WITH (MEMORY_OPTIMIZED=ON)

Aquí puede ver la principal diferencia entre los sistemas relacionales y documento tradicionales y el modelo híbrido que proporciona SQL Server 2016. En el año 2016 de SQL Server, puede combinar ambas columnas escalares (FirstName y LastName en este ejemplo) y las columnas que contienen JSON (InfoJSON en este ejemplo).
En SQL Server, puede organizar los datos como una o varias columnas JSON o escalar y combinarlos con columnas espacial o XML si es necesario. En la misma tabla, se pueden combinar columnas relacionales estándar que permiten un acceso más rápido y JSON que proporcionan flexibilidad y desarrollo rápido de aplicaciones. A diferencia de almacenamiento sólo relacional o sólo documento donde tienes que elegir entre dos principios de modelado de datos, SQL Server le ofrece un modelo de almacenamiento de datos híbrido donde se puede usar lo mejor de ambos métodos de modelado de datos.
Aunque JSON se almacena en una columna de texto, no es sólo "un texto sin formato." SQL Server tiene soporte incorporado para optimizar el almacenamiento de información de columnas de texto mediante diversos mecanismos de compresión tales como compresión UNICODE que puede proporcionar hasta una 50% de compresión. También puede almacenar texto JSON en tienda tablas de columna o comprimirlo explícitamente usando la función incorporada de COMPRESS que utiliza el algoritmo de GZip.
JSON es totalmente compatible con cualquier componente de SQL Server o la tecnología que funciona con datos NVARCHAR. En el ejemplo anterior, JSON se almacena en una tabla en memoria OLTP (Hekaton) que proporciona rendimiento de procesamiento extrema. Puede almacenar JSON en tablas estándar, índices de almacén de columnas, o en FILESTREAM. También se puede cargar de Hadoop Polybase tablas externas, leer desde sistemas de archivos, estirar a SQL Azure, utilice cualquier método de replicación y mucho más. Si combinas las tablas que almacenan documentos JSON con otras características de SQL Server, como Temporal o seguridad de nivel de fila, es posible que algunas características de gran alcance que no están disponibles en las bases de datos existentes documento. 

Si no quieres mantener JSON como formato de texto libre, puede Agregar una validación que comprueba que JSON en la columna de texto está formateado correctamente utilizando restricciones CHECK estándar y la función ISJSON:
ALTER TABLE Person
ADD CONSTRAINT [Content should be formatted as JSON]
 CHECK ( ISJSON( InfoJSON )> 0 )
Se trata de una restricción de control de SQL Server estándar que permite validar si el texto almacenado en la columna JSON está correctamente formateado. Esta restricción es opcional, usted puede dejar una columna de texto plano como en el ejemplo anterior; sin embargo, las consultas pueden fallar en tiempo de ejecución si su texto JSON en una fila no está formateada correctamente o si no agrega la condición ISJSON en la cláusula WHERE para excluir columnas JSON válidos. 

JSON ya que se representa como texto, no es necesario realizar cambios en el cliente de aplicaciones, esperar a que los nuevos controladores o cambiar protocolo. Puede leer o escribir documentos JSON en las aplicaciones de C#, Java y Node.js como valores de cadena estándar. JSON puede ser cargado en modelos ORM como campos de cadena y enviarse directamente a código del lado del cliente JavaScript mediante peticiones Ajax. Cualquier herramienta ETL también puede cargar o leer JSON porque no hay nuevo formato o interfaz.

Funciones integradas para el procesamiento de JSON

2016 de SQL Server proporciona funciones de análisis y procesamiento de texto JSON. JSON funciones integradas que están disponibles en SQL Server 2016 son:
  • ISJSON (jsonText) comprueba si el texto NVARCHAR es bien formateado según la especificación JSON. Puede utilizar esta función para crear restricciones check en columnas NVARCHAR que contienen texto JSON
  • JSON_VALUE (jsonText, ruta) analiza jsonText y extrae valores escalares en JavaScript-como ruta de acceso especificada (ver abajo algunos ejemplos de la trayectoria JSON)
  • JSON_QUERY (jsonText, camino) que analiza jsonText y extrae objetos o arrays en JavaScript-como ruta de acceso especificada (ver abajo algunos ejemplos de la trayectoria JSON)
Estas funciones utilizan JSON rutas para hacer referencia a valores u objetos de texto JSON. Rutas de JSON utilizan JavaScript-como sintaxis para hacer referencia a propiedades en texto JSON. Algunos ejemplos son:
  • '$' –hace referencia a todo objeto JSON en el texto de entrada
  • '$.property1' – referencias property1 en objeto JSON
  • '$[4]' – referencias 5-to elemento de array JSON (índices se cuentan desde 0 como en JavaScript)
  • '$.property1.property2.array1[5].property3.array2[15].property4' – referencias complejo propiedad anidada del objeto JSON
  • '$.info. "first name"' – hace referencia a la propiedad "nombre" en objeto de información. Si la clave contiene algunos caracteres especiales tales como espacio, dólar, etc., debe rodearse con comillas dobles.
Signo de dólar ($) representa el entrada objeto JSON (similar a la raíz "/" en lenguaje XPath). Puede agregar cualquier propiedad JavaScript-como o el arreglo de discos después de "$" a las propiedades de la referencia de objeto JSON. Un ejemplo simple de una consulta donde se utilizan estas funciones es:
SELECT Id, FirstName, LastName,
     JSON_VALUE(InfoJSON, '$.info.”social security number”') as SSN,
     JSON_QUERY(InfoJSON, '$.skills'as Skills
FROM Person AS t 
WHERE ISJSON( InfoJSON ) > 0
AND JSON_VALUE(InfoJSON, '$.Type') = 'Student'
Esta consulta devuelve el nombre y el apellido información de estándar de las columnas de una tabla, números de la seguridad social y una matriz de habilidades desde el JSON columna. Los resultados se devuelven desde las filas donde el InfoJSON celda contiene una válida de JSON y el valor del tipo en el JSON columna es "alumno". Como se puede observar, puede usar JSON valores en cualquier parte de la consulta, como ORDER BY, GROUP BY, etc.
JSON en SQL Server 2016: Página 1 de 4
JSON en SQL Server 2016: Página 3 de 4
JSON en SQL Server 2016: Página 4 de 4

0 comentarios:

Publicar un comentario