MSSQL on Linux – 세부 사항

Microsoft사가 Linux에 SQL Server2016의 일부기능만 담은 리눅스용 제품은 2016년 6월 정식 공개됐습니다.
리눅스용 SQL서버는 MS리서치에서 개발한 기술인 ‘드로브릿지(Drawbridge)’를 탑재했습니다.

명령어 yum으로 Microsoft사의 mssql-server 인스톨 :

# curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo | sudo tee /etc/yum.repos.d/mssql-server.repo

# sudo yum update

# sudo yum install mssql-server

 

내부 핵심

MSSQL을 Linux로 포팅하는 데있어 가장 중요한 사항 중 하나는 런타임 동작이 Windows에 비해 변하지 않는다는 것입니다.

애플리케이션이 백엔드로 진입하는 방식을 인지하지 못하더라도 애플리케이션이 인식되지 않아야 합니다.

Microsoft는 Linux에서 Linux와 동일한 실행 파일과 라이브러리를 Windows와 같이 사용합니다.

 – 기능

  • 데이터를 항상 안 전, 동작 및 메모리 내에서 암호화하여 최대한의 보안을 제공 할 수있는 획기적인 보안 암호화 기능
  • 성능이 향상되는 모든 워크로드에 대한 메모리 내 데이터베이스 지원이 최대 30-100 배 증가
  • on-premises 및 cloud 기반 시스템에서 데이터 워크로드를 분할하는 하이브리드 아키텍처를 구축하여 비용을 절감하고 민첩성을 높일 수있는 고유 한 클라우드 기능

SQL OS

SQL Server 내부의 OS와 같은 역할로서 메모리, I/O, 잠금 및 트랜잭션 등에 대한 관리 및 교착상태 모니터링 및 예외 처리 등의 역할 수행합니다.
SQL Server 2005부터 Microsoft는 이미 SQL OS라는 자체 모듈에서 운영 체제 종속 구성 요소를 그룹화하기 시작했습니다.

111.PNG

[그림1] SQLOS 그룹화

Drawbridge(드로브릿지)기술

Drawbridge는 2011년에 시작된 연구 프로젝트이며 picoprocess 와 LibOS 의 두가지 핵심 기술을 결합한 기술입니다. Drawbridge는 윈도우 시스템에서 오버 헤드를 줄이는 것에 관한 것이었습니다.

Microsoft사에서 다음과 같은 구성요소가 필요합니다 :

  • Process isolation
    • 프로세스 격리
  • Layer, which represents the Windows ABI (kernel/syscalls)
    • Windows ABI를 나타내는 Layer
  • User space implementation of the Windows APIs/libs
    • WindowsXP/Vista의 사용자 공간 구현
  • Drivers on the guest system to initialise the memory for the VM
    • VM의 메모리를 오버커밋 하기 위한 게스트 시스템의 드라이버

이러한 구성요소들은 VM을 생성할 때 발생하는 현상에 대해 비교적 명확하게 파악할 수 있습니다.

드라이버는 게스트 시스템에서 가상 시스템에 대한 메모리를 시작합니다. 이 단계에서는 Windows ABI를 덮는 계층이로드됩니다.

사용자 공간 NT 커널로 수행이되고 또한 Windows API를 나타내는 VM의 메모리에 Library가 로드됩니다. LibOS의 일부에는 사용자 모드 커널과 API를 나타내는 Library입니다.

VM이 LibOS로 시작되는 즉시 Windows 바이너리를 실행할 수 있으며 Windows 라이브러리는 VM에서 나가기위한 시스템 호출 또는 API 호출없이 로드 될 수 있습니다.

Drawbirdge 설명 : https://www.microsoft.com/en-us/research/project/drawbridge/

LibOS

Drawbridge의 단락에서 LibOS를 언급하였습니다. Windows에서는 필요한 모든 사용자 공간의 완벽한 사용자공간의 구현을 포함하고 있습니다.

LibOS는 사용자 공간에서 Windows API를 나타내는 Library를 가지고 있습니다.

Windows 환경의 실제 구현과 비교할 때,두 가지 요소는 훨씬 가볍게 유지되지만 런타임 환경은 기존 Windows와 다르게 동작하지 않습니다.

SQL PAL(Performance Analysis of Logs/게시엑세스목록)

Drawbridge와 SQLOS를 함께 사용하면 MSSQL 서버를 Linux에서 실행할 수 있습니다. PAL을 통해 게시에 대한 액세스 권한을 부여합니다.

PAL 기능은 Microsoft Windows 액세스 제어 목록과 유사하게 작동합니다.

구독자가 게시자 또는 배포자에 연결하여 게시에 대한 액세스를 요청하면 에이전트가 전달한 인증 정보가 PAL과 비교됩니다.

SQLServer와 관련된 ABI와 API만 포함하고 있으며, MSSQL의 런타임 환경을 제공하는 데 필요한 모든 기능이 있습니다.

하위 레이어는 환경의 나머지 부분을 초기화하는 Linux바이너리(사용자 공간)로 구성됩니다.

.

SQL server / SOS and LibOS

SQLServer에는 Linux를 위한 두가지 버전의 SOS(SQL Server Operating System) LibOS(Library Operating System)이 있습니다.

Drawbridge 프로젝트는 보안 컨테이너 및 SOS의 강력한 메모리 관리, 스레드 스케줄링 및 IO 서비스를 제공하기 위해 기본 운영 체제와 응용 프로그램 간의 추상화를 제공했습니다.

SQL Server 데이터베이스 엔진 코드를 변경하여 Windows 라이브러리를 바이 패스하고 리소스를 많이 사용하는 기능을 위해 SQL PAL로 직접 호출합니다.

 

최종 아키텍처

전반적으로 SQL PAL은 MSSQL의 런타임 환경을 구성하고 RPM / DEB 패킷은 모두 실행 가능하고SQL PAL 기반의 MSSQL을 실행하는 데 필요한 추가 Windows 라이브러리도 제공됩니다.

Microsoft에 따르면 약 81MB의 압축되지 않은 Windows라이브러리에는 전체 Windows설치에 대한 지원이 포함됩니다.(전체 Windows설치 중 약 1%, SQL PAL 바이너리는 약 8MB입니다.)

이 소프트웨어는 /opt에 설치되며 systemd로 관리됩니다. Microsoft는 즉시 사용할 수 있는 모든 것을 제공하며 설명서 페이지도 제공합니다.

일반적으로 Linux에서 MSSQL을 시작하는 프로세스는 다음과 같이 설명 할 수 있습니다 :

호스트 구성 요소 (표준 Linux 바이너리)는 먼저 SQL PAL을 시작하고 “emulate”Windows 환경에서 MSSQL 서버를 시작합니다.

최종 아키텍처는 다음과 같습니다.

11.PNG

[그림2] SQL Server 아키텍처

리눅스의 mssql 한계

Microsoft는 Linux에서 MSSQL의 현재 제한 사항에 대해 매우 자주 의견을 교환하고 릴리스 정보에서 이러한 제한 사항에 대해 자세히 설명합니다.

예를 들어, 다음과 같은 것은 아직 사용할 수 없습니다.

  • Full text search
  • Replication
  • Active Directory authentication

자세한 내용은 공식 릴리스 노트를 참조하십시오

.릴리스 노트 링크 : https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes

 

원문 참고 : https://www.adfinis-sygroup.ch/blog/en/mssql-on-linux-the-details/?utm_content=buffer0514b&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

ProxySQL

ProxySQL이란?

  • 기본적으로 C++로 짜여져 있는 open source proxy 프로그램이다.
  • 총 4개의 database schema를 가지고 proxy를 컨트롤 및 모니터링이 가능하다.
  • 기본적으로 mysql이 설치되어 있어야 한다.

 

ProxySQL은 복잡하지만 다음과 같은 기능을 제공하기에 사용하기 쉬운 구성 시스템을 가지고 있다.

  • 설정에 쉽게 자동 업데이트를 허용한다.
  • 데몬 재시작 없이 런타임에 설정 변경을 허용한다.
  • 잘못된 구성은 쉽게 롤백을 허용한다.

 

기본 구조 4가지

 

RUNTIME

요청을 처리하는 스레드에 의해 ProxySQL의 in-memory 데이터 구조를 나타낸다.

proxy에 접속할 수 있는 MySQL user 목록 또는 hostgroup으로 나누어진 backend server들의 목록들을 global variables를 사용한 값으로 구성된다.

운영자가 직접 RUNTIME 구성 세션에 직접적으로 수정할 수 없다. 명령어를 통해 in-memory에서 RUNTIME으로 전송해아한다.

 

MEMORY

SQLite3 database를 사용한다.

사용자들은 이 인터페이스에 MySQL Client를 연결하고 다른 테이블과 데이터베이스를 조회 할 수 있다.

mysql_servers – backend server 목록

mysql_users – ProxySQL을 접속할 수 있는 자격이 부여된 유저들의 목록

mysql_query_rules – 다른 backend server로 트래픽을 라우팅하는 규칙의 목록

global_variables – runtime에 바꿀 수 있는 proxy에서 사용되는 global variables 목록

mysql_collatioins – 작업 할 proxy에서 사용할 MySQL collations 목록

debug_levels[디버그에서만 사용] – ProxySQL의 상세 수준을 포함하여 나타내는 디버그 문 유형의 목록

 

DISK

$(DATADIR)/proxysqll.db의 기본 위치와 on-disk SQLite3 database를 나타낸다.

재시작시 in-memory config는 휘발성이여서 disk에 configuration을 저장하여 유지한다.

 

CONFIG

config 파일은 기본적인 설정 파일이며 밑에서 다른 구성 층 사이의 관계를 볼 수 있다.

Percona Announcement Day

Percona Announcement Day 에 귀하를 초청합니다.

Percona DB를 사랑해주시는 고객 여러분께 진심으로 감사의 말씀을 드립니다.
Percona DB 국내 총판인 (주)오뉴이노베이션에서는 Percona DB 의 주요기능에 대하여 다음과 같이 설명하는 자리를 마련하였사오니 바쁘시더라도 참석하여 주시면 감사하겠습니다.
(주)오뉴이노베이션 임직원 일동

사전등록하기▷

⊙ Agenda

Time                                      Session

13:30 ~ 14:00                       ⊙등록

14:00 ~ 14:05                       ⊙ 인사말

(주)오뉴이노베이션/박상택 대표이사

14:10 ~ 16:10                       ⊙ Introduction Percona Landscape

(Mr. Colin Charles / Chief Evangeliest, Percona)

16:10 ~ 16:30                       ⊙ Coffee Break

16:30 ~ 17:00                       ⊙ Introduction Percona Service

(주)오뉴이노베이션 / 김규성 상무

17:00 ~ 17:30                       ⊙ Q&A

 

⊙ 일시 : 2016년 11월 17일

⊙ 장소 : 후이즈 아카데미 3강의장

               (서울 구로 구로3동 187-10 코오롱싸이언스밸리 1차 2층)

⊙ 오시는 길

  ⊙ 버스 : 이마트 하차시

                   1) 마을버스 : 01번(영등포), 09번(구로)

                   2) 지선버스 : 5536번

  ⊙ 지하철 : 2호선 구로디지털단지역 (3번출구)

 

⊙ IMFORMATION

☞ 세미나 행사에 참여하신 모든 분들께 소정의 기념품을 드립니다.

☞ 세미나 행사 참여 가능 인원이 30명으로 한정되어 있사오니 2016년 11월 14일 (월)까지 사전 등록하기를 통하여 메일 회신 부탁드립니다.

☞ 본 세미나에는 1시간 무료주차권만 지급됩니다.

☞ 행사 문의 및 안내 : 김보람 대리 02-866-2179 / kimbo1126@ohnew.co.kr

데이터야 놀자 세미나 정리 및 후기

14682179_340613839617710_4586021126522954010_o.png

 

오전 강의

키노트 1  데이터분석에서 가치 만들어 내기 – 김상우

 

비트윈 출시 이후부터 여러 분야에서 데이터를 적극적으로 활용

#1 전략 – 일본 진출 사례

리텐션(=머무르는 시간) : 일본이한국보다 리텐션이 높았음

한국과 다른 일본 문화 : 공적인 공간 및 모임에서는 사적인 이야기를 하지않음

데이터 분석을 통해 문제점 분석

-> 홍보 및 이벤트를 통하여 개방적인 10대들이 사용하도록 유도

※ 데이터는 힘들때 버틸 수 있는 믿음을 준다.

 

#2 디자인 – 캐릭터 디자인 사례

Zepplin을 통해 데이터를 분석하는 디자이너 (스티커, 이모티콘 종류별 사용량 등)

※ 데이터는 영감을 준다.

 

#3 커머스 – 꽃배달 상품 사례

초라한 출발에서 정상괘도로 (초기 1개에서 데이터 분석을 통해 주문량 증가 – 선택장애)

※ 데이터는 문제점을 찾아준다.

 

#4 제품 – 비트윈 데이트 리뉴얼 사례

실사례 리뷰 -> 반응은 좋았지만 사용량 감소

데이터 분석을 통하여 문제점 분석

※ 데이터는 방향성을 알려준다.

 

키노드 2  금융 오픈소스를 선택하다 – 성동찬 & 오픈 소스로 먹고 살기 – 조현종

NewImage1.png

카카오 뱅크는 기술적 모든 책임을 자신이 가지고 가겠다는 의지로 오픈소스를 Enterprise로 진행

오픈소스 사용 이유 : MAC에서 사용하고 싶어서

Tadpole DB Hub – 웹브라우저에서 동작하는 데이터베이스 협업 툴

 

키노트 3 하둡 10주년 그리고 하둡 3.0 등장 – 서동진

2016년은 하둡 10주년

하둡 3.0 주요 변화 소개

  • 최소 자바 버전 Java7 -> Java8
  • Erasure Coding (HDFS replica3에 비해 저장공간 절약)
  • VARN Timeline Service v.2 – v.1의 문제점 개선
  • MapReduce task-level native optimization
  • 두개 이상의 NameNode를 Running 상태로 운영 설정
  • 충돌 포트 변경
  • Map과 Reduce task의 Heap 사이즈 설정 간편화

 

키노트 4 제픈린과 오픈소스 생태계 그리고 실리콘 밸리 – 이문수

Apache Zeppelin – 대화형 데이터 분석을 가능하게 하는 완전 개방형 웹 기반의 Notebook

발전 상황 : 한국 -> 실리콘밸리 / 컴퍼런스 : 서울 -> 전세계

 

오후강의

Spark와 Zeppelin을 활용한 머신러닝 실전 적용기 – 김태준

ML Pipeline의 문제점을 Zeppelin을 사용하여 해결

데이터를 백터형식을 활용하여 머신러닝에게 전달

예제 https://github.com/uosdmlab/playdata-zeppelin-notebook

 

데이터로 가치를 만들기 어려운 이유 – 이주형

데이터 과학의 난관 : 배워야 할 것은 너무 많고 사람들은 말을 안듣는다.

NewImage.png

Data business people, Algorithm developer, Data Engineer, Data Researcher

=> 실제로 이 모든걸 갖춘 사람은 거의 없음

 

Spark SQL 실시간 스트리밍 – 권혁진

Spark 스트리밍이 가지고 있던 여러 단점을 보완

Structured Spark Streaming이 새로 제공되고 있음

 

글로벌 사례로 보는 데이터로 돈버는 법 – 고용혁

하둡생태계 / 수학 / 통계학 / 머신러닝 / 프로그램 / 분야전문 / 커뮤니케이션 / 시각

->  8가지 요소가 모두 데이터 사이언스에서 중요한 요소

Data Product를 만들어 내는 것이 가장 중요한 Data팀의 목적 중 하나

-> Data Storage + User Interface

 

후기…

세미나 가기전 조금이나마 공부를 하고 갔지만 IT 새내기인 나로서는 알아듣기 힘든 말이 많았다. 그래도 짧은 시간이지만 각 세션별로 좋은 내용들을 발표하여 많은 도움이 되었다.