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