11. ORM Part 1: Overview

Database 처리는 게임 서비스의 성능에 크게 영향을 미치는 부분 중 하나입니다. 그 때문에 DB 의 트랜잭션에 의존한 구현은 DB 에 과부하를 주어 서비스 단계에서 심각한 문제를 초래합니다. 이를 피하기 위해서는 caching, I/O multiplexing, 다중 서버간 데이터 동기화, 자체 트랜잭션 등 복잡한 구현들이 필요합니다. 이런 기능들을 직접 구현하는 것은 숙련된 서버 프로그래머들 에게도 어려운 작업이며, 안정성을 확보하는데도 많은 시간이 필요합니다. 그러나 아이펀 엔진의 Object Relational Mapping (ORM)을 이용하면 복잡한 구현 없이도 효율적으로 DB 처리를 할 수 있습니다.

ORM은 게임 내 사용될 오브젝트들을 JSON 형식으로 정의하면 , 이에 대응하는 C++/C# 클래스를 자동생성 해줍니다. 이렇게 생성된 인터페이스 클래스의 method 호출만으로 DB 에 스키마를 생성하거나 객체의 생성, 읽기, 갱신하기, 삭제하기, 캐싱하기 등의 작업을 편리하고 효율적으로 처리할 수 있습니다. 특히, sharding 처럼 여러 DB 서버를 다뤄야되는 상황에서, 서로 다른 DB 를 동시에 접근하기 위한 논리적인 트랜잭션 역시 기본으로 제공됩니다.