NDC/DB

[NDC 2013] 게임속에서의 NoSQL 활용하기

MAKGA 2021. 12. 1. 23:01
320x100

분산 컴퓨팅 환경에서의 CAP 및 BASE 이론

Consistency: 분산 시스템을 이루는 다수의 노드로부터 동일한 응답을 얻을 수 있어야 한다. (필수)

Availability: 분산 시스템을 이루는 특정 노드에 장애가 발생하더라도 분산 시스템이 동작해야한다. (필수 가능성)

Partition Tolerance: 장애로 인해 노드 사이의 통신이 불가능해도 분산 시스템은 동작해야 한다. (선택)

+ CAP을 모두 만족하는 모델은 없으며, 이 중에서 보통 2가지를 선택해 우선 순위를 둔다.

 

Basically Available: 분산 시스템은 언제나 요청에 응답할 수 있어야 한다.

Soft State: 분산 시스템의 상태는 외부의 요청이 없더라도 언제든 바뀔 수 있다.

Eventually Consistent: 일관성이 일시적으로는 깨질 수 있지만 최종적으로는 일관성을 유지한다.

 

분산 환경에서 새로운 ACID 모델

이전

Atomicity(원자성): 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않음

Consistency(일관성): 트랜잭션이 성공하면 언제나 일관된 데이터베이스 상태를 유지함

Isolation(독립성): 트랜잭션 수행시 다른 트랜잭션의 연산이 끼어들지 않음

Durability(영속성): 성공적으로 수행된 트랜잭션 내용은 다음 트랜잭션이 수행되기 전까지 보장됨

 

현재

Assiciative(결합)

Commutative(교환)

Idempotent(멱등성)

Distributed(분산)


MongoDB 특징

 

레코드 구조

Size: 헤더를 포함(4byte)

Extent Offset: 레코드가 속한 offset(4byte)

Next Offset: 다음 레코드(4byte)

Prev Offset: 이전 레코드(4byte)

Bson Object: 데이터를 저장함

 

조회는 동시에 가능

데이터 변경은 DB lock을 획득 후 가능

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


게임 서비스시 고려 해야 하는 사항들

분할이 균등하지 않다면 스케일 산정 불가 => 데이터를 분할해 처리하기 위한 샤드키가 중요

읽기/쓰기 비율을 고려 => 게임 DB의 경우 쓰기 비중이 최소 30% 이상

서비스 분석을 위한 처리가 필요 => RDBMS로 데이터 마이그레이션

 

CPU의 Numa 설정은 꺼두는게 좋음 => Non-Uniformed Memory Access로 각 프로세서에 달려있는 전용 메모리를 사용하는 방식

증설시 각 노드에 연결되는 connection 개수를 고려해야함


성능 이슈는 물리적인 리소스보다 데이터 구조 설계가 더 중요함

 

데이터 모델 비교

관계형 데이터 베이스 NoSQL 데이터 모델
데이터 정규화를 통한 독립적인 엔티티 비 정규형의 문서
데이터 중복 제거 및 무결성 보장 응용프로그램 고유의 접근형태의 데이터 모델이 결정
What answer do i have? What questions do i have?
데이터 형태에 대한 대답 어플리케이션의 질문에 적합한 설계

 

데이터 모델 최적화

호출되는 형태에 맞춰 최적화 => 비표준화 / 집합체

 

어플리케이션 레벨에서 M:N 관계 데이터

 

Atomic Aggregates(원자적 집합체) => 단일 key나 문서로 최소 단위로 통합하여 처리

Dimensionality Redection(차원 감소) => 하나의 키 값 모델이 다차원 데이터를 매핑

 

Inverted Search(역검색) - Direct Aggregation (직접 집계)

Tree Aggregation => 트리를 한 번에 조회시 효율적이지만 업데이트 비용이 클 수 있다.

 

Materialized Paths(실체화된 경로) => 그룹의 실체화된 데이터를 포함하여 저장

 

Nested Sets(중첩된 집합) => 중첩 집합 범위로 나누어 사용


출처: 넥슨코리아

http://ndcreplay.nexon.com/NDC2013/sessions/NDC2013_0034.html

 

NDC Replay

안녕하세요. 게임 속에서의 mongo DB 활용 팁이라고 거창한 주제를 잡았는데요. 오늘 발표할 주제는요 아마도 개론 적인 얘기가 대부분이 될 것 같아요. 그래서 실제 도움이 될 수 있는 이야기들

ndcreplay.nexon.com

 

그 외에 추가 참고하면 좋을?

https://velog.io/@devstone/MongoDB-%EC%B5%9C%EC%A0%81%ED%99%94

 

MongoDB 최적화

MongoDB 최적화에 대해 CTO님께서 해주신 강연을 듣고 정리해보았습니다

velog.io


320x100