데이터베이스
데이터베이스(database)란 데이터(data)의 집합을 말한다. 간략히 DB(디비)라고도 하며, 데이터베이스를 체계적으로 관리하는 시스템을 데이터베이스 관리 시스템(DBMS, database management system)이라고 한다.
목차
개요
정보(情報, information)란 특정한 목적에 맞게 데이터를 정리하여 의미 있는 내용을 끌어낸 것을 말한다. 이때, 데이터는 어떤 값을 포함하고 있는 가공되지 않은 1차 자료를 말하며, 이 데이터를 모아둔 집합이 바로 데이터베이스이다. 데이터베이스를 체계적으로 관리하기 위한 시스템이 바로 데이터베이스 관리 시스템이다. 데이터베이스는 불특정 다수의 사람에 의해 공유되며 조직적으로 통합하여 관리되는 데이터의 집합이다. 데이터베이스만으로는 특정 이용자들에게 필요한 정보를 체계적으로 축적하여 이용자에게 필요한 정보를 제공하는 정보 서비스의 기능을 완전히 해낼 수 없다. 따라서 해당 기능을 관리하는 시스템인 데이터 관리 시스템과 함께 사용된다. 이를 간단히 비유하자면 데이터베이스 자체는 음식(데이터)을 저장할 수 있는 냉장고이고, 음식을 조리하거나 처리할 능력이 없어 데이터베이스 관리 시스템이라는 관리자들을 고용하여 여러 가지 업무를 수행하도록 관리하는 것이다.
최근 SQL처럼 데이터베이스의 정렬과 탐색을 활용하여 데이터를 전문적으로 처리하는 데이터 사이언티스트 직업이 주목받고 있다. 이에 반해 무겁게 데이터베이스를 돌리기보다 개별적인 파일로 하나씩 저장하면 더욱 편리하다고 생각하는 사람들도 있는데, 이는 파일 같은 간단한 경우에만 해당하며 게시판을 만드는 등의 작업을 할 경우 데이터베이스가 훨씬 효율적이고 빠르며, 파일에서 몇 줄로 처리해야 할 일들을 더욱더 손쉽게 처리하기 때문에 프로그램 전체의 효율을 따졌을 때 데이터베이스의 사용을 권한다.
등장 배경
데이터베이스는 파일 시스템의 문제로 인해 고안됐다. 데이터베이스가 사용되기 이전에는 파일 시스템을 통해 데이터가 유지되고 있었다. 그러나 이런 파일 기반의 데이터 관리방식은 데이터의 무결성 문제가 발생할 수 있는데, 이는 곧 중복 데이터가 발생하고 이들 사이에 불일치가 발생하는 등의 문제를 야기한다. 시스템이나 파일 구조에 영향을 받는 형태로 유지보수가 복잡하고 어렵다는 한계가 있기 때문이다. 이러한 문제점을 극복하기 위해서 데이터베이스가 고안이 되었다. 간단히 설명하자면 데이터베이스는 파일 형태로 흩어져 있던 데이터를 하나로 모아 관리하고 다수의 사용자가 정보에 접근할 수 있어야 한다는 관점하에 설계됐다.
1950년대, 데이터베이스라는 용어가 미국에서 처음 사용되기 시작했다. 이는 본래 군비의 집중적, 효율적 관리를 위해 컴퓨터 도서관 개념을 개발하면서 이를 '데이터의 기지'라는 뜻의 데이터베이스를 일컬었다. 1970년대, "에드거 F 커드"가 처음 제안한 관계형 데이터베이스(Relational database)는 응용 프르그램들이 뒤따르는 링크가 아닌 내용을 기준으로 한 데이터 검색을 하고자 하는 것에서부터 출발했다. 관계형 데이터베이스의 출범 이후 2000년대 말에는 차세대 데이터베이스인 NoSQL이 부상하기 시작했다. NoSQL은 고속의 키-값 스토어, 도큐먼트 지향의 데이터베이스이다. New SQL 데이터베이스라는 매우 경쟁력 있는 모델로, 상용 관계형 DBMS 대비 NoSQL의 높은 성능에 부합하면서 관계형/SQL 모델을 보유하는 새로운 구현을 시도하기도 한다. 정리하자면 초창기에는 계층형, 네트워크형 데이터베이스가 사용되었으나 현재는 관계형 데이터베이스가 주를 이루고 있으며 NoSQL 계열의 데이터베이스 사용도 점차 늘어가고 있다.[1]
특징
데이터의 종류
데이터는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합이다. 논리적으로 연관된 하나 이상의 자료의 모음에 그 내용을 구조화하여 검색과 갱신의 효율을 극대화한다. 이는 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애며, 자료를 구조화하여 기억시켜 놓은 자료를 집합하는 등의 과정이 포함한다.
- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 자료의 모임이다.
- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료이며 주로 보조기억장치에 저장된다.
- 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 꼭 필요한 데이터 자료이다.
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료이다.
- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료이다.
스키마
스키마(Schema)는 데이터베이스의 구조와 제약조건 등 전반적인 명세와 숲을 볼 수 있는 메타데이터 의 집합으로, 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. 다음 사진 참조의 설명처럼 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나눠진다.
- 특징 : 스키마는 데이터의 구조적 특성을 의미한다. 구조적으로 인스턴스에 의해 규정되며 시간에 따라 불변인 특성을 갖는다. 또한 스키마는 데이터 사전(Data Dictionary)에 저장되며, 다른 이름으로 메타데이터(metadata)라고도 한다.
- 스키마의 구조
- 외부 스키마(External Schema) : 사용자나 응용 프로그래머가 각 대인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의 한 것이다. 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용할 수 있는 형식으로 일반 사용자는 질의어(SQL)을 이용하여 DB를 쉽게 사용할 수 있다. 응용 프로그래머는 C, 자바(JAVA) 등의 언어를 사용하여 DB에 접근한다.
- 개념 스키마(Conceptual Schema) : 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다. 개체 간의 관계와 제약 조건을 나타내고, 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의하는 등 전체적인 뷰(View)를 나타내며, 데이터베이스 관리자(DBA)에 의해서 구성된다.
- 내부 스키마(Internal Schema) : 물리적 저장 장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장 장치와 밀접한 계층이다. 내부 스키마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타내며 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.[2]
DBMS
DBMS란 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 일종의 소프트웨어이다. DBMS는 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로 모든 응용 프로그램들을 조직적으로 관리하여 데이터베이스를 공용할 수 있도록 한다. 앞서 설명한 것처럼 데이터베이스만으로 기능을 할 수 없으니 DBMS로 관리하며, DBMS는 데이터베이스의 구성, 접근 방법, 유지관리에 대한 모든 책임을 진다. 이를 통해 데이터의 물리적 독립성을 보장하여 데이터를 안전하게 보관할 수 있으며, 데이터의 중복을 피할 수 있어 기억공간 절약에 용이하다. 저장된 자료를 공동으로 이용한다는 점에서 편리성이 높고, 이를 관리하며 데이터의 일관성, 무결성, 보안을 유지하여 통합 관리하며 데이터의 표준화를 가능하게 한다. 또한 최신 데이터의 유지와 실시간 처리가 가능하다. 중복성으로 인한 문제점은 크게 4가지로 구분할 수 있다.
- 무결성 : 제어의 분산으로 데이터의 정확성을 유지할 수 없다.
- 경제성 : 저장공간의 낭비와 동일한 데이터의 반복 작업으로 비용이 증가한다.
- 보안성 : 중복된 모든 데이터에 동등한 보안 수준을 유지하기가 어렵다.
- 일관성 : 중복된 데이터 간에 내용이 일치하지 않는 상황이 발생하여 일관성이 없어진다.[2]
RDBMS
관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)은 행과 열로 된 2차원의 표로 데이터를 표현, 정리한 데이터베이스 관리 시스템(DBMS)이다. RDBMS(알디비엠에스)라고도 한다. 이는 보다 단순하고 정형화된 데이터를 분석하기 위해 사용한다.
내장 SQL
내장 SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수한 목적의 프로그래밍 언어이다. 이는 응용 프로그램에 데이터베이스에서 사용하는 데이터를 정의하거나, 질의응답하는 SQL 문장을 내장하여 프로그램이 실행될 때 함께 실행될 수 있도록 호스트 프로그램 언어로 만들어 삽입되었다. 내장 SQL을 통해 자료의 검색, 삭제, 스키마의 생성과 수정 등 객체접근 조정 관리를 할 수 있다.
내장형 SQL 실행문은 호스트 언어에서 실행문이 나타날 수 있는 곳이면 프로그램의 어느 부분에서나 자유롭게 이용할 수 있으며, 질의를 보내거나, 데이터 가져오기, 새로운 레코드 삽입 등의 기능을 수행한다. 뿐만 아니라 내장형 SQL을 통해 이미 존재하는 레코드를 갱신할 수도 있다. 호스트 프로그램의 컴파일 시에 SQL문은 선행처리, 즉 전처리 되어 분리된 후 컴파일되는데 이때, 호스트 프로그램 언어란 C, 자바(Java), 파이썬(Python) 등과 같은 프로그래밍 언어를 의미한다. 데이터베이스에 행해지는 대부분의 명령은 SQL문으로 실행되는데, 이는 CuSTOMERS 테이블의 모든 레코드를 선택할 수 있다. 주요 명령어는 다음과 같으며 이외에도 다양한 명령어가 있다.[1]
- SELECT : 데이터베이스에서 데이터 추출
- INSERT INTO : 데이터베이스에 새로운 데이터 삽입
- DELETE : 데이터 삭제
- ALTER TABLE : 테이블 변경
- CREATE DATABASE : 새로운 데이터베이스 생성
장점
장점으로는 실시간 접근성(Real-Time Accessibility) : 수시 적이고 비정형적인 요구에 대하여 실시간 처리에 의한 응답이 가능해야 한다. 수정의 용이성을 가지고 '동시성 제어'라고 하는 다수 사용자에게 동시 접근을허용 하는 기능, 동시 공용(Concurrent Sharing) : 데이터베이스는 서로 다른 목적을 가진 여러 이용자를 위한 것이므로 다수의 사용자가 동시다발적인 상황에서도 같은 내용의 데이터를 이용할 수 있게 한다. 추가로 무결성(integrity) : 데이터베이스에 저장된 데이터값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미하는 것으로, 간략히 말하면 결점 없는 일치를 뜻한다. 무결성을 유지하는 방법으로는 대표적으로 중앙 통제에 의한 데이터 갱신이다. 이 방법은 검증 프로그램을 이용하여 모든 갱신 처리 과정에서 반드시 거증 단계를 거치도록 통제하여 규제한다. 검증 프로그램이 무결성을 검증하기 위해 무결성 규정을 사용하는 것이다. 무결성은 다섯 가지의 종류로 나뉜다.
- 널 무결성 : 릴레이션의 특정 속성값이 Null이 될 수 없도록 규정한다.
- 고유 무결성 : 릴레이션의 특정 속성에 대해서 각 튜플이 갖는 값들이 서로 달라야 한다.
- 도메인 무결성 : 특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 한다.
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키값과 동일해야 한다는 규정 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
- 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 한다.[2]
이외에도 데이터베이스는 자기 기술성을 가지므로 프로그램에 영향을 받지 않고, 이에 따라 프로그램을 수정하지 않고 사용할 수 있는 특징이 있다. 또한 일종의 추상화(캡슐화) 기능을 통해 전체 구조를 감추고 각 사용자에게 필요한 정보를 제공한다. 이때 데이터의 특성, 실체, 상호 간의 의미 관계를 고려하여 구조에 따라 조직화하는 내용에 의한 참조(Content Reference) 방식으로 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.[2]
산업 전망
우리나라 주요 사업구조만 살펴봐도 경제주체들의 업무 협업을 위해서는 서로 데이터를 약속된 형태로 주고받을 수 있어야 하며, 각 조직은 스스로 품질 수준이 보장된 데이터베이스를 갖추어야만 하는 시대가 왔다. 이처럼 데이터베이스는 단순한 정보들을 조직적으로 관리하여 이를 필요한 이용자에게 실시간 공유하는 등 고차원의 지식서비스를 제공하는 중심이다. 국내기업들은 2000년대에 접어들면서 금융업종을 중심으로 차세대시스템 구축에 돌입하기 시작하였다. 일례를 살펴보면 기상정보는 해당 날씨에 따른 고객들의 소비패턴이나 수요를 측정하여 수익을 극대화하고, 지리 정보는 다른 데이터와 종합해 여러 관광산업이나 건축 분야에 활용되며, 상품의 가격 비교, 교통상황 등 수많은 방법으로 데이터를 관리하는 것은 소비자의 행동까지 예측할 수 있는 세상이 되어버린 지금 매우 중요한 핵심 산업임이 확실하다.[1]
데이터베이스의 시장 규모와 현재 매출은 해를 거듭할수록 증가하는 추세를 보이며, IT 불황 속에서도 데이터베이스 산업은 꾸준한 성장률을 유지하고 있다. 그도 그럴 것이 해당 산업에 대한 예산 확충과 스마트폰 도입뿐만 아니라 신규분야의 개척 등 많은 분야에 함께 발전해야 하는 분야이기 때문이다. 특히 구축과 관련된 부문은 개발에 독립적인 시장을 형성하기보다는 데이터베이스 구축을 위한 프로세스의 일부로 편입되고 있어 공공기관의 예산 감축, 기업체들의 IT 투자 비용 절감 등과 맞물려 성장세가 둔화한 DBMS 시장은 임베디드의 영업 확대와 함께 판매 확대 등으로 회복세를 기대할 수 있다. 데이터베이스 활용 부문은 결국 축적된 정보를 제공, 판매하는 시장이라고 할 수 있다. 이에 따라 발생하는 수익은 DB 제공 시 부가적 서비스 이용료 및 광고 수익이 발생하므로, 수익구조에 따라 DB서비스 분야(직접매출)와 광고서비스 분야(간접매출)등 다양하다.[1]
초기에 주로 애플리케이션 프로그램을 통해서 데이터를 보관하거나 조회했었다. 즉, 모든 데이터 처리방식이 애플리케이션 프로그램에 종속적일 수밖에 없었다. 그러나 데이터베이스 관리시스템과 관련된 소프트웨어의 발전과 더불어 현재 해당 애플리케이션의 도움 없이도 데이터베이스의 동작은 가능하며 다양한 산업적 가치를 인정받고 있다. 결국 애플리케이션 역시 그 내부엔 질 좋은 데이터들로 하여금 그 뼈대를 단단히 하는 것이다. 이렇듯 데이터베이스의 활용도가 높아지면서 소비자에게 맞춤 서비스 영역까지도 확장되어 가고 있다. 최근에는 고객이 필요한 맞춤형 데이터를 온라인으로 실시간 질의하여 조회·전송·제공하는 등 다양한 부가서비스로 발전하는 고부가가치의 정보서비스로 진화를 하고 있다. 4차 산업혁명을 맞이하며 인터넷 비즈니스를 위한 풍부한 인프라와 디지털 분야에 호의적인 시장이 활성화되며 정보통신 분야에 누구보다 앞서 달려왔던 우리나라에서 데이터베이스 산업이 확대되는 것은 이미 자연스러운 현상이라고 말할 수 있다.[1]
각주
참고자료
- 오라클 공식 홈페이지 -https://www.oracle.com/kr/database/
- 코딩팩토리, <(DB기초) 데이터베이스의 정의와 특징>,《티스토리》, 2018-08-08
같이 보기
|