TL;DR
데이터 베이스 (Database, DB) 란 ? 데이터의 저장소
데이터 베이스 관리 시스템(DBMS)이란? 데이터 베이스를 운영하고 관리하는 소프트웨어
SQL 이란? 구조화된 질의 언어라는 뜻으로 관계형 데이터 베이스에서 사용되는 언어
NoSQL 이란? Not Only SQL의 줄임말로 관계형 데이터 베이스 이외의 형식을 총칭
데이터 베이스 DB
데이터 베이스가 존재하기 이전에는 파일 시스템을 이용해 데이터를 관리했다. 이때 어플리케이션과 상호 연동이 되어야 할 때 종속성
, 무결성
문제가 발생해 파일 시스템으로는 관리하기 한계가 있었다.
➡️ 데이터 베이스는 이런 데이터 관련 문제를 해결해주는, 조직화된 데이터의 모음을 의미한다.
✅ 데이터 베이스 특징
- 데이터 독립성
- 데이터 종속성 (Dependency)은 프로그램의 구조가 데이터의 구조에 영향을 받는 것으로, 데이터의 구조가 변경되면 프로그램까지 같이 바뀌어야 하므로 프로그램 개발과 유지보수가 어렵다.
- 물리적 독립성 : DB 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 새로 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
- 논리적 독립성 : DB는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.
- 데이터 무결성 (Integrity)
- 데이터의 내용이 본래의 의도와 다른 형식을 갖게될 때 무결성이 침해됐다고 말한다. 데이터가 여러 경로를 통해 들어오기 때문에 잘못된 데이터가 들어오는 경우를 의미한다.
- 데이터의 유효성 검사를 통해 구현한다.
- 데이터 보안성
- 인가된 사용자들만 데이터 베이스나 데이터 베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.
- 데이터 일관성
- 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.
- 데이터 중복 최소화 (Redundancy)
- 파일 시스템은 프로그램마다 데이터 공유가 안되는 경우가 많아서 같은 정보를 중복해서 저장하는 경우도 많다. 저장 공간의 낭비이기도 하지만, 데이터 관리 측면에서 같은 정보를 여러 공간에 보관하면 수정 시 모든 데이터를 수정해야 한다는 문제가 발생한다.
- 데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.
데이터 베이스 관리 시스템 DBMS 이란?
- 데이터 베이스의 데이터에 접근하여 사용할 수 있도록 해주는 소프트웨어
- 다수의 컴퓨터 사용자들이 컴퓨터에 수록 된 수 많은 자료들을 쉽고 빠르게 추가, 수정, 삭제 할 수 있도록 해주는 시스템
- 데이터 베이스 내의 정보를 검색하거나 정보를 저장하기 편리하고 효율적인 환경을 제공하는 것이 목적
- 정의, 조작, 제어 기능 수행
- 정의 DDL : DB 구조 정의(테이블, 속성)
- 조작 DML : DB 연산 처리(수정, 삭제, 검색)
- Select, Insert, Delete, Update
- 제어 DCL : 데이터 무결성 및 일관성 유지, 접근 권한 부여, 동시성 제어
- Commit, Rollback, Grant, Revoke
✅ DBMS 종류
- MySQL, MariaDB, Oracle, SQLite, DB2, SQL Server, PostgreSQL, ...
- 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류할 수 있으나 현재는 RDBMS를 제외하고는 거의 사용되지 않는다.
1️⃣ 계층형 DBMS
(HDBMS, Hierarchical DBMS)
- 처음 등장한 DBMS 개념으로 1960년대 시작됨.
- 트리 형태
- 처음 구성 완료 후 이를 변경하기 까다로움. → 현재는 사용하지 않음.
2️⃣ 망형 DBMS
(NDBMS, Network DBMS)
- 계층형 DBMS의 문제점 개선을 위해 1970년대 등장
- 하위 구성원들끼리도 관계를 갖는 유연한 구조로, 네트워크상의 노드로 데이터 구조를 표현하여 각각 노드가 서로 대등한 관계로 구성됨.
- 구성과 설계가 복잡하고 궁극적으로 데이터 종속성의 문제를 해결하지 못했다
👆 데이터 종속성 문제란? 프로그램의 구조가 데이터 구조에 영향을 받는 것을 의미.
3️⃣ 관계형 DBMS
(RDBMS, Relational DBMS)
- 데이터를 열과 행으로 구성된 테이블에 저장
- 각 열은 하나의 속성에 대한 정보를 저장하고, 행은 각 열의 데이터 형식에 맞는 데이터가 저장됨
- 테이블 구조와 데이터 타입 등을 사전에 정의하고, 해당 테이블에 알맞은 형태의 데이터만 삽입할 수 있다.
- 데이터 무결성 보장, 데이터를 중복 없이 저장
- 기존의 스키마 수정이 어려움, 데이터가 자주 변경되거나 명확한 스키마가 있는 경우 사용
- SQL을 이용해 속성(열)에 맞는 자료형으로 데이터 삽
- 트랜잭션(Transaction) 보장
: 다수 사용자가 데이터베이스를 동시에 접근하도록 허용하면서 데이터 베이스가 일관성을 유지하게 하는 기술
👆 SQL(Structured Query Language) 이란?
- 관계형 데이터 베이스에서 사용하는 언어
- 특정 회사에서 만드는게 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있음. 이를 표준SQL 이라고 함. 다만 표준 SQL이 각 회사의 DBMS 특성을 모두 포용하지 못하기 때문에 표준 SQL을 준수하되 각 제품의 특성을 추가한 SQL을 사용한다.
- RDBMS에서 모두 SQL이라는 언어를 사용하므로 RDBMS를 총칭해서 SQL이라고 부르기도 함
4️⃣ 비관계형 DBMS (NoSQL)
- 스키마가 없거나 느슨한 스키로 데이터 저장
- 데이터 질의 API 다양함
- 유연하고 확장성이 좋음
- 데이터를 자주 변경하지 않고 정확한 데이터 구조를 알 수 없는 경우 사용함
- 키-값 : Redis, 문서형(JSON, XML) : MongoDB
👆 비관계형 DBMS의 등장 배경
- 관계형 데이터 베이스는 20년 이상 데이터 베이스 시장을 지배했는데, 기술과 빅데이터 응용 프로그램이 발전함에 따라 SQL 기반 데이터베이스는 빠르게 확장되는 데이터의 양과 복잡해지는 데이터 구조를 처리하기에 한계에 부딪혔다. 이를 해결하기 위해 CPU나 메모리를 추가하는 방편을 사용했지만 이 방식은 비싸고 임시 방편일 뿐이었다.
- 대표적인 인터넷 기업이면서 대용량 단순 데이터를 많이 보유해 단순 대용량 데이터 처리에 대한 요구가 가장 많은 구글과 아마존에 의해 Bigtable과 Dynamo라는 논문이 발표되었고, 이 두 논문은 새로운 데이터 저장 기술을 만들어내는 시발점이 됐다.
- 결국 대용량 데이터 관리 작업에 필요한 유연하고, 확장 가능하며, 비용적으로 효율적이면서 높은 가용성을 가지는 데이터 베이스 스키마를 재설계하게 됐고, 이것이 NoSQL이다.