'2016/01/25'에 해당되는 글 2건

  1. 2016.01.25 샤딩(Sharding)이란?
  2. 2016.01.25 IIS란?

출처 : http://hanburn.tistory.com/106


[DB] DB Sharding은 무엇이고, 적용 전략은? ( 적용시 고려사항 )

개발 2012.02.15 17:44


작성자 : hanburn

작성일 : 2012-01-17

 

1. 샤딩 ( sharding ) 이란 무엇인가?

2. 샤딩 및 전략

 2.1 vertical partitioning

 2.2 Range Based Partitioning

 2.3 Key or Hash Based Partitioning

 2.4 Directory Based Partitioning

3. 샤딩 적용시 고려사항

  

 

 

1. 샤딩 ( sharding ) 이란 무엇인가?

관계형 데이터베이스에서 대량의 데이터를 처리하기 위해서 데이터를 파티셔닝하는 기술이다. (partitioning->분할함) 파티셔닝은 DBMS에서 지원하기도 하는데일부 DBMS ( MySQL 5.1 미만에서는 지원 안함에서는 지원안하기도 한다. 샤딩은 DBMS 레벨에서 데이터를 나누는 것이 아니고 데이터베이스 자체를 분할하는 방식이다따라서 어플리레이션 레벨에서 구현해야 한다.

간단하게 예를 들면전 세계의 고객 데이터를 저장하는 대형 데이터베이스를 분산한다고 할때미국 고객의 경우는 샤드A, 아시아 고객의 경우는 샤드B, 유럽 고객의 경우는 샤드C로 분할해서 저장할수 있다.  

 

 

2. 샤딩 및 전략

샤딩에서 데이터베이스를 분할하는 방법에 대해서 살펴본다각 방법마다 장단점과 주의할 점이 있으므로 서비스에 맞게 적절하게 선택하거나 조합하여 사용 한다.

 

2.1 Vertical Partitioning

    테이블 별로 서버를 분할하는 방식이다예를들면 사용자 프로필정보용 서버사용자 친구리스트용 서버사용자가 만든 컨텐츠사진같은것 ) 용 서버등으로 분할하는 방식이다.

    장점 : 구현이 간단하고전체 시스템에 큰변화가 필요 없다.

    단점 : 각 서버의 데이터가 점점 거대해지면 추가 샤딩이 필요해진다. ( 1천만명이 1000장의 사진을 생성한다면 컨텐츠 서버에 또 샤딩이 필요할 것이다. )

 

  2.2 Range Based Partitioning

    하나의 feature(또는 table)가 점점 거대해지는 경우 서버를 분리하는 방식이다. 예를들면 사용자가 많은경우 사용자의 지역정보를 이용해서 user 별로 서버를 분리하거나일정데이터라면 년도별로 분리거래정보라면 우편번호를 이용하는 방식이다.

    주의점 데이터를 분할하는 방법이 예측가능해야 한다.

 

  2.3 Key or Hash Based Partitioning

    이방식은 웹2.0 사이트에서 기본 파티셔닝 방식으로 알려져있다엔티티를 해쉬함수에 넣어서 나오는 값을 이용해서 서버를 정하는 방식이다사용자ID가 숫자일 경우 나머지연산( module operation)을 이용하는 방법이다.

    주의점 : 해쉬결과 데이터가 균등하게 분포되도록 해쉬함수를 정하는게 중요하다.

    단점 : 서버의 수를 늘리기 위해서 해쉬함수를 변경하는 작업이 무지무지 비싼 작업이다.

 

  2.4 Directory Based Partitioning

    파티셔닝 메커니즘을 제공하는 추상화된 서비스를 만드는 것이다.(데이터베이스 액세스 코드와는 떨어져 있는)  샤드키를 look-up 할수 있으면 되므로구현은 DB cach를 적절히 조합해서 만들수 있다.

 

 

3. 샤딩 적용시 문제점들 및 고려사항

 3.1 데이터 재분배 ( Rebalancing data )

  Sharding DB의 물리적인 용량한계나 성능한계에 다르면 shard의 수를 늘리는 scale-up 작업이 필요하다비스 정지 없이 scale-up 할수 있도록 설계방향을 잡아야 한다.

 

 3.2 샤딩으로부터 데이터 조인하기 ( Joining data from multiple shards )

   Sharding-db 간에 조인이 불가능 하기에 처음부터 역정규화를 어느정도 감수해야 한다. Shard의 목정이 대용량 데이터 처리이므로대용량처리시 수행성능을 위해서 데이터 중복은 trade-off 관계 ( 완전 고용과 물가 안정의 관계. 곧, 실업률(失業率)을 줄이면 물가가 상승하고, 물가를 안정시키면 실업률이 높아진다는 모순적 관계를 이르는 말임.) 임을 이미 알고 있다.

 

 3.3 샤드에 데이터를 파티션하는 방법 ( How do you partition your data in shards? )

  shard 해쉬함수를 잘 설계해야 한다.

 

 3.4 샤드간의 트랜잭션 문제

  Global Transaction을 사용하면 shard DB간의 트랜잭션도 가능하다그 유명한 XA인데성능저하의 문제가 있다.

 

 3.5 Global Unique Key

  DBMS 에서 제공하는 auto-increament를 사용하면 key가 중복될수 있기 때문에, application 레벨에서 Key 생성을 담당해야 한다.

 

 3.6 데이터는 작게

  Table의 단위를 가능한 작게 만들어야 한다.


'프로그래밍 > DB' 카테고리의 다른 글

샤딩(Sharding)이란?  (0) 2016.01.25
SP란? Stored Procedure [수정필요]  (1) 2016.01.21
Posted by GENESIS8

댓글을 달아 주세요


원문 출처 : 

http://www.terms.co.kr/IIS.htm

http://hackersstudy.tistory.com/16

http://w3svc.tistory.com/entry/IIS%EB%9E%80



IS[아이아이 에스]는 마이크로소프트의 윈도우NT용 인터넷 서버군(群)의 이름으로서, 여기에는 WebHTTPFTPGopher 등이 모두 포함되어 있다. IIS는 이미 넷스케이프나 마이크로시스템즈 등의 회사에서 선점하고 있는 인터넷 서버 시장을 마이크로소프트가 지배할 목적으로 내놓은 제품이다. 마이크로소프트는 IIS에 웹 사이트나 검색엔진을 만들고 관리하며, 데이터베이스를 이용한 웹기반의 응용프로그램 작성을 지원하는 일련의 프로그램들을 포함하였다. 마이크로소프트는, IIS가 윈도우NT 서버와 여러 가지 방법으로 밀접하게 통합되었으며, 그 결과 더 빠른 웹페이지 서비스가 가능해졌다고 주장하고 있다.

IIS를 구매하는 회사들은 웹페이지를 만드는데 마이크로소프트의 프론트페이지 제품을 사용할 수 있다. 웹 개발자들은 마이크로소프트의 ASP 기술을 이용할 수 있는데, 이는 액티브엑스 컨트롤을 내장하고 잇는 응용프로그램들이 웹페이지 내에 포함될 수 있다는 것을 의미한다. 개발자들은 또한 마이크로소프트의 ISAPI 인터페이스를 사용함으로써 서로 다른 사용자들을 위해 요구를 여과하여, 올바른 웹페이지를 받아볼 수 있도록 프로그램을 만들 수 있다. ASP와 ISAPI 프로그램들은 현재 많이 사용되고 있는 CGI 또는 SSI 프로그램들 보다 더욱 효율적으로 실행된다.

마이크로소프트는 인터넷 서비스 제공사업자의 마음을 끌만한 서버관리자용 특별 기능을 포함하였다. 그것은 단일 윈도우(또는 콘솔)로부터 모든 서비스들이나 사용자들을 관리할 수 있게된 것이다. 또한, 이 기능은 초기에 설치하지 않았어도 나중에 쉽게 그 요소를 추가할 수 있도록 설계되었으며, 관리용 윈도우는 개별 고객들의 사정에 맞게 조정될 수 있다.

IIS는 설치하기 쉽도록 설계된 보안기능을 제공하며, 이는 데이터베이스를 이용하고 트랜잭션 차원의 제어를 제공하는 마이크로소프트 트랜잭션 서버와 밀접하게 동작한다. IIS는 또한 오디오, 비디오 스트림을 전달하는 마이크로소프트의 NetShow도 지원한다.


IIS란 MS에서 Web Service를 목적으로 정의 한 서비스 모듈의 Windows방식 서비스의 명칭이다.

컴퓨터에 Web Service를 할수있는 통신포트를 개방해놓고 그 통신포트를 통하여 자신의 컴퓨터에 있는 정보, 자료, 파일등을 접근하는 사람으로 하여금 볼 수 있도록 하는 것을 Web Service라고 하는데, 이것을 하는 컴퓨터가 Web Server입니다.

 웹 서버란?

웹 서버는 클라이언트 컴퓨터의 요청을 받아들이고 이러한 요청에 대해 응답을 반환하는 특정 소프트웨어가 있는 컴퓨터입니다. 웹 서버를 사용하면 인터넷 또는 인트라넷 및 엑스트라넷을 통해 정보를 공유할 수 있습니다.


 IIS는 Internet Information Sevices(인터넷 정보 서비스) 의 약자 이며, 이크로소프트 원도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임

아파치 웹서버에 이어 세계에서 두번째로 가장 잘 알려진 웹서버입니다.

서버는 현재 FTP, SMTP, NNTP, HTTP/HTTPS를 포함하고 있습니다. 지금까지 IIS 8.0 버전이 나왔습니다.
(IIS 8.0 은 windwos server 2012, Windwos 8 부터 사용 가능합니다)

장점이자 단점인 마이크로소프트에서 제공하는 윈도우 OS에서만 사용이 가능하다는점.

IIS에서는 ASP 스크립트 언어를 사용 할 수 있다.

 

IIS 8.0 신규, 업데이트 기능

웹 서버 성능 비교
     (출처-http://www.gtcomm.net/blog/nginx-the-best-http-server/)

CPU Utilization // CPU 활용량
• IIS – 9 percent
• Nginx – 21 percent
• Apache – 26 percent

Peak Throughput // 단위시간 당 최대 정보 처리량
• IIS – 49,000 responses per second (r/s)
• Nginx – 23,000 r/s
• Apache – 14,000 r/s

Response Time // 응답 시간
• IIS – 2.8 milliseconds
• Nginx – 5.5 milliseconds
• Apache – 6.3 milliseconds


결론 : 짱 좋음


IIS 서버 Html 구축 하는법

OS : Windwos server 2012 R2 Datacenter

1.1 서버 관리자에서 역할 및 기능 추가

1.2 웹서버(IIS) 설치

 

2.IIS 관리자 실행

2.1 웹사이트 추가 클릭

2.2

(1)    사이트 이름 항목에는 추가 할 사이트에 원하는 이름을 적어준다. 
        관리자가 사이트들을 구별목적으로 사용되는 것이므로 별칭으로 적어두면 된다.

(2)    실제 경로 항목에서 웹사이트의 root로 설정할 디렉토리를 선택한다.

(3)    두 항목을 기재하였으면, 이제 확인을 누르고 대화상자를 닫는다. 
        웹 사이트 추가시에는 기본으로 “웹 사이트 즉시 시작” 항목에 체크가 되어 있어 확인을 누르면 웹사이트 추가와 동시에 서비스가 시작된다.

 

3.    사이트 추가가 완료 되었다면, 이제 IIS 관리자의 사이트 프레임 내에 방금 추가한 사이트가 등록된 것을 확인 할 수 있으며, "시작됨" 상태
        정상적으로서비스가 되고 있는 것을 확인 할 수 있다.

 

 

 

4.자, 그럼 이제 클라이언트에서 웹 브라우저로 접속하여 웹 서비스에 접속이 가능한지 확인을 해보자.root디렉토리에 만들어 놓은 Html 파일을 넣어놓고
브라우저를 열고 http://서버ip/change.html 이라고 주소를 입력해보면 만들어 놓은 html 파일이 열리는 것을 확인 할 수 있다.




'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글

HTML 기초  (0) 2016.02.21
비즈니스 로직(Business logic)?  (0) 2016.02.14
웹서버(Web Server) / 웹 서버 어플리케이션(WSA)  (0) 2016.02.14
웹 프로그래밍 기초  (0) 2016.02.14
ASP(Active Server Page)  (0) 2016.01.28
IIS란?  (0) 2016.01.25
Posted by GENESIS8

댓글을 달아 주세요