문제 상황에 따른 해결책
낮은 검색 성능 – 인덱싱
첫번째는 데이터를 저장하는 것이고, 두번째는 요청에 왔을 때 저장되어있는 데이터 중에 요청에 맞는 데이터를 찾아서 제공하는 것입니다. 데이터베이스 기능의 두번째 경우에서, 낮은 검색 성능이 나타날 때, 좀 더 효율적인 방법으로 특정 키의 값을 확인하고 제공하기 위해서 인덱스(색인)를 이용합니다.
데이터 검색에 도움을 주기 위한 메타데이터
인덱스는 데이터베이스에 저장된 기본데이터(primary data)에서 파생된 부가적인 메타데이터(meta-data : 데이터에 관한 구조화된 데이터)입니다.
데이터에 영향을 주지 않는 인덱스
인덱스 추가 및 삭제가 가능하며 인덱스 편집사항은 데이터베이스의 내용에는 영향을 주지 않습니다. 단지 질의 (Query) 성능에만 영향을 줍니다.
많은 사용자 – 레플리카
많은 사용자가 하나의 데이터베이스에 접근하는 경우에 성능 저하가 발생할 수 있습니다. 이러한 경우에 데이터베이스의 복사본을 저장하는 각각의 노드인 레플리카(replica : 복제서버)를 활용하여 문제를 해결할 수 있습니다.
레플리카 활용의 장점
레플리카를 활용한 데이터베이스 구조를 구현할 경우 일부 노드가 사용불가능 상태라면 해당 데이터는 남은 다른 노드를 통해 여전히 제공할 수 있다는 장점이 있습니다. 리더가 되는 데이터베이스가 문제가 있는 경우 레플리카 하나를 리더로 지정하여 서비스 중단되는 시간을 최소화 할 수 있습니다.
읽기 쿼리 제공 장비 수를 확장해 읽기 처리량울 늘림
웹 기반 애플리케이션의 경우 쓰기 요청보다 읽기 요청의 비율이 높아, 사용자가 많을 수로 성능에 문제가 될 수 있어 레플리카를 사용해 읽기전용 데이터베이스로 활용할 수 있음
지연시간 감소
데이터를 저장하고 요청에 따라 제공해야 하는 데이터베이스가 데이터를 요청하는 곳과 지리적으로 멀 경우 응답시간이 늦어질 수 있습니다. 이러한 지연시간을 감소시키기 위해서 레플리카의 위치를 각 지역에 분산시켜 배치할 수 있습니다.
레플리카 활용 시 고려해야할 사항
레플리카를 활용한 데이터베이스 구조를 유지할 때 가장 중요한 것은, 모든 데이터베이스가 정확히 같은 데이터를 가지고 있게 하는 것 입니다.
동기식 복제 (Synchronous)
동기식으로 복제가 진행되는 레플리카 구조에서는 리더의 데이터 처리와 별개로 레플리카에서의 데이터 처리까지 모두 완료되어야만 프로세스가 진행됩니다. 네트워크 문제로 업데이트가 불가능 할 경우 회복되기를 기다리기 때문에 시스템 다운타임 위험이 있습니다.
비동기식 복제 ((Asynchronous)
반면 비동기식 복제는 동기식 복제와 다르게 리더가 레플리카의 처리 응답을 기다리지 않습니다. 리더는 레플리카에 데이터 처리를 요청한 후 자신의 작업을 완료하면 사용자의 요청에 바로 응답합니다. 이 경우에는 연결된 모든 레플리카가 어떠한 이유로, 처리를 지속할 수 없더라도 리더는 쓰기 처리를 계속할 수 있다는 장점이 있습니다. 하지만 레플리카가 읽기 전용으로 이용되고 있을 경우, 사용자에게 리더와 같은 응답을 주지 못하는 경우가 발생할 수 있습니다.
반동기식 복제 (semi-synchronous)
두 복제 방식의 장단점을 보완하기 위해서, 하나의 레플리카는 동기식 복제를 사용하고, 다른 레플리카들은 비동기식으로 사용하는 반동기식 복제도 활용됩니다.
'데이터베이스 기초' 카테고리의 다른 글
DevOps Day 18 (3.30) 데이터베이스_데이터 파이프라인 (0) | 2023.03.31 |
---|---|
DevOps Day 17 (3.29) 데이터베이스_수평확장된 데이터베이스와 중복처리 (0) | 2023.03.31 |
DevOps Day 17 (3.29) 데이터베이스_배치 작업에 따른 성능 저하 (0) | 2023.03.31 |
DevOps Day 17 (3.29) 데이터베이스_데이터 파티셔닝 + 캐시 (0) | 2023.03.31 |
DevOps Day 17 (3.29) 데이터베이스_기초 (0) | 2023.03.31 |