SQL Database for Cloud Data
Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.
Esta guía de aprendizaje muestra cómo suministrar un servicio de base de datos SQL (relacional). Como administrador, cree una tabla y cargue un conjunto de datos grande (información de ciudad) en la base de datos. A continuación, despliegue una app web "worldcities" en IBM Cloud® Code Engine. La aplicación permite a los usuarios habituales buscar registros en la base de datos en la nube. La aplicación está escrita en Python utilizando el framework Flask.
Objetivos
- Suministro de una base de datos SQL
- Crear el esquema de base de datos (tabla) y cargar datos
- Desplegar una app contenerizada precompilada en Code Engine
- Conexión de la app y el servicio de base de datos (compartir credenciales)
- Supervisión, seguridad, copia de seguridad y recuperación de bases de datos cloud
Antes de empezar
Esta guía de aprendizaje requiere:
- IBM Cloud CLI con el plugin Code Engine,
git
para clonar el repositorio del código fuente.
Para evitar la instalación de estas herramientas puede utilizar la página Cloud Shell desde la consola IBM Cloud.
Encontrará instrucciones para descargar e instalar estas herramientas para su entorno operativo en la guía de Iniciación a las guías de aprendizaje.
- Clone el repositorio Github para esta guía de aprendizaje y cambie a su directorio. En un terminal, ejecute las líneas siguientes:
git clone https://github.com/IBM-Cloud/cloud-sql-database.git cd cloud-sql-database
- Vaya a GeoNames y descargue y extraiga el archivo cities1000.zip. Contiene información sobre ciudades con una población superior a 1000 habitantes. Lo va a utilizar como conjunto de datos.
Suministro de la base de datos SQL
Comience por crear una instancia del servicio IBM Db2 Warehouse SaaS.
- Visite la consola IBM Cloud®. Pulse Catálogo en la barra de navegación superior.
- Pulse Bases de datos en el panel de la izquierda y seleccione Db2 Warehouse.
- Elija el plan de Flex One y cambie el nombre de servicio sugerido por sqldatabase (utilizará ese nombre más adelante). Elija un grupo de recursos y una ubicación para el despliegue de la base de datos.
- Pulse Crear. Se inicia el suministro.
- En la Lista de recursos, localice la nueva instancia en Bases de datos y espere a que esté disponible (a veces puede que tenga que actualizar la página). Pulse en la entrada del servicio IBM Db2 Warehouse SaaS.
- Pulse Abrir consola para iniciar la consola de la base de datos.
Creación de una tabla
Necesita una tabla para alojar los datos de ejemplo. Créela mediante la consola.
- En la consola de IBM Db2 Warehouse SaaS haga clic en el icono de menú superior izquierdo y, a continuación, en Ejecutar SQL en la barra de navegación.
- Pulse el símbolo + (Añadir un script nuevo) junto a la pestaña Sin título-1.
- Pulse Desde archivo y seleccione el archivo
cityschema.txt
en el repositorio GitHub que se ha clonado anteriormente en el directorio local y ábralo. - Pulse Ejecutar todo para ejecutar la sentencia. Se debería mostrar un mensaje de realizado satisfactoriamente.
Carga de datos
Ahora que se ha creado la tabla "cities", se van a cargar los datos en la misma. Esto se puede hacer de diferentes maneras, por ejemplo, desde su máquina local o desde el almacenamiento de objetos en la nube (COS) o la interfaz de Amazon S3. En esta guía de aprendizaje, va a cargar datos de su máquina. Durante el proceso, adaptará la estructura de la tabla y el formato de los datos para que se ajusten al contenido de los archivos.
-
En la consola de IBM Db2 Warehouse SaaS, pulse el icono de menú superior izquierdo y, a continuación, pulse Datos en la barra de navegación.
-
Como Origen, mantenga la selección en Mi PC.
-
En Selección de archivos, haga clic en Arrastrar un archivo aquí o Examinar archivos para localizar y elegir el archivo cities1000.txt " que descargó en la primera sección de esta guía.
-
Pulse Siguiente para obtener la visión general de Destino con una selección de Esquema. Seleccione el esquema BLUADMIN y, a continuación, la tabla CIUDADES. Vuelva a pulsar Siguiente.
Puesto que la tabla está vacía, no hay diferencia entre añadir o sobrescribir los datos existentes.
-
Ahora personalice la forma en que se interpretan los datos del archivo "cities1000.txt" durante el proceso de carga. En primer lugar, inhabilite Cabecera en primera fila porque el archivo solo contiene datos.
-
Luego escriba 0x09 como separador. Esto significa que los valores que hay dentro del archivo están delimitados por un tabulador.
-
Por último, seleccione "AAAA-MM-DD" como formato de fecha. Ahora, todo debería parecerse a lo que se muestra en esta captura de pantalla.
Captura de pantalla que muestra los datos muestreados -
Pulse Siguiente y se le ofrecerá que revise los valores de carga. Acepte dichos valores y pulse Iniciar carga para empezar a cargar los datos en la tabla CITIES. Se visualiza el progreso. Una vez que los datos se carguen, en unos segundos la carga debería finalizar y se deberían mostrar algunas estadísticas.
-
Pulse Ver tabla para examinar los datos. Puede desplazarse hacia abajo o pulsar en los nombres de columna para cambiar el orden de clasificación.
Verificación de los datos cargados mediante SQL
Los datos se han cargado en la base de datos relacional. No se han producido errores, pero de todos modos debe realizar algunas pruebas rápidas. Utilice el editor de SQL incorporado para escribir y ejecutar algunas sentencias de SQL.
-
En el menú de navegación de la izquierda, haga clic en Ejecutar SQL para volver al editor SQL. Pulse el símbolo + (Añadir nuevo script) y Crear nuevo para crear un nuevo separador del editor.
En lugar del editor de SQL incorporado, puede utilizar herramientas de SQL basadas en la nube y tradicionales en el escritorio o en la máquina servidor con IBM Db2 Warehouse SaaS. La información de conexión se puede encontrar en el menú Administración de la navegación izquierda.
-
En el editor, escriba o copie la consulta siguiente:
select count(*) from cities;
Seleccione el texto de la consulta y, a continuación, en el desplegable situado junto a Ejecutar todo, elija Ejecutar seleccionado. En la sección con los resultados, debe mostrarse el mismo número de filas que el reportado por el proceso de carga.
-
En el "Editor de SQL", escriba la sentencia siguiente en una línea nueva:
select countrycode, count(name) from cities group by countrycode order by 2 desc;
Marque el texto de la sentencia anterior y pulse el botón Ejecutar seleccionado. Sólo se ejecuta esta sentencia, que devuelve algunas estadísticas por países en la sección de resultados.
-
Por último, ejecute la siguiente sentencia de forma similar para recuperar detalles sobre San Francisco en California:
select * from cities where name='San Francisco' and countrycode='US';
Despliegue del código de aplicación
Vuelva a cambiar al terminal. Ahora va a desplegar el código de aplicación, utilizando una imagen de contenedor precompilada. Puede modificar el código de aplicación y crear la imagen de contenedor por su cuenta. Consulte las instrucciones de en el repositorio GitHub para obtener más detalles.
-
Si no está conectado, utilice
ibmcloud login
oibmcloud login --sso
para conectarse de forma interactiva. Establezca la región y el grupo de recursos donde se ha suministrado la base de datos. Sustituya RESOURCE_GROUP y REGION en consecuencia.ibmcloud target -g RESOURCE_GROUP -r REGION
-
Cree un nuevo proyecto Code Engine denominado sqldatabase:
ibmcloud ce project create --name sqldatabase
Seleccione el nuevo proyecto como el activo:
ibmcloud ce project select --name sqldatabase
-
A continuación, despliega la aplicación dándole el nombre de worldcities.
ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
-
Por último, cree un enlace de servicio entre la base de datos IBM Db2 Warehouse SaaS existente y la app:
ibmcloud ce application bind --name worldcities --service-instance sqldatabase
Una vez que se ha creado el enlace, se inicia una nueva revisión de la aplicación.
-
Ahora puedes comprobar el estado de la aplicación y recuperar su URL:
ibmcloud ce app get --name worldcities
En la salida, busque la línea que empieza por URL. La URL mostrada debe tener un patrón como
https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud
. Haga clic en el enlace para acceder a la aplicación. Otra opción para recuperar los detalles de la aplicación es visitar la consola Code Engine.
Seguridad, copia de seguridad y recuperación, supervisión
IBM Db2 Warehouse SaaS es un servicio gestionado. IBM se ocupa de proteger el entorno, de realizar copias de seguridad diarias y de supervisar el sistema. Cuando se utiliza uno de los planes de empresa, existen varias opciones para gestionar el acceso y para configurar el cifrado de datos mejorado.
Además de las opciones de administración tradicionales, el servicio IBM Db2 Warehouse SaaS también ofrece una API REST para supervisión, gestión de usuarios, programas de utilidad, carga, acceso de almacenamiento, etc..
Prueba de la app
La app que muestra información sobre una ciudad en función del conjunto de datos que se ha cargado se reduce a un mínimo. Ofrece un formulario de búsqueda para especificar un nombre de ciudad, los nombres distinguen entre mayúsculas y minúsculas,
y pocas ciudades preconfiguradas. Las solicitudes se especifican como /search?name=cityname
(formulario de búsqueda) o /city/cityname
(ciudades especificadas directamente). Ambas solicitudes se especifican desde las
mismas líneas de código en segundo plano. El cityname
se pasa como valor a una sentencia SQL preparada utilizando un marcador de parámetro por razones de seguridad. Las filas se captan de la base de datos y se pasan a una plantilla
HTML para que su representación.
Limpieza
Para limpiar los recursos utilizados por la guía de aprendizaje, siga estos pasos:
- Visite la Lista de recursos deIBM Cloud®.
- En la sección Code Engine localice el proyecto sqldatabase. Pulse los tres puntos y seleccione Suprimir para suprimir el proyecto y su aplicación.
- Localice la base de datos
sqldatabase
en Bases de datos. De nuevo, pulse los tres puntos y seleccione Suprimir para suprimir la base de datos.
En función del recurso, es posible que no se suprima de inmediato sino que se retenga (durante 7 días de forma predeterminada). Puede reclamar el recurso suprimiéndolo de forma permanente o lo puede restaurar dentro del periodo de retención. Consulte este documento sobre cómo utilizar una reclamación de recurso.
Ampliación de la guía de aprendizaje
¿Desea ampliar esta app? Estas son algunas de las ideas:
- Ofrecer una búsqueda con comodín en los nombres alternativos.
- Buscar ciudades de un país específico y con determinados valores de población.
- Cambiar el diseño de la página mediante la sustitución de estilos de CSS y la ampliación de plantillas.
- Permitir la creación mediante formulario de nueva información sobre la ciudad o permitir la actualización de los datos existentes, por ejemplo la población.