일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 포톤
- c#
- 유클리드호제법
- 순열
- Unity3d
- UE4
- FSM
- 스파르타내일배움캠프
- 이분탐색
- UnrealEngine
- 스택
- 워크플로
- Unity
- unityui
- QueryDSL
- 알고리즘
- 스파르타내일배움캠프TIL
- 해시
- 구현
- Photon
- 유니티
- Inventory
- BFS
- 내일배움캠프
- C++
- 언리얼엔진
- Firebase
- 프로그래머스
- 문자열
- Unity2D
- Today
- Total
개발 낙서장
데이터베이스(DB, DataBase) 본문
✅ 데이터베이스?
한 마디로 데이터의 집합 혹은 데이터의 저장소이다.
목적에 따라 저장소를 만들고 그 안에 데이터를 저장할 수 있게 하는 공간이다.
mysql에서 show databases; 커맨드를 입력하면 내가 생성한 DB들을 볼 수 있다.
이렇게 DB를 생성하고 그 안에 데이터를 저장하는 것이다.
✅ DBMS?
그렇다면 DB를 조작할 무언가가 있어야 하는데 DBMS가 그 역할을 한다.
DBMS(Database Management System)이란 데이터베이스를 관리하고 운영하는 소프트웨어 시스템이다.
DB는 한 사람, 한 컴퓨터에서 이뤄지지 않는다. 수많은 사람이 수많은 컴퓨터를 통해 DB에서 데이터를 읽고 쓰고 수정하고 삭제한다. 이런 동시 접속 및 데이터 공유를 가능케 해주는게 DBMS이다.
은행 서비스를 예로 들면 은행 직원이 계좌를 생성하고 조회하기도 하고, ATM 기기에서 통장 잔고를 확인하거나 돈을 넣고 빼기도 하고, 인터넷 뱅킹으로 다른 사람에게 송금하기도 한다.
이런 동시다발적 작업을 DBMS에서 관리하고 운영한다.
✅ DBMS의 종류
DBMS는 소프트웨어이다. 그래서 각자 목적에 맞게, 기능과 성능이 다른 수많은 DBMS가 있다. 가장 대표적인게 MySql이고 Oracle, MSSQL 등이 있다.
DBMS | 제작사 | 작동 운영체제 | 기타 | |
MySQL | Oracle | Unix, Linux, Windows, Mac | 오픈 소스(무료), 상용 | |
MariaDB | MariaDB | Unix, Linux, Windows | 오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듦 |
|
PostgreSQL | PostgreSQL | Unix, Linux, Windows, Mac | 오픈 소스(무료) | |
Oracle | Oracle | Unix, Linux, Windows | 상용 시장 점유율 1위 | |
SQL Server | Microsoft | Windows | 주로 중/대형급 시장에서 사용 | |
DB2 | IBM | Unix, Linux, Windows | 메인프레임 시장 점유율 1위 | |
Access | Microsoft | Windows | PC용 | |
SQLite | SQLite | Android, iOS | 모바일 전용, 오픈 소스(무료) |
✅ DBMS의 분류
DBMS는 종류도 여러가지지만 그 중에서도 구조적인 부분, 기능적인 부분에 따라 분류를 해놨다.
- 계층형(Hierarchical)
- 망형(Network)
- 관계형(Relational)
- 객체지향형(Object-Oriented)
- 객체관계형(Object-Relational)
현재는 RDB(Relational Database, 관계형 데이터베이스)가 가장 많이 쓰인다고 한다.
🌐 계층형 DBMS
계층형 DBMS는 1960년대에 등장한 첫 DBMS 개념이다. 말 그대로 계층적 구조(트리 형태)를 가지며 부모-자식 관계로 이루어져 있다.
처음 나온 DBMS이기 때문에 문제점이 많은데, 데이터 탐색이 어렵고(반드시 부모 노드를 거쳐 탐색해야 함) 데이터에 중복이 발생하기 쉬우며 데이터 탐색이 어렵기 때문에 추가와 수정, 삭제 작업이 비효율적이다.
🌐 망형 DBMS
망형 DBMS는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 등장한 DBMS이다. 계층적 구조를 가지지만 다른 노드들끼리도 연결된 DBMS이다.
데이터의 접근이 훨씬 수월하며 계층형 DBMS의 가장 큰 단점인 종속성 문제를 해결했지만 DB가 커질 수록 구조가 점점 더 복잡해지며 DB 수정이 어렵고 프로그래머가 DB의 모든 구조를 파악하고 있어야 한다.
🌐 관계형 DBMS
오늘날 DB를 생각하면 떠오르는 구조가 관계형 데이터베이스이다. DB 안에 테이블이라는 단위로 나눠져있으며 테이블은 열(column)과 행(row)으로 이루어져 있다.
많이 사용되는 MySql이 관계형 DBMS이다.
기존에 사용하던 계층형, 망형 DBMS의 단점을 모두 해결했다. 각 테이블이 독립적이고 고유 Key를 통해 테이블 간 종속 관계도 가능하다. 또한 프로그래머가 DB의 모든 구조를 알 필요 없이 필요한 테이블 간 구조만 알고 있으면 된다. 고유 인덱스가 존재하기 때문에 데이터 탐색 속도 또한 빠르다. 그리고 데이터 무결성을 보장한다.
하지만 단점이 존재하는데 칼럼 변경이 쉽지 않고 관계가 많을 수록 쿼리가 매우 복잡해진다. 그리고 수평 확장이 불가능해 성능을 향상시키려면 수직 확장으로만 가능하므로 비용이 많이 든다.
참고 자료 : 한빛미디어 혼공학습단
'Java' 카테고리의 다른 글
단위 테스트 (1) | 2024.02.16 |
---|---|
[Spring] DTO와 Entity (0) | 2024.02.15 |
[Spring] Filter 예외 처리 (0) | 2024.02.05 |
[Spring] 쿠키와 세션 (0) | 2024.01.25 |
Jackson (0) | 2024.01.18 |