ADP BUSINESS SCHOOL is the place learning management skills. You can learn strategy, marketing, leadership, HRM, Operations, International Business, Accounting, Finance, Investment, etc.
CONTENTS 제1절 분산 데이터 저장 기술
제1_1 분산 파일 시스템
1. 파일 시스템이란? • 데이터를 컴퓨터 상에 안전하게 저장하는 것이 정보처리의 기본, 사용자의 데이터는 파일이라고 불리는 하나의 추상화된 단위로 구별되어 처리됨. 파일시스템은 이러한 파일을 컴퓨터 상에서 보관하는 방법을 제공하는 운영체제의 일부분. • 보통 하나의 컴퓨터에 하나의 파일시스템이 존재하며, 이것을 로컬 파일 시스템이라고 부름. 다른 컴퓨터에서 사용할 수 없고, 해당 컴퓨터에서 물리적으로 연결된 장치에만 파일을 저장하게 됨. 파일 시스템의 문제점? 저장장치에 문제가 생겼을 경우 저장된 모든 데이터를 손실하게 되므로, 주기적으로 다른 저장장치에 백업을 해주어야 함. 다른 컴퓨터 사용자와의 공유가 어려움. 하나의 시스템에 여려 명의 사용자가 접속하여 사용하는 호스트 방식일 경우에는 로컬파일 시스템으로도 정보공유가 어느 정도 가능하지만, 현재 개인용 컴퓨터의 활발한 보급과 네트워크 컴퓨팅 기술의 발전으로 인해 서로 다른 컴퓨터 사용자끼리 정보공유가 반드시 필요하게 됨.
1. 분산 파일 시스템이란? • 물리적으로 서로 다른 컴퓨터끼리 네트워크로 연결하여, 사용자에게 동일하게 보이는 파일 접근 공간을 제공해 주는 시스템. • 많은 수의 사용자가 서로 다른 컴퓨터를 사용하는 환경에서 네트워크를 통하여 공통된 파일시스템을 제공해 주는 시스템. • 사용자 간의 정보 공유가 쉽다 : 서로 다른 컴퓨터의 사용자끼리 정보를 쉽게 주고 받을 수 있음. • 장소에 구애를 받지 않는다 : 사용자가 특정 컴퓨터의 장소에 제한을 받지 않고 어디서나 자신의 파일을 사용할 수 있다. • 저장공간을 효율적으로 사용가능 : 여러 컴퓨터의 저장공간을 함께 사용함으로써 효율적인 저장 공간을 사용할 수 있다. • 동일한 파일 시스템 구조를 사용한다 : 서로 다른 컴퓨터의 사용자끼리 같은 파일 시스템 구조를 사용하게 되어 효율적이다.
1. 분산 파일 시스템의 종류 (p.135 표참조) 가. 구글 파일 시스템(GFS, Google File system) - 대규모 클러스터 서비스 플랫폼의 기반이 되는 파일 시스템으로 개발 됨. - 클라이언트, 마스터, chunk서버들로 구성되며, 클라이언트의 경우 POSIX 인터페이스를 지원하지 않으며, 파일 시스템 인터페이스와 유사한 자체적인 인터페이스를 제공. 나. 하둡 분산 파일 시스템(HDFS, Hadoop File system) - Apache Lucene 프로젝트의 일부분으로 진행되고 있는 프로젝트로 HDFS와 MapReduce 구현 등을 포함. 최초 아파치 너치(Apache Nutch) 웹 검색 엔진의 파일 시스템으로 개발되었으며, 구글 파일 시스템과 아키텍처와 사상을 그대로 구현한 클로닝(Cloning) 프로젝트라고 할 수 있음. 다. 러스터(Lustre, Cluster File system) 클러스터 파일 시스템에서 개발한 객체 기반 클러스터 파일시스템. 클라이언트 파일 시세틈, 메타데이터 서버, 객체 저장서버들로 구성되며, 이들은 고속 네트워크로 연결됨.
2. 데이터베이스 클러스터 데이터베이스 클러스터는 데이터베이스 클러스터의 용도 - 기본적인 데이터베이스 구축은 1개의 서버로 하나의 데이터베이스를 구축해서 운용. - 그러나 여러 가지 이유로 하나의 데이터베이스를 여러 개의 서버가 나눠서 처리하도록 하는 형태가 늘어나고 있음. - 데이터를 통합할 때 성능 향상과 가용성을 높이기 위해 데이터베이스 차원의 파티셔닝 또는 클러스터링을 이용함. 데이터베이스 클러스터의 용도 - 고가용성 : 특정 파티션에서 장애가 발생하더라도 서비스가 중단되지 않음 - 병렬처리 : 파티션 사이의 병렬 처리를 통한 빠른 데이터 검색 및 처리 성능을 얻을 수 있음 - 성능향상 : 성능의 선형적인 증가 효과를 볼 수 있음
2. 데이터베이스 클러스터 구분 데이터베이스 클러스터 구분(시스템 구성 형태 관점) 단일 서버 내의 파티셔닝과 다중 서버 사이의 파티셔닝으로 구분할 수 있음. 데이터베이스 클러스터 구분(리소스 공유 관점) 무공유(Shared Nothing) : 각 데이터베이스 인스턴스는 자신이 관리하는 데이터 파일을 자신의 로컬 디스크에 저장하며, 이 파일들은 노드 간에 공유하지 않음 Oracle RAC(Real Application Cluster)를 제외한 대부분의 데이터베이스 클러스터가 무공유 방식을 채택하고 있음. 장점 : 노드 확장에 제한이 없음 단점 : 각 노드에 장애가 발생할 경우를 대비해 별도의 폴트톨러런스(fault-tolerance)를 구성해야 함 공유 디스크(Shared Disk) : 데이터 파일은 논리적으로 모든 데이터베이스 인스턴스 노드들과 공유하며, 각 인스턴스는 모든 데이터에 접근할 수 있음. 데이터를 공유하려면 SAN(Storage Area Network)과 같은 공유 디스크가 반드시 있어야 함. 장점 : 높은 수준의 폴트톨러런스 제공(클러스터를 구성하는 노드 중 하나의 노드만 살아있어도 서비스가 가능하기 때문) 단점 : 클러스터가 커지면 디스크 영역에서 병목현상이 발생함
2. 데이터베이스 클러스터 종류 가. Oracle RAC 데이터베이스 서버 클러스터의 모든 노드에서 실행되며, 데이터는 공유 스토리지에 저장됨. 클러스터의 모든 노드는 데이터베이스의 모든 테이블에 동등하게 엑세스하며, 특정 노드가 데이터를 ‘소유’하는 개념이 없음. 가용성 : 한 노드가 장애를 일으키면, 나머지 노드에서 계속 실행됨 확장성 : 추가 처리 성능이 필요하면, 수정 없이 새 노드를 쉽게 추가할 수 있음 경제성 : 표준화된 소규모 저가형 클러스터에서도 고가의 시스템만큼 효율적으로 실행함. 도입 비용 때문에 확장성이 중요한 데이터보다는 고가용성을 요구하는 데이터에 많이 사용됨.
2. 데이터베이스 클러스터 종류 나. IBM DB2 ICE(Integrated Cluster Environment) DB2는 CPU.메모리.디스크를 파티션별로 독립적으로 운영하는 무공유 방식의 클러스터링을 지원 애플리케이션은 여러 파티션에 분산된 데이터베이스를 하나의 데이터베이스(Single View Database)로 보게 되고, 데이터가 어느 파티션에 존재하고 있는지 알 필요가 없음. 데이터와 사용자가 증가하면 별도 수정 없이 노드를 추가하고 데이터를 재분배함으로써 시스템의 성능과 용량을 일정하게 유지할 수 있음. 다. 마이크로소프트 SQL Server SQL Server는 연합 데이터베이스 형태로 여러 노드로 확장할 수 있는 기능을 제공함. 디스크 등을 공유하지 않는 독립된 서버에서 실행되는 서로 다른 데이터베이스들 간의 논리적인 결합이며, 네트워크를 이용하여 연결됨. - 단점 : DBA나 개발자가 파티셔닝 정책에 맞게 테이블과 뷰를 생성 해야하고, 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스해야 한다는 점. 노드의 개수가 작으면 간단하게 구성할 수 있지만, 노드가 많아지거나 노드의 추가/삭제가 발생하는 경우 파티션을 새로 해야 하는 문제도 따름.
2. 데이터베이스 클러스터 종류 라. MySQL MySQL클러스터는 무공유 구조에서 메모리 기반 데이터베이스의 클러스터링을 지원하며, 특정한 하드웨어 및 소프트웨어를 요구하지 않고 병렬 서버구조로 확장이 가능. 구성 관리노드(Management Node) : 클러스터를 관리하는 노드로 시작과 재구성 시에만 관여 데이터노드(NDB Node) : 클러스터의 데이터를 저장하는 노드 MySQL노드 : 클러스터 데이터에 접근을 지원하는 노드 데이터의 가용성을 위해 데이터를 다른 노드에 복제시키며, 특정 노드 장애 시 지속적인 데이터 서비스가 가능함. 데이터는 동기화 방식으로 복제되며, 이런 작업을 위해 일반적으로 데이터 노드 간에는 별도의 네트워크를 구성함. MySQL 클러스터 구성 할 경우 제한 사항…(p.142 참조)
3. NoSQL 정의 NoSQL은 Key와 Value의 형태로 자료를 저장하고, 빠르게 조회할 수 있는 자료구조를 제공하는 저장소. 전통적인 RDBMS의 장점이라고 할 수 있는 복잡한 Join 연산 기능은 지원하지 않지만 대용량 데이터와 대규모 확장성을 제공함. 우리가 익숙하게 사용하고 있는 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장기술을 의미함. *Not only SQL 이라고도 불림 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없음. NoSQL 제품군이 RDBMS와 다른점.. 스키마가 없다. 즉, 데이터 관계와 정해진 규격(table-column)이 없음 관계정의가 없으니, join이 불가능(but, reference와 같은 기능으로 비슷하게 구현가능) 트랜잭션을 지원하지 않음 분산처리(수평적 확장) 쉽게 제공함 (대부분의 NoSQL은 분산처리 기능을 목적으로 나왔기 때문에 이를 자체 프레임워크에 포함하고 있음)
3. NoSQL 종류 가. 구글 빅테이블 나. 아마존 SimpleDB 다. 마이크로소프트 SSDS 대용량 데이터 저장을 위해 빅테이블이라는 분산 데이터 관리 저장소 개발 데이터 서비스가 아닌 구글 내부에서 사용하는 데이터 저장소 2008년 AppEngine이라는 플랫폼 서비스를 오픈, 여기서 사용하는 데이터 저장소가 빅테이블 나. 아마존 SimpleDB 아마존의 데이터 서비스 플랫폼으로, 웹 애플리케이션에서 사용하는 데이터의 실시간 처리를 지원함 하나의 대에터에 대해 여러 개의 복제본을 유지하는 방식으로 가용성을 높임 관계형 데이터 모델과 표준 SQL을 지원하지 않으며, 전용 쿼리 언어를 이용하여 데이터를 조회함 Domain, Item, Attribute, Value로 구성되며, 스키마(schema)가 없는 구조 다. 마이크로소프트 SSDS SSDS(SQL Server Data Service)는 마이크로소프트에서 2008년 4월에 베타 서비스를 실시한 데이터서비스. 다른 데이터 서비스와 동일하게 SSDS 역시 고가용성을 보장함 컨테이너와 엔티티로 구성, 컨테이너는 테이블과 유사한 개념이지만 하나의 컨테이너에 여러 종류의 엔티티를 저장할 수 있음
THANK YOU Developed by LEE HYUN WOO Contact : 0306hw@naver.com HP : 010 4169 4767