응용 프로그램에서 데이터를 효과적으로 관리하고 공유하기 위한 데이터베이스의 기본 개념과 대표적인 데이트베이스의 특징을 비교해보고 용도에 따라 적합한 데이터베이스를 선택하는 방법 또한 관계형 데이터베이스의 기본적인 개념과 주요 구성요소 및 용어를 배운다. 테이블에서부터 키와 제약 조건, 인덱스, 시퀀스 등을 이해하고 SQL을 배우기 전에 꼭 필요한 필수적인 개념과 용어를 살펴본다.
데이터베이스
데이터베이스는 데이터를 체계적으로 관리할 수 있도록 해주는 소프트웨어로, 대부분의 프로그램은 어떠한 형태로든 데이터베이스를 사용하고 있다고 볼 수 있다. 예를 들어 스마트폰의 주소록이나 메모, 응용 프로그램의 각종 정보는 스마트폰에 내장된 SQLite라는 데이터베이스를 사용하거나 네트워크를 통해 원격 서버의 데이터베이스를 연동해 동작한다.
데이터베이스
데이터 베이스(Database)는 사전적으로 여러 사람이 공유하여 사용할 목적으로 체계화하여 통합, 관리하는 데이터의 집합을 의미한다. 즉 데이터베이스는 방대한 데이터를 쉽게 검색하거나 찾을 수 있도록 체계적으로 분류하고 정리해둔 정보의 집합이라고 할 수 있으며, 디지털화된 정보만 의미하는 것은 아니다.
DBMS
현실적으로 데이터베이스는 컴퓨터의 도움 없이는 운영이 어렵기 때문에 DBMS(Database Management System)라고 불리는 소프트웨어 시스템을 사용하게 된다. 널리 알려진 Oracle, MySQL, IBM DB2, MS SQL 등은 모두 DBMS다.
DBMS는 효과적인 데이터 파일 관리와 운영을 위한 구조와 함께 인덱싱, 캐싱, 네트워크 서버, 사용자 및 관리 권한, 백업/복원, 클러스터링 등 다양한 기능을 제공한다.
데이터베이스와 데이터베이스 관리 시스템인 DBMS는 다른 의미이지만 보통 데이터베이스라고 하면 DBMS를 포함한 개념을 말한다.
데이터베이스의 일반적인 특징
- 데이터 중복을 최소화할 수 있다.
- 데이터를 쉽게 공유할 수 있다.
- 일관성, 무결성, 보안성이 유지된다.
- 최신 데이터를 유지할 수 있다.
- 데이터의 표준화가 가능하다.
- 데이터의 논리적 · 물리적 독립성이 유지된다.
- 데이터 접근이 용이하다.
- 데이터 저장 공간을 절약할 수 있다.
데이터베이스의 종류
데이터베이스는 데이터를 관리하는 구조의 특징에 따라 몇 가지 유형으로 구분된다. 그중 가장 대표적인 것은 관계형 데이터베이스이며 그 외에도 계층형, 네트워크형, 객체형, NoSQL형 등이 있다. 현재 대부분의 데이터베이스는 관계형 데이터베이스인데 최근 들어 NoSQL 형태의 데이터베이스 활용이 늘어나는 추세다.
관계형 데이터베이스
관계형 데이터베이스(Relational DataBase Management System, RDBMS)는 전통적이고 가장 보편적인 형태의 데이터베이스로 데이터 구조를 테이블(Table)이라고 하는 칼럼과 로우 구조로 정의하고 관리하며 SQL(Structured Qeury Language)을 사용해 데이터를 관리한다.특히 테이블과 테이블의 관계 지정을 통해 연관성 있는 데이터를 체계적으로 구조화할 수 있다.

Oracle, IBM DB2, MS SQL, MySQL 등이 관계형 데이터베이스로 유명하며 관계를 가지는 데이터 구조가 필요한 경우 가장 적합한 데이터베이스다.
관계형 데이터베이스의 장점
- 다양한 용도로의 사용이 가능하며 높은 성능을 보여준다.
- 데이터의 일관성이 보장된다.
- 정규화를 통해 갱신 비용을 최소화할 수 있다.
관계형 데이터베이스의 단점
- 데이터 구조의 변경(칼럼의 수정이나 확장)이 어렵다.
- 빠른 속도를 요구하는 단순한 처리에 대응하기 어렵다.
- 데이터 관계는 유용하지만 그로 인한 처리 속도 저하가 발생할 수 있다.
관계형 데이터베이스는 구조화되어 있고 동일한 구조를 가지는 데이터를 다룰 때 유리하다. 예를 들어 학생들의 성적을 관리하기 위한 학사정보 시스템은 학생정보, 성적정보, 강좌정보 등으로 구성되고, 성적정보는 학생정보, 강좌정보와 연결되는 구조를 가진다. 즉 성적 테이블은 학생의 학번과 과목코드, 성적 등을 가진다고 하면, 학생 테이블은 학생의 이름, 연락처, 학과 등의 세부 정보를 가지고, 강좌 테이블은 과목명, 담당교수, 학점, 강의시간 등에 대한 정보를 가지게 된다.
이처럼 각각 독립된 정보를 가지면서 필요할 때 관련 정보를 연계하는 구조의 경우에 관계형 데이터베이스가 적합하다.
NoSQL 데이터베이스
NoSQL은 말 그대로 SQL을 '사용하지 않는다(No)'는 의미로, 'SQL을 사용하는 전통적인 RDBMS가 아니다.'라는 의미로 사용되는 데이터베이스를 말한다. SQL과 다를 수 있지만 그럼에도 데이터 관리를 위해 별도의 쿼리 언어나 구조는 여전히 존재한다.
NoSQL은 RDBMS의 가장 큰 특징인 테이블 형태의 데이터 구조를 사용하지 않기 때문에 형태가 고정되지 않은 비정형 데이터 처리에 유용하다. 데이터 구조는 JSON 구조의 Document, Map구조의 Key-Value, Big Table 등을 사용하며 NoSQL 데이터베이스의 특징이 되기도 한다. 대표적으로 MongoDB, Redis, Casandra, Hbase, CouchDB 등이 있다.

NoSQL 데이터베이스의 장단점
- 대용량 데이터 처리에 유리하다.
- 분산 처리에 적합하다.
- 클라우드 컴퓨팅 환경에 적합하다.
- 빠른 읽기/쓰기 속도를 제공한다.
- 유연한 데이터 모델링(비정형)이 가능하다.
- 복잡한 데이터 관계를 표현할 때 중복 데이터가 발생할 수 있다.
관계형 데이터베이스와 달리 NoSQL은 모든 데이터가 동일한 구조를 가지고 있지 않은 경우 유리하다. 또한 빠른 처리 속도를 위해 필요한 데이터를 다른 테이블 등에서 참조하지 않고 데이터 자체에 포함하는 구조에 적합하다.
예를 들어 위의 학사정보 시스템을 NoSQL로 구성한다면 앱에서 필요로 하는 화면의 정보를 모두 담고 있는 문서 구조가 된다. 즉 학생정보, 강좌정보, 성적정보가 모두 하나의 문서에 포함된 형태다.
NoSQL은 일반적으로 데이터 구조화나 관리보다는 다양한 구조의 데이터를 빠른 속도로 처리하는 용도로 사용된다. 특히 데이터 발생량이 많고 과거보다는 현재의 데이터가 더 중요한 SNS나 모바일 앱 혹은 데이터 분석을 위해 일회성으로 대용량 데이터를 사용하는 경우에 적합하다.
나에게 맞는 데이터베이스 선택하기
주요 데이터베이스의 특징 비교
데이터베이스 | 종류 | 특징 | 적용 규모 |
Oracle | RDBMS | 가장 유명한 상용 데이터베이스다. 가격이 비싸고 운영을 위해 전문가가 필요하다. | 대규모 |
MySQL | RDBMS | 가장 유명한 공개 데이터베이스다. 오라클에 인수되었으며 무료 사용에 제약이 있다. | 중소규모 |
MariaDB | RDBMS | MySQL을 대체하는 오픈소스 데이터베이스다. MySQL의 오라클 인수로 인한 제약 문제를 해결한 대체품이다. | 중소~대규모 |
H2 | RDBMS | 경량의 자바 기반 데이터베이스다. 임베디드, 네트워크, 인메모리 등 다양한 운영이 가능하며 오픈소스다. | 소규모 |
MongoDB | NoSQL | 가장 유명한 NoSQL 데이터베이스다. 무료에서 상용, 클라우드 서버, 모바일 개발 등 다양한 옵션을 제공한다. | 중소~대규모 |
Firebase | NoSQL | 구글에서 제공하는 클라우드 데이터베이스다. 안드로이드, 프론트엔드 개발 및 구글 클라우드 연동에 최적화되어 있다. | 중소~대규모 |
※개인이 웹 혹은 모바일 개발을 공부하려는 용도에 적합한 데이터베이스를 선택하는 데 도움이 되는 몇가지 선택 유형※
우선 특별한 경우가 아니라면 Oracle, MS SQL, IBM DB2 등 대형 상용 데이터베이스는 배제한다. 커뮤니티 버전이나 대학생의 경우 무료로 사용할 수 있어 비용이나 라이선스에 대한 문제는 없을 수 있다. 하지만 이러한 데이터베이스는 기본적으로 대형 시스템에서 서비스 운영을 위해 만들어진 것으로 학습 단계에서는 다음과 같은 문제가 있다.
- 설치 과정이 복잡하거나 별도의 관리가 필요하다.
- 설치 용량이 크고 메모리를 많이 차지한다.
- 데이터베이스 운영 과정에서 발생하는 문제 해결에 불필요한 시간이 소요된다.
자바 및 자바 웹용 데이터베이스
일반적으로 자바 및 JSP, 서블릿 등의 자바 웹 프로그래밍을 배우는 과정에서 MySQL을 많이 추천한다. 커뮤니티 버전을 무료로 사용할 수 있으며, 설치가 비교적 간단하고 관리 도구도 제공하며, 온라인에서 많은 도움을 받을 수 있기 때문이다. 하지만 설치 과정이 다소 복잡하고 네트워크 서버 방식으로만 운영되기 때문에 어느 정도 관리가 필요하다.
H2 데이터베이스 장점
- 별도의 설치나 관리가 필요 없다.(JDBC 드라이버만으로 사용 가능하다).
- 임베디드 모드, 네트워크, 인메모리 등 다양한 운영이 가능하다.
- 앱 배포 시 포함이 가능하다.
- 용량과 메모리 사용이 적다.
- 표준 SQL을 모두 지원하고 JPA와의 연계도 용이하다.
H2는 거의 모든 표준 관계형 데이터베이스와 호환 가능하며 JDBC, JPA 등 모든 자바 데이터베이스 관련 기술 학습이 가능하다. 특히 스프링 프레임워크 개발이나 학습에도 많이 사용되고 있다.
'Programming > Web' 카테고리의 다른 글
[Web] H2 데이터베이스 (0) | 2022.10.24 |
---|---|
[Web] 관계형 데이터베이스(RDBMS) (0) | 2022.10.24 |
[Web] 서블릿 컨트롤러 설계 (0) | 2022.10.23 |
[Web] MVC 패턴 (0) | 2022.10.22 |
[Web] JSTL(JSP Standard Tag Library) (0) | 2022.10.22 |