본문 바로가기
IT 공부/스프링 부트

자바 용어 학습(2) - 데이터베이스(DataBase)

by 해모해모 2023. 8. 28.
728x90
반응형

안녕하세요, 해모해모입니다.

 

이번 포스팅은 데이터베이스에 대한 내용을 학습하려고 합니다.

 

데이터베이스에 대한 기본 개념과 관계형 데이터베이스(RDB), SQL(쿼리), NoSQL에 대해 설명해보고자 합니다.

 

데이터베이스(DataBase)란?
여러 사람이 공유하여 사용할 목적으로 관리하는 데이터의 집합입니다.

※ 데이터베이스 관리 시스템(DBMS) : DBMS는 데이터베이슬르 관리하기 위한 시스템의 이름입니다. 흔히 알고 있는 Oracle(오라클), MySQL, DB2 등을 얘기합니다.

클라이언트 - DBMS - 데이터베이스

위 그림에서 볼 수 있듯이 클라이언트는  SQL을 이용하여 요청을 하고, 데이터베이스에서 데이터를 넘겨주면 클라이언트는 응답을 받게 됩니다. DBMS는 이를 가능하게 해 주는 중요한 시스템입니다.

 

관계형 데이터베이스(RDB)란?
RDB(관계형 데이터베이스)는 Relational Database의 약자입니다. 관계형 데이터베이스는 행(row)과 열(column)로 이루어진 테이블로 관리하는 데이터베이스며, PK(Primary Key, 기본 키)를 사용하여 각 행을 식별할 수 있습니다.

테이블이라고 해서 딱히 엄청난 게 있는 것이 아닙니다. 우리가 주로 사용하는 '표'를 예시로 들 수 있습니다. 

 

  열1 열2
행1 행1.열1 데이터 행1.열2 데이터
행2 행2.열1 데이터 행2.열2 데이터

테이블을 위처럼 표라고 생각하면 편합니다. 데이터를 넣어서 좀 더 구체적으로 살펴보겠습니다.

ID 이름 나이 이메일 주소
USER1 김철수 22세 user1@abc.com
USER2 고길동 26세 user2@def.com
USER3 홍길동 29세 user3@ghi.com

위 표에서 보면 ID, 이름, 나이, 이메일 주소는 각각 column1, column2, column3, column4를 의미합니다.

USER1, USER2, USER3는 row1, row2, row3을 의미합니다. 기본 키인 PK는 ID로 지정하여 ID가 USER1이면 첫번째 행, USER2면 두번째 행, USER3면 세번째 행 이런 식으로 각 행을 식별할 수 있습니다.

 

SQL이란?
SQL은 Structured Query Language의 약자로, 데이터베이스에서 데이터를 추출하고 조작하는 데 사용하는 데이터 처리 언어입니다. 일상에서는 '쿼리'라고 부르곤 합니다.

예를 들어, 위 표에서 "ID가 USER1인 사람의 이름, 나이를 알려줘"라고 쿼리를 작성하면 "김철수", "22세"가 나올 수 있게 질의하는 언어라고 할 수 있습니다.
NoSQL이란?
NoSQL은 SQL을 안쓴다라는 의미라고 생각할 수도 있지만, 최근에는 Not Only SQL라는 의미로 사용되고 있습니다. 관계형 데이터베이스인 RDB는 데이터 조회, 수정, 삭제가 용이하지만 성능을 올리는 것이 쉽지 않습니다.

NoSQL 데이터베이스에서는 사전에 스키마를 정의하지 않아도 저장할 수 있으며, 작업을 진행함과 동시에 데이터를 정의하는 방식으로 빠르게 데이터를 작성하고 반복할 수 있습니다.

따라서 SQL이 관계형 데이터베이스라면 NoSQL은 여러 유형의 데이터베이스를 사용할 수 있다고 말할 수 있습니다. SQL이 구조화된 쿼리 언어였으므로, NoSQL은 구조화되지 않은 쿼리 언어라고 생각할 수도 있습니다.

데이터가 다양한데다가 많아서 RDB에서는 속도를 내기 쉽지 않기 때문에 NoSQL이 등장하여 성능을 높일 수 있었습니다.

NoSQL 데이터베이스는 크게 '키-값(Key-Value)', '문서(Document)', '그래프(Graph)', '컬럼 기반(Column-family)' 이렇게 4가지 모델로 나눌 수 있습니다.

NoSQL의 데이터베이스 시스템은 MongoDB, Hbase 등이 있습니다.

여기까지 데이터베이스의 기본 개념과 관계형 데이터베이스(RDB)와 RDB에서 데이터를 조작할 수 있는 구조화된 언어인 SQL, 그리고 SQL만을 사용하지 않는 데이터베이스 관리 시스템인 NoSQL까지 학습해 보았습니다.

 

다음 포스팅에서는 IP(아이피)와 PORT(포트)에 대해 학습하도록 하겠습니다.

728x90
반응형

댓글