관계 DBMS는 안정성과 일관성을 제공하는 특징이 있는데, 최근들어 많은 사람들이 소셜 네트워크 서비스를 폭발적으로 이용하면서 비정형 데이터가 대량으로 생산되었다. 관계 DBMS는 빠른 속도로 증가하는 대량의 비정형 데이터를 처리하는 데는 비효율적이다. 그로인해 NoSQL DBMS가 등장하였다. 이는 데이터 구조를 미리 정해두지 않기 때문에 비정형 데이터를 저장하고 처리하는 데 적합하다. 또한 확장성이 뛰어나 여러 대의 서버 컴퓨터에 데이터를 분산하여 저장하고 처리하는 환경에서 주로 사용한다.
하지만 일반적인 기업의 입장으로써는 관계 DBMS가 제공하는 안정성과 일관성을 여전히 중요하게 평가하고 있다. 이 같은 불편함은 NewSQL DBMS의 등장을 이끌었다. 이는 안정성과 일관성을 유지하면서도 SQL을 이용해 다양하고 복잡한 데이터 처리를 편리하게 요청할 수 있다.
그렇지만 NewSQL이 관계 DBMS나 NoSQL을 완전히 대신할 수는 없다. NewSQL이 시장에 진입한 지 얼마 되지 않았다는 것이 여러 이유 중 하나일 것이다. 따라서 이용자는 저장할 데이터의 형태, 업무 처리 성격 등을 고려하여 적합한 DBMS를 선택해야만 한다.
파일 시스템이 지닌 모든 문제의 근본적인 원인은 데이터 중복성과 데이터 종속성으로 요약할 수 있다. 이 문제를 해결하는 1차 방안은 데이터를 통합하여 저장하는 것이다. 하지만 통합 저장된 데이터를 관리하고 모든 응용 프로그램이 공통으로 요구하는 데이터에 대한 기본 처리를 담당하면서 동시 공유, 보안, 회복 등의 복잡한 기능을 제공해주는 새로운 무엇이 여전히 필요하다. 그 대안으로 제시된 것이 바로 DB 관리 시스템이다.
DB 관리 시스템(DBMS : DataBase Management System)은 파일 시스템의 데이터 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어다. DB 관리 시스템은 조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 이에 대한 관리를 집중적으로 담당한다. DB 관리 시스템은 응용 프로그램을 대신하여 DB에 들어 있는 데이터를 삽입, 삭제, 수정, 검색하고, 모든 응용 프로그램이 DB를 공유할 수 있게 한다.
DB 관리 시스템에서의 데이터 관리
여러 곳에 퍼져 있던 데이터는 DB에 통합되어 저장된다. 그리고 고객 관리 응용 프로그램과 주문 관리 응용 프로그램이 동시에 DB를 사용할 때 발생할 수 있는 모든 사건을 DB 관리 시스템이 중재해준다. 따라서 데이터 중복으로 인한 문제가 해결 된다. DB가 사용자로하여금 사용하기 쉬운 인터페이스를 제공하기 때문에 응용 프로그램 없이도 데이터 처리를 직접 요구할 수 있다.
DB 관리 시스템이 DB와 관련한 작업을 모두 수행하고 그 결과를 사용자에게 전달해주기만 하면 된다.사용자로 하여금 응용 프로그램에 대한 부담이 사라진다. 따라서 사용자로하여금 응용 프로그램에 대한 부담을 줄여줌으로써 데이터 독립성(independency)이 확보된다.
과거에는 데이터를 관리하기 위해 파일 시스템(file system)이라는 소프트웨어를 이용하였다. 운영체제와 함께 설치되었으며 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리했다. 파일 시스템 환경에서는 응용 프로그래머가 파일의 논리적인 구조뿐 아니라 물리적인 구조까지 정확히 파악해야 한다. 그래야 필요한 데이터에 직접 접근하여 처리하는 응용 프로그램을 개발할 수 있었다. 파일 시스템은 별도의 구매 비용이 들지 않는다는 장점이 있지만 응용 프로그램마다 파일을 따로 유지하는 특징 때문에 다음과 같은 문제가 발생한다.
※DB의 가장 중요한 목적은 데이터를 모아두는 것이다. 나에게 맞는 데이터를 수집하기 위해서는 먼저 수집 대상이 되는 데이터의 유형을 파악하고 있어야 한다. 그리고 유형별로 저장 및 처리 기술을 적합하게 선택하는 것이 중요하다. 일반적으로 데이터는 형태에 따라 정형 데이터, 반정형 데이터, 비정형 데이터로 분류할 수 있다.
정형 데이터
미리 정해진 구조에 따라 저장된 데이터를 정형 데이터라고 한다. 표 안에서 행과 열에 의해 지정된 각 칸에 데이터를 저장하는 엑셀의 스프레드시트, 관계 DB의 테이블이 정형 데이터를 담고 있는 대표적인 예이다. 데이터 구조에 대한 설명과 데이터 내용은 별도로 유지된다. 또한 미리 정해진 데이터 구조를 스키마(schema)라 한다.
반정형 데이터
구조에 따라 저장된 데이터이지만 정형 데이터와 달리 데이터 내용 안에 구조에 대한 설명이 함께 존재한다. 따라서 데이터 내용에 대한 설명, 즉 구조를 파악하는 파싱(parsing) 과정이 필요하고, 보통 파일 형태로 저장된다. 웹에서 데이터를 교환 하기 위해 작성하는 HTML, XML, JSON 문서나 웹 로그, 센서 데이터 등이 반정형 데이터에 속한다. 데이터 구조를 스키마(schema)라고도 하지만 메타 데이터(metadata)라고도 한다.
비정형 데이터
정해진 구조가 없이 저장된 데이터다. 소셜 데이터의 텍스트, 영상, 이미지, 워드나 PDF 문서와 같은 멀티미디어 데이터가 대표적인 예다. 최근에는 스마트 기기의 활성화로 SNS 이용자가 크게 늘면서 많은 비정형 데이터가 생성되고 있다. 그로인해 그 증가 속도는 예측하기 어려울 정도다.
XML 데이터베이스와 멀티미디어 데이터베이스
앞서 살펴본 DB는 문자나 숫자로 구성된 정형 데이터를 담고 있는 보편적인 DB다. 하지만 DB의 오랜 역사만큼이나 반정형, 비정형 데이터 같은 다른 유형의 데이터를 위주로 저장하는 DB를 구축하기 위해 오랫동안 다양한 시도가 있어왔다. 대표적인 예로 XML DB와 멀티미디어 DB가 있다.
먼저 XML DB는 웹에서 시스템 간의 데이터 교환을 위해 작성된 XML 문서를 효율적으로 저장하고 검색할 수 있도록 개발되었다. 기존 DB에 XML 문서 자체를 하나의 단위로 저장하는 방법과 XML 문서의 계층적 구조를 그대로 유지하면서 효율적인 관리가 가능하도록 XML 전용 DB를 따로 구성하는 방법으로 나뉜다. XML 전용 DB를 구성하는 경우 데이터 처리를 위해 XQuery 라는 언어를 사용한다.
멀티미디어 DB는 문자나 숫자뿐 아니라 이미지, 영상 등이 조합된 멀티미디어 데이터를 효율적으로 저장하고 검색할 수 있도록 개발되었다. 다양한 형태의 데이터를 저장하고 처리하기 위해 객체지향적 접근이 필요하다. 멀티미디어 데이터는 일반 데이터보다 용량이 크다는 점을 고려해야 한다. 또한 실시간으로 저장된 멀티미디어를 읽어내고 전송할 수 있어야 하며 멀티미디어 데이터의 특징을 고려한 검색이 이루어지도록 하는 기능 등이 추가로 필요하다.
데이터베이스의 정의는 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영데이터의 집합이다.
데이터베이스의 정의
데이터베이스는 공유 데이터(shared data)
DB는 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있어야 하는 공용 데이터 이기에 사용 목적이 다른 사용자들을두루 고려하여 DB를 구성해야 한다.
데이터베이스는 통합 데이터(integrated data)
DB는 데이터 중복성(data redundancy), 즉 관리가 어려울 수 있는 중복 데이터를 허용하지 않는다. 하지만 효율적인 측면 때문에 의도적으로 중복 데이터를 허용하는 경우가 있다. 따라서 통합 데이터는 중복 데이터를 최소화하고 통제가 가능한중복 데이터만 허용한다.
데이터베이스는 저장 데이터(stored data)
DB의 데이터는 주로 컴퓨터가 처리하므로, 컴퓨터가 접근할 수 있는 매체에 DB를 저장해야 한다.
데이터베이스는 운영 데이터(operational data)
DB는 조직을 운영하고 조직의 주요 기능을 수행하기 위해 꼭 필요하다. 일시적으로 사용하는 것이 아닌, 지속적으로 유지해야 하는 데이터다.
데이터베이스의 특징
데이터베이스의 특징
데이터베이스는 실시간 접근(real-time accessibility)이 가능하다
DB는 사용자의 데이터 요구에 실시간으로 응답할 수 있어야 한다. 실시간 처리에서는 사용자의 개인 특성이나 제공되는 서비스 유형에 따라 허용되는 응답 시간이 다르지만 대개 몇 초를 넘지 않은 시간 내에 데이터를 제공할 수 있어야 한다.
데이터베이스는 계속 변화(continuous evolution)한다
DB는 현실 세계의 상태를 정확하게 반영해야 의미가 있다. 그런데 현실 세계는 끊임없이 변하므로 DB에 저장된 데이터도 계속 변해야 한다. 즉, DB는 동적인 특징이 있어 데이터를 계속 삽입(insert), 삭제(delete), 수정(update)하여 현재의 정확한 데이터를 유지해야 한다.
데이터베이스는 동시 공유(concurrent sharing)가 가능하다
DB는 여러 사용자가 동시에 이용할 수 있는 동시 공유의 특징을 제공해야 한다. 단순히 여러 사용자가 함께 이용한다거나 시간 차를 두고 같은 데이터 영역을 함께 사용하는 것이 아니다. 동시 공유는 여러 사용자가 서로 다른 데이터를 동시에 사용하는 것뿐 아니라, 같은 데이터를 동시에 사용하는 것도 모두 지원한다는 의미이다. 하지만 동시 공유의 개념을 지원하도록 조직하고 관리하기가 쉽지 않아 더 까다로운 처리가 필요하다.
데이터베이스는 내용으로 참조(content reference)가 가능하다
DB는 저장된 주소나 위치가 아닌 데이터의 내용(content), 즉 값(value)으로 참조할 수 있다. 일반적으로 컴퓨터에 저장된 데이터는 저장 주소를 알아야 검색이 가능하지만, DB는 찾고자 하는 데이터의 내용 조건만 제시하면 서로 다른 위치에 저장되어 있어도 모두 검색할 수 있다.
가치 있는 정보를 가지고 있다는 것은 현대 사회에 있어 꽤나 중요한 부분이다. 정보를 데이터와 같은 의미로 사용하곤 하는데, 이 둘은 명확하게 구별해야 한다. 데이터는 관찰하거나 측정하여 얻은 사실(fact)이나 값(value)을 의미하며, 자료라고 부르기도 한다. 이 자료를 유용하게 활용할 수 있도록 처리하여 조직한 결과물이 바로 정보(information)이다.
데이터에서 정보를 추출하는 과정 또는 방법을 정보 처리(information processing)라 한다. 즉, 정보 처리는 데이터를 상황에 맞게 분석하거나 해석하여 데이터 간의 의미 관계를 파악하는 것이다.
가치 있는 정보를 얻으려면 의미 있는 데이터를 많이 수집해야 한다. 그러나 많은 데이터를 관리하기 위해서는 수집한 데이터를 효율적으로 저장했다가 필요할 때 사용할 수 있는 기반이 필요하다. 그 기반을 데이터베이스가 담당한다.
정보 시스템과 데이터베이스
수집한 데이터를 저장했다가 사용할 때 처리 과정을 통해 유용한 정보를 만들어주는 수단을 정보 시스템(information System)이라 한다. 정보 시스템 안에서 이 과정을 수행하는 역할을 데이터베이스가 담당한다. 또한 정보 시스템은 사용 목적에 따라 저장되는 데이터의 내용도 다르고 부르는 이름도 다르다.
아직 데이터베이스 즉, DB에 관한 개념이 없기 때문에 어떻게 마음의 준비를 해야 할지는 잘 모르겠다. 그냥 이름만 봤을 때는 데이터의 기초(?) 데이터의 밑바탕(?) 라고 생각을 했다. 이 앞에 자료구조에 대한 학습을 진행하였는데, 이와 연관 지어 보면 데이터의 구조에 대한 무언가, 데이터들끼리의 관계도, 데이터를 삽입하고, 데이터를 도식화시키는 일련의 과정들을 배우지 않을까 생각한다. 또한 자료구조 학습에서 스택, 큐, 덱과 같이 데이터를 관리하는 여러 가지 방법들을 사용할 수 있지 않을까 기대가 된다.
DB 학습 서적으로는 "데이터베이스 개론 2판"을 추천받았고, 간단하게 목차를 확인해 보도록 하자. 챕터는 총 13개에 부록 한 챕터로 이루어져 있다. 챕터 1부터 챕터 3까지는 DB에 관한 기본적인 개념(정의, 등장 배경, 구조 등)이다. 챕터 4부터 챕터 8까지는 각각 "데이터 모델링", "관계 데이터 모델", "관계 데이터 연산", "데이터베이스 언어 SQL", "데이터베이스 설계"로 이루어져 있고 DB 학습에서 가장 중요한 챕터들이다. 무언가를 모델링하고, 그것들의 관계를 살펴보며 설계하는 것이 아닐까 지레짐작해 본다. 챕터 9부터 챕터 13 + 부록은 앞서 말한 중요한 챕터들보다는 다소 라이트하게 진행해도 좋을 듯 싶다.
님의 회원 가입을 진심으로 축하합니다. 이 글은 비공개로 작성돼 있습니다. '편집'으로 내용을 바꾸시거나, 삭제 후 '새 글을 작성'하셔도 됩니다. 글 뿐만 아니라 블로그의 각종 설정을 변경할 수도 있습니다. '블로그관리'를 확인해보세요.
#2 다양한 스킨이 있어요.
티스토리에 있는 다양한 '스킨'도 살펴 보세요. 블로그나 사이트를 사용하는 목적에 맞게 스킨을 고를 수 있습니다. 어떤 이야기를 주로 하실 건가요? 잘 생각해 보시고, 마음에 드는 스킨을 고르세요. '스킨 편집'을 통해 다양한 커스텀, 그리고 홈 꾸미기를 적용하실 수도 있답니다.
#3 포럼에서 사람들과 소통하세요.
마지막으로 사용하시다가 티스토리에 대해 궁금한 내용이 있다면 '포럼'을 확인하세요. 찾기 어려울 땐 직접 질문을 해보는 건 어떨까요? 친절한 티슷터 분들이 바로 답변해 줄 거에요.