
이 글은 "데이터베이스 개론" 책을 읽고 공부한 내용들을 두고두고 보기 위해 정리하는 글이다.
읽을 때마다 그 날의 내용들을 꾸준히 이어서 업데이트 할 예정이다.
🗓️ 2023.06.27 작성 ▽
과거에는 데이터를 관리하기 위해 파일 시스템이라는 소프트웨어를 이용
❗️ 파일 시스템
데이터를 파일로 생성/삭제/수정/검색하는 기능을 제공
운영체제와 함께 설치됨
별도의 구매 비용이 들지 않는다는 장점이 있으나 프로그램마다 파일을 따로 유지하는 특징 때문에 여러가지 단점이 있음
❗️ 파일 시스템의 단점
같은 내용의 데이터가 여러 파일에 중복 저장된다.
응용 프로그램별로 파일을 유지하기 때문에 같은 데이터가 여러 파일에 저장될 가능성
-> 데이터 중복성의 문제
데이터가 중복되면 저장공간이 낭비될 뿐 아니라 데이터 일관성과 데이터 무결성을 유지하기가 어려움
응용 프로그램이 데이터 파일에 종속적이다.
응용 프로그램은 결국 파일에 접근하여 데이터를 처리해야 하므로 사용하는 파일의 데이터를 구성하는 방법이나 물리적인 저장 구조에 맞게 작성되어야 함.
만약 파일 구조가 바뀐다면 응용 프로그램도 함께 변경해야 함.
-> 데이터 종속성
데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다.
일반적인 파일 시스템에서는 응용 프로그램 하나가 사용 중인 파일을 다른 응용 프로그램이 접근하여 사용할 수 있는 동시 공유 기능을 제공하지 않는다.
또한 데이터가 중복된 모든 파일의 보안을 같은 수준으로 유지하기도 어렵다.
응용 프로그램이 파일을 사용하는 도중에 장애가 발생하면 데이터를 일관된 상태로 회복하기도 어렵다.
응용 프로그램을 개발하기 쉽지 않다.
파일 시스템에서는 파일에 접근하여 데이터를 관리하는 모든 작업을 응용 프로그램이 담당
-> 개발에 어려움이 많다. 파일에서 데이터 읽기, 삽입하기, 삭제하기 등 기본적 데이터 관리 기능을 모두 포함해야 한다.
❗️ 데이터베이스 관리 시스템(DataBase Management System, DBMS)
파일 시스템의 데이터 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어
조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 이에 대한 관리를 담당
응용 프로그램 대신 데이터베이스의 데이터를 삽입/삭제/수정/검색
모든 응용프로그램이 데이터베이스를 공유하도록 해줌
사용자는 직접 또는 응용 프로그램을 통해 원하는 데이터가 무엇이며, 어떤 처리를 원하는지만 DBMS에 요청하면 됨
❗️ DBMS의 주요 기능
🗓️ 2023.06.28 작성 ▽
❗️ 데이터베이스 관리 시스템의 장점
데이터 중복을 통제할 수 있다.
데이터베이스에 데이터를 통합하여 관리
-> 데이터 중복 문제 해결
효율성 때문에 데이터 중복을 허용하는 경우에도 중복을 최소화하도록 통제
-> 데이터 일관성 유지
데이터 독립성이 확보된다.
응용 프로그램을 대신해서 데이터베이스에 접근하고 이를 관리하는 모든 책임을 짐
데이터베이스 구조가 변경되어도 응용 프로그램은 영향을 받지 않음.
-> 프로그램과 데이터베이스 사이에 독립성 확보
데이터를 동시 공유할 수 있다.
데이터베이스에 통합된 데이터를 여러 응용 프로그램이 공유하여 같은 데이터를 동시 접근할 수 있도록 지원
동시 접근 제어 기술 보유로 동일한 데이터를 각 응용 프로그램의 요구에 따라 다양한 구조로 제공
데이터 보안이 향상된다.
데이터베이스를 이용해 데이터를 중앙 집중식으로 관리
-> 데이터에 대한 효율적인 접근 제어
권한이 없는 사용자의 접근, 허용되지 않은 데이터와 연산에 대한 요청을 사전에 차단
사용자별로 접근 가능한 데이터베이스 영역을 제한하거나 접근 수준을 차별화
데이터 무결성을 유지할 수 있다.
데이터 무결성: 저장된 데이터 값의 정확성
ex) 학생의 성적이 100점인데 10점으로 잘못 저장
데이터에 대한 관리를 집중적으로 수행하면서 데이터에 대한 연산이 수행될 때마다 유효성을 검사
-> 데이터 무결성 유지
표준화할 수 있다.
데이터에 접근하는 방법, 데이터 형식과 구조 등을 표준화하기 쉬움
모든 응용 프로그램은 데이터베이스 관리 시스템이 미리 정한 표준화된 방식을 통해 데이터베이스에 접근
장애 발생 시 회복이 가능하다.
데이터 접근 및 처리 과정에서 장애가 발생해도 데이터 일관성과 무결성을 유지하면서 데이터를 장애가 발생하기 이전 상태로 복구하는 회복 기능을 지원
응용 프로그램 개발 비용이 줄어든다.
데이터에 대한 모든 관리를 응용 프로그램 대신 담당하기 때문에 응용 프로그램 개발 비용 절감
데이터베이스 구조가 변경되어도 응용 프로그램은 변경할 필요가 없어 유지 보수 비용 절감
❗️ 데이터베이스 관리 시스템의 단점
비용이 많이 든다.
구매 비용이 들지 않는 파일 시스템과 달리 데이터베이스 관리 시스템은 따로 설치해야 하므로 구매 비용이 소모됨
동시 사용이 허용되는 사용자 수에 따라 제품 가격 상승
복잡하고 다양한 기능을 제공하기 위해 컴퓨터 자원 또한 많이 사용
백업과 회복 방법이 복잡하다.
많은 데이터 양과 복잡한 구조, 여러 사용자에 대한 동시 공유 등의 이유로 장애가 발생했을 때 원인과 상태를 정확히 파악이 어려움
-> 복잡한 회복 방법
중앙 집중 관리로 인한 취약점이 존재한다.
데이터베이스 또는 데이터베이스 관리 시스템에 장애가 발생하면 전체 시스템의 업무 처리가 중단됨
데이터베이스에 대한 의존도가 높은 시스템일수록 가용성과 신뢰성에 치명적인 영향>
❗️ 1세대 데이터베이스 관리 시스템: 네트워크 DBMS / 계층 DBMS

네트워크 DBMS
노드와 간선을 이용한 그래프 형태로 구성하는 네트워크 데이터 모델
데이터 구조가 복잡하고 변경하기 어렵다는 단점
ex) 1960년대 초에 개발된 IDS
계층 DBMS
트리 형태로 구성하는 계층 데이터 모델
네트워크 DBMS보다 구조가 단순
복잡한 현실 세계의 모습을 명확한 트리 형태로만 표현하기 힘들고, 구조 변경이 어렵다는 단점
ex) 1960년대 후반에 개발된 IMS
🗓️ 2023.06.29 작성 ▽
❗️ 2세대 데이터베이스 관리 시스템: 관계 DBMS
데이터베이스를 테이블 형태로 구성하는 관계 데이터 모델을 사용
관계 데이터 모델은 데이터베이스를 단순하고 이해하기 쉬운 구조로 구성한다는 장점

1980년대부터 관계 DBMS가 주류가 되었고 1990년대에도 기술이 계속 확장되고 성능이 향상됨
현재까지도 널리 사용되고 있음
ex) 오라클, MS SQL 서버, 액세스, 인포믹스, MySQL, 마리아DB, ,,,
❗️ 3세대 데이터베이스 관리 시스템: 객체지향 DBMS / 객체관계 DBMS
객체지향 DBMS
1980년대 후반에 등장, 객체지향 프로그래밍에서 도입한 객체라는 개념을 이용해 데이터베이스를 구성하는 객체지향 데이터 모델을 사용
더 다양하고 복잡한 응용 분야 데이터를 관리하려는 사용자 요구를 충족시키기 위해 제안됨
데이터 저장은 물론, 데이터에 대한 복잡한 분석 및 처리 지원
ex) 오투, 온투스, 젬스톤, ,,,
객체관계 DBMS
관계 데이터 모델에 객체지향 개념을 도입한 객체관계 데이터 모델 사용
객체지향 DBMS와 관계 DBMS의 개념을 통합
기존 관계 DBMS로 분류된 제품들이 객체지향 기능을 지원하면서 객체관계 DBMS로 분류되기도 함
ex) 오라클
일반적으로 이해하기 쉬운 구조인 관계 DBMS가 많이 사용되지만 객체관계 DBMS의 사용도 늘고 있다.
❗️ 4세대 이후 데이터베이스 관리 시스템: NoSQL DBMS / NewSQL DBMS
수많은 사람들이 소셜 네트워크 서비스를 폭발적으로 이용하면서 사진, 동영상, 검색 로그와 같은 비정형 데이터가 대량으로 생산됨
이와 더불어 클라우드 컴퓨팅, 빅데이터의 개념이 등장
관계 DBMS는 이러한 빠른 속도로 증가하는 대량의 비정형 데이터를 처리하는 데는 비효율적
-> NoSQL DBMS의 등장
NoSQL DBMS
1998년에 처음 언급, 관계 DBMS를 적용하기 어려운 환경에서 선택할 수 있는 대안으로서의 의미를 갖게 된 것은 2009년 이후(Not Only SQL)
관계 DBMS가 장점으로 제시하던 안정성과 일관성 유지를 위한 복잡한 기능을 포기
데이터 구조를 미리 정해두지 않아 비정형 데이터를 저장하고 처리하는 데 적합
확장성이 뛰어나 여러 대의 서버 컴퓨터에 데이터를 분산하여 저장하고 처리하는 환경에서 주로 사용
ex) 몽고디비, H베이스, 카산드라, 레디스, 네오포제이, 오리엔트DB, ,,,
NewSQL DBMS
NoSQL의 많은 장점에도 불구하고 관계 DBMS를 온전히 대신할 수는 없다고 생각하는 사람이 다수
관계 DBMS(안정성, 일관성, 정형 데이터) vs NoSQL DBMS(확장성, 유연성, 비정형 데이터)
-> 안정성과 일관성을 유지하면서도 SQL을 이용해 다양하고 복잡한 데이터 처리를 편하게 요청할 수 있는 NewSQL DBMS 등장
-> 정형 및 비정형 데이터를 안정적이고 빠르게 처리
ex) 구글스패너, 볼트DB, 누오DB, ,,,
아직은 NewSQL이 시장에 진입한 지 얼마 되지 않아 관계 DBMS, NoSQL DBMS, NewSQL DBMS가 상호 보완하며 공종할 것.