<aside> 💡 ***내 언어의 한계는 내 세계의 한계를 의미한다.
</aside>
데이터 모델은 소프트웨어를 개발하는데 있어 가장 중요한 요소중 하나다.
단순히 소프트웨어가 어떻게 작성되어있는지 뿐 아니라 해결하려는 문제를 어떻게 생각할지에 대해서도 영향을 미치기 때문이다.
현실의 데이터 구조를 최종적으로 데이터 메모리, 디스크, 네트워크 상의 바이트 단위로 저장하기까지는 각 계층별로 데이터 모델을 두고 이 모델들이 각각의 계층을 이루면서 표현된다.
예를 들어, 사람이라는 현실속의 개념을 최종적으로 저장하기까지의 데이터 계층은 다음과 같이 표현될 수 있다.
각 계층은 명확한 데이터 모델을 제공해 하위 계층의 복잡성을 숨기고 이러한 추상화는 다른 구성원과 협업을 가능하게 한다.
우리가 데이터 모델이라고 하면 흔하게 생각하는 관계형 데이터 모델(relational model)만 해도 학습 서적이 매우 많다. 그렇기에 하나의 데이터 모델을 익히는데도 상당한 노력이 필요하다.
하지만, 데이터 모델은 매우 다양한 유형이 있고, 유형별로 사용법에 대한 러닝커브도 다르고, 동작에 대한 지원 여부도 제각각이다. 심지어 연산 속도도 기능별로 다를 수 있다.
우리가 데이터 모델을 하나만 사용하고 내부 동작을 신경쓰지 않아도 된다고 하더라도 소프트웨어 작성만으로도 쉬운 일은 아니다. 하지만, 데이터 모델은 그 위에서 소프트웨어가 할 수 있는 일과 할 수 없는 일에 대한 많은 영향을 주기에 애플리케이션에 적합한 데이터 모델을 선택하는 작업은 중요하다.