2013년 4월 24일 수요일

NDC 2013 - MONGODB 특징 및 NOSQL TIP

- Mongo DB 레코드 구조

   - 헤더 16byte + Json을 Byte 로 바꾼 형태를 데이터로 저장

- Mongo DB 메모리 할당 구조

   - index와 data  모두 메모리에서 움직이는 구조

- 동작 구조

   - 조회는 동시에 가능

   - 데이터 변경 및 삭제는 데이터베이스 잠금 후 가능

   - 데이터 추가시 메모리에서 인덱스 재정렬

   - 데이터 삭제시 메모리에서 인덱스 재정렬

- MongoDB 의 잠금
   - 초단위 처리가 평균 10000 건 정도
   - MongoDB 가  Lock이 80%가 올라갈 경우 처리를 못함.
   - R/W 비율로 봤을 때 , 7:3 일 경우 처리가 지연됨
   - 잠금이 풀린 이후 읽기 대기 가 해소 , Page Fault 발생 , 메모리에 있는 Data 를
      처리해야 하는 문제로 발생함.


MongoDB 사용시 고려사항

1. 분할이 균등하지 않다면 스케일 산정 불가

    -> 데이터를 분할 하여 처리를 위한 샤드키가 중요

2. 읽기 / 쓰기 비율을 고려

   -> 게임 DB 의 경우 쓰기 비중이 최소 30% 이상

3. 서비스 분석을 위한 처리가 필요
   -> RDBMS 로 데이터를 마이그레이션..... 통계는 어쩔수 없이 RDB 로 가야겠네

OS 버전별로 처리 성능 비교

1. 우분투

2. CENS OS

3. ..ETC

리눅스에서는 속도가 빠르다. 단 , CENS OS가 사용하는 버퍼 크기가 더 크다.

또한 , 우분투와 CENT OS는 거의 처리속도는 비슷하다.

기타..

1. CPU 의 Numa  설정은 꺼두는게 좋음

2. 증설 시 각 노드에 연결되는 커넥션 개수를 고려 해야 함.

3. 전체 노드에 대한 모니터링은 필수 !!!!

결론, 데이터 구조 설계가 더 중요함.

- NOSQL 모델링 기법

  1. 비 정규형의 문서

  2. 응용프로그램 고유의 접근 형태의 데이터 모델 이 결정

  3. What do Question

  4. Application Side Join이 용이 M:N 관계 데이터 조인

  5. 단일 key나 문서로 최소 단위로 통합하여 처리 , 최대한 간략한 구조로 만들기를 추천

  6. 하나의 키 값 모델이 다차원 데이터를 매핑

  7. 데이터를 저장 할 시 , 필요한 데이터는 그룹화 하여 모두 저장.

  8. RDB 와 마찬가지로 구역을 나눠서 저장할 것



댓글 없음:

댓글 쓰기