본문 바로가기

웹개발 - Back 관련/RDBMS

[DB] DB 관리 시스템 (DBMS) - DBMS 개요와 RDBMS, NoSQL

 

Topic = RDBMS 개념과 noSQL 등 데이터 베이스 관리 시스템에 대해 정리해보기

 


 

DBMS ( Data Base Management System )

 

DBMS?

데이터베이스 생성, 데이터 검색, 데이터베이스 업데이트 등의 데이터베이스 관리에 사용되는 기능(인터페이스)을 제공하는 것으로, RDBMS의 경우 SQL와 같은 쿼리 언어 등의 형태로 인터페이스를 사용할 수 있도록 지원한다.

 

DBMS의 주요 기능은 아래 기능들에 해당하며, 각 기능에 최적화된 여러가지 DBMS를 조합하여 사용하는 것이 일반적이다.

  • 데이터 구성 및 관리
  • 데이터 보안
  • 데이터 무결성 및 일관성
  • 동시 데이터 액세스 ( 락, 트랜잭션 )
  • 확장성 및 유연성
  • 비용 효율성

 

DBMS가 없다면? - 데이터의 독립성

파일 시스템 데이터의 경우에,  데이터를 파일 형태로 저장하고, 프로그램이 읽고 쓰는 작업에 해당 파일A 또는 폴더A에 의존하게 된다. 만약 확장, 개선 등에 의해 데이터의 구조 자체를 바꾸어야 할 때에는 파일A에 의존하던 데이터 저장, 읽기 등의 프로그램 들도 수정된 파일 B로 의존하도록 프로그램을 변경하고 재배포 해야 한다. 즉, 응용 프로그램과 데이터가 강하게 종속되게 된다.

 

[ 파일 시스템 데이터 예시 ]

[ // 예시 - Json 파일 A
    {"id": 1, "이름": "노트북", "가격": 1000},
    {"id": 2, "이름": "스마트폰", "가격": 800}
] 

[ // Json 파일 B ( 데이터 구조가 변경 되었으나 여전히 했으나 프로그램은 파일 A를 의존하고 있다.) 
    {"id": 1, "이름": "노트북", "가격": 1000, "판매중": true },
    {"id": 2, "이름": "스마트폰", "가격": 800, "판매중": true }
]
  • 데이터 구조를 변경했으나, 프로그램은 여전히 A 파일에 의존하고 있다.

 

DBMS

- 데이터가 어떻게 구조화되고 상호 연결되는지와 같은 데이터 간의 관계 관점을 나타내며, 실질적으로 파일 I/O 작업을 담당하는 논리적 구조인 데이터베이스와 데이터가 실제로 저장되는 위치와 값을 지닌 물리적 구조를 분리한다. 때문에 응용 프로그램이 운영중인 상태에서 데이터 구조를 변경하게 되도 동일한 논리적 구조에 추상화 된 구조를 통해 데이터에 접근하게 된다. 데이터와 프로그램의 종속성을 줄여, 독립성을 갖추게 된다.

 

∴ 요약하자면, 프로그램은 DBMS에 의존하게 되고, DBMS 는 데이터 상호작용을 추상화 해서 제공하는 구조가 되는 것이다.

 

 

DBMS의 종류를 알아보기에 앞서, 예전에 사용되던 계층형 데이터베이스 ( HDBMS ), 네트워크형 데이터베이스( NDBMS ) 는 관계형DB, NoSQL, 등의 발전으로 사용되지 않으므로 정리 X

 

[ DBMS 랭킹 ]

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com

 

 

 

RDBMS - 관계형 데이터베이스

 

RDBMS?

엑셀 시트와 같이 행과 열의 구조를 지닌 2차원적인 테이블 형태로 데이터를 저장하는 방식을 사용하며, 데이터베이스에SQL ( Structured Query Language )을 통해 접근 및 관리하는 형태이다.

 

테이블 내에서 각 행에 중복 값을 가질 수 없어 고유하게 식별하는 데 사용되는 고유 키 Column 을 갖고, 다른 테이블에서 해당 테이블의 고유 키를 참조하는 외래 키 컬럼을 사용함으로, 두 테이블 간의 관계를 설정한다.

 

[ RDBMS 관계 표현 예시 ]

 

  • 신뢰성, 데이터 무결성
    • 외래 키는 참조 무결성을 유지하여, 외래 키로 참조된 값이 반드시 참조가 된 테이블에 존재하는 고유키이어야 함을 보장한다. 만약, 야구부 테이블에 있는 학생 ID가 학생 테이블에 존재하지 않는 경우, 데이터베이스단에서 오류를 발생시킨다. 
  • 성능향상
    • student_name 과 같이 중복되는 데이터는 관계를 참조하여 사용하므로 데이터 중복이 줄일 수 있다.

 

 

 

스케일링

  • 수직적 스케일링 - 단일 서버 성능을 높이는 방식 ( CPU 업그레이드 )
  • 수평적 스케일링 - 서버를 추가하여 부하 분산 ( 데이터베이스 서버 추가 )


🚨RDBMS는 설계 특성상 데이터가 높은 결합도를 갖기 때문에 수평적 확장에 제한이 있다. 이를 극복하기 위해 NoSQL 데이터베이스와 같은 대안이 개발되며, 사용되고 있으며 샤딩(sharding) 같은 기술로 수평적 확장을 사용하기도 한다.

 

 

 

NoSQL

NoSQL?

다른 DBMS와는 다르게 NoSQL은 전통적인 관계형 데이터 베이스 시스템과는 다른 접근 방식을 가진 DB 의 범주를 나타낸다. NoSQL 의 범주에 속하는 DB 들은 다양한 데이터 모델을 지원하는 것이다.

  • 주로 수평적 확장을 염두에 두고  설계되어 데이터 저장방식과 구조가 유연하다.

 

 

📜 Document - oriented DB ( 문서 지향 DB )

Tool : MongoDB, Couchbase

  • Json ( Javascript Object Notation ), Bson ( Binary Json ) 등의 문서 형식으로 데이터를 저장한다. 각 문서에는 필드와 값 쌍이 포함되는 방식으로 데이터가 저장되고, 중첩 구조를 지원하므로 복잡한 관계나 계층적 데이터를 쉽게 저장하고 불러올 수 있다.

[ 데이터 예시 ]

{
  "_id": "12345",
  "name": "foo bar",
  "email": "foo@bar.com",
  "address": {
    "street": "123 foo street",
    "city": "some city",
    "state": "some state",
    "zip": "123456"
  },
  "hobbies": ["music", "guitar", "reading"]
}

🔐Key - Value DB

Tool : Redis, Memcached

  • 데이터가 키와 값의 쌍으로 저장된다. 주로 메모리에 데이터를 저장하고 복잡한 쿼리 기능 없이 동작하기 때문에 읽기 및 쓰기에 높은 성능을 제공하여, 캐싱 및 세션 관리에 사용된다.

[ 데이터 예시 ]

Key: user:12345
Value: {"name": "foo bar", "email": "foo@bar.com", "designation": "software developer"}

 

🧮Wide - column stores DB ( 열 기반 DB )

Tool : Apache Cassandra, HBase

  • 데이터가 열 단위로 저장되어 결측값( 성별 필드에 '홍길동' 과 같은 잘못 입력된 값 )과 중복 데이터 값들을 그 대신에 아주 작은 값으로 따로 표시하는 등의 데이터 압축 기술을 사용해 대용량 데이터를 저장하거나 분석할 때 효율적이다.
  • ✅ RDBMS 와의 차이점
    • RDBMS 의 모든 데이터는 사전에 정의된 스키마에 따라 구조화되어 있다. ( ex. 학생, 교사, 학부모 ) 반면에 열 기반 DB는 데이터를 칼럼으로 구성된 테이블 ( ex. [ 사용중인 핸드폰 Column ] - 갤럭시, 아이폰, 화웨이 ) 에 저장하기 때문에 스키마가 유연하다. 즉, 특정 열이 특정 행에 존재하지 않을 수 있다 - 담당과목 컬럼은 교사 엔티티만 갖고 있다

[ 데이터 예시 ]

 

 

📊Graph DB

Tool : Neo4j

  • 노드와 간선들의 조합으로 데이터를 저장하여 관계, 파이프라인을 표현하는데 주로 사용된다. 일반적으로 노드는 행위의 주체를, 간선은 행위에 해당하는 값을 저장한다.

 

[ 데이터 예시 ]

 

 

 

 

📗간단하게 특성만 정리해보고, 추후에 개별 DB 학습 시 자세하게 알아보기.

 

 

 

 

 

 


 

[ A. 오늘 복습한 내용 / B. 다음에 학습할 내용 ]

A. NoSQL에 특징을 배워보고, DB 전반적인 느낌에 30% 이해 하게 됨.

 

B. A의 나머지 70%의 이해...

 

 


 

 

 

[Reference]

[ NoSQL ]

 

What Is NoSQL? NoSQL Databases Explained

Learn what a NoSQL database is, why (and when!) you should use one, and how to get started using one.

www.mongodb.com

 

[ DBMS ]

 

SQL로 시작하는 데이터 분석 | 캐시 타니무라 | 한빛미디어- 교보ebook

실무에 꼭 필요한 분석 기법 총정리!데이터 준비부터 분석을 통한 인사이트 도출까지 데이터를 인사이트로 바꾸는 SQL 활용법 데이터 분석 역량은 분야를 막론하고 경쟁력을 갖추는 데 필수가

ebook-product.kyobobook.co.kr

 

[ RDBMS ]

 

Introduction of Relational Model and Codd Rules in DBMS - GeeksforGeeks

Relational Model: Relational model represents data in the form of relations or tables. Relational Schema: Schema represents the structure of a relation.

www.geeksforgeeks.org