8.1 관계형 데이터베이스와 NoSQL
관계형 데이터베이스(Relational DataBase Management System, RDBMS)는 오랜 역사를 지니고 있습니다. 하지만 관계형 데이터베이스는 특정 상황에서 몇 가지 부족한 점이 있습니다.
한 예로, 한 테이블에 저장된 레코드들은 모두 같은 형태의 필드를 가져야 합니다. 로그1 데이터를 한 테이블에 기록할 때는 이 점이 불편할 수 있습니다. 플레이어가 아이템을 구매한 로그를 담는 테이블을 다음과 같이 정의했다고 가정하겠습니다.
• 획득한 시간
• 플레이어 ID
• 획득한 아이템 종류
이러한 형태로 여러분 테이블에는 레코드가 약 1억 개 쌓였습니다. 그런데 게임을 유지 보수하다 보니 여기에 다음 필드를 추가해야 하는 상황이 되었습니다.
• 구매 개수
구매 개수라는 필드를 추가하면 기존에 쌓여 있던 레코드 1억 개에도 ‘구매 개수’라는 필드를 반드시 추가해야 합니다. 한 테이블의 모든 레코드는 필드 구성이 모두 같아야 하기 때문이죠.
다행히 앞서 배운 사실이 기억납니다. 필드는 null 값을 가질 수 있다는 것입니다. 기존 레코드에는 새로 추가된 필드 값이 모두 null이 되게 함으로써 문제를 간단하게 해결할 수 있습니다.
1 로그(log)란 계속해서 쌓는 누적 형태의 데이터를 의미합니다. 예를 들어 플레이어가 아이템을 구매한 기록을 모두 남기는 것입니다.