데이터 베이스란 어떤 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합이다.
공유 데이터(shared data) : 데이터 베이스는 공유 데이터이다. 어느 하나의 프로그램에 종속된 것이 아니라, 다수의 사용자나 프로그램이 공동으로 소유하고 유지하는 개념이다.
통합된 데이터(integrated data) : 데이터 베이스는 통합된 데이터이다. 통합 데이터란 분산된 데이터들을 한 곳으로 모아 중복을 최소화하기 위한 개념이다. 이는 데이터의 일관성이 유지되고, 관리 비용이 감소한다는 장점이 있다.
저장된 데이터(stored data) : 저장된 데이터는 컴퓨터가 접근 가능한 매체에 저장된 디지털 데이터를 의미한다.
운영 데이터(operational data) : 데이터 베이스는 운영 데이터이다. 이는 조직 고유 업무를 수행하기 위하여 지속적으로 유지해야 하는 데이터를 의미한다. 즉, 임시적으로 처리하는 데이터들이 아닌 시스템을 운영하기 위해서 필요한 데이터인 것이다.
위의 정의를 지키기위해 데이터 베이스는 다음의 특징을 갖게 된다.
query(질의)에 대하여 실시간 처리로 응답해야한다. ( 실시간 처리 )
DB는 삽입, 삭제, 갱신에 의해 계속적으로 변하고 정확한 데이터를 유지할 수 있다. ( 변화 )
자신이 원하는 데이터를 동시 공유할 수 있다. ( 공유성 )
데이터의 위치나 주소가 아닌, 원하는 데이터의 내용에 따라 참조가 가능해야 한다. ( 내용에 따른 참조 )
정리하자면, DB는 실시간으로 모두가 공유하는 데이터를 내용에 따라 참조하여 변화시킬 수 있어야 한다는 것이다.
데이터베이스 관리 시스템(Database Management System) : 약자로 DBMS라고 하며, 이는 데이터베이스에 접근하여 데이터를 조작할 수 있도록 도와준다.
즉, 사용자(개발자)들은 DB에 직접 접근하여 데이터를 다루는 것이 아니라, DBMS의 도움으로 데이터를 다루고 변화시킬 수 있다는 것이다.
대표적인 DBMS로 SQL이 있다.
종속성이 높은 경우에는 데이터 구성 방법이나 접근 방식이 달라지면 응용 프로그램에도 영향을 주게 된다.
이미 생성된 데이터의 구성 등을 변경하기 위해서는 해당 파일에 접근하는 모든 응용 프로그램도 같이 변경해야 한다. 이는 데이터 종속성이 높은 경우에 해당하며, 개발된 응용 프로그램에서 많은 상황에서 심각한 문제가 될 수 있다.
가장 대표적인 예로 파일시스템이 있다.
만약 A,B 프로그램에서 C라는 파일을 이용하고 있다고 하자, C파일의 데이터들을 바꾸면 A,B파일은 C 파일을 읽는 코드를 바꾸어주어야 한다.
또한, 파일 시스템은 데이터 종속성 뿐만 아니라 데이터 중복성 문제가 있다. 각 응용 프로그램마다 데이터 파일을 가지고 있기 때문에, 데이터 파일의 변경이나 응용 프로그램의 코드 변경을 모든 프로그램마다 변경해주야 하는 단점이 있다.
파일시스템에서는 데이터 파일과 응용 프로그램이 일대일로 대응되어야 하기 때문에 데이터 내용이 같아도 구조가 다르면 별도의 파일을 만들어야 한다. 따라서 파일 시스템에서는 한 시스템 내에 같은 데이터가 중복되어 저장되고 관리되는 경우가 많다. 이것을 데이터의 중복성이라고 한다.
파일 시스템이 가진 데이터 종속성 과 데이터 중복성 문제를 해결하기 위하여 **데이터 베이스 관리 시스템(Database Manegement System, DBMS)가 제안되었다. DBMS는 사용자 또는 응용 프로그램과 데이터베이스 사이에 위치하여 데이터베이스를 공유할 수 있도록 관리해주는 소프트웨어로 컴퓨터에 저장된 대량의 데이터를 체계적으로 관리하고 사용자가 원하는 정보를 효과적으로 검색하도록 하는 기능을 제공한다.
데이터 중복을 최소화 : DBMS는 데이터를 통합하여 관리하므로, 데이터의 중복이 없다.
데이터를 공유 : 데이터를 공유하여 응용 프로그램이 관리하던 데이터 관리의 부담을 감소시킬 수 있다.
데이터의 일관성 : 파일 시스템의 경우, 데이터들이 분산되어있어 하나의 데이터를 바꾸더라도 다른 데이터들도 업데이트 시켜야 한다. 이 때 하나의 데이터만 제대로 변경시키지 못하면 데이터의 일관성이 무너지는 현상이 발생한다. 그러나 DBMS는 이러한 데이터의 일관성을 설정해주면 자동으로 처리해주는 장점이 있다.
데이터의 무결성 : 무결성은 현실세계의 값과 데이터베이스에 저장된 데이터 값이 일치하는 정확성을 말한다. DBMS는 현실세계에서는 발생할 수 없는 값들에 대해서 관찰하고, 제어해준다.
데이터 보안 : 여러 사람이 접근하는 DB에는 보안이 매우 취약한데, DBMS가 이를 처리해줄 수 있다.
| 분류 | DBMS 이름 | 특징 및 용도 |
|---|---|---|
| 관계형 DBMS (RDBMS) | Oracle | 대규모 기업용, 안정성과 기능 우수, 유료 |
| MySQL | 오픈소스, 웹 서비스에 많이 사용, 빠르고 가벼움 | |
| PostgreSQL | 오픈소스, 기능 풍부, 표준 준수, 확장성 높음 | |
| Microsoft SQL Server | 윈도우 환경 최적화, 기업용, GUI 관리툴 제공 | |
| MariaDB | MySQL에서 포크된 오픈소스, 활발한 커뮤니티 | |
| NoSQL DBMS | MongoDB | 문서 지향 DB, JSON 유사 BSON 포맷 사용, 유연한 스키마 |
| Cassandra | 분산형 컬럼 패밀리 DB, 대규모 데이터 처리 적합 | |
| Redis | 인메모리 키-값 저장소, 빠른 처리 속도, 캐시용 주로 사용 | |
| CouchDB | 문서 기반, RESTful API 지원 | |
| NewSQL DBMS | Google Spanner | 분산 SQL DB, 강한 일관성과 확장성 제공 |
| CockroachDB | 분산형, 내결함성 강함, SQL 지원 | |
| 그래프 DBMS | Neo4j | 그래프 데이터 모델 기반, 관계 중심 데이터 처리 최적 |
| Amazon Neptune | AWS 제공, 그래프 DB 서비스 |

데이터베이스 시스템은 데이터를 데이터베이스에 저장하고 관리해서 필요한 정보를 생성하는 컴퓨터 중심의 시스템이다. 데이터베이스 시스템은 다음과 같이 사용자(user) 또는 응용 프로그램, 데이터 언어, 데이터 관리시스템(DBMS), 데이터베이스(DB) 로 구성된다.
프로그램 : DBMS와 연동된 프로그램으로 사용자에게 프로그램을 제공하는 개발자도 포함된다.
데이터베이스 관리자(DBA) : DBMS 및 이와 관련된 하드웨어 , 소프트웨어를 관리한다. 단순히 DBMS를 사용하여 응용 프로그램을 개발하는 사람과는 달리 DB를 전문적으로 다룬다.
데이터 언어는 사용자 또는 응용 프로그램과 DBMS 간에 의사소통을 하기위한 언어이다. 데이터 언어 3가지로 구성되어있는데 데이터 정의어, 데이터 조작어, 데이터 제어어로 구성되어 있다.
데이터 정의어(Data Definition Language, DDL) : 데이터베이스 스키마를 정의하거나, 그 정의를 수정할 목적으로 사용하는 언어이다. 데이터베이스 관리자가 주로 사용하며 ,CREATE, ALTER, DROP 등과 같은 것들이 데이터 정의어이다.
데이터 조작어(Data Manipulation Language, DML) : 데이터를 검색, 삽입, 삭제, 변경하는데 사용하는 언어이다. 사용자 또는 응용프로그램과 DBMS 간의 인터페이스를 제공한다. 대표적인 조작어로는 INSERT, UPDATE, DELETE 등이 있다.
데이터 제어어(Data Control Language, DCL) : 데이터베이스를 올바르게 공용하게 하면서, 정확성을 유지하는데 사용하는 언어이다. 주로 데이터베이스 관리자가 사용한다. GRANT, REVOKE 등이 대표적이다. 참고로 GRANT문은 해당 DB 테이블을 다른 사용자가 접근하지 못하거나 접근하도록 권한을 주는 것이다. REVOKE는 부여된 권환을 회수하는 것이다.
각각의 예시는 다른 글에 작성해두었음.
우리가 흔히 알고있는, 여러 사람들이 데이터를 저장하고 공유하며, 불러오기위한 DB는 저장 데이터베이스이다. 이러한 저장 데이터베이스의 시스템을 전반적으로 담당하는 데이터베이스를 시스템 데이터베이스(데이터 사전)라고 한다.

다음과 같이 DB안에는 저장 데이터베이스와 시스템 데이터베이스(데이터 사전)가 있는 것이다.
시스템 데이터베이스는 데이터 사전이라고도 한다. 데이터 사전은 데이터베이스(저장 데이터베이스)에 포함된 모든 데이터 개체에 대한 정의와 명세에 관한 정보를 유지 관리하는 시스템이며, 데이터에 관한 데이터라는 의미의 메타 데이터이다.
또한, 데이터 사전에 수록된 데이터를 실제로 접근하는데 필요한 정보를 관리, 유지하는 시스템은 데이터 디렉토리이다.
개념 설명은 체계적으로 잘 되어 있는데,
DDL, DML, DCL 언급했으면 실제 SQL 예시가 필요함.
실제 DBMS 제품 언급도 필요함.
MySQL, PostgreSQL, Oracle, MongoDB 같은거. 실제로 어떤 시스템 쓰는지