본문 바로가기
데이터베이스 기초

DevOps Day 17 (3.29) 데이터베이스_문제 상황에 따른 해결책

by Jackykim 2023. 3. 31.

문제 상황에 따른 해결책
낮은 검색 성능 인덱싱
첫번째는 데이터를 저장하는 것이고, 두번째는 요청에 왔을 저장되어있는 데이터 중에 요청에 맞는 데이터를 찾아서 제공하는 것입니다. 데이터베이스 기능의 두번째 경우에서, 낮은 검색 성능이 나타날 , 효율적인 방법으로 특정 키의 값을 확인하고 제공하기 위해서 인덱스(색인) 이용합니다.

 

데이터 검색에 도움을 주기 위한 메타데이터
인덱스는 데이터베이스에 저장된 기본데이터(primary data)에서 파생된 부가적인 메타데이터(meta-data : 데이터에 관한 구조화된 데이터)입니다.

 

데이터에 영향을 주지 않는 인덱스
인덱스 추가 삭제가 가능하며 인덱스 편집사항은 데이터베이스의 내용에는 영향을 주지 않습니다. 단지 질의 (Query) 성능에만 영향을 줍니다.

 

많은 사용자 레플리카
많은 사용자가 하나의 데이터베이스에 접근하는 경우에 성능 저하가 발생할 있습니다. 이러한 경우에 데이터베이스의 복사본을 저장하는 각각의 노드인 레플리카(replica : 복제서버) 활용하여 문제를 해결할 있습니다.

 

레플리카 활용의 장점
레플리카를 활용한 데이터베이스 구조를 구현할 경우 일부 노드가 사용불가능 상태라면 해당 데이터는 남은 다른 노드를 통해 여전히 제공할 있다는 장점이 있습니다. 리더가 되는 데이터베이스가 문제가 있는 경우 레플리카 하나를 리더로 지정하여 서비스 중단되는 시간을 최소화 있습니다.

읽기 쿼리 제공 장비 수를 확장해 읽기 처리량울 늘림
기반 애플리케이션의 경우 쓰기 요청보다 읽기 요청의 비율이 높아, 사용자가 많을 수로 성능에 문제가 있어 레플리카를 사용해 읽기전용 데이터베이스로 활용할 있음

지연시간 감소
데이터를 저장하고 요청에 따라 제공해야 하는 데이터베이스가 데이터를 요청하는 곳과 지리적으로 경우 응답시간이 늦어질 있습니다. 이러한 지연시간을 감소시키기 위해서 레플리카의 위치를 지역에 분산시켜 배치할 있습니다.

 

레플리카 활용 고려해야할 사항
레플리카를 활용한 데이터베이스 구조를 유지할 가장 중요한 것은, 모든 데이터베이스가 정확히 같은 데이터를 가지고 있게 하는 입니다.

 

동기식 복제 (Synchronous)
동기식으로 복제가 진행되는 레플리카 구조에서는 리더의 데이터 처리와 별개로 레플리카에서의 데이터 처리까지 모두 완료되어야만 프로세스가 진행됩니다. 네트워크 문제로 업데이트가 불가능 경우 회복되기를 기다리기 때문에 시스템 다운타임 위험이 있습니다.

비동기식 복제 ((Asynchronous)
반면 비동기식 복제는 동기식 복제와 다르게 리더가 레플리카의 처리 응답을 기다리지 않습니다. 리더는 레플리카에 데이터 처리를 요청한 자신의 작업을 완료하면 사용자의 요청에 바로 응답합니다. 경우에는 연결된 모든 레플리카가 어떠한 이유로, 처리를 지속할 없더라도 리더는 쓰기 처리를 계속할 있다는 장점이 있습니다. 하지만 레플리카가 읽기 전용으로 이용되고 있을 경우, 사용자에게 리더와 같은 응답을 주지 못하는 경우가 발생할 있습니다.

반동기식 복제 (semi-synchronous)
두 복제 방식의 장단점을 보완하기 위해서, 하나의 레플리카는 동기식 복제를 사용하고, 다른 레플리카들은 비동기식으로 사용하는 반동기식 복제도 활용됩니다.