ORM Part 1: Overview¶
데이터베이스를 다루는 일은 게임 성능에 가장 큰 영향을 미치는 요소로써 숙련된 기술이 필요합니다. 단순히 트랜잭션 단위로 데이터를 관리한다면 데이터베이스에 과부하가 걸리기 쉽기 때문에 장애가 발생할 가능성도 높아지기 때문입니다.
데이터베이스의 병목 현상을 최소화하고 성능을 높이기 위해서는 캐시, I/O 다중화(multiplexing), 데이터 동기화나 트랜잭션 등 복잡한 기술들이 필요합니다. 하지만 이러한 기술들을 직접 구현하는 일은 숙련된 개발자에게도 어려운 작업이며 안정성을 확보하는데도 오랜 시간이 필요합니다.
아이펀 엔진의 ORM(Object Relational Mapping)은 이러한 문제를 해결하기 위해 제공하는 기능 중 하나입니다. 내부적으로 데이터베이스 성능을 최대한 활용할 수 있도록 설계되었으며 복잡한 구현 없이 간단하게 사용할 수 있습니다.
개발자는 게임 내에서 사용할 오브젝트를 JSON 형식으로 정의 하면 아이펀 엔진이 이에 대응되는 C++/C# 클래스를 자동 으로 생성해 줍니다. 이후에는 단순히 생성된 클래스와 메서드를 사용하는 것만으로 데이터베이스에 있는 값을 읽거나 쓸 수 있습니다.
ORM은 그 외에도 기본적으로 오브젝트들을 캐시로 저장하여 성능을 극대화하며 샤딩과 같이 여러 데이터베이스 서버에 데이터를 나눠 저장해야 하는 상황에서 사용할 수 있는 기능을 제공합니다.