Esta publicación de blog es parte de una serie más grande, visite la publicación general de Volker Saggau aquí:
Al final de esto, podrá crear una copia desde un sistema SAP HANA Cloud administrado por fundición en la nube. Esto incluirá:
Usaré el escenario de plantilla de federación de SAP HANA Cloud: que describí. aquí:
Lo que cubriré es el camino verde y morado en la imagen de arriba que incluye:
Sin embargo, una vez que se configura el sistema de preproducción (objetos de tiempo de ejecución y tiempo de diseño), el proceso simplemente incluye:
En el código a continuación, puede ver las consultas sql que ejecuté contra la base de datos de producción, solo para mostrarle qué tablas estaban dentro del esquema de la base de datos JOERMUNGANDR_DATA_FOUNDATION. Estos objetos se exportarán a continuación a un depósito de S3
--Production system (export)
--show the current table content of schema 'JOERMUNGANDR_DATA_FOUNDATION'
select * from m_tables where schema_name="JOERMUNGANDR_DATA_FOUNDATION";
-- SQL Result
/**
SCHEMA_NAME; TABLE_NAME; RECORD_COUNT; TABLE_SIZE
JOERMUNGANDR_DATA_FOUNDATION; dl.df.joermungandr.data::TG_MIDGARD_SERPENT; 5000000; 10928
JOERMUNGANDR_DATA_FOUNDATION; dl.df.joermungandr.data::TG_NORTHWIND; 91; 10992
JOERMUNGANDR_DATA_FOUNDATION; dl.df.joermungandr.data::TG_ORDERS; 1000980; 1480444
JOERMUNGANDR_DATA_FOUNDATION; dl.df.joermungandr.data::TG_ORDER_DETAILS; 2155; 87796
JOERMUNGANDR_DATA_FOUNDATION; dl.df.joermungandr.data::TG_PRODUCTS; 77; 10976
JOERMUNGANDR_DATA_FOUNDATION; dl.df.joermungandr.data::TG_SALES_BY_CATEGORIES;77; 10880
**/
Documentación del almacén de objetos aquí.
Ingrese a su subcuenta BTP y al espacio donde desea crear la Tienda de Objetos.
(para mí, ese es el espacio de la base de datos, ya que separamos la base de datos para desarrollo/calidad/producción de los espacios de desarrollo de aplicaciones)
Y seleccione «Mercado de servicios» donde busque «Tienda de objetos»
Cree una nueva Instancia/Suscripción, a continuación se muestra lo que usé para esta demostración.
Tras la creación del Almacén de objetos, podrá ver las credenciales importantes necesarias para iniciar sesión en su almacenamiento.
Verifique el contenido de Object Store, como se mencionó en mi caso, es un depósito S3 y está vacío.
Una vez que ejecutamos el comando exportar, excluyendo datos remotosel cubo S3 se llenará.
-- executed in production with a data admin user
EXPORT ALL HAVING
schema_name="JOERMUNGANDR_DATA_FOUNDATION" AND
object_type="TABLE" AND -- only of type table e.g. no views
object_name like 'dl.df.joermungandr.data%' AND -- export only objects within this namespace
object_name not like '%dl.df.joermungandr.data::VT%' -- exclude virtual tables
as binary raw -- binary type as supposed to be the fastest for large exports
INTO 's3-<region>://<access_key>:<secret_key>@<bucket_name>/<object_id>'
no remote data -- this will not fetch remote data (virtual table contents) into the export
;
PRECAUCIÓN: Si el No se agrega la sintaxis «sin datos remotos»el comando de exportación solicitaría TODOS los datos de origen de tablas virtuales que pueden conducir a cantidades masivas de datos.
NOTA: si esta consulta SQL falla con un error SSL_VALIDATION, asegúrese de que los certificados se agreguen a HANADB y a una colección de certificados, lea más aquí.
Y dentro de la carpeta verás la estructura de exportación del catálogo.
Y dentro de la carpeta de índice y esquema encontrará los datos de la tabla
Pero a partir de ahora no hay ningún lugar para importar estos datos, así que diríjase a su cuenta BTP de Cloud Foundry y cree una base de datos en la nube CF space & hana.
Suponiendo que haya creado el nuevo espacio CF y DB, continuemos en él.
Como queremos acceder a los datos del panel de control en la nube de SAP Analytics, necesitaremos un usuario técnico para conectarnos a la base de datos de preproducción.
Ese usuario de informes también necesitará privilegios para consumir los objetos dentro del contenedor HDI de informes, que no podemos asignar ahora ya que solo existen. Implementación posterior a HDI.
--Execute in PreProd
-------------------------------------------------------
CREATE USER SAC_PREPROD password ********;
-- Empty Shell -> Read role grants access to all scenario HDI containers, but will be granted the rights --- only post hdi-container deployment
CREATE ROLE EDEN_REPORTING_READ;
GRANT EDEN_REPORTING_READ to SAC_PREPROD;
Los servicios necesarios para la aplicación se pueden ver y obtener desde Business Application Studio desde la pestaña Proyectos de SAP HANA o desde el archivo mta.yaml.
Para volver a crear los servicios de fundición en la nube, simplemente ingrese a su cuenta BTP y obtenga las credenciales para los servicios desde allí.
Credenciales para el servicio EDEN-remote-source-ups obtenidas de sistema fuente
{
"certificate": "-----BEGIN CERTIFICATE-----\n<hash>\n-----END CERTIFICATE-----",
"driver": "com.sap.db.jdbc.Driver",
"host": "***.hana.canary-eu10.hanacloud.ondemand.com",
"password": "************",
"port": "443",
"tags": [
"hana"
],
"user": "eden_remote_grantor"
}
Para el nuevo servicio de ups en preproducción, reemplace el host y la contraseña con valores de preproducción relevantes.
Aquí está el fragmento para crear el usuario eden_remote_grantor utilizado por los servicios proporcionados por el usuario (EDEN-remote-source-ups).
Los roles *_REMOTE_SOURCE se utilizan en caso de que necesite el SAI para poder acceder a los sistemas/fuentes remotos y solo son implementaciones posteriores a HDI.
-- execute in preprod
-------------------------------------------------------
CREATE USER EDEN_REMOTE_GRANTOR PASSWORD "*********";
-- Role eden_remote_read will be granted all relevant remote source privileged roles (SDI/SDA/OData) to access replication source systems
create role eden_remote_read;
grant eden_remote_read to EDEN_REMOTE_GRANTOR;
-- Shangri-la roles
-- Create Roles for Remote Source
CREATE ROLE SHANGRILA_REMOTE_SOURCE;
CREATE ROLE SHANGRILA_REMOTE_SOURCE_GRANTABLE;
grant SHANGRILA_REMOTE_SOURCE to eden_remote_read with admin option;
grant SHANGRILA_REMOTE_SOURCE_GRANTABLE to eden_remote_read with admin option;
-- Joermungandr roles
CREATE ROLE JOERMUNGANDR_REMOTE_SOURCE;
CREATE ROLE JOERMUNGANDR_REMOTE_SOURCE_GRANTABLE;
grant JOERMUNGANDR_REMOTE_SOURCE to eden_remote_read with admin option;
grant JOERMUNGANDR_REMOTE_SOURCE_GRANTABLE to eden_remote_read with admin option;
-------------------------------------------------------
Esta publicación de blog no incluye el uso de fuentes remotas, ya que importamos y exportamos los datos mediante el almacenamiento en la nube, pero puede usar la plantilla anterior para asignar los privilegios a remote_grantor_user.
Dado que la capa de informes EDEN-Reporting tiene objetos (vistas de cálculo) que utilizan sinónimos que apuntan a los contenedores HDI de la infraestructura de datos, debemos implementar los contenedores HDI de la infraestructura de datos. primero.
Para este ejemplo, implementé el Joermungandr MTAR primero. (1a)
Incluso cuando los despliegues iniciales de MTAR fallar la IDH se creará el contenedor. En caso de que necesite ajustar más de uno o dos archivos, es mucho más rápido conectarse al contenedor creado en BAJO y arreglar/implementar desde allí.
Que es visible en la vista del espacio BTP:
Ignore eden-reporting-hdi en la captura de pantalla, no estará allí si implementa inicialmente las bases de datos.
Pero debería tener EDEN-remote-source-ups y joemungandr-data-hdi después de la implementación de MTAR.
Entrar en el espacio de trabajo de BAS después de la implementación de MTAR debería darte algo como esto:
En caso de que tenga artefactos que utilicen objetos remotos (tablas virtuales, tareas de replicación), debe tener la fuente remota utilizada en estos objetos remotos ya creada y configurada antes de la implementación o las implementaciones fallarán.
Si necesita excluir un artefacto, simplemente cambie sus extensiones a .txt y se ignorará durante la implementación.
Para la capa de EDEN-Reporting seguí los mismos pasos:
El rol creado manualmente EDEN_REPORTING_READ ahora se puede asignar a los roles generados por hdi
después de la implementación del contenedor HDI.
Vaya a su Explorador de base de datos y conecte el recién creado IDH contenedores
Para nuestro caso de informe, necesitamos los roles de eden-reporting-hdi. (asigne los roles a través de declaraciones de concesión o a través de la cabina de dba)
Ahora pruebe si su usuario SAC creado (SAC_PREPROD) puede consultar vistas desde el contenedor eden-reporting-hdi.
Para ello, conéctese a la base de datos preprod con su usuario SAC y una consola sql:
-- exeucted in preprod with user SAC_PREPROD
SELECT
"OrderID",
SUM("CC_SALES") AS "CC_SALES"
FROM "EDEN_REPORTING"."dl.reporting.view::CV_ORDERS"
GROUP BY "OrderID"
No se pudo ejecutar ‘SELECT «OrderID», «CustomerID», «EmployeeID», «OrderDate», …’
Error: (dberror) [258]: privilegio insuficiente: se puede encontrar información detallada para este error con guid ‘5F227C3542AB8B41BCE145E6B20A97B6’
Ahora agregue el rol EDEN_REPORTING_READ a SAC_PREPROD y la consulta no fallará más.
Dentro de mi inquilino SAC, creé una nueva conexión HANA Live y usé el usuario SAC_PREPROD creado anteriormente con los roles para eden-reporting-hdi asignados en el capítulo anterior.
Host es la base de datos del sistema de preproducción en BTP que creamos antes.
En SAC tenía las siguientes cosas que hacer:
Es posible que deba permitir que la dirección IP del sistema SAC llame a la base de datos de preproducción a través de Centro de la nube de SAP HANA.
Inicialmente, mi copia de la historia de SAC estará en blanco ya que los datos aún no están dentro del contenedor de preproducción HDI.
En la historia de SAC, utilicé un gráfico de tabla simple para visualizar la vista de cálculo dentro del contenedor hdi de eden-reporting.
En mi escenario, las estructuras de la tabla existirán pero están vacías.
Esto se debe al hecho de que las tablas se crearon durante la implementación del contenedor HDI y son administradas por el contenedor HDI.
Antes de importar los datos, puede verificar el contenido de la exportación de datos con la sintaxis IMPORT SCAN:
import scan 's3-<region>://<access_key>:<secret_key>@<bucket_name>/<object_id>';
SELECT * FROM #IMPORT_SCAN_RESULT;
Esto le mostrará si los objetos que está a punto de importar ya existe. Si ese es el caso, puede proporcionar el SOLO DATOS Opción para excluir la sustitución de las estructuras de tabla existentes con la importación y solo importar los datos.
import all from 's3-<region>://<access_key>:<secret_key>@<bucket_name>/<object_id>' with threads 4 DATA ONLY;
Compruebe si las tablas se han cargado.
select schema_name, table_name, record_count, table_size from m_tables where schema_name="JOERMUNGANDR_DATA_FOUNDATION";
Ahora vuelva a consultar la historia de SAC:
Como puede ver, es un poco de esfuerzo inicialmente configurarlo todo, pero una vez que lo haya hecho, simplemente tiene que ejecutar los dos comandos de consulta de exportación/importación y obtener una actualización completa de los datos.
Por favor, deje un comentario en caso de que tenga preguntas o comentarios.
Salud,
Yves
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073