본문 바로가기

Library/Database

DBMS를 왜 사용하는가?

컴퓨팅이 시작된 초창기에는 데이터의 양이 그렇게 많지 않았기 때문에, 애플리케이션이 직접 데이터를 다루는 것이 일반적이었다. 그러나, 점차 데이터가 증가하면서 애플리케이션에서 데이터를 체계적으로 다루는 것이 불편해지기 시작한다. 데이터의 형식이 변경되면 애플리케이션은 그에 맞춰 직접 코드가 수정되어야 하며, 저장된 원시 데이터를 사용하여 2차적인 데이터를 얻고자 할 때도 애플리케이션 코드 수정이 불가피하기 때문이다. 특히, 이 데이터에 의존하는 애플리케이션이 많아질수록 이와 같은 종속성은 심화된다.

DBMS(database management system)는 이와 같은 요구를 반영한 결과이다. DBMS를 사용하는 것과 애플리케이션에 의존적인 데이터 형식을 사용하는 것을 비교하면, DBMS를 사용하는 것이 명백한 장점을 가진다는 것을 알 수 있다. DBMS는 좀 더 추상적인 계층 구조를 제공하기 때문에, 외부에서 어떤 방식으로 데이터를 얻을 것인지, 데이터를 어떻게 DB에 저장할 것인지, 그 DB가 어떤 형식의 실제 파일 구조로 저장될지에 대해서 애플리케이션이 신경쓰지 않아도 된다. 이들이 커다란 변화를 겪지 않는 경우, DB에 접근하여 데이터를 얻는 방법을 변경할 필요가 없다. 즉, 데이터가 변경되더라도 수정을 최소한으로 줄일 수 있으며, 애플리케이션은 데이터 관리의 부담에서 벗어나게 된다.

만약 데이터를 DBMS를 사용하지 않는, 일반적인 파일 형태의 데이터로 구성하여 사용한다고 해보자. 이 데이터를 하나의 애플리케이션에서 인식할 수 있고, 동시에 여러명의 사용자가 사용한다면, 애플리케이션은 데이터가 여러 곳에서 동시에 사용될 경우 데이터의 일관성을 유지해야 한다. 이 문제는 애플리케이션에서 처리하기에는 지나치게 복잡하다. DBMS를 사용한다면, 데이터에 대한 동시 접근, 동시 수정을 DBMS에서 적절히 처리해주기 때문에 애플리케이션이 데이터 일관성 문제를 직접적으로 다룰 필요가 없어진다. DBMS는 데이터에 대한 무결성을 보장한다. 여기서 말하는 무결성이란 의미가 약간 모호한데, 반드시 데이터가 사용자가 저장했던 데이터 그대로 보존해준다는 의미는 아니다. DBMS에서 데이터를 읽고 쓰는데 문제가 없는 정합성에 좀 더 가깝다. 각 DBMS에서 지원하는 데이터 무결성은 지원 정도의 차이가 있으며, 동일한 것은 아니다.

DBMS를 사용하지 않는다면, 애플리케이션이 원하는 데이터를 얻어내기 위해서는 애플리케이션 내부에 필요한 로직을 구현해야 한다. 또, 데이터가 특정 애플리케이션에 의존적일 수 있기 떄문에, 외부에서 데이터를 2차적으로 가공하려면 비표준적인 방법을 사용할 수 밖에 없다. DBMS를 사용한다면, DBMS는 데이터에 대한 일반적인 접근 방법(SQL)을 제공하기 때문에, 데이터에서 추가적인 정보를 추출하는데 더 적은 시간과 노력이 소모된다. 이것은 DBMS를 사용할 때 얻을 수 있는 가장 대표적인 장점이라고 할 수 있다.