티스토리 뷰

책/게임서버 프로그래머 책

NoSql + 데이터베이스 분산처리

거북이의 기술블로그 2024. 6. 13. 16:41
RDBMS 와 NoSQL

 

 

ACID 와 BASE

  • ACID
    • 원자성 : 트랜잭션이 수행되는 동안에, 부분적으로 실행하다가 중단되는 것을 보장함 
    • 정합성 : 트랜잭션이 수행된 전과 후가 보장됨
    • 독립성 : 트랜잭션이 수행되는 동안 다른 처리 사항이 들어오지 못하도록 보장함
    • 지속성 : 트랜잭션이 수행된 후에 영원히 반영됨
  • BASE
    • 가용성 중시 ( 일시적으로 비 일관적 상태가 존재하지만, 복제를 통해 일관성을 맞춤 )
    • 성능 중시 ( 수평확장이 비교적 쉬움 )

 

NoSql

  • Tree 구조를 가짐
  • 데이터 가용성 (복제본 존재)
  • 컬렉션끼리 다른 데이터 구조를 가질 수 있음
  • 게임서버의 경우, 로그 DB로 많이 사용됨
  • 게임서버에서 NoSql에 데이터 저장시, BSON을 이용해서 insert 진행
  • [추가 자료]
    • Upsert() 함수 : update + insert 구조, 값이 없으면 insert 진행, 있으면 update 진행
    • MMAP / WiredTiger 같은 내부 엔진 존재 (Mongo DB)
    • 인덱스 비용이 RDBMS보다 비싸다
    • *샤드키는 변경 불가능 (밑에서 설명)
    •  Couchbase / Cassandra / Riak/ MongoDB등 여러 NoSql 존재

 

NoSQL과 RDBMS 차이

RDBMS VS NoSql
DB 인스턴스 DB 틀 DB 인스턴스
Table DB 구조 Column
record DB 데이터 document
DB 저장 형식 JSON

 

 

 

데이터베이스 분산처리 ( 샤딩 )

  • 샤딩 / 샤드 : 데이터베이스를 조각 내어 저장 (수평확장)
  • 샤드 key : 데이터베이스를 조각내었으므로, 서로 다른 데이터베이스간의 구별을 위해 샤드key 가 ID로 생성됨 (Unique한 값)
  • 주의) 샤드 key의 경우 변경이 불가능함 ( 자동으로 생성되는데, 수동으로도 값 설정 가능 )

 

' > 게임서버 프로그래머 책' 카테고리의 다른 글

서버 분산처리 방법  (0) 2024.06.14
Many Client Connection (feat, thread / socket / select)  (1) 2024.06.02
Socket과 select  (1) 2024.06.02
Socket 동기 처리  (1) 2024.06.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함