파티셔닝(partitioning)은 데이터베이스를 여러 부분으로 분할하는 것이다. 데이터베이스의 분할은 중요한 튜닝 기법으로 데이터가 너무 커졌을때, 조회하는 시간이 길어졌을 때 또는 관리 용이성, 성능, 가용성 등의 향상을 이유로 행해지는 것이 일반적이다. 분할된 각 부분은 '파티션'이라고 부른다. 가장 일반적인 것은 분산 데이터베이스 분할인데 각 파티션은 여러 노드에 분산 배치되어 사용자가 각 노드에서 로컬 트랜잭션을 수행 할 수 있다. 이것은 가용성과 보안을 유지하면서 특정 뷰에 관한 일반 트랜잭션의 성능을 향상시켜준다. 데이터베이스의 분할, 각각 작은 데이터베이스가 되도록 하는 분할 방법과 하나의 테이블과 같이 선택된 요소만 분리하는 방법이 있다. [1]
개요
파티셔닝은 퍼포먼스, availability, maintainability 를 목적으로 논리적인 데이터를 다수의 entity로 분할하는 행위를 말한다. 대부분의 데이터베이스 관리 시스템에서 지원하지만 Mysql 5.1 미만에서는 지원하지 않는다. 샤딩 또한 이 파티셔닝의 종류 중 하나이다. [2]즉, 큰 테이블이나 데이터베이스를 관리하기 쉬운 파티션이라는 작은 단위로 물리적으로 분할하는 것을 말한다. 물리적인 데이터 분할이 있더라도, 데이터베이스에 접근하는 애플리케이션 입장에서는 이를 인식하지 못한다. [3]
등장 배경
서비스의 크기가 점점 커지고 데이터베이스에 저장하는 데이터의 규모 또한 대용량화가 되면서, 기존에 사용하는 데이터베이스 시스템의 용량의 한계와 성능의 저하를 가져오면서 초대형 데이터베이스와 같이 하나의 데이터베이스에 너무 큰 테이블이 드러가게 되면서 이러한 문제점을 해결하기 위하여 테이블을 '파티션'이라는 작은 단위로 나누어 관리하는 '파티셔닝'기법이 나타나게 된것이다. 파티셔닝 기법이 나타나면서 소프트웨어적으로 데이터베이스를 분산처리하여 성능이 저하되는 것을 방지하고 관리를 보다 수월하게 할 수 있게 되었다. [3]
목적
1. 성능(Performance)
- 특정 데이터 조작 언어(DML)와 쿼리(Query)의 성능을 향상시킨다.
- 주로 대용량 데이터 Write 환경에서 효율적이다.
- 풀스캔에서 데이터 허용의 범위를 줄여 성능을 향상시킨다.
- 많은 테이블이 있는 온라인 트랜잭션 처리 시스템에서 테이블 작업을 작은 단위인 파티션들로 분산시켜 경합을 줄인다.
2. 가용성(Availability)
- 물리적인 파티셔닝으로 인하여 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상된다.
- 테이블의 파티션 단위로 Disk I/O 를 분산하여 경합을 줄이므로 업데이트 성능을 향상시킨다.
- 각 분할 영역으로 독립적으로 백업하고 복구할 수 있다.
3. 관리용이성 (Manageability)
- 큰 테이블을 제거하여 관리를 쉽게 해준다. [3]
특징
종류
수평 파티셔닝이란 샤딩(Sharding)과 동일한 개념으로써 스키마(schema)를 복제한 후 샤드키를 기준으로 데이터를 나누는 것을 말한다. 즉 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 것을 말한다. 하나의 테이블의 각 행을 다른 테이블에 분산시키는 것이다. 수평 파티셔닝은 퍼포먼스, 가용성을 위하여 key를 기반으로 여러 곳에 분산 저장한다. 그리고 일반적으로 분산 저장 기술에서 파티셔닝은 수평 분할을 의미한다. 보통 수평 분할을 한다고 하였을 때는 하나의 데이터베이스 안에서 이루어지는 경우를 지칭한다. 장점에는 데이터의 개수를 기준으로 나누어 파티셔닝 하며, 데이터의 개수가 작아지고 따라서 데이터베이스의 개수도 작아지게 된다. 자연스럽게 성능은 향상된다. 단점은 서버 간 연결 과정이 많아지고 데이터를 찾는 과정이 기존보다 복잡해 지연시간이 증가하나. 또한 하나의 서버가 고장나게 된다면 데이터의 무결성이 깨질 가능성이 있다.
수직 파티셔닝이란 모든 컬럼들 중 특정 컬럼들을 쪼개어 따로 저장하는 형태를 의미한다. 스키마를 나누고 데이터가 따라 옮겨가는 것을 말하며 하나의 entity를 2개 이상으로 분리하는 작업으로 테이블의 일부 열을 빼내는 형태로 분할한다. 관계형 데이터베이스에서 3정규화와 같은 개념으로 접근하면 이해하기 쉽다. 하지만 수직 파티셔닝은 이미 정규화된 데이터를 분리하는 과정이다. 수직 파티셔닝을 사용하면 자주 사용하는 컬럼 등을 분리시켜 성능을 향상시킬 수 있다. 그리고 한 테이블을 선택하면 결국 모든 컬럼을 메모리에 올리게 되므로써 필요하지 않은 컬럼까지 올라가서 한번에 읽을 수 있는 열이 줄어든다. 이는 I/O 측면에서 본다면 필요한 컬럼만 올리면 훨씬 많은 수의 열을 메모리에 올릴 수 있으니 성능상의 이점이 있으며 같은 타입의 데이터가 저장되기 때문에 저장 시 데이터의 압축률을 높일 수 있다. [3]
- Key or Hash Based Partitioning
entity를 해쉬함수에 넣어서 나오는 값을 이용하여 서버를 정하는 방식으로 사용자의 ID가 숫자로만 이루어져 있다면 나머지 연산을 이용한다. 해시결과 데이터가 균등하게 분포되도록 해시함수를 정해야 한다. 해시함수를 바꾸는 것은 거의 불가능 하기 때문에 균등하게 나눌 수 있는 해시함수 선정이 중요하다.
- Directory Based Partitioning
파티셔닝을 제공하는 특정 서비스를 만드는 것을 의미한다. 데이터베이스와 캐시를 적정히 조합하여 만들거나 샤드키를 조절하는 방법 등 여러가지가 있다. [2]
분할 기준
각주
참고자료
같이 보기
이 파티셔닝 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.
|
블록체인 : 블록체인 기술 □■⊕, 합의 알고리즘, 암호 알고리즘, 알고리즘, 블록체인 플랫폼, 블록체인 솔루션, 블록체인 서비스
|
|
블록체인 기술
|
Bech32 • BTP • DRC-20 • EIP • IPFS • KRC-20 • NFT 마켓플레이스 • P2P • P2PKH • P2SH • PFP • PUF • SPV • TPS • TRC-20 • UTXO • 가나슈 • 가명성 • 가스 • 가십 • 가십 프로토콜 • 개념증명(PoC) • 검증가능지연함수(VDF) • 게스 • 고스트 프로토콜 • 공공예산 • 글로벌신뢰인공지능 • 대체가능토큰 • 대체불가토큰(NFT) • 도지더리움 브릿지 • 디지털 자산 • 디지털 희소성 • 라운드 • 라운드 로빈 • 라이트하우스 • 랜덤 • 레그테크 • 레이든 • 리카르디안 계약 • 린스타트업 • 마스터키 • 마스트 • 메인넷 • 멜팅 • 믹싱 • 민팅 • 밈블윔블 • 반감기 • 베타넷 • 변경불가성 • 브릿지 • 블록체인 생태계 • 블록체인 클라우드 서비스(BaaS) • 블룸필터 • 비블록체인 • 비앱 • 비콘체인 • 비트코인코어 • 빤통경제 • 수정 고스트 프로토콜 • 스냅샷 • 스마트 계약 • 스마트 브리지 • 스웜프로토콜 • 스크립트퍼브키 • 스테이킹 • 스텔스 주소 • 스핀오프코인 • 슬래싱 • 시크릿 컨트랙트 • 심플 컨트랙트 • 아토믹스왑 • 암호경제(크립토 이코노미) • 앤드어스체인인공지능 • 앵커링 • 언스테이킹 • 에어드랍 • 에폭 • 오프체인 오더락 • 오피리턴 • 옵코드 • 원토큰 문제 • 웨이 • 위스퍼 프로토콜 • 위임 • 유니스왑 • 유동성 • 이더리움 가상머신(EVM) • 이더리움 클라이언트 • 이중지불 • 익명성 • 인증된 익명 아이디 • 인터레저 프로토콜(ILP) • 자산화 • 잠금 스크립트 • 최소기능제품(MVP) • 컨소시엄 블록체인 • 컬러드코인 • 코인셔플 • 코인소각 • 코인에이지 • 코인조인 • 코인토싱 • 크립토노트 • 키스토어 • 타임락 • 테스트넷 • 토다 • 토큰 이코노미 • 토큰화 • 튜링완전 • 튜링불완전 • 트랜잭션 아이디(TxID) • 트러스트 컨트랙트 • 트루빗 • 트릴레마 • 파워 • 파티셔닝 • 퍼블릭 블록체인 • 페널티 • 프라이버시 • 프라이빗 블록체인 • 플랫폼 • 플러딩 • 피어 • 피투피(P2P) • 하이브리드 블록체인 • 합의 • 해시락 • 해시타임락(HTLC) • 해제 스크립트 • 확장성
|
|
해시
|
레인보우 테이블 • 매핑 • 머클경로 • 머클루트 • 머클트리 • 분산해시테이블(DHT) • 블록해시 • 스큐드 머클트리 • 온라인툴즈 • 이전블록해시 • 카뎀리아 • 해시 • 해시레이트 • 해시맵 • 해시충돌 • 해시테이블 • 해시파워 • 해시함수 • 해싱
|
|
블록
|
고아블록 • 그래핀 • 논스 • 마이크로블록 • 베이킹 • 북키퍼 • 브랜치블록 • 브로드캐스팅 • 블록 • 블록높이 • 블록바디 • 블록생성자 • 블록정보 • 블록타임 • 블록헤더 • 비츠 • 세그윗 • 엉클블록 • 완결성 • 제네시스블록 • 타임스탬프 • 프룻 • 프룻체인
|
|
체인
|
더블체인 • 라이트닝 네트워크 • 라이트닝 루프 • 루트체인 • 루프체인 • 메인체인 • 방향성 비순환 그래프(DAG) • 베리파이어블 프루닝 • 블록격자 • 블록체인 • 사용자 활성화 소프트포크(UASF) • 사용자 활성화 하드포크(UAHF) • 사이드체인 • 서브체인 • 소프트포크 • 오페라체인 • 오프체인 • 온체인 • 인터체인 • 차일드체인 • 체인 • 탱글 • 테스트체인 • 토카막 네트워크 • 포크 • 포크체인 • 퓨어체인 • 프로덕트체인 • 프루닝 • 프리포크 • 플라즈마 알고리즘 • 플라즈마캐시 • 플래시 계층 • 하드포크 • 해시그래프 • 홀로체인
|
|
노드
|
검증인(밸리데이터) • 기본노드 • 노드 • 라이트노드 • 랜덤노드 • 마스터노드 • 베이킹노드 • 보조노드 • 보증노드 • 슈퍼노드(슈퍼대표, 대표노드) • 슬롯 • 슬롯리더 • 엔드포인트노드(레인저노드) • 의회 네트워크 • 작업노드 • 종단노드 • 종자노드(시드노드) • 중계노드 • 지갑노드 • 채굴노드(마이닝노드) • 쿼럼 • 풀노드 • 합의노드
|
|
샤딩
|
네트워크 샤딩 • 데이터베이스 샤딩 • 동적샤딩 • 샤드 • 샤딩 • 스테이트 샤딩 • 알고리즘 샤딩 • 적응형 상태 샤딩 • 체인샤딩 • 트랜잭션 샤딩
|
|
채굴
|
병합채굴 • 사전채굴 • 에이식(ASIC) • 에이식부스트 • 에이식 저항 • 일드파밍 • 채굴 • 채굴 난이도 • 채굴량 • 탄소감축채굴 • 페어런치
|
|
탈중앙화
|
TVL • 거버넌스 • 게임파이 • 다오(DAO) • 다이코(DAICO) • 닥(DAC) • 닥스(DAX) • 덱스(DEX) • 디앱(DApp) • 디지오(DGO) • 디튜브 • 디파이(DeFi) • 분산경제 • 분산원장(DLT) • 분산 클라우드 • 소셜파이 • 씨파이(C-Fi) • 오프체인 거버넌스 • 온체인 거버넌스 • 원장 • 준중앙화 • 중앙화 • 탈중앙화 • 탈중앙화 TPS • 탈중앙화 조직(DO) • 탈중앙화 지수(DQ)
|
|
분산아이디
|
DIDs • IETF • ToIP • 검증가능한 자격증명 • 검증인 • 디지털아이덴티티재단 • 발급자 • 보유자 • 분산아이디(DID) • 분산아이디 기관 • 분산아이디 인증(DID Auth) • 아이온 • 자기주권 • 자기주권신원 • 최소화된 자격증명 데이터 • 탈중앙화 키관리시스템 • 통합해석기
|
|
오라클
|
상호인증 블록체인 • 오라클 • 오라클 머신 • 오라클 문제 • 오라클 서비스 • 중간자
|
|
BIP
|
BIP • BIP9 • BIP16 • BIP32 • BIP39 • BIP43 • BIP44 • BIP47 • BIP49 • BIP63 • BIP70 • BIP84 • BIP141 • BIP148
|
|
ERC
|
ERC • ERC-20 • ERC-165 • ERC-223 • ERC-621 • ERC-721 • ERC-777 • ERC-827 • ERC-884 • ERC-998 • ERC-1155 • ERC-1404
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|