본문 바로가기

TIL

[TIL 2024. 03. 20] 데이터베이스와 DBMS

컴퓨터의 보조기억장치는 '파일'과 '데이터'를 모두 저장합니다
파일은 파일 시스템에, 데이터는 데이터베이스에 저장되죠
파일 시스템이 칸 질러지지 않은 큰 창고와 같다면, 데이터베이스는 도서관과 같습니다


 

정보와 데이터 구분하기

정보란?
: 여러종류로 흩어져 있어서 조합하기 어려운 단위
-> ex. 카톡 실행파일 in 파일 시스템

데이터란?
: 정보를 체계적으로 분류하여 조합하기 용이한 단위
-> ex. 카톡 메세지 데이터 in 데이터베이스

 

 

데이터베이스

데이터베이스는 쉽게 말해 여러 응용시스템(프로그램)들이 공유해서 사용하는 데이터를 구조적으로 정리해서 통합해놓은 것이다. 따라서 데이터베이스는 여러 사용자에 의해 동시에 사용되고, 대규모일 수 밖에 없다.

 

데이터베이스가 저장하는 데이터의 종류는 프로그램 운영에 따라서 얻어지는 운영 데이터 뿐만 아니라 그 데이터 자체에 대한 설명인 '스키마' 혹은 '메타데이터'까지 포함한다.

그리고 우리는 데이터베이스를 통해 이 데이터들에 효율적으로 접근할 수 있고, 질의어를 통해 '질의'를 할 수도 있다

(cf. 스키마: 시스템 카탈로그 안에 저장되며, RDB의 경우에 컬럼을 사전에 정의하는 것을 말함. 변경이 어려움)

 

데이터베이스는 시스템 카탈로그와 저장된 데이터베이스로 구분된다

이때 시스템 카탈로그는 저장된 데이터베이스의 스키마 정보를 저장하고 있다

 

DBMS (Database Management System)

 

데이터베이스를 관리하는 소프트웨어로써, 데이터베이스 정의 및 질의어를 지원한다

 

DBMS의 기능은 여러가지가 있는데, 대표적인 것은 아래와 같다

  • 데이터베이스 생성 및 구조 명시(스키마)
  • 사용자가 데이터를 효율적으로 질의하고 수정할 수 있게 지원
  • 데이터 베이스를 위험으로부터 보호(고장, 권한없는 사용자)
  • 동시에 여러 사용자가 데이터베이스에 접근하는 것을 제어

이러한 여러 기능들을 수행하기 위해 기본적으로 DBMS는 데이터베이스 언어를 제공한다

대표적인 데이터베이스 언어가 SQL이다. SQL은 여러 DBMS에서 제공하는 사실상 표준 데이터베이스 언어라고 할 수 있다

 

DBMS의 언어는 크게 3가지(DDL, DML, DCL)로 정리할 수 있다

 

DDL(데이터 정의어, Definition)은 데이터베이스 스키마를 정의하는데 사용된다.

DDL이 사용되면 DBMS는 사용자가 정의한 스키마 명세를 시스템 카탈로그에 저장한다

구체적인 DDL로는 SQL에서의 CREATE, ALTER, DROP 등이 있다

 

DBL(데이터 조작어, Manipulation)은 사용자의 질의를 지원한다. 즉, 사용자는 DDL을 사용해서 데이터베이스에서 원하는 데이터를 검색, 수정, 삽입, 삭제할 수 있다.

대표적인 DML은 (SQL에서의) SELECT, DELETE, INSERT 등이 있다

 

DCL(데이터 제어어, Control)은 데이터베이스 트랜잭션을 명시하고, 권한을 부여하거나 취소하는데 사용된다

이런 특성 때문에 현업에서는 주로 DBA분들이 DCL을 주 사용자이다

데이터베이스와 DBMS

 

데이터베이스 유형

 

데이터베이스의 유형은 크게 2가지, 관계형DB와 비관계형DB로 나뉜다

 

관계형 데이터베이스 (SQL)

RDB에서는 테이블로 데이터들을 정리하며, 해당 데이터들은 '관계'를 가지므로 응용 프로그램들은 데이터베이스 내의 레코드(로우)의 순서와 무관하게 데이터를 조회해서 사용할 수 있다(질의어 사용).

즉, 사용자는 원하는 데이터만 명시하면, 어떻게 어디서 이 데이터를 찾을지는 DBMS가 알아서 해준다

 

여기서 말하는 '관계'의 예시는 다음과 같다

(예시1) A가 B에게 1000원을 송금한 경우, DB상에서 A계좌에서는 -1000원, B계좌에서는 +1000원이 된다

(예시2) 옷 수량(현황)이 100벌일 때, C가 옷 2벌을 사면 DB상에는 현황이 98벌로 감소한다

 

RDB의 기본용어

  • 테이블=릴레이션
  • 로우=레코드=튜플
  • 컬럼=속성=필드

로우의 수는 'Cardinality'라고 하며, 컬럼의 수는 'Degree'라고 한다.

 

컬럼이 최소 1개 이상이어야 테이블을 구성할 수 있으며(=유효한 Degree의 min은 1이다), 테이블의 스키마는 자주 바꿀 수 없으므로 테이블의 컬럼 또한 자주 바뀌지 않는다. 왜냐하면 스키마 변경시에는 변경사항이 모든 로우에도 반영되어야 하므로 데이터베이스 처리 자체가 중단되기 때문이다

또 (컬럼과 달리) 로우는 시간에 따라 계속해서 변할 수 있다

 

 

비관계형 데이터베이스(NoSQL)

NoSQL이라 함은 SQL이 아니라는 뜻이 아니라, Not only SQL의 약자이다

즉, SQL의 한계를 극복하기 위해 나온 데이터베이스 유형이 비관계형DB이며, SQL이 가진 장점 외에도 여러 장점을 가지고 있다는 의미이다

 

SQL의 한계를 극복하기 위한 새로운 DB인만큼, 전반적으로 더 융통성이 있고, 데이터 검색과 저장에 특화되어 있다

특히 NoSQL은 분산 환경의 데이터 처리를 더욱 빠르게 하기 위해서 개발되었다.

 

NoSQL의 특징은 '관계'를 정의하지 않는다는 것, 스키마에 대한 정의가 없고, key-value 형식을 지원한다는 것이다 

  • 문서형 : MongoDB
  • key-value형: Redis
  • wide-column store
  • graph형

'TIL' 카테고리의 다른 글

[TIL 2024. 03. 22] OSI 7계층  (0) 2024.03.22
[TIL 2024. 03. 21] 2차원 리스트: 총정리  (0) 2024.03.21
[TIL 2024. 03.19] 프로세스와 스레드  (0) 2024.03.19
[TIL 2024. 03. 18] CS(1)  (0) 2024.03.19
[TIL 2024. 03. 15] Tree 자료구조  (0) 2024.03.18