728x90
데이터베이스(Database, DB)란?
- 데이터베이스를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있습니다.
- 데이터베이스에는 일상생활 대부분의 정보가 저장되고 관리됩니다. 오늘 보내거나 받은 카카오톡 메시지, 인스타그램에 등록한 사진, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 아이스 아메리카노 등의 정보가 모두 데이터베이스에 기록됩니다.
DBMS란?
- 데이터베이스를 ‘데이터의 집합’이라고 정의한다면, 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS(Database Management System)라고 합니다. 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 합니다.
- 가까운 예로 은행의 예금 계좌는 많은 사람들이 가지고 있습니다. 여러 명의 예금 계좌 정보를 모아 놓은 것이 데이터베이스입니다. 은행이 가지고 있는 예금 계좌 데이터베이스에는 여러 명이 동시에 접근할 수 있습니다. 예금 계좌 주인, 은행 직원, 인터넷 뱅킹, ATM 기기 등에서 모두 접근이 가능하니까요. 이러한 것이 가능한 이유는 바로 DBMS가 있기 때문입니다.
DBMS의 종류
DBMS의 분류
- 계층형 DBMS
- 계층형 데이터 베이스는 데이터의 관계를 트리 구조로 정의하고, 부모, 자식 형태를 갖는 구조이다. 풀어서 말하면 상위에 레코드가 복수의 하위 레코드를 갖는 구조이다. 하지만 데이터의 중복이 문제가 생긴다.
- 망형 DBMS
- 망형 데이터베이스는 계층형 데이터의 데이터 중복 문제를 해결했고, 레코드간의 다양한 관계를 그물처럼 갖는 구조이다. 하지만 복잡한 구조 때문에 추후에 구조를 변경한다면 많은 어려움이 따른다.
- 관계형 DMBS
- 관계형 DBMS(Relational DBMS)는 줄여서 RDBMS라고 부릅니다. MySQL뿐만 아니라, 대부분의 DBMS가 RDBMS 형태로 사용됩니다. RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있습니다.
SQL: DBMS에서 사용하는 언어
- SQL(Structured Query Language)은 관계형 데이터베이스에서 사용되는 언어로, ‘에스큐엘’ 또는 ‘시퀄’로 읽습니다. 관계형 DBMS 중 MySQL를 배우려면 SQL을 필수로 익혀야 합니다. SQL이 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 갖습니다.
-
SQL vs NOSQL
SQL (Relational Database)
데이터를 엑셀과 같이 정해진 틀(데이터 스키마)에 따라 테이블에 저장합니다.
- 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
- 단점
- 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
- 대체로 수직적 확장만 가능함
- 제품 : MySQL, PostgreSQL, Oracle 등
NoSQL
SQL 진영보다 데이터를 자유롭게 다양한 형태로 저장합니다. (일반적으로 Schema-less, 즉 정해진 구조가 없고, 관계도 없습니다)
- 장점
- 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
- 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
- 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터 중복을 계속 업데이트 해야 함
- 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
- 제품 : Firestore, MongoDB, Redis 등
DB Naming Convention
DB 스키마를 작성할때도 이름을 잘 지어야합니다!
그러면 다음에는 이름짖기를 MySQL에선 어떤식으로 하는지 한번 알아보자.
'특강' 카테고리의 다른 글
[2022.12.02]정규화 (0) | 2022.12.12 |
---|---|
[2022.12.02]데이터베이스 설계 (0) | 2022.12.12 |
MySQL (0) | 2022.12.01 |