일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- viewcontroller
- PBFT
- reentrancy
- 블록체인 기술
- pow
- DEFI
- 프로그래머스
- 암호화폐
- 백준
- dsYM
- 알고리즘
- External Call
- Algorithm
- DPOS
- POS
- .dsym
- Xcode
- 비트코인
- Blockchain
- Crash
- 블록체인
- Mining
- 재진입공격
- 이더리움
- ios
- 분산원장
- solidity
- Report
- view 이동
- ethereum
- Today
- Total
개발하기좋은날
분산 원장 기술의 기초 분산 데이터베이스 본문
분산 데이터베이스란?
- 하나의 데이터베이스 관리 시스템으로, 여러 CPU에 연결된 저장장치들을 제어하는 형태의 데이터베이스
물리적으로 떨어져있고 여러 노드들은 네트워크를 통해 연결됨으로, 투명성 확보가 중요
분산 데이터 베이스의 대표적인 3가지 기술
- 클러스터링
- 레플리케이션
- 샤딩
클러스터링
- 데이터 베이스가 서버가 죽으면 어떻게 해야하지?
- 클러스터링은 DB 서버가 죽었을때 가용성을 위해 서버를 여러개로 만드는 방법
- 데이터베이스는 한개이기 떄문에 병목이 존재한다, 비용부담이 크다, 장애 대응에 강하다
- Active-Active 모드, Active-Standby 모드가 있다
- Active-Active 모드
- 클러스터링된 서버를 전부 가동하여 항상 장애에 대응할수있게
- Active-Standby 모드
- 클러스터링된 서버중 일부 클러스터만 가동하고 나머지는 대기
레플리케이션
- 저장된 데이터가 손실되면 어떻게할까?
- 레플리케이션은 데이터베이스 스토리지를 여러개로 사용하는 방법이다
- Master - Slave 구조로 구성 되어있음
- Slave에 단순 백업만 할수있다
- Master에서는 Insert, Update, Delete 같은 작업을, Slave는 Read만 하여 부하 분산이 가능하다
- Master 노드가 죽을시 대응이 힘들며, 각 노드별 동기화 보장이 어렵다
- 부하 분산으로 Read 속도를 높일수있다
샤딩
- 데이터가 너무 많아서 검색 성능이 좋지않다 더 빠르게 안될까?
- 샤딩은 테이블을 나누어 저장하는 방법이다
- 서버의 수평적 확장이 가능하며 스캔 범위가 줄어 쿼리 반응속도가 빨라 진다 (테이블이 나뉘어져있기 때문)
- 한번 나누게되면 원본으로 백업이 힘들며 구성을 잘못하게되면 쿼리 속도가 오히려 늦어진다
- Shard Key에 따라 샤딩 방법이 달라진다
- 해시 샤딩
- 테이블에 ID를 가지고 해싱이후 나누어서 저장
- 고정적인 ID 계산법을 가지고 있어 공간 활용이 떨어지고 이 부분을 수정하지 못한다
- 다이나믹 샤딩
- Locator Service를 통해서 나누어져있는 샤드를 이용가능하다
- Locator Service에는 범위가 지정되어 해당 샤드에 접근하여 이용하기에 의존적이며 수정시 데이터 재배치와 Locator Service또한 바꿔야한다
- 엔티티 샤딩
- 관계 되어 있는 테이블끼리 하나의 샤드에 저장하여 관리
- 관계 되어있지 않은 다른 샤드와 연관이 있는 쿼리 실행시 오히려 효율이 떨어짐
'BlockChain' 카테고리의 다른 글
세그윗(SegWit)이란? (0) | 2022.07.07 |
---|---|
분산 원장과 블록체인 (0) | 2022.07.06 |
온체인 거버넌스와 오프체인 거버넌스란 (0) | 2022.06.29 |
블록체인의 합의 알고리즘 (0) | 2022.06.29 |
블록체인 구조로 알아보는 비트코인과 이더리움의 차이 (0) | 2022.06.28 |