#title 데이터베이스의 기본철학 [[TableOfContents]] ==== 데이터베이스의 기본철학 ==== 데이타베이스의 기본철학? 철학이라고 하니까 좀 골치아퍼 보이는데 이제까지 앞에서 언급한 것의 종합적이 이야기라고 볼 수 있다. 현재에 정보시스템을 구축할 때 데이터베이스가 빠져서는 안 되는 이유가 바로 여기에 있다. 데이타베이스 방식이 왜 나타났을까? 기존의 수작업방식의 비효율성과 데이타의 중복으로 인한 일관성 부족?? 파일처리방식으로 넘어오면서 수작업 방식에서의 문제점을 그대로 가져가고 전산화만 되어서? 물론 이 말도 맞는 소리다. 하지만 원천적으로 따져보면 이 말은 사용자가 정보시스템을 통해 얻는 정보의 수준을 이야기 하는 것이다. 여기서 말하는 정보의 수준은 '정보의 질'을 이야기 한다. 즉, 기존의 수작업 방식이나 파일처리 방식은 너무나도 빨리 변화하는 현실에 대처 못하고 지금은 많은 문제점을 야기하면서 '정보의 질'을 떨어뜨리는 것이다. 그래서 여러 곳에 산재되어 있는 데이타를 모아서 관리를 하면 어떨까? 하는 생각으로 '데이타베이스'라는 말이 생겨난 것이다. 이렇게 데이타를 모아뒀더니 '정보의 질'은 전체적으로 보았을 때 좋아졌다. (더 나빠지기도 했다는 말이다.) 이렇게 데이타를 모아 두기엔 현실에 너무나도 악영향을 끼칠 수 있는 요소들이 많이 있다. 그래서 예비파일과 복구 대책의 필요성이라는 단점을 안고 가면서도 따져본 결과 데이타베이스 방식이 유리하다라고 판단되는 경우가 많아서 데이타베이스라는 한 분야가 죽지않고 살아 있는 것이다. 파일처리 방식에서 하나의 프로그램은 파일에 종속적이다. 종속적이라는 말은 파일 한 개가 깨졌다면 그 파일에 대한 프로그램은 쓰지 못하고, 이 깨진 파일과 상관없는 다른 프로그램은 사용할 수 있음을 말한다. 그러나 데이타베이스가 깨졌다고 한다면 업무가 마비될 정도로 큰 문제가 생긴다. 물론 이렇게 물리적인 문제 뿐만 아니라 데이터의 중복으로 인한 많은 문제점이 있다. 물론 최대한의 중복을 없애는 것을 지향하는 데이터베이스도 현실을 제대로 반영하지 못하면 여러가지 문제점이 일어날 수 있다. 예를 들면 이름, 성별, 주민번호를 가진 테이블(가로와 세로가 있는 표 형태 또는 2차원 배열 형태)이 있다고 가정해 봅시다. (그냥 있다고 합시다. 주민번호로 성별을 알 수 있지만..) 주민등록번호는 13자리 '-' 를 포함한다면 14자리다. 전지현란 여자가 자신의 정보를 테이블에 입력했다. 전지현 여 211218-1818218 분명이 여자인데 두 번째 연결된 숫자에 남자를 나타내는 '1'이란 숫자가 들어간 것이 보인다. 현실적이지 못하다. 예전에 질문/답변 게시판에 직원의 실수로 “사업자 번호” 와 “주문번호”가 바뀌어서 데이타베이스에 입력되었다고 이것을 고치는 SQL을 만들어 달라고 하소연을 한 경우가 있었다. 이것은 벌써 “사업자 번호”와 “주문번호”가 바뀌어 들어가면 안 된다는 현실을 제대로 반영하고 있지 못한 것이다. 질문자도 문제다. 문제의 원인을 해결해야지 현상만을 해결하려고 하고 있다. 전형적인 하수다. 이러한 문제점 말고도 성능상이나 다른 여러 가지 문제들이 많다. 지금까지 이러한 얘기를 한 이유는 바로 데이타베이스의 기본철학은 '문제점 자체가 일어나지 않는 상황을 만드는 것' 이기 때문이다. '데이타베이스는 현실을 반영한다'는 말은 철학적 관점에서 볼 때 '문제점 자체가 일어나지 않는 환경을 만드는 것'이라는 데이터베이스의 기본철학도 포함한다고 할 수 있겠다. ==== 이해를 돕기 위한 질문 ==== 여러분은 엄마와 애인이 동시에 물에 빠졌다면 누구를 먼저 구하겠습니까? 1. 엄마를 먼저 구한다. 2. 애인을 먼저 구한다. 만약 이 두 가지 중 하나에 속한다면 여러분은 아직 데이터베이스에 대한 기본 철학을 이해하지 못한 것이다. 또는 이해는 했으나 실무와의 괴리라는 것을 겪고 있는 것이다. 데이터베이스의 기본 철학이 뭐하고 했던가? 문제점 자체가 일어나지 않는 상황을 만든 것이다. 필자라면 이렇게 대답할 것이다. '''''엄마와 애인이 동시에 물에 빠지는 상황을 만들지 않는다!!!''''' ---- 지금까지 쭉...본페이지중에서 제일 재밌고(?) 와닿는 글이네요. 짧고 이해도 쉽고, 마지막의 그 한마디.. -- 김현섭 2011-08-02 10:30:53 ---- 도메인 모델 관점으로 봤을때 저는 데이터베이스의 위기이라고 생각됩니다. 현재 오라클이 기능적으로 보면 좋은 데이터베이스이긴 하나 POJO 기반의 어플리케이션이 늘어남에 따라 하이버네이트와 같은 ORM 툴과연계로 인한 데이터베이스 측면의 아키텍처의 변화가 있어야 한다고 봅니다. ㅋㅋ -- 이권재 2011-08-08 09:58:51 ---- 데이터베이스의 위기라고 보기보다는 RDBMS의 위기죠. 이 역시 '어떻게'의 관점일 뿐입니다. -- 이재학 2011-08-08 12:29:19