Cumplimiento de los requisitos de bases de datos modernas con Azure SQL Database

Completado

Una vez que haya configurado el entorno, estará listo para empezar a analizar y probar determinados componentes de una posible arquitectura de solución. En el escenario de transporte en autobús, y para muchas otras aplicaciones modernas, necesita una base de datos moderna para almacenar, procesar y atender datos. Ahora se verá cómo Azure SQL Database satisface las necesidades de las aplicaciones modernas.

Escalado para satisfacer la demanda con opciones de Azure SQL Database flexibles

Uno de los elementos principales de una aplicación moderna es la capacidad de escalar o reducir verticalmente con facilidad para responder correctamente al uso de la carga de trabajo. La capacidad de actualizar y desarrollar fácilmente una solución, junto con la implementación automática y determinista, también son pilares fundamentales del desarrollo de aplicaciones modernas. Este principio también permite a las aplicaciones pagar solo por lo que se necesita, cuando se necesita.

Azure SQL Database proporciona una compatibilidad sólida con todas estas características necesarias. Si necesita una base de datos a prueba de futuro, escalable, segura y de alto rendimiento, Hiperescala de Azure SQL cumple todos esos requisitos y muchos más. Puede escalar hasta 100 TB y su arquitectura distribuida facilita el escalado vertical y horizontal. Es la base de datos idónea para cargas de trabajo transaccionales e híbridas de análisis transaccional.

Para apoyar el desarrollo y a los desarrolladores, puede utilizar el nivel de computación sin servidor de Azure SQL Database, que puede escalar automáticamente hacia arriba y hacia abajo dentro de un rango definido y puede autopausarse cuando no se utiliza para ofrecerle la forma más rentable de desarrollar y probar su solución. Dado que el motor detrás de Azure SQL Database es el mismo, pasar al nivel de proceso sin servidor de Azure SQL Database y Hiperescala de Azure SQL no requerirá ningún cambio de código y ningún esfuerzo adicional.

Compatibilidad con flujos de trabajo de desarrollo con Acciones de GitHub

Debido a la ubicuidad actual de DevOps, es importante que una solución moderna admita y tenga una canalización de integración y entrega (o implementación) continuas (CI/CD) adecuada. Azure SQL admite Acciones de GitHub de forma nativa, y se puede usar para implementar cambios en la base de datos de desarrollo a fin de probar y crear bases de datos de producción cuando estén listas. Las acciones de Azure SQL usan un enfoque basado en el estado. DevOps para datos es un tema interesante y puede obtener más información al respecto en los episodios sobre datos expuestos a los que se hace referencia al final del módulo.

Otro requisito clave de una base de datos moderna es la capacidad de controlar y admitir las últimas tendencias e innovaciones de desarrollo. Azure SQL Database proporciona muchas características para que pueda usar la mejor tecnología o modelo para un caso de uso determinado. En una entrada de blog al final del módulo se proporciona información general de todas las características disponibles.

Prueba de futuro de las aplicaciones mediante Azure SQL Database

Durante la vigencia de la aplicación, querrá usar distintas tecnologías para que sea lo más eficiente posible. Por ejemplo, es posible que quiera usar un modelo de Graph para realizar el seguimiento y modelar fácilmente una relación de red compleja, como una red social o una red eléctrica. O bien, es posible que tenga que agregar rápidamente una gran cantidad de datos para calcular la tasa de crecimiento de un valor concreto. En todos estos casos, y en muchos más, Azure SQL Database ha tratado. Admite modelos de Graph, índices de almacén de columnas e incluso tablas optimizadas para memoria para el mayor rendimiento (esas tablas son estructuras de datos compiladas que luego se cargan en proceso para lograr un alto rendimiento).

Para el escenario de transporte en autobús, usará el nivel de proceso sin servidor de Azure SQL Database para que solo pague por lo que necesita y utiliza, debido a la compatibilidad con el escalado automático y la pausa automática. Usará Acciones de GitHub para crear una canalización de implementación a fin de actualizar la base de datos según sea necesario. Hay otras funcionalidades que son necesarias para el escenario. Ahora se examinarán con más detalle. En el ejercicio siguiente, podrá empezar a trabajar con estas funcionalidades.

Procesamiento de datos JSON con funcionalidades nativas de JSON

Azure SQL Database permite a los desarrolladores usar JSON para intercambiar datos con la base de datos y almacenar documentos JSON. De este modo, puede usar JSON como un mecanismo de transporte eficaz para enviar conjuntos de datos, como matrices y objetos, a un procedimiento almacenado que se va a procesar. Una vez que tenga el documento JSON, puede manipularlo fácilmente mediante funciones nativas de JSON, como JSON_VALUE, JSON_MODIFY u OPENJSON. Este es un ejemplo:

DECLARE @json NVARCHAR(MAX) = '[{"user":{"id": 1, "name": "Anna"}},{"user":{"id": 2, "name": "Davide"}}]'
SELECT * FROM
    OPENJSON(@json) WITH (
        [Id] INT '$.user.id', 
        [Name] NVARCHAR(100) '$.user.name'
    )

Hay más ejemplos que muestran cómo puede usar JSON en Azure SQL Database al final del módulo.

Análisis de datos geoespaciales con el motor geoespacial nativo

Azure SQL Database tiene un motor geoespacial nativo que puede usar para realizar consultas geoespaciales sin instalar bibliotecas externas ni mover datos, lo que podría resultar costoso para volúmenes significativos de datos. Azure SQL Database es totalmente compatible con el estándar Open Geospatial Consortium (OGC), por lo que las bibliotecas como OpenLayers pueden usar los datos exportados.

En el ejemplo siguiente se muestra cómo puede crear un polígono, que servirá como geovalla en el escenario de transporte en autobús, y comprobar si un punto, que actuará como puntos de datos del autobús en tiempo real, está dentro del polígono.

-- Microsoft Building 44
declare @bldg44 as geography = geography::STGeomFromText('POLYGON((-122.13403149305233 47.64136608877112,-122.13398769073248 47.64058891712273,-122.13319924946629 47.64011342667547,-122.13285369830483 47.640106868176076,-122.13254221532335 47.640834858789844,-122.13257628383073 47.6410086568205,-122.13334039023833 47.64144150986729,-122.13403149305233 47.64136608877112))', 4326)

-- A point you want to check
declare @p as geography = geography::STPointFromText('POINT(-122.13315058040392 47.64101193601368)', 4326)

-- Is the point within the perimeter?
select @p.STWithin(@bldg44)

Como el formato de texto para las ubicaciones (por ejemplo, POINT(-122.13315058040392 47.64101193601368)) es un formato estándar, conocido como Well-Known Text (WKT), solo hay que copiar y pegar la cadena para ver la forma proyectada en un mapa. En el ejercicio siguiente, lo probará personalmente con OpenStreetMap WKT Playground.