데이터베이스가 무엇이냐고 필자에게 묻는다면 '데이터를 잘 꺼내보고, 잘 저장하기 위한 개념과 논리' 라고 하겠다. 여기에 '여러 명의 사용자' 또는 '고도로 구조화'와 같은 여러 가지 옵션들이 붙지만 '데이터를 잘 꺼내보고, 잘 저장하기 위한'에 포함이 된다. 여기서 논란의 여지가 있는 것은 역시 '잘'이란 부사이다. 데이터를 '잘' 꺼내보고, '잘' 저장하는 것이 데이터베이스의 지식영역의 전부(데이터 분석과 관련된 통계, 마이닝 분야는 데이터를 관리하는 것이 아닌 데이터 자체에 대한 해석의 영역이므로 데이터베이스의 지식영역에서는 제외한다)라고 봐도 된다.
데이터를 잘 꺼내보고 잘 저장하기 위한 일련의 작업들 중에서 가장 중요한 단계는 누가 뭐라고 해도 데이터 모델링과 설계 단계다. 나머지는 DBMS 제품과 기능의 우수성, 최적화된 SQL, 우수한 하드웨어의 구성에 따라서 결정된다. 조직의 데이터베이스 시스템을 구축하는데 자체적으로 DBMS를 제작하지는 않으므로 데이터 모델링과 설계, SQL작성에 집중하면 된다.
자, 그럼 데이터를 꺼내보기 좋게 잘 저장해 놓았다고 하자. 왜 이런 짓을 해야 할까? 이유는 사용자의 정보욕구를 만족시키기 위해서다. 결국 데이터베이스는 종이로 된 문서나 파일보다 정보를 얻기 편리하게 해보자는 의도에서 만들어진 것이다. 그렇다면 다른 문서에서는 데이터베이스를 어떻게 정의하고 있는지 살펴보자. 모두 비슷하므로 첫 번째 정의를 설명하도록 하겠다.
- 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조함으로써 검색과 갱신의 효율화를 꾀한 것이다. 즉, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있다. -- 네이버 백과사전
- 어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이타의 집합이다. -- 정익사, 이석호, 데이타베이스 시스템
- 조직의 여러 사용자의 다양한 정보 욕구를 충족시키기 위한 데이타의 집합체. --박영사, 서길수, 데이타베이스 관리
집합 A = {x | x는 한글을 읽고 그 뜻을 이해 할 수 있는 사람들}
집합의 명제 속에 속하는 원소들끼리는 논리적으로 연관됨을 의미한다. 데이터베이스는 집합체이므로 논리적으로 연관되어 있다. 두 번째로 '하나 이상의 자료의 모음'의 "하나 이상"의 뜻은 인간이 감당하기 힘들 정도의 자료의 양으로 이해하면 될 것이다. 여러분이 어느 산골 1평 남짓한 구멍가게를 운영한다고 가정하자. 상품은 30개가 되지 않는다. 하루 매출은 1만원을 넘지 않는다. 물건을 사기 위해 오는 사람도 몇 명 되지 않는다. 다른 경쟁 가게도 없다. 데이터 관리를 위해 데이터베이스 시스템이 필요할까? 반면에 대형 창고형 매장을 생각해보자. 하루에 수천 가지의 상품들이 몇 억 개씩 팔려나간다. 당연히 수작업으로는 감당되지 않으므로 데이터베이스 시스템이 필요하다.
세 번째로 '그 내용을 고도로 구조화함으로써 검색과 갱신의 효율화를 꾀 한 것'이란 글에 대해서 살펴보자. 위에서 예를 든 대형 창고형 매장으로 다시 돌아가보자. 그 수많은 상품들을 아무런 진열도 하지 않고 그냥 쏟아 부어 놓았다고 가정하자. 여러 가지 상품이 산더미처럼 엉켜 있을 것이다. 상품의 가치하락도 문제지만, 운이 없다면 원하는 물건을 사기 위해서는 여기 저기 오랜 시간을 뒤져봐야 할 것이다. 또한 A라는 상품이 없다고 어떤 고객이 눈앞에서 난리를 치고 있다. 매니저는 전 직원을 동원하여 A 상품을 찾았다. 이를 본 옆의 고객도 자기도 찾아달라고 난리다. 또 다른 고객도 찾아달라고 한다. 옆의 고객들은 서로 먼저 찾았다고 줄다리기 경합을 벌이고 있다. 장사가 될까? 데이터베이스도 마찬가지이다. 데이터를 잘 정리정돈 해놓아야 데이터를 잘 사용할 수 있으며, 이것이 데이터를 고도로 구조화하는 하는 것이다. 몇 백 기가 바이트(GB), 몇 테라 바이트(TB)의 데이터베이스 시스템에서 내가 원하는 데이터를 쉽게 찾을 있는 이유도 고도로 구조화되어 있기 때문이다.
네 번째로 '몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고'를 살펴보자. 파일시스템이 지금도 사용되고 있고, 어떤 경우에는 데이터베이스보다 더 효율적이지만, 대부분의 경우 "데이터의 중복"에 의한 여러 가지 문제점을 가졌었다. 이러한 문제점을 해결하기 위해 데이터베이스 출현하게 되었다.
데이터베이스 시스템이 출현하기 전에는 파일 시스템을 사용하였다. 물론 지금도 파일 시스템을 사용하고 있으며, 특정한 경우에는 데이터베이스 시스템보다 더 효율적인 경우도 허다하다. 하지만 데이터베이스 시스템이 발전을 한 것은 여러모로 파일 시스템보다 유용한 경우가 많기 때문이다. 여러 가지 이유가 있지만 필자는 아래의 2가지가 데이터베이스의 직접적인 출현 배경이라고 생각한다.
- 데이터의 중복과 고립성(silo)
- 변화에의 취약(유연성 문제)
파일 시스템은 변화에 매우 취약하다. 하지만 데이터베이스는 논리적, 물리적 독립성으로 인해 기본적으로는 변화에 매우 강하다. 물론 어떻게 설계하고 구현하느냐에 따라 파일 시스템보다 더 변화에 취약해 질 수도 있다. 변화 취약한 정보 시스템은 비용을 증가시킨다. 실제로 소프트웨어 라이프 사이클 중 유지보수 단계에 비용이 70% 정도(객체지향 소프트웨어 공학, 유해영역, McGraw-Hill Korea)라고 한다.
필자는 파일 시스템과 데이터베이스 시스템을 비교하였다. 왜 비교했을까? 그 이유는 데이터베이스 시스템을 데이터베이스 시스템처럼 사용해야 한다는 것을 강조하기 위함이다. 데이터베이스 시스템을 파일 시스템처럼 사용하여 큰 문제가 발생하는 것을 많이 보았다.
'IT > Database' 카테고리의 다른 글
[DB] 집합적사고방식 (0) | 2018.04.19 |
---|---|
[DB] 3단계스키마구조 (0) | 2018.04.18 |
[DB] 데이터베이스 시스템 (0) | 2018.04.18 |
[DB] 데이터의 중복과 고립화 (0) | 2018.04.17 |
구글과 위키페디아도 mySQL에서 갈아 탔다는 마리아DB (0) | 2018.04.12 |
[MSSQL] 데이터 이전시 문자 데이터 변환수행 주의점 (0) | 2018.04.11 |
[MSSQL]서버 BAK파일 복구 (0) | 2018.04.11 |
[SQL Azure]SQL Federation (0) | 2018.04.11 |