Descripción general
Para las empresas que tienen muchas fuentes de datos aisladas, puede ser difícil acceder a los datos empresariales de toda la organización, especialmente en tiempo real. Esto provoca un mundo de acceso limitado y lento a los datos, lo que impide que la organización realice la introspección.
Datastream proporciona acceso casi en tiempo real para cambiar datos de una variedad de fuentes de datos locales y basadas en la nube a fin de crear acceso a los datos de la organización. Datastream proporciona una experiencia de configuración sencilla y una API de consumo unificado que democratiza el acceso de la organización a los datos empresariales más recientes disponibles en toda la organización, lo que potencia las situaciones integradas casi en tiempo real.
Una de esas situaciones es la transferencia de datos de una base de datos de origen a un servicio de almacenamiento basado en la nube o a una cola de mensajería, y la transformación de estos datos en un formulario que pueden leer otras aplicaciones y servicios que se comunican con este servicio de almacenamiento o cola de mensajería.
En este instructivo, aprenderás a usar Datastream para transferir esquemas, tablas y datos de una base de datos Oracle de origen a una carpeta en un bucket de Cloud Storage. Cloud Storage es un servicio web para almacenar datos y acceder a ellos en Google Cloud. El servicio combina el rendimiento y la escalabilidad de la nube de Google con funciones avanzadas de seguridad y uso compartido.
Como parte de la transferencia de esta información a una carpeta en el bucket de Cloud Storage de destino, Datastream traduce esta información a Avro. Avro se define con un esquema escrito en JavaScript Object Notation (JSON). Esta traducción te permite leer datos en diferentes fuentes de datos de manera uniforme.
Objetivos
En este instructivo, aprenderás a realizar lo siguiente:- Configurar variables de entorno Usarás estas variables cuando realices solicitudes a Datastream para crear y administrar perfiles de conexión y una transmisión.
- Crea y administra perfiles de conexión para una base de datos de origen y un bucket de destino en Cloud Storage. Cuando creas estos perfiles de conexión, creas registros que contienen información sobre la base de datos de origen y el bucket de destino de Cloud Storage. La transmisión en Datastream usa la información de los perfiles de conexión para transferir datos de la base de datos de origen a una carpeta en el bucket de destino.
- Crea y administra transmisiones. Datastream la usa para transferir datos, esquemas y tablas de la base de datos de origen a una carpeta en el bucket de destino.
- Verifica que Datastream transfiera los datos y las tablas asociadas con un esquema de la base de datos de Oracle de origen a una carpeta en el bucket de destino y traduzca estos datos al formato de archivo Avro.
- Limpia los recursos que creaste en Datastream para que no consuman tu cuota y no se facturen en el futuro.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
- Cloud Storage
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
- Habilita la API de Datastream.
- Asegúrate de tener asignado el rol Administrador de Datastream a tu cuenta de usuario.
- Asegúrate de tener una base de datos de origen a la que Datastream pueda acceder. En este instructivo, se usa una base de datos de Oracle como fuente.
- Configura tu base de datos de origen para permitir conexiones entrantes desde direcciones IP públicas de Datastream. Consulta Listas de IP permitidas y regiones de IP para acceder a las ubicaciones de todas las regiones de Datastream y sus direcciones IP públicas asociadas.
- Asegúrate de haber configurado un bucket de Cloud Storage de destino al que pueda acceder Datastream mediante la lista de entidades permitidas de IP, el túnel SSH de reenvío o el método de conectividad de red del intercambio de tráfico de VPC.
- Asegúrate de tener datos, tablas y esquemas en la base de datos de origen que Datastream pueda transferir a una carpeta en el bucket de Cloud Storage de destino.
- Descarga y, luego, instala Cloud Shell. Esta aplicación cliente te proporciona acceso de línea de comandos a tus recursos de nube (incluido Datastream).
- Instala y configura la utilidad
jq
. Esta utilidad es un procesador JSON de línea de comandos ligero y flexible. Usarás este procesador para mostrar comandoscURL
complejos en texto fácil de leer.
Configura variables de entorno
En este procedimiento, establecerás las siguientes variables:
$PROJECT
: Esta variable está asociada a tu proyecto de Google Cloud. Todos los recursos de Google Cloud que asignas y usas deben pertenecer a un proyecto.$TOKEN
: Esta variable está asociada con un token de acceso. El token de acceso proporciona una sesión que Cloud Shell usa para realizar tareas en Datastream mediante las APIs de REST.
Inicia tu aplicación de Cloud Shell.
Después de autenticarte en la aplicación con tu Cuenta de Google, ingresa
gcloud auth login
.Cuando se te solicite
Do you want to continue (Y/n)?
, ingresaY
.Abre un navegador web y copia la URL en él.
Autentícate en el SDK de Google Cloud con tu Cuenta de Google. Aparece un código en la página de acceso. Este código es tu token de acceso.
Copia el token de acceso, pégalo en el parámetro
Enter verification code:
de tu aplicación de Cloud Shell y presionaEnter
.Cuando se te solicite, ingresa
PROJECT="YOUR_PROJECT_NAME"
para establecer tu proyecto de Google Cloud como la variable de entorno$PROJECT
.Cuando se te solicite, ingresa
gcloud config set project YOUR_PROJECT_NAME
para establecer tu proyecto de Google Cloud como el proyecto en el que deseas trabajar.El símbolo del sistema se actualiza para reflejar tu proyecto activo y respeta este formato:
USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$
.Cuando se te solicite, ingresa
TOKEN=$(gcloud auth print-access-token)
para recuperar el token de acceso y almacenarlo como una variable.Cuando se te solicite, ingresa los siguientes comandos para asegurarte de que las variables
$PROJECT
y$TOKEN
estén configuradas de forma correcta:echo $PROJECT
echo $TOKEN
Ahora que configuraste tus variables, puedes realizar solicitudes a Datastream para crear y administrar perfiles de conexión y una transmisión.
Crea y administra perfiles de conexión
En esta sección, crearás y administrarás los perfiles de conexión de una base de datos de Oracle de origen y un bucket de Cloud Storage de destino.
Cuando creas estos perfiles de conexión, creas registros que contienen información sobre la base de datos de origen y el bucket de destino de Cloud Storage. Datastream usa la información de los perfiles de conexión para transferir datos de la base de datos de origen a una carpeta en el bucket de destino.
La creación y administración de perfiles de conexión incluye lo siguiente:
- Crea perfiles de conexión para una base de datos de Oracle de origen y un bucket de destino en Cloud Storage
- Recupera información sobre un perfil de conexión
- Modificar un perfil de conexión
- Realizar una llamada a la API de descubrimiento en el perfil de conexión de Oracle de origen Esta llamada te permite explorar la base de datos para ver los objetos asociados a ella. Estos objetos incluyen los esquemas y las tablas que contienen los datos de la base de datos. Cuando usas Datastream para configurar una transmisión, es posible que no quieras extraer todos los objetos de la base de datos, sino más bien un subconjunto de objetos (por ejemplo, solo ciertas tablas y esquemas de la base de datos). Usa la API de descubrimiento para encontrar (o descubrir) el subconjunto de objetos de base de datos que quieres extraer.
Crea perfiles de conexión
En este procedimiento, crearás dos perfiles de conexión: uno a una base de datos de Oracle de origen y otro a un bucket de destino en Cloud Storage.
- Crea un perfil de conexión a una base de datos de origen de Oracle. Cuando se te solicite, ingresa el siguiente comando:
ORACLE="{\"displayName\":\"DISPLAY_NAME\",\"oracle_profile\":{\"hostname\":\"HOSTNAME\",\"username\":\"USERNAME\",\"password\":\"PASSWORD\",\"database_service\":\"DATABASE_SERVICE\", \"port\":"PORT_NUMBER\"},\"no_connectivity\":{}}"
Usa la siguiente tabla para comprender los valores de los parámetros de la base de datos de origen de Oracle:
Valor del parámetro | Reemplazar por |
---|---|
DISPLAY_NAME | El nombre visible del perfil de conexión a la base de datos de origen. |
HOSTNAME | Es el nombre de host del servidor de base de datos de origen. |
USERNAME | Es el nombre de usuario de la cuenta correspondiente a la base de datos de origen (por ejemplo, ROOT). |
PASSWORD | Es la contraseña de la cuenta para la base de datos de origen. |
DATABASE_SERVICE | El servicio que garantiza que la base de datos de origen esté protegida y supervisada. Para las bases de datos de Oracle, el servicio de base de datos suele ser ORCL. |
PORT_NUMBER | El número de puerto reservado para la base de datos de origen. Para una base de datos de Oracle, el número de puerto suele ser 1521. |
En el mensaje, ingresa el comando
echo $ORACLE | jq
para ver el perfil de conexión de origen que creaste en texto fácil de leer.{ "displayName": "DISPLAY_NAME", "oracle_profile": { "hostname": "HOSTNAME", "username": "USERNAME", "password": "PASSWORD", "database_service": "DATABASE_SERVICE", "port": PORT_NUMBER }, "no_connectivity": {} }
Envía el perfil de conexión de Oracle para que se pueda crear. Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -d $ORACLE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles? connection_profile_id=SOURCE_CONNECTION_PROFILE_ID Usa la siguiente tabla para comprender los valores de los parámetros de este comando:
Valor del parámetro Reemplazar por DATASTREAM_API_VERSION Es la versión actual de la API de Datastream (por ejemplo, v1
).PROJECT_PATH La ruta de acceso completa de tu proyecto de Google Cloud (por ejemplo, projects/$PROJECT/locations/YOUR_PROJECT_LOCATION
).SOURCE_CONNECTION_PROFILE_ID El identificador único reservado para este perfil de conexión (por ejemplo, cp-1). Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "datastream.googleapis.com/DATASREAM_VERSION/PROJECT_PATH/connectionProfiles/
SOURCE_CONNECTION_PROFILE_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false } Crea un perfil de conexión a un bucket de destino en Cloud Storage. Cuando se te solicite, ingresa el siguiente comando:
GOOGLECLOUDSTORAGE="{\"displayName\":\"DISPLAY_NAME\",\"gcs_profile\":{\"bucket_name\":\"BUCKET_NAME\",
\"root_path\":\"/FOLDER_PATH\"},\"no_connectivity\":{}}" Usa la siguiente tabla para comprender los valores de los parámetros del bucket de destino:
Valor del parámetro Reemplazar por DISPLAY_NAME El nombre visible del perfil de conexión en el bucket de destino. BUCKET_NAME Es el nombre del bucket de destino. FOLDER_PATH Es la carpeta del bucket de destino a la que Datastream transferirá datos desde la base de datos de origen (por ejemplo, /root/path). Cuando se te solicite, ingresa el comando
echo $GOOGLECLOUDSTORAGE | jq
para ver el perfil de conexión de destino que creaste en texto fácil de leer.{ "displayName": "DISPLAY_NAME", "gcs_profile": { "bucket_name": "BUCKET_NAME", "root_path": "/FOLDER_PATH" }, "no_connectivity": {} }
Envía el perfil de conexión de Cloud Storage para que se pueda crear. Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -d $GOOGLECLOUDSTORAGE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles? connection_profile_id=DESTINATION_CONNECTION_PROFILE_ID Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.
OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "datastream.googleapis.com/DATASTREAM_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false } Confirma que se hayan creado ambos perfiles de conexión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles Verifica si recibes dos resultados que se muestran para los perfiles de conexión fuente y destino.
{ "connectionProfiles": [ { "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "FOLDER_PATH" }, "noConnectivity": {} }, { "name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "oracleProfile": { "hostname": "HOSTNAME", "port": PORT_NUMBER, "username": "USERNAME", "databaseService": "DATABASE_SERVICE" }, "noConnectivity": {} } ] }
Administrar perfiles de conexión
En este procedimiento, administras los perfiles de conexión que creaste para una base de datos de Oracle de origen y un bucket de destino en Cloud Storage. Incluye lo siguiente:
- Recupera información sobre el perfil de conexión de destino de Cloud Storage
- Se está modificando este perfil de conexión. Para este instructivo, cambiarás la carpeta del bucket de Cloud Storage de destino a /root/tutorial. Datastream transfiere datos de la base de datos de origen a esta carpeta.
- Realiza una llamada a la API de Descubre en el perfil de conexión de origen de Oracle
Recupera información sobre el perfil de conexión de Cloud Storage de destino. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Verifica que veas información sobre este perfil de conexión.
{ "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "FOLDER_PATH" }, "noConnectivity": {} }
Modifica este perfil de conexión. Para ello, primero establece una variable UPDATE. Esta variable contiene los valores del perfil de conexión que deseas cambiar. Para este instructivo, cambiarás la carpeta del bucket de destino a /root/tutorial.
Para configurar la variable, cuando se te solicite, ingresa el siguiente comando:
UPDATE="{\"gcsProfile\":{\"rootPath\":\"/root/tutorial\"}}"
Cuando se te solicite, ingresa el siguiente comando:
curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID?update_mask=gcsProfile.rootPath Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirma que se modificó el perfil de conexión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Verifica que la carpeta del bucket de destino del perfil de conexión de Cloud Storage ahora sea /root/tutorial.
{ "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "/root/tutorial" }, "noConnectivity": {} }
Usa la API de Datastream de descubrimiento para descubrir los esquemas y las tablas de la base de datos de origen de Oracle. Datastream proporciona acceso a esta base de datos a través del perfil de conexión de origen.
Descubrir los esquemas de la base de datos de Oracle Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/
YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover Verifica que Datastream recupere todos los esquemas de tu base de datos.
Recupera las tablas de un esquema en tu base de datos. En este instructivo, usarás la API de descubrimiento para recuperar las tablas del esquema de ROOT. Sin embargo, puedes descubrir las tablas de cualquier esquema en tu base de datos.
Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/
YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover - Verifica que Datastream recupere todas las tablas del esquema que especificaste (para este instructivo, el esquema ROOT).
Ahora que creaste y administraste perfiles de conexión para una base de datos de origen de Oracle y un bucket de destino en Cloud Storage, estás listo para crear y administrar una transmisión en Datastream.
Crea y administra una transmisión
En esta sección, podrás crear y administrar una transmisión. Datastream la usa para transferir datos, esquemas y tablas de la base de datos de origen a una carpeta en el bucket de Cloud Storage de destino.
La creación y administración de transmisiones incluye las siguientes acciones:
- Validar una transmisión para garantizar que esta se ejecute correctamente y que se aprueben todas las verificaciones de validación Estas verificaciones incluyen lo siguiente:
- Indica si la fuente está configurada correctamente para permitir que Datastream transmita datos desde ella.
- Si la transmisión puede conectarse tanto al origen como al destino.
- La configuración de extremo a extremo de la transmisión.
- Crear la transmisión con las siguientes listas:
- Una lista de entidades permitidas En esta lista, se especifican las tablas y los esquemas de la base de datos de origen que Datastream puede transferir a una carpeta del bucket de destino en Cloud Storage. Para este instructivo, esta es la carpeta /root/tutorial.
- Una lista de rechazos En esta lista, se especifican las tablas y los esquemas de la base de datos de origen que Datastream no puede transferir a la carpeta del bucket de destino de Cloud Storage.
- Recuperar información sobre la transmisión
- Modificar la transmisión
- Iniciar la transmisión para que Datastream pueda transferir datos, esquemas y tablas desde la base de datos de origen hacia una carpeta en el bucket de Cloud Storage de destino.
- Usar la API de recuperación de errores para detectar cualquier error asociado con la transmisión
- Pausar la transmisión. Cuando se pausa una transmisión, Datastream no extraerá datos nuevos de la base de datos de origen al bucket de destino.
- Reanuda la transmisión en pausa para que Datastream pueda seguir transfiriendo datos al bucket de destino.
Crea una transmisión
En este procedimiento, crearás una transmisión desde la base de datos de origen de Oracle hacia una carpeta en el bucket de Cloud Storage de destino. La transmisión que crees incluirá una lista de permitidos y una de rechazo.
Establece una variable SCHEMAS. Esta variable define los esquemas que contienen los datos y las tablas que deseas que Datastream recupere de la base de datos de origen y transfiera a la carpeta /root/tutorial del bucket de destino de Cloud Storage. En este instructivo, configurarás la variable SCHEMAS para que se asocie con el esquema ROOT.
Cuando se te solicite, ingresa el siguiente comando:
SCHEMAS="{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}"
Cuando se te solicite, ingresa el comando echo $SCHEMAS | jq a fin de ver el esquema ROOT que definiste para esta variable en texto fácil de leer.
Crea una transmisión. Cuando se te solicite, ingresa el siguiente comando:
STREAM="{\"display_name\":\"DISPLAY_NAME\",\"source_config\":{\"source_connection_profile_name\":\"
PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",\"oracle_source_config\": {\"allowlist\":$SCHEMAS,\"rejectlist\":{}}},\"destination_config\":{\"destination_connection_profile_name\" :\"PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID\",\"gcs_destination_config\": {\"file_rotation_mb\":5,\"file_rotation_interval\":{\"seconds\":15},\"avro_file_format\":{}}, \"backfill_all\":{}}}" Cuando se te solicite, ingresa el comando
echo $STREAM | jq
para ver el flujo que creaste en texto fácil de leer.{ "display_name": "DISPLAY_NAME", "source_config": { "source_connection_profile_name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracle_source_config": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destination_config": { "destination_connection_profile_name": "PROJECT_PATH/connectionProfiles/
DESTINATION_CONNECTION_PROFILE_ID", "gcs_destination_config": { "file_rotation_mb": 5, "file_rotation_interval": { "seconds": 15 }, "avro_file_format": {} } }, "backfill_all": {} } Usa esta tabla para comprender los siguientes parámetros de la transmisión:
Parámetro Descripción allowlist Los esquemas, que contienen tablas y datos, que se transferirán de la base de datos de origen a una carpeta del bucket de destino de Cloud Storage. En este instructivo, todas las tablas y los datos del esquema ROOT (y solo este) se transferirán a la carpeta /root/tutorial del bucket de destino. rejectlist Cualquier esquema, con tablas y datos, que no se transferirá a una carpeta del bucket de destino de Cloud Storage Para este instructivo, el valor {} significa que no se impedirá que ninguna tabla ni datos de la base de datos de origen se transfieran al bucket de destino. file_rotation_mb El tamaño (en MBytes) de los archivos que contienen los datos que se transfieren desde la base de datos de origen hacia una carpeta en el bucket de destino de Cloud Storage. En este instructivo, a medida que se recuperan los datos de la base de datos de origen, se escriben en archivos de 5 MB. Si se supera este tamaño, los datos se segmentarán en varios archivos de 5 MB. file_rotation_interval Es la cantidad de segundos que deben transcurrir antes de que Datastream cierre un archivo existente en una carpeta del bucket de destino de Cloud Storage y abra otro archivo para contener los datos que se transfieren desde la base de datos de origen. Para este instructivo, el intervalo de rotación de archivos se establece en 15 segundos. avro_file_format El formato de los archivos que Datastream transferirá de la base de datos de origen a una carpeta del bucket de destino de Cloud Storage. Para este instructivo, el formato de archivo es Avro.
backfill_all Este parámetro está asociado con el reabastecimiento histórico. Si estableces este parámetro en un diccionario vacío ({}), Datastream reabastecerá lo siguiente:
- Datos históricos, además de cambios continuos en los datos, de la base de datos de origen al destino
- Esquemas y tablas, de la fuente al destino.
Valida la transmisión para asegurarte de que se ejecute correctamente y de que se aprueben todas las verificaciones de validación. Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
"https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id= STREAM_ID&validate_only=true" Verifica que veas la línea de código
{}
. Esto indica que la transmisión pasó todas las verificaciones de validación y no hay errores asociados con ella.Envía la transmisión para que se pueda crear. Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id=STREAM_ID Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirma que se creó la transmisión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams Verifica que recibas un resultado para la transmisión que creaste.
{ "streams": [ { "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 5, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } ] }
Administra la transmisión
En este procedimiento, usarás la transmisión que creaste para transferir datos de una base de datos de Oracle de origen a una carpeta en un bucket de destino de Cloud Storage. Incluye lo siguiente:
- Recuperar información sobre la transmisión
- Modificar la transmisión
- Iniciar la transmisión
- Usar la API de recuperación de errores para detectar cualquier error asociado con la transmisión
- Pausar y reanudar la transmisión
Recupera información sobre la transmisión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifica que veas información sobre esta transmisión.
{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 5, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } Modifica estas Novedades. Para ello, primero establece una variable UPDATE. Esta variable contiene los valores del flujo que deseas cambiar. En este instructivo, cambia el tamaño (en MBytes) de los archivos que contienen datos que se transfieren desde la base de datos de origen a una carpeta en el bucket de destino de Cloud Storage (de 5 MB a 100 MB). A medida que se recuperan datos de la base de datos de origen, se escriben en archivos de 100 MB. Si algún dato supera este tamaño, se segmentará en varios archivos de 100 MB.
Para configurar la variable, cuando se te solicite, ingresa el siguiente comando:
UPDATE="{\"destination_config\":{\"gcs_destination_config\":{\"file_rotation_mb\":100}}}"
Cuando se te solicite, ingresa el siguiente comando:
curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID/ ?update_mask=destination_config.gcs_destination_config.file_rotation_mb Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirma que se modificó la transmisión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifica que el valor del parámetro fileRotationMb para el perfil de conexión de Cloud Storage ahora sea
100
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } Inicia la transmisión Para ello, deberás hacer lo siguiente:
Cambia la variable
UPDATE
. Cuando se te solicite, ingresa el siguiente comando:UPDATE="{\"state\":\"RUNNING\"}"
Luego, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Verifica si ves las siguientes líneas de código.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Después de unos minutos, recupera la información sobre la transmisión para confirmar que se inició:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifica que el estado de la transmisión haya cambiado de
CREATED
aRUNNING
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "RUNNING", "backfillAll": {} } Usar la API de Fetch Errors para recuperar cualquier error asociado con la transmisión
Cuando se te solicite, ingresa el siguiente comando:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/ STREAM_ID:fetchErrors Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "fetchErrors", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/operations/ operation-FETCH_ERRORS_OPERATION_ID Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION
.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "endTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "fetchErrors", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION .FetchErrorsResponse" } }
Pausa la transmisión Para ello, deberás hacer lo siguiente:
Cambia la variable
UPDATE
. Cuando se te solicite, ingresa el siguiente comando:UPDATE="{\"state\":\"PAUSED\"}"
Luego, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Verifica si ves las siguientes líneas de código.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Recupera información sobre la transmisión para confirmar que está detenida.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifica que el estado de la transmisión haya cambiado de
RUNNING
aPAUSED
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "PAUSED", "backfillAll": {} } Reanuda la transmisión en pausa. Para ello, deberás hacer lo siguiente:
Cambia la variable
UPDATE
. Cuando se te solicite, ingresa el siguiente comando:UPDATE="{\"state\":\"RUNNING\"}"
Luego, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Verifica si ves las siguientes líneas de código.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Después de unos segundos, recupera información sobre la transmisión para confirmar que se está ejecutando nuevamente.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifica que el estado de la transmisión haya cambiado de
PAUSED
aRUNNING
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION /connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "RUNNING", "backfillAll": {} }
Ahora que creó y administró una transmisión, confirmó que no hay errores asociados y que el estado de la transmisión es RUNNING
, está listo para verificar que pueda transferir datos de la base de datos de origen a una en el bucket de destino de Cloud Storage.
Verifica la transmisión
En este procedimiento, confirmas que Datastream realice las siguientes acciones:
- Transfiere los datos de todas las tablas asociadas con el esquema
ROOT
de la base de datos fuente de Oracle a la carpeta/root/tutorial
en el bucket de destino de Cloud Storage. - Traduce los datos al formato de archivo Avro.
Ve a la página Navegador de Storage en Cloud Storage.
Haz clic en el vínculo que contiene tu bucket.
Si la pestaña OBJETOS no está activa, haz clic en ella.
Haz clic en la carpeta root y, luego, en la carpeta tutorial.
Verifica que veas carpetas que representen tablas del esquema
ROOT
de tu base de datos de Oracle de origen.Haz clic en una de las carpetas de la tabla y desglósala hasta que vea los datos asociados con ella.
Haz clic en un archivo que represente los datos y, luego, en DESCARGAR.
Abre este archivo en una herramienta de Avro (por ejemplo, Avro Viewer) para asegurarte de que el contenido sea legible. Esto confirma que Datastream también tradujo los datos al formato de archivo Avro.
Limpia
Cuando termines con el instructivo, puedes limpiar los recursos que creaste en Datastream para que no consuman la cuota ni se te facture por ellos en el futuro. En las secciones siguientes, se describe cómo borrar o desactivar estos recursos.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, haz lo siguiente:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra el bucket de destino de Cloud Storage
En el panel lateral de navegación izquierdo de Cloud Storage, haz clic en el elemento Navegador.
Selecciona la casilla de verificación a la izquierda del bucket y haz clic en BORRAR.
¿En el bucket Borrar? ingresa el nombre del bucket en el campo de texto y haz clic en CONFIRMAR.
Borra la transmisión
Asegúrate de que tu aplicación de Cloud Shell esté activa.
Cuando se te solicite, ingresa el siguiente comando:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirma que se haya borrado la transmisión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams Verifica que se muestre un valor
{}
nulo. Esto significa que ya no hay transmisiones en Datastream y que se borra el que creaste.
Borra los perfiles de conexión
Borra el perfil de conexión a la base de datos de origen de Oracle. Cuando se te solicite, ingresa el siguiente comando:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ SOURCE_CONNECTION_PROFILE_ID Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Borra el perfil de conexión al bucket de destino en Cloud Storage. Cuando se te solicite, ingresa el siguiente comando:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Verifica que veas las siguientes líneas de código:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirma que se hayan borrado ambos perfiles de conexión. Cuando se te solicite, ingresa el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles Verifica que se muestre un valor
{}
nulo. Esto significa que ya no hay perfiles de conexión en Datastream y que se borran los perfiles que creaste.
¿Qué sigue?
- Obtén más información sobre Datastream.
- Prueba otras funciones de Google Cloud. Consulta nuestros instructivos.