1. 클러스터링(Clustering)
2. 레플리케이션(Replication)
3. 샤딩(Sharding)
클러스터링 : 여러대의 서버를 한 개의 서버처럼 업무를 수행하도록 하는 것을 의미함
탄생 배경 : 왜 필요할까? 여러 서버 중 하나의 서버에서 오류가 날 경우를 대비해서 사용한다. 그렇다면 어떤 에러등이 있을까?
1. DATABASE 서버 장애 주로 SW적 장애로 볼 수 있다. (버그 등)2. 서버 하드웨어 장애(CPU, MEM, DISK에서 장애가 나서 서버가 장애가 난 경우) HW적 장애로 볼 수 있다.3. 정전, 화재 등 천재지변에 의한 장애이다.
클러스터링의 장단점
장점 : 데이터베이스 서버 하나가 죽어도 다른 서버가 대신할 수 있음단점 : 데이터베이스는 1개이기에 병목이 생길 수 있음, 그리고 서버를 여러대를 운용하기 떄문에 비용문제가 있다.
레플리케이션 : 위키에 따르면 레플리케이션은 데이터 저장과 백업과 관련 있는 데이터를 호스트 컴퓨터에서 다른 컴퓨터로 복사하는 것을 뜻한다고 한다. 즉 기존 DB 하나에서 다른 DB로 혹시 모를 상황에 대비해서 복제하는 것을 말한다.
MySQL같은 RDBMS(링크참조)에서 많이 사용하는 기능이고 사용하기 위한 최소 구성은 2대이고 주로 사용하는 서버를 Master, 보조하는 서버를 Slave라고 부른다.
단순 백업 방식
Master : Select, Insert, Update, Delete를 Master로 웹서버가 쿼리를 날림
Slave: Master에서 데이터만 동기화로 전달받음 (Master가 다운되면 그 때는 Slave를 Master로 만들기도 함)
부하 분산 방식Master : 웹서버로부터 등록/수정/삭제 요청시 바이너리 로그를 생성해서 Slave로 전송(Insert, Update, Delete)Slave : Master 서버로 부터 전달받은 바이너리 로그를 데이터로 반영, 데이터를 불러오는 DBMS로 많이 사용 주로 Select 용도
탄생 배경 : 저장된 데이터가 없어질 경우?? 혹시 모르니 복제를 하자.
레플리케이션의 장단점장점 : 데이터베이스 Read(Select)성능을 높임 단점 : 각 노드간의 데이터 동기화 보장이 어려움, Master노드가 다운되면 복구및 대처가 어려움, 그리고 1대만 데이터베이스를 유지할 때 보다 비용이 많이 나간다.
샤딩 : 사금파리(Shard, 사기그릇의 깨어진 작은 조각)라는 어원에서 비롯된 말로 데이터를 여러 조각으로 나눠서 저장하는 기술을 말한다. 한 곳에 있던 데이터를 여러 샤드에 중복저장 또는 하나에 저장가능하다. 블록체인에서는 샤딩기술을 통해 노드가 많아질 수록 처리 가능한 거래량이 증가한다. 그래서 노드수가 증가하면 확장성, 탈중앙화, 보안성을 확보할 수 있어서 샤딩의 장점으로 꼽힌다. 특히 샤딩은 낮은 처리 속도를 해결하기위해 개발됨 특히 이더리움2.0에서 샤딩을 도입한다고 한다.(링크)
탄생 배경 : 데이터가 너무 많아서 검색 성능이 좋지않다. 이를 빠르게 할 방법은? 테이블을 나누어서 저장하자.
테이블을 로우 단위로 나누어서 각각의 샤드로 저장
장점 : 서버의 수평적 확장이 가능하고 스캔범위를 줄여주기 때문에 쿼리 반응 속도가 빨라짐단점: 데이터를 적절히 분리하지 못하면 샤딩 전보다 더 비효율적일 수도 있음, 한번 분할하면 이전으로 다시 합치기 어려움
샤딩의 종류
1. 해시샤딩 장점: 구현이 간단함 (해시함수를 사용해 Shard Key를 나누는 방식)단점 : 샤드가 늘면 해시함수가 달라져야 해서 확장성이 떨어지고, 각 샤드별 공간효율이 고려되지 않음
2. 다이나믹 샤딩
장점: 샤드가 하나 더 추가되면 Locator service에 Shard key를 추가하는 방식으로 확장성 유연함
단점: 데이터를 재배치시 Locator service 역시 동기화 요구됨, Locator service에 의존적이라서 해당 테이블에 문제가 생기면 데이터 베이스에도 문제가 전이됨
3. 엔티티 그룹 샤딩
장점 : 단일 샤드내에서 쿼리가 효율적이고 강한 응집도를 가짐
단점 : 다른 샤드의 엔티티와 연관이 되는 쿼리일 때 효율이 떨어짐
clus-ter
명사
1. 무리 (함께 자라나거나 나타나는 무리)
2. 무리를 이루다. (사람이나 동물 등 오밀조밀하게 모여있는 무리)
3. 자음군 (string에서의 str처럼 연이어 나타나는 자음들)
동사
자동사( V + adv / prep)
무리를 이루다, (소듀모로) 모이다.
병목 : 병병자에 목자이다. 즉 병의 아가리 아래쪽의 잘록한 부분이다. 잘록하고 좁아서 어떤 흐름이 원활하게 흐르지 못하고 지연되는 현상을 병목현상이라고 부르기도 한다.병병 : 단지(목이 짧고 배가 부른 작은 항아리) 목 : 척추동물의 머리와 몸통을 잇는 잘록한 부분.
암호화폐와 블록체인 트릴레마 (0) | 2023.01.19 |
---|---|
분산원장 기술 (0) | 2023.01.19 |
블록체인의 확장성을 개선하기 위한 솔루션 - Layer 1 Solution (0) | 2023.01.19 |
블록체인 트릴레마 (0) | 2023.01.19 |
분산 데이터베이스(Distributed Database)의 정의와 관점 (0) | 2023.01.13 |