SQL Server on Linux 기능
예산 보유자에게 SQL Server 마이그레이션의 타당성을 입증하기 위해서는 시스템에서 경쟁적 이점을 제공할 수 있는 SQL Server의 기능을 파악해야 합니다.
SQL Server on Linux가 무엇인지 확인한 후에는 사용 가능한 현재 기능이 기존 및 향후 데이터 처리에 대한 Wide World Importers 요구를 충족하는지 확인할 수 있습니다.
여기서는 SQL Server on Linux의 주요 기능에 대해 알아봅니다.
성능
SQL Server on Linux는 HTAP(하이브리드 트랜잭션 분석 처리) 솔루션을 제공하여 빠른 트랜잭션 처리량 및 반응형 분석이라는 경쟁적 요구를 지원합니다. HTAP는 SQL Server의 일부 핵심 성능 기술을 사용합니다.
메모리 내 OLTP(온라인 트랜잭션 처리)
Wide World Importers는 메모리 최적화 테이블과 컴파일된 저장 프로시저를 결합하여 트랜잭션 테이블과 관련해서 전자 상거래 웹 사이트의 세션 상태를 읽고 쓰는 것과 같은 획기적인 성능상 이점을 얻을 수 있었습니다.
Columnstore 인덱스
SQL Server는 행 데이터와 압축된 열 형식 데이터를 모두 지원합니다. 또한 트랜잭션 테이블에는 분석 쿼리를 작성할 때 행 저장소 대신 사용되는 columnstore 인덱스도 있을 수 있습니다. columnstore 인덱스를 사용하면 현재 분석 모음에서 트랜잭션 성능을 유지하면서 운영 데이터에 대한 실시간 보고 쿼리를 실행할 수 있습니다.
쿼리 저장소
DBA 팀은 월별 성능 조정 작업을 완료하여 올바른 쿼리 계획이 사용되도록 합니다. 쿼리 성능을 모니터링하고 실행 계획의 변경 내용이 성능에 영향을 주는 쿼리 계획을 되돌립니다. 또한 팀은 가장 오래 실행되는 상위 10개의 쿼리를 개발 책임자에게 보고하고 리소스 잠금이 있는지 확인합니다. 쿼리 저장소는 이러한 모든 작업을 지원하며 Transact-SQL을 통해 사용할 수 있습니다.
ALTER DATABASE <database name>
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);
자동 튜닝 및 인텔리전트 쿼리 처리
쿼리 저장소를 사용하도록 설정한 후에 자동 계획 선택 수정 기능을 사용하도록 설정할 수 있습니다. 자동 튜닝을 사용하는 경우 SQL Server는 쿼리 성능을 모니터링합니다. 새 쿼리 계획이 이전 버전보다 더 안 좋은 경우 새 계획을 성능이 더 좋은 이전 버전으로 바꿀 수 있습니다. 이 옵션은 다음 ALTER
문을 사용하여 데이터베이스 수준에서 사용할 수 있습니다.
ALTER DATABASE <database name>
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );
IQP(인텔리전트 쿼리 처리)에는 워크로드의 성능을 자동으로 개선하고 최적화하는 SQL Server 2019의 새로운 기능이 많이 포함되어 있습니다. IQP의 주요 기능은 다음과 같습니다.
- 적응형 조인: SQL Server는 실제 입력 행 수를 기준으로 런타임 중에 조인 형식을 동적으로 선택합니다.
- 대략적인 고유 결과 수: SQL Server는 빅 데이터 시나리오에 대한 대략적인 고유 결과 수를 제공하여 고성능으로 메모리 부하가 낮은 쿼리를 실행합니다.
- 메모리 부여 피드백: 디스크에 분산하는 작업이 있는 쿼리의 경우 SQL Server에서 후속 작업을 위해 메모리를 더 추가할 수 있습니다. 마찬가지로 쿼리가 할당된 메모리를 절반 넘게 사용하는 경우 SQL Server는 쿼리에 할당된 메모리를 줄일 수 있습니다.
- 테이블 변수 지연 컴파일: SQL Server는 고정된 추측 대신 첫 번째 컴파일에서 테이블 변수의 실제 카디널리티를 사용합니다.
IQP를 사용하면 최상의 성능을 활용하기 위해 코드를 다시 작성하거나 데이터베이스 스키마를 변경할 필요가 없습니다. 데이터베이스를 호환성 수준 150 이상으로 업그레이드만 하면 됩니다.
ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = 150;
보안
SQL Server on Linux는 Always Encrypted, 행 수준 보안 및 동적 데이터 마스킹과 같은 고급 보안 기능을 지원하여 디스크 상, 메모리 내 또는 전송 중인 데이터를 보호합니다. 이러한 기능은 Standard Edition을 비롯한 모든 버전에서 지원됩니다.
TDE(투명한 데이터 암호화)는 데이터베이스 파일에 저장될 때 미사용 데이터를 암호화합니다. 데이터는 데이터베이스와 백업 모두에서 악의적인 사용자로부터 보호됩니다.
Always Encrypted를 사용하면 데이터를 소유한 사용자만 데이터를 보고 처리할 수 있습니다. 데이터베이스 관리자처럼 데이터를 관리하는 사용자는 데이터를 볼 수 없습니다. Always Encrypted를 사용하는 경우:
- 암호화된 데이터를 먼저 해독하지 않고 쿼리할 수 있습니다.
- 데이터는 서버 메모리로 이동할 때와 서버에서 신뢰할 수 있는 클라이언트 앱으로 이동할 때 미사용 상태로 보호됩니다.
- 클라이언트 드라이버에서 암호화 및 암호 해독이 진행되어 해당 프로세스가 클라이언트 애플리케이션에 투명하게 공개됩니다.
- 신뢰할 수 있는 애플리케이션 및 데이터의 소유자만 액세스할 수 있습니다. 애플리케이션 개발자와 데이터베이스 관리자는 CEK(열 암호화 키)에 액세스할 수 없습니다.
감사는 데이터베이스 엔진에서 발생하는 이벤트와 해당 이벤트를 실행한 사용자를 추적합니다. 감사된 이벤트는 이벤트 로그 또는 감사 파일에 저장될 수 있으며 공격 및 데이터 위반과 같은 문제를 조사하는 데 사용할 수 있습니다.
행 수준 보안은 쿼리를 실행하는 사용자를 기준으로 테이블 내의 특정 행에 대한 액세스를 제어합니다. 예를 들어, 그룹 멤버 자격 또는 실행 컨텍스트에 따라 데이터에 액세스할 수 있는 사용자를 제어할 수 있습니다.
동적 데이터 마스킹은 데이터의 일부를 마스크합니다. 마스터 방법으로는 열에 있는 모든 데이터 마스킹, 메일 주소 마스킹, 숫자 데이터의 난수 마스킹 및 사용자 지정 문자열 마스킹의 네 가지가 있습니다. 예를 들어, 사용자 지정 문자열 마스킹을 사용하여 사회 보장 번호의 마지막 4자리를 제외한 모든 숫자를 마스킹할 수 있습니다.
데이터 검색 및 분류는 개인 데이터처럼 데이터베이스의 중요한 데이터를 식별하고 레이블을 지정하며 보고합니다. 이 도구는 개인 정보 보호법을 보다 쉽게 준수할 수 있도록 하고 가장 가치 있는 데이터가 포함된 데이터베이스를 강화하는 SSMS(SQL Server Management Studio) 내의 도구입니다. 데이터 검색 및 분류는 ADS(Advanced Data Security) 패키지의 일부인 서비스입니다.
취약성 평가는 데이터베이스의 취약성을 식별합니다. 서버 구성과 데이터베이스 디자인으로 인해 발생할 수 있는 약점을 알고 있으면 이를 완화하고 일반적인 공격을 방지할 수 있습니다. 취약성 평가는 또 다른 ADS 서비스입니다.
SQL Server 에이전트
SQL Server 에이전트는 예약된 작업, 자동화된 작업, 유지 관리 태스크를 실행합니다. SQL Server 에이전트는 다음과 같은 세 가지 워크로드를 지원합니다.
- Transact-SQL 작업
- DB 메일
- 로그 전달
기본적으로 SQL Server 에이전트는 사용하지 않도록 설정되어 있지만 명령줄 mssql-conf
유틸리티를 사용하여 설치하고 사용하도록 설정할 수 있습니다.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server
고가용성
SQL Server에는 허용되는 내결함성 수준을 지정하는 여러 가지 방법이 있습니다. SQL Server on Linux는 Always On 가용성 그룹 및 Always On 장애 조치(failover) 클러스터 인스턴스를 지원합니다. 이러한 두 옵션을 사용하려면 각 서버에 mssql-server-ha 패키지를 설치해야 합니다. Linux는 호스트 운영 체제에 긴밀하게 연결되지는 않지만 WSCF(Windows Server 장애 조치(Failover) 클러스터링)와 동일한 Pacemaker를 통한 클러스터링을 지원합니다.
허용되는 가동 중지 시간을 좀 더 유연하게 지정할 수 있는 경우 SQL 에이전트를 통한 로그 전달은 서버 손실로부터 복구하는 데 사용하는 웜 대기를 제공할 수 있습니다.
SQL Server on Linux의 또 다른 솔루션은 Kubernetes와 같은 도구를 사용하여 오케스트레이션된 컨테이너에서 실행할 수 있는 기능입니다. 오케스트레이션 도구는 항상 SQL Server를 실행하는 노드가 있는지 확인합니다. 해당 노드가 실패하면 다른 인스턴스가 자동으로 부트스트랩됩니다. 좀 더 강력한 가용성이 필요한 경우 컨테이너에서 Always On 가용성 그룹을 실행할 수 있습니다.
기타 유용한 기능
PolyBase
많은 조직이 다양한 시스템에 데이터를 보유합니다. 다른 회사와 합병하거나 또 다른 과거의 이유로 여러 팀이 시스템을 선택할 때 요구 사항이 달랐기 때문일 수 있습니다. 기존에는 이러한 시스템 경계 전체에 걸쳐 데이터를 통합하여 사용자들의 질문에 답하기가 어려웠습니다.
SQL Server 제품 카탈로그의 판매를 기록하는 데이터가 있지만 제품을 만드는 데 드는 비용을 기록하는 데이터가 SAP HANA 데이터베이스에 있다고 가정합니다. 이익률을 분석하는 보고서를 만들려면 두 데이터베이스의 정보가 모두 필요합니다. 과거에는 다음과 같이 했을 것입니다.
- ETL(추출, 변환, 로드) 패키지를 사용하여 한 데이터베이스 시스템에서 다른 데이터베이스로 데이터를 마이그레이션합니다.
- 두 데이터베이스를 모두 쿼리한 다음 일부 사용자 지정 코드를 작성하여 결과를 단일 보고서에 조인하고 통합합니다.
이러한 두 방법은 다 복잡하며, 제대로 하려면 상당한 개발 시간이 필요할 수 있습니다.
PolyBase를 사용하면 SQL Server에서 외부 테이블을 만들 수 있습니다. 외부 테이블은 외부 시스템에 대한 연결과 거기에 호스트된 데이터 세트입니다. 만든 후에는 클라이언트에서 내부 테이블과 정확히 같은 방식으로 외부 테이블에 쿼리를 제출할 수 있습니다. JOIN
쿼리는 외부 테이블의 데이터를 내부 테이블과 통합할 수 있습니다. 여기에서 볼 수 있듯이 PolyBase를 사용하면 여러 시스템이 데이터에 적용하는 경계를 제거하고 위치에 관계없이 필요한 비즈니스 데이터를 더 쉽게 분석할 수 있습니다.
참고
Linux 운영 체제에서 PolyBase는 SQL Server 2019 이상에서 지원됩니다. 이를 사용하려면 SQL Server 2019 외에도 mssql-server-polybas 패키지를 설치해야 합니다.
Machine Learning Services
기계 학습에서 일부 복잡한 시스템의 동작을 모델링하기 위해 대규모 데이터 세트가 사용됩니다. 시스템의 관찰된 동작을 정확하게 예측하는 모델이 개발되면 해당 시스템이 향후에 동작할 수 있는 방식을 예측하는 데 사용됩니다. 데이터 세트를 준비하고, 여기에 기능을 추가하고, 모델을 학습시키고, 학습된 모델의 정확도를 평가하고, 해당 모델을 다른 클라이언트에서 호출할 수 있도록 배포할 수 있는 코드의 정교한 라이브러리가 개발되었고 오픈 소스인 경우가 많습니다. 이러한 라이브러리는 R 및 Python 언어로 작성됩니다.
SQL Server Machine Learning Services를 사용하면 SQL Server 데이터베이스의 데이터에 대해 이러한 R 및 Python 스크립트를 실행할 수 있습니다. PyTorch, TensorFlow, SciKit-Learn 등을 비롯한 인기 있는 기계 학습 및 데이터 과학 프레임워크를 추가할 수 있습니다.
참고
Linux 운영 체제에서 SQL Server Machine Learning은 SQL Server 2019 이상에서 지원됩니다. 이를 사용하려면 추가 패키지를 추가해야 합니다. 예를 들어 모든 기계 학습 코드에 Python을 사용하려면 mssql-mlservices-mlm-py-9.4.7 패키지를 설치합니다. R에 해당하는 패키지는 install mssql-mlservices-mlm-r-9.4.7입니다.
그래프 지원
SQL Server는 그래프 기반 데이터를 저장하고 쿼리하는 네이티브 지원을 제공합니다. SQL Server는 데이터를 일련의 엔터티(노드)와 이러한 엔터티 간 관계(에지)로 저장합니다.
전체 텍스트 검색
전체 텍스트 검색을 사용하여 언어 규칙을 준수하는 쿼리를 텍스트 데이터에 대해 실행할 수 있습니다. 예를 들어, “run”이라는 단어를 검색하면 전체 텍스트 검색은 “ran” 및 “running”과 같이 단어 “run” 형식을 포함하는 결과를 반환합니다.
이 기능은 기본적으로는 설치되지 않습니다. Linux에서는 mssql-server-fts
패키지를 설치하여 이러한 기능을 사용하도록 설정합니다.
ETL 워크로드
SSIS(SQL Server Integration Services) 패키지는 SQL Server on Linux에서 실행할 수 있습니다. SQL Server on Linux에 대해서만 실행하도록 제한되지 않습니다. 이러한 패키지는 Windows 온-프레미스나 클라우드에서 실행되는 Microsoft SQL Server 또는 컨테이너에서 실행되는 SQL Server에 연결할 수도 있습니다.
SQL Server Data Tools를 실행하는 Windows 머신에서 SSIS 패키지를 작성하고 유지 관리해야 합니다.