320x100

NDC/DB 7

[NDC 2015] 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현

비관적 동기화 (락 기반 동기화) 내용 __ 작업하는 동안 다른 동작을 못하게 한다. 단점 __ 모든 DB 변경에서 락을 잡아야 한다 __ 락을 잡을 수 없는 상황(서버 다운)이 있다 낙관적 동기화 (트랜잭셔널 메모리) 내용 __ 일단 진행하고, 문제가 생기면 롤백한다 애플리케이션 레벨에서 롤백을 구현해야 하므로 문제 영역을 나눠보자 __ 퍼스트 로컬 트랜잭션 ____ 실패할 가능성이 있는 것 ____ 안전하게 롤백할 수 있어야 함 ____ ex) 아이템 제거, 골드 감소 __ 세컨드 로컬 트랜잭션 ____ 실패할 가능성이 없는 것 ____ 안전하게 롤백할 수 없어도 된다 ____ ex) 아이템 추가, 골드 증가 절차 1. 모든 참여자(DB)들에게 퍼스트 LT를 실행 2. 모든 퍼스트 LT가 성공하고 나..

NDC/DB 2023.01.09

[NDC 2015] 이 쿼리를 어떻게 짜야 잘 짰다고 소문이 날까?

반복 액세스 피하기 일일 구매로그 데이터 중 아래 통계를 구하자 1. 캐쉬 구매에 성공한 유저 수 2. 인게임 머니로 구매에 성공한 유저 수 3. 쿠폰을 이용하여 구매에 성공한 유저 수 변경 전 SELECT @CASH_COUNT = COUNT(*) FROM 구매로그 WHERE BUY_CODE = @캐쉬구매 AND LOG_DATE >= @어제새벽 AND LOG_DATE = @어제새벽 AND LOG_DATE < @오늘새벽; SELECT @INGAME_COUNT = COUNT(*) FROM 구매로그 WHERE BUY_CODE = @인게임구매 AND LOG..

NDC/DB 2023.01.06

[NDC 2014] 데이터베이스에서 데드락이란 무엇인가? (사례 포함)

교착 상태란? 서로 다른 둘 이상의 프로세서들이 상대 프로세서가 차지하고 있는 자원을 기다리는 무한 대기 상태 예1) 선착순 이벤트 원인: 변경 쿼리의 조건 구문 차이로 인해 페이지 접근 순서가 문제 단계: Session1 Session2 1단계 BEGIN TRAN UPDATE 이벤트 SET 수량 = 수량 - 1 WHERE 이벤트번호 = 1 2단계 BEGIN TRAN UPDATE 이벤트 SET 사용수량 = 사용수량 + 1 WHERE 계약번호 = 1 3단계 교착상태 개선: 접근 방향을 맞추기 위해 데이터 변경시 조건절을 동일한 기준으로 사용 지급과 사용에 대한 테이블 분리 예2) 조회 구문 변경 원인: 조회 구문에 컬럼을 추가하면서 데이터 페이지 접근이 필요하게 됨 Session1 Session2 1단계 ..

NDC/DB 2022.12.25

[NDC 2014] 라이브 상황에서 윈도우 서버 개발자가 겪은 좌충우돌 Redis 적용 경험담

Redis 사용 이유 - Real time ranking 어떤 것들을 했나? Redis 설치 hiredis lib 적용 Cron(a.k.a scheduler) + Lua(redis client, sp in redis)로 job 구성 Windows 공유폴더 ubuntu 자료형 String: 기본형 set 'key' 'value' get 'key' List: Deque index 접근 가능 Lpush 'key' 'value' Lpop 'key' Lindex 'key' Set: 집합 연산 사용 가능 랜덤 추출 가능 sadd 'key' 'value' spop 'key' Hash: Map Image등의 큰 데이터를 저장하는데 용이(Zipmap 사용) hset 'key' 'field' 'value' hget 'ke..

NDC/DB 2021.12.25

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

분산 컴퓨팅 환경에서의 CAP 및 BASE 이론 Consistency: 분산 시스템을 이루는 다수의 노드로부터 동일한 응답을 얻을 수 있어야 한다. (필수) Availability: 분산 시스템을 이루는 특정 노드에 장애가 발생하더라도 분산 시스템이 동작해야한다. (필수 가능성) Partition Tolerance: 장애로 인해 노드 사이의 통신이 불가능해도 분산 시스템은 동작해야 한다. (선택) + CAP을 모두 만족하는 모델은 없으며, 이 중에서 보통 2가지를 선택해 우선 순위를 둔다. Basically Available: 분산 시스템은 언제나 요청에 응답할 수 있어야 한다. Soft State: 분산 시스템의 상태는 외부의 요청이 없더라도 언제든 바뀔 수 있다. Eventually Consisten..

NDC/DB 2021.12.01

[NDC2013] 너무너무 훌륭한 MySQL

비상용 RDBMS의 선두 주자 무료 작고 가벼움 간편한 유지 관리 손 쉬운 Scale out 쿼리 작성의 제한 MultiThread 관리의 허접함 한 개 세션에서 다량의 DML 발생시 전체적으로 IO 비용 증가에 따른 성능 저하 발생 Oracle MYSQL 통합 관제 TOOL Oracle Enterprise Manager 제공(고비용) 없음 능동적 Clustering 데이터 이중화 솔루션 RAC 기능 제공 진정한 Cluster 일반 DBMS 벤더와 비슷한 형태의 Cluster 제공 SQL Hint 많음 인덱스 사용과 관련된 Hint만 존재 Analytic Function 제공 8.1.6 버전부터 추가 없음 고성능 트랜잭션 최고 MyISAM 스토리지 엔진 Table lock InnoDB 스토리지 엔진 Ro..

NDC/DB 2021.11.12
320x100