Azure SQL Database를 사용하여 최신 데이터베이스 요구 사항 해결
환경을 구성했으면 잠재적 솔루션 아키텍처의 특정 구성 요소 분석 및 테스트를 시작할 준비가 된 것입니다. 버스 타기 시나리오 및 다른 많은 최신 애플리케이션에서 데이터를 저장, 처리, 제공하려면 최신 데이터베이스가 필요합니다. Azure SQL Database가 최신 애플리케이션의 요구 사항을 어떻게 충족하는지 살펴보겠습니다.
유연한 Azure SQL Database 옵션을 사용하여 요구에 맞게 스케일링
최신 애플리케이션의 핵심 요소 중 하나는 워크로드 사용량에 올바르게 대응하도록 쉽게 스케일 업 또는 스케일 다운할 수 있는 기능입니다. 결정적 자동 배포와 함께 솔루션을 쉽게 업데이트하고 발전시키는 기능은 최신 애플리케이션 개발의 기본 핵심 요소이기도 합니다. 또한 이 원칙은 애플리케이션이 필요할 때 필요한 항목에 대해서만 비용을 지불하도록 합니다.
Azure SQL Database는 이러한 필수 기능을 모두 강력하게 지원합니다. 미래에도 경쟁력 있고 스케일링 가능하며 안전한 고성능 데이터베이스가 필요한 경우 Azure SQL 하이퍼스케일은 필요한 모든 항목 이상을 제공합니다. 100TB까지 스케일링 가능하며 분산 아키텍처를 통해 간단하게 스케일 업 및 스케일 아웃할 수 있습니다. 이 데이터베이스는 트랜잭션 및 하이브리드 트랜잭션 분석 워크로드에 매우 적합합니다.
개발 및 개발자를 지원하기 위해 Azure SQL Database 서버리스 컴퓨팅 계층을 사용하면 정의된 범위 내에서 자동으로 확장 및 축소할 수 있으며, 솔루션을 개발하고 테스트하는 가장 비용 효율적인 방법을 제공하는 데 사용되지 않을 때 자동 일시 중지할 수 있습니다. Azure SQL Database 뒤에 있는 엔진이 동일하다는 점을 감안할 때 Azure SQL Database 서버리스 컴퓨팅 계층으로 이동하고 Azure SQL 하이퍼스케일로 이동하면 코드를 변경할 필요가 없으며 추가 작업이 필요하지 않습니다.
GitHub Actions를 사용하여 개발 워크플로 지원
현재 DevOps는 유비쿼터스 방식이기 때문에 최신 솔루션에서 제대로 지원하고 정상 상태의 CI/CD(연속 통합 및 지속적인 업데이트/지속적인 배포) 파이프라인이 있어야 합니다. Azure SQL Database는 기본적으로 GitHub Actions를 지원하며, 준비되면 개발 데이터베이스에 변경 내용을 배포하여 테스트 및 프로덕션 데이터베이스를 배포할 수 있습니다. Azure SQL Database 작업은 상태 기반 접근 방식을 사용합니다. 데이터용 DevOps는 흥미로운 주제이며 모듈 끝부분에서 참조되는 Data Exposed(데이터 공개됨) 에피소드에서 자세히 알아볼 수 있습니다.
최신 데이터베이스의 또 다른 주요 요구 사항은 최신 개발 추세 및 혁신을 처리하고 지원하는 기능입니다. Azure SQL Database는 지정된 사용 사례에 가장 적합한 기술 또는 모델을 사용할 수 있도록 많은 기능을 제공합니다. 사용 가능한 모든 기능에 대한 개요는 모듈의 끝부분에 있는 블로그 게시물에 제공합니다.
Azure SQL Database를 사용하여 애플리케이션을 미래 지향적
애플리케이션 수명 중에는 다양한 기술을 최대한 효율적으로 사용하는 것이 좋습니다. 예를 들어, 그래프 모델을 사용하여 소셜 네트워크 또는 전력망 같은 복잡한 네트워크 관계를 쉽게 추적하고 모델링할 수 있습니다. 또는 특정 값의 증가율을 계산하기 위해 방대한 양의 데이터를 신속하게 집계해야 할 수 있습니다. 이러한 모든 경우 및 더 많은 경우 Azure SQL Database에서 다룹니다. 가장 높은 처리량에 대한 그래프 모델, Columnstore 인덱스 및 메모리 최적화 테이블을 지원합니다(이러한 테이블은 고성능을 달성하기 위해 프로세스에서 로드되는 컴파일된 데이터 구조입니다).
버스 타기 시나리오의 경우 자동 크기 조정 및 자동 일시 중지 지원으로 인해 필요한 만큼만 지불하고 사용할 수 있도록 Azure SQL Database 서버리스 컴퓨팅 계층을 사용합니다. GitHub Actions를 사용하여 배포 파이프라인을 만들어 필요에 따라 데이터베이스를 업데이트할 것입니다. 시나리오에 필요한 몇 가지 다른 기능이 있으며, 좀 더 자세히 살펴보겠습니다. 다음 연습에서는 이러한 기능을 실습합니다.
네이티브 JSON 기능을 사용하여 JSON 데이터 처리
Azure SQL Database를 사용하면 개발자가 데이터베이스와 데이터를 교환하고 JSON 문서를 저장하는 데 JSON을 사용할 수 있습니다. 이렇게 JSON을 효율적인 전송 메커니즘으로 사용하여 배열 및 개체와 같은 데이터 세트를 저장 프로시저로 보내 처리할 수 있습니다. JSON 문서가 있는 경우 JSON_VALUE, JSON_MODIFY, OPENJSON 같은 JSON 함수를 사용하여 쉽게 조작할 수 있습니다. 예를 들면 다음과 같습니다.
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'
)
Azure SQL Database에서 JSON을 사용하는 방법을 보여주는 추가 샘플은 모듈의 끝에서 사용할 수 있습니다.
네이티브 지리 공간적 엔진을 사용하여 지리 공간적 데이터 분석
Azure SQL Database에는 외부 라이브러리를 설치하거나 데이터를 이동하지 않고 지리 공간적 쿼리를 수행하는 데 사용할 수 있는 네이티브 지리 공간적 엔진이 있으며, 이는 상당한 양의 데이터에 비용이 들 수 있습니다. Azure SQL Database는 OGC(Open Geospatial Consortium) 표준을 완벽하게 지원하므로 내보낸 데이터는 OpenLayers와 같은 라이브러리에서 사용할 수 있습니다.
다음 예제는 버스 타기 시나리오에서 지오펜스 역할을 하는 다각형을 만들고 실시간 버스 데이터 요소 역할을 하는 점이 다각형 내에 있는지 확인하는 방법을 보여 줍니다.
-- 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)
위치에 대한 텍스트 형식(예: POINT(-122.13315058040392 47.64101193601368)
)이 WKT(Well-Known Text) 형식으로 알려진 표준 형식이므로 문자열을 복사하여 붙여넣기만 하면 지도에 투영된 도형을 확인할 수 있습니다. 다음 연습에서는 OpenStreetMap WKT Playground를 통해 직접 테스트합니다.