- 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 와 마찬가지로 구역을 나눠서 저장할 것
댓글 없음:
댓글 쓰기