Introducción a las transferencias de datos de Microsoft SQL Server
Puedes cargar datos de Microsoft SQL Server a BigQuery con el Servicio de transferencia de datos de BigQuery para el conector de Microsoft SQL Server. El conector admite instancias de Microsoft SQL Server alojadas en tu entorno local, Cloud SQL y otros proveedores de servicios en la nube pública, como Amazon Web Services (AWS) y Microsoft Azure. En este documento, se proporciona una descripción general de las opciones de transferencia de datos para tu transferencia de Microsoft SQL Server, así como información sobre la asignación de tipos de datos y los precios.
Para obtener información sobre cómo programar una transferencia de Microsoft SQL Server, consulta Carga datos de Microsoft SQL Server en BigQuery.
Opciones de transferencia de datos
En las siguientes secciones, se proporciona información sobre las opciones de transferencia de datos cuando configuras una transferencia de datos de Microsoft SQL Server.
Configuración de TLS
El conector de Microsoft SQL Server admite la configuración de seguridad a nivel de transporte (TLS) para encriptar tus transferencias de datos a BigQuery. El conector de Microsoft SQL Server admite las siguientes configuraciones de TLS:
El modo Encriptar datos y verificar la AC y el nombre de host. Este modo realiza una validación completa del servidor con TLS a través del protocolo TCPS. Encripta todos los datos en tránsito y verifica que el certificado del servidor de la base de datos esté firmado por una autoridad certificadora (AC) de confianza. Este modo también verifica que el nombre de host al que te conectas coincida exactamente con el nombre común (CN) o un nombre alternativo de la entidad (SAN) en el certificado del servidor. Este modo evita que los atacantes usen un certificado válido para un dominio diferente para suplantar tu servidor de base de datos.
Si tu nombre de host no coincide con el CN o el SAN del certificado, la conexión falla. Debes configurar una resolución de DNS para que coincida con el certificado o usar un modo de seguridad diferente. Usa este modo para obtener la opción más segura y evitar ataques de intermediario (PITM).
El modo Encriptar datos y verificar solo la AC. Este modo encripta todos los datos con TLS a través del protocolo TCPS y verifica que el certificado del servidor esté firmado por una AC en la que confía el cliente. Sin embargo, este modo no verifica el nombre de host del servidor. Este modo se conecta correctamente siempre que el certificado sea válido y lo emita una AC de confianza, independientemente de si el nombre de host del certificado coincide con el nombre de host al que te conectas.
Usa este modo si quieres asegurarte de conectarte a un servidor cuyo certificado esté firmado por una AC de confianza, pero el nombre de host no se puede verificar o no tienes control sobre la configuración del nombre de host.
El modo Solo encriptación. Este modo encripta todos los datos transferidos entre el cliente y el servidor. No realiza ninguna validación de certificado ni de nombre de host.
Este modo proporciona cierto nivel de seguridad, ya que protege los datos en tránsito, pero puede ser vulnerable a ataques PITM.
Usa este modo si necesitas asegurarte de que todos los datos estén encriptados, pero no puedes o no quieres verificar la identidad del servidor. Te recomendamos que uses este modo cuando trabajes con VPC privadas.
El modo Sin encriptación ni verificación. Este modo no encripta ningún dato y no realiza ninguna verificación de certificado ni de nombre de host. Todos los datos se envían como texto sin formato.
No recomendamos usar este modo en un entorno en el que se manejan datos sensibles. Solo recomendamos usar este modo para realizar pruebas en una red aislada en la que la seguridad no sea una preocupación.
Certificado de servidor de confianza (PEM)
Si usas el modo Encriptar datos y verificar la AC y el nombre de host o el modo Encriptar datos y verificar la AC , también puedes proporcionar uno o más certificados con codificación PEM. Estos certificados son necesarios en algunos casos en los que el Servicio de transferencia de datos de BigQuery debe verificar la identidad de tu servidor de base de datos durante la conexión TLS:
- Si usas un certificado firmado por una AC privada dentro de tu organización o un certificado autofirmado, debes proporcionar la cadena de certificados completa o el certificado autofirmado único. Esto es necesario para los certificados emitidos por las AC internas de los servicios administrados de proveedores de servicios en la nube, como Amazon Relational Database Service (RDS).
- Si el certificado de tu servidor de base de datos está firmado por una AC pública (por ejemplo, Let's Encrypt, DigiCert o GlobalSign), no necesitas proporcionar un certificado. Los certificados raíz de estas AC públicas están preinstalados y son de confianza para el Servicio de transferencia de datos de BigQuery.
Puedes especificar certificados con codificación PEM en el campo Certificado PEM de confianza en la configuración de transferencia, con los siguientes requisitos:
- El certificado debe ser una cadena de certificados válida con codificación PEM.
- El certificado debe ser completamente correcto. Si faltan certificados en la cadena o el contenido es incorrecto, la conexión TLS falla.
- Para un solo certificado, puedes proporcionar un certificado autofirmado único del servidor de base de datos.
- Para una cadena de certificados completa emitida por una AC privada, debes proporcionar la cadena de confianza completa. Esto incluye el certificado del servidor de base de datos y los certificados de la AC raíz e intermedios.
Transferencias completas o incrementales
Para especificar cómo se cargan los datos en BigQuery, selecciona la preferencia de escritura Completa o Incremental en la configuración de transferencia cuando configures una transferencia de Microsoft SQL Server. Las transferencias incrementales son compatibles con la vista previa.
Puedes configurar una transferencia de datos completa para transferir todos los datos de tus conjuntos de datos de Microsoft SQL Server con cada transferencia de datos.De manera alternativa, puedes configurar una transferencia de datos incremental (vista previa) para transferir solo los datos que se cambiaron desde la última transferencia de datos, en lugar de cargar todo el conjunto de datos con cada transferencia de datos. Si seleccionas Incremental para tu transferencia de datos, debes especificar los modos de escritura Append o Upsert para definir cómo se escriben los datos en BigQuery durante una transferencia de datos incremental. En las siguientes secciones, se describen los modos de escritura disponibles.
Modo de escritura de anexión
El modo de escritura de anexión solo inserta filas nuevas en tu tabla de destino. Esta opción anexa estrictamente los datos transferidos sin verificar si existen registros, por lo que este modo puede causar duplicación de datos en la tabla de destino.
Cuando seleccionas el modo de anexión, debes seleccionar una columna de marca de agua. Se requiere una columna de marca de agua para que el conector de Microsoft SQL Server realice un seguimiento de los cambios en la tabla de origen.
Para las transferencias de Microsoft SQL Server, te recomendamos que selecciones una columna que solo se actualice cuando se creó el registro y que no cambie con las actualizaciones posteriores, por ejemplo, la columnaCREATED_AT.
Modo de escritura de inserción o actualización
El modo de escritura de inserción o actualización actualiza una fila o inserta una fila nueva en tu tabla de destino verificando una clave primaria. Puedes especificar una clave primaria para permitir que el conector de Microsoft SQL Server determine qué cambios son necesarios para mantener tu tabla de destino actualizada con tu tabla de origen. Si la clave primaria especificada está presente en la tabla de BigQuery de destino durante una transferencia de datos, el conector de Microsoft SQL Server actualiza esa fila con datos nuevos de la tabla de origen. Si no hay una clave primaria durante una transferencia de datos, el conector de Microsoft SQL Server inserta una fila nueva.
Cuando seleccionas el modo de inserción o actualización, debes seleccionar una columna de marca de agua y una clave primaria:
- Se requiere una columna de marca de agua para que el conector de Microsoft SQL Server realice un seguimiento de los cambios en la tabla de origen.
- Selecciona una columna de marca de agua que se actualice cada vez que se modifique una fila. Te recomendamos columnas similares a las columnas
UPDATED_AToLAST_MODIFIED.
- Selecciona una columna de marca de agua que se actualice cada vez que se modifique una fila. Te recomendamos columnas similares a las columnas
La clave primaria puede ser una o más columnas de tu tabla que son necesarias para que el conector de Microsoft SQL Server determine si necesita insertar o actualizar una fila.
Selecciona columnas que contengan valores no nulos que sean únicos en todas las filas de la tabla. Te recomendamos columnas que incluyan identificadores generados por el sistema, códigos de referencia únicos (por ejemplo, IDs de incremento automático) o IDs de secuencia inmutables basados en el tiempo.
Para evitar la posible pérdida o corrupción de datos, las columnas de clave primaria que selecciones deben tener valores únicos. Si tienes dudas sobre la singularidad de la columna de clave primaria elegida, te recomendamos que uses el modo de escritura de anexión.
Comportamiento de la transferencia incremental
Cuando realizas cambios en el esquema de la tabla en tu fuente de datos, las transferencias de datos incrementales de esas tablas se reflejan en BigQuery de las siguientes maneras:
| Cambios en la fuente de datos | Comportamiento de la transferencia incremental |
|---|---|
| Agregar una columna nueva | Se agrega una columna nueva a la tabla de BigQuery de destino. Los registros anteriores de esta columna tendrán valores nulos. |
| Borrar una columna | La columna borrada permanece en la tabla de BigQuery de destino. Las entradas nuevas en esta columna borrada se propagan con valores nulos. |
| Cambiar el tipo de datos en una columna | El conector solo admite
conversiones de tipos de datos que son compatibles con la instrucción DDL ALTER COLUMN.
Cualquier otra conversión de tipo de datos hace que falle la transferencia de datos.
Si tienes algún problema, te recomendamos que crees una configuración de transferencia nueva. |
| Cambiar el nombre de una columna | La columna original permanece en la tabla de BigQuery de destino tal como está, mientras que se agrega una columna nueva a la tabla de destino con el nombre actualizado. |
Asignación de tipos de datos
En la siguiente tabla, se asignan los tipos de datos de Microsoft SQL Server a los tipos de datos de BigQuery correspondientes:
| Tipo de datos de Microsoft SQL Server | Tipo de datos de BigQuery | Tipo de datos de BigQuery actualizado |
|---|---|---|
tinyint |
INTEGER |
|
smallint |
INTEGER |
|
int |
INTEGER |
|
bigint |
BIGNUMERIC |
|
bit |
BOOLEAN |
|
decimal |
BIGNUMERIC |
|
numeric |
NUMERIC |
|
money |
BIGNUMERIC |
|
smallmoney |
BIGNUMERIC |
|
float |
FLOAT |
|
real |
FLOAT |
|
date |
DATE |
|
time |
TIME |
|
datetime2 |
TIMESTAMP |
DATETIME |
datetimeoffset |
TIMESTAMP |
|
datetime |
TIMESTAMP |
DATETIME |
smalldatetime |
TIMESTAMP |
DATETIME |
char |
STRING |
|
varchar |
STRING |
|
text |
STRING |
|
nchar |
STRING |
|
nvarchar |
STRING |
|
ntext |
STRING |
|
binary |
BYTES |
|
varbinary |
BYTES |
|
image |
BYTES |
|
geography |
STRING |
|
geometry |
STRING |
|
hierarchyid |
BYTES |
|
rowversion |
BYTES |
|
sql_variant |
BYTES |
|
uniqueidentifier |
STRING |
|
xml |
STRING |
|
json |
STRING |
|
vector |
STRING |
Los tipos de datos json y vector solo son compatibles con Azure.
El tipo de datos JSON es compatible con las bases de datos de Azure SQL y las instancias administradas de Azure SQL configuradas con la política de actualización siempre actualizada. El tipo de datos JSON no es compatible con las instancias administradas de Azure SQL configuradas con la política de actualización de Microsoft SQL Server 2022.
Microsoft SQL Server almacena JSON como NVARCHAR(MAX) y no como un tipo JSON. Te recomendamos que uses CHECK (ISJSON(json_col) = 1) para la validación y JSON_VALUE() para las consultas.
Microsoft SQL Server no tiene compatibilidad con vectores para el tipo de datos vector. Te recomendamos que almacenes vectores como arrays JSON en NVARCHAR(MAX) y uses JSON_VALUE() para la extracción, con cálculos FLOAT manuales para la similitud.
Precios
No se aplican costos por transferir datos de Microsoft SQL Server a BigQuery mientras esta función está en vista previa.
¿Qué sigue?
- Obtén información para configurar una transferencia de Microsoft SQL Server.
- Obtén más información acerca del Servicio de transferencia de datos de BigQuery.