안녕하세요.
늘 정성스런 답변 감사드립니다.
CUBRID의 복재 기능에 대해서 한가지 더 질문드릴 점이 있어서 문의 드립니다.
예를 들어 시스템을 구성하여
(1) CUBRID A - MASTER
(2) CUBRID B - SLAVE
와 구성했다고 가정하였을 때, 효율적인 쿼리 분산에 대해 질문 드립니다.
(1) 의 경우 INSERT, UPDATE, (+ SELECT)를 사용하고
(2) 의 경우 SELECT
를 사용한다고 가정합니다.
고객 데이터의 경우 번호가 키로 쓰인다고 가정하겠습니다.
즉 (앞번호가 0-5, 6-10 으로 2집단이 있다고 가정합니다. 쿼리는 단순 SELECT 쿼리입니다)
질문은 다음과 같습니다.
-- 첫번쨰 질문
이 경우 DB의 캐쉬에 대한 성능이 크게 좌우할 수 있으므로,
각 Transaction시 SELECT연산에 대하여 RR(Round-Robin) 로 (1), (2)을 돌아가면서 SELECT 쿼리할경우 Cache-Hit ratio가 떨어질 수 있으므로,
0-5 인 사용자는 큐브리드 (1) 에서 쿼리,6-10인 사용자는 큐브리드 (2)에서 쿼리와 같이 Routing Rule을 정하여 쿼리해야 하는 방식이 필요하다고 판단하고 있습니다. 즉 이와 같은 방식으로 구현하여야 cache-hit ratio에 의한 성능향상을 기대할 수 있을것 같습니다.
이러한 고민에 대해서 확인 부탁드립니다. ^^
(RR 과 같이 구성할 경우와 Cubrid (1), (2), (3) 에 대해서 Rule-Base로 분산하여 Select 연산의 성능 차이가 나는지요? 난다면 크게 나는지요?)
- 두번째 질문
큐브리드 (1) 에는 WRITE 연산만 (Insert, Update) 연산만 사용하고,
(2)에는 Select 연산만 사용할 경우 이러한 구성이 권장할만한 (?) 구성일지 궁금합니다.
생각에는 (1)에서 Write에 의한 연산이 발생한다면 (2)에도 DB Write에 의한 부하가 많이 발생할 것 같아 조금 우려스럽습니다.
이러한 경우 복제에 의한 일반적인 구성은 어떤 구성이 일반적인지 알 수 있을런지요.
쿼리의 빈도수는 예상하건데 (SELECT 5, INSERT 3, DELETE 3) 정도로 발생할 것으로 예상합니다.
감사드립니다.
좋은 주말 보내세요
늘 정성스런 답변 감사드립니다.
CUBRID의 복재 기능에 대해서 한가지 더 질문드릴 점이 있어서 문의 드립니다.
예를 들어 시스템을 구성하여
(1) CUBRID A - MASTER
(2) CUBRID B - SLAVE
와 구성했다고 가정하였을 때, 효율적인 쿼리 분산에 대해 질문 드립니다.
(1) 의 경우 INSERT, UPDATE, (+ SELECT)를 사용하고
(2) 의 경우 SELECT
를 사용한다고 가정합니다.
고객 데이터의 경우 번호가 키로 쓰인다고 가정하겠습니다.
즉 (앞번호가 0-5, 6-10 으로 2집단이 있다고 가정합니다. 쿼리는 단순 SELECT 쿼리입니다)
질문은 다음과 같습니다.
-- 첫번쨰 질문
이 경우 DB의 캐쉬에 대한 성능이 크게 좌우할 수 있으므로,
각 Transaction시 SELECT연산에 대하여 RR(Round-Robin) 로 (1), (2)을 돌아가면서 SELECT 쿼리할경우 Cache-Hit ratio가 떨어질 수 있으므로,
0-5 인 사용자는 큐브리드 (1) 에서 쿼리,6-10인 사용자는 큐브리드 (2)에서 쿼리와 같이 Routing Rule을 정하여 쿼리해야 하는 방식이 필요하다고 판단하고 있습니다. 즉 이와 같은 방식으로 구현하여야 cache-hit ratio에 의한 성능향상을 기대할 수 있을것 같습니다.
이러한 고민에 대해서 확인 부탁드립니다. ^^
(RR 과 같이 구성할 경우와 Cubrid (1), (2), (3) 에 대해서 Rule-Base로 분산하여 Select 연산의 성능 차이가 나는지요? 난다면 크게 나는지요?)
- 두번째 질문
큐브리드 (1) 에는 WRITE 연산만 (Insert, Update) 연산만 사용하고,
(2)에는 Select 연산만 사용할 경우 이러한 구성이 권장할만한 (?) 구성일지 궁금합니다.
생각에는 (1)에서 Write에 의한 연산이 발생한다면 (2)에도 DB Write에 의한 부하가 많이 발생할 것 같아 조금 우려스럽습니다.
이러한 경우 복제에 의한 일반적인 구성은 어떤 구성이 일반적인지 알 수 있을런지요.
쿼리의 빈도수는 예상하건데 (SELECT 5, INSERT 3, DELETE 3) 정도로 발생할 것으로 예상합니다.
감사드립니다.
좋은 주말 보내세요
첫번째 질문 사항,
큐브리드 복제는 하나의 데이터베이스 서버로 응용의 성능 요구 사항을 만족하기 힘들 때, 특히, 읽기 연산을 여러 데이터베이스 서버에 분산시킴으로써 전체 시스템의 성능을 향상시키는 데 활용할 수 있습니다. 큐브리드 복제의 경우, 마스터는 읽기/쓰기 연산을 모두 허용하나, 슬레이브는 읽기 연산만 허용하기 때문에, 큐브리드 복제를 이용한 성능 향상 효과는 쓰기 연산은 제한적이고 읽기 연산이 많은 응용에서 탁월하다고 할 수 있고, 성능 문제는 읽기 연산이 많을 수록 효과를 볼 수 있지 않을까 생각 됩니다.
두번째 질문 사항.
큐브리드의 복제는 단방향 복제만을 지원합니다, 즉, 마스터 데이터베이스의 경우에는 읽기/쓰기 연산이 모두 가능하나 슬레이브 데이터베이스에는 읽기 연산만을 허용 합니다.. 단방향 복제 방식을 이용한 1:N 구성이 가능하기 때문에 여러개의 슬레이브 DB를 사용할 수 있습니다. 만약 insert, delete가 많을 경우는 복제의 효과를 크게 볼 수 없겠지만, 조회하는 select 질의가 많은 곳에 적용하신면 1개의 데이터베이스를 운용하는 것보다 좋은 성능을 볼 수 있을 것입니다.