데이터베이스/C# + 유니티로 만드는 MMORPG 게임 개발 (2) - 데이터베이스

SQL (28) - 데이터 베이스의 원리

monstro 2025. 3. 3. 20:50
728x90
반응형

이번 포스트에서는 Data Base가 동작하는 원리를 알아보고 관련된 추가 정보도 알아보도록 하겠습니다.

 

1) DataBase가 취해야 하는 궁극적인 목표

DB가 취해야 하는 궁극적인 목표를 정리하면 다음과 같습니다.

  • 스레드가 DB에 저장된 많은 데이터를 병렬로 처리할 수 있어야 함
  • 클라이언트의 요청으로부터 스레드가 DB의 데이터에 대해 빠르게 작업하여 응답할 수 있어야 함
  • DB에서는 COMMIT된 데이터를 안전하게 저장해야 함

위의 3가지 목표는 DB가 추구하는 이상적인 목표지만,

위의 목표를 이뤄내는 과정에서 서로에게 악영향을 끼칠 수 있습니다.

 

2) DB는 어디에 저장하는가?

DB의 목표중에서 3번째인 저장하는 부분에 주목하여 몇가지 정보를 알아보겠습니다.

 

2 - 1) 하드 드라이브

DB는 하드 드라이브에 저장할 수 있습니다.

 

하드 드라이브의 경우 데이터를 영구히 저장할 수 있지만,

데이터를 가져오게 되는 경우 물리적으로 저장된 데이터를 읽어들이는 방식으로 동작하여 

데이터에 접근하는 속도가 느립니다.

 

2 - 2) RAM

DB는 RAM에도 저장할 수 있습니다.

 

RAM의 경우 전기 신호가 끊기면 데이터를 삭제하는 휘발성을 지닌다는 문제가 있지만,

전기 신호 DB를 저장하므로 데이터에 접근하는 속도가 빠릅니다.

 

3) DB를 가져오는 방법 : INDEX VS Random Access

하드 드라이브의 DB를 가져온다고 생각해보겠습니다.

 

INDEX를 사용하는 경우에, 데이터는 트리 형태로 저장되어 있습니다.

따라서 데이터를 읽어오는 속도가 느리다고 하더라도, 정보가 어디 있는지 알기에 과정이 단축됩니다.

 

하지만, Random Access 방식으로 동작하는 경우에는,

데이터의 위치를 알지 못하기에 물리적으로 찾아가며 데이터를 가져와야 하므로 느리게 동작합니다.

 

4) DB는 어디에 저장하는 것이 옳을까?

DB에 담겨진 데이터는 온전히 상태를 유지하면서, 안전하게, 영구히 존재해야 합니다.

 

그렇기에 RAM에도 저장하면서, 하드 디스크에 저장하게 되는데

모든 데이터를 하드 디스크에 저장하는 것은 속도의 측면에서 매우 비효율적입니다.

 

따라서 이어지는 다음 포스트에서는

이러한 장점과 단점 사이에서 어떻게 타협하여 DB를 저장하고 처리하는지 알아보겠습니다.

 

728x90
반응형