[SpringBoot] 데이터베이스

도리도리·2023년 11월 6일
0

SpringBoot

목록 보기
5/9
post-thumbnail
post-custom-banner

데이터베이스

데이터베이스란?

데이터베이스는 데이터를 매우 효율적으로 보관하고 꺼내볼 수 있는 곳입니다.
데이터베이스를 사용하면 얻을 수 있는 가장 큰 이점은 굉장히 많은 사람이 안전하게 데이터를 사용하고, 관리할 수 있다는 것이다.

데이터베이스 관리자, DBMS

이때 데이터베이스를 관리하기 위한 소프트웨어 DBMS(database management system) 라고 합니다.
데이터베이스는 많은 사람이 공유할 수 있어야 하므로 동시 접근을 할 수 있어야 합니다.
이 외에도 많은 요구사항이 있는데요. DBMS는 이런 요구사항을 만족하면서도 효율적으로 데이터베이스를 관리하고 운영합니다.
흔히 데이터베이스라고 알고 있는 MySQL, 오라클(Oracle)은 사실 DBMS인것이죠.
DBMS는 관리 특징에 따라서

  • 관계형
  • 객체-관계형
  • 도큐먼트형
  • 비관계형

등으로 분류합니다.
가장 많이 사용하는 DBMS는 관계형입니다.

● 관계형 DBMS (relational DBMS, RDBMS)

여기서도 필자는 RDBMS 라고 부르겠습니다.
관계형이라는 말을 쓰는 이유는 이 DBMS가 관계형 모델을 기반으로 하기 때문인데요, RDBMS는 어렵게 생각할 필요 없이 테이블 형태로 이루어진 데이터 저장소를 생각하면 됩니다.
예) 회원테이블 있다고 가정 한다면 각 행은 고유의 키, 즉 아이디를 가지고 있고 이메일, 나이와 같은 회원과 관련된 값들이 들어갑니다.

회원테이블

ID이메일나이
1a@test.com10
2b@test.com20
3c@test.com30

이때 데이터 1, a@test.com, 10 을 묶어서 한 줄을 행이라고 하고, ID, 이메일, 나이와 같은 구분을 열이라고 합니다.

꼭 알아야 할 데이터베이스 용어

  • 테이블
    • 데이터를 구성하기 위한 가장 기본적인 단위입니다.
    • 행과 열로 구성되며 행은 여러 속성으로 구성됨.
    • 테이블의 가로로 배열된 데이터의 집합을 의미합니다.
    • 행은 반드시 고유한 식별자인 기본키
    • 행은 레코드(record) 라고 부릅니다.
      예를들어 ) 회원 테이블이 있다고 할 때 ID가 1번인 회원의 이메일, 나이 같은 정보가 모여있는 집합이 1번 회원에 해당 할 수 있다.
    • 행에 저장되는 유형의 데이터
    • 열은 각 요소에 대한 속성을 나타내며 무결성을 보장
      예를들어 ) 지금의 경우 이메일은 문자열, 나이는 숫자 유형을 가집니다. 이메일 열에 숫자가 들어가거나, 나이 열에 문자 열이 들어갈 수 없기 때문에 데이터에 대한 무결성을 보장합니다.
  • 기본키
    • 행을 구분할 수 있는 식별자
    • 테이블에서 유일해야 하며 중복 값을 가질 수 없음.
    • 보통 데이터를 수정하거나 삭제하고, 조회할 때 사용되며,
      다른 테이블과 관계를 맺어 데이터를 가져올 수 있음
    • 기본키의 값을 수정되어서는 안되며 유효한 값이어야 함.
    • 즉 NULL이 될 수 없음.
  • 쿼리
    • 데이터베이스에서 데이터를 조회하거나 삭제, 생성, 수정 같은 처리를 하기 위해 사용하는 명령문입니다.
    • SQL이라는 데이터베이스 전용 언어를 사용하여 작성합니다.

ORM이란?

ORM(object-relational mapping)

자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법입니다.

예를들어 )
데이터베이스에 age, name 컬럼에 20, 홍길동이라는 값이 들어있다고 생각해보죠.

이것을 자바에서 사용하려면 어떻게 해야 할까요?

아마 다른 방법이 필요할 겁니다. 보통은 SQL이라는 언어로 데이터를 꺼내 사용하죠.
그러면 SQL을 새로 공부해야 하니 골치가 아픕니다...

자바코드-ORM-RDB
[intage=20Stringname="홍길동"][ORM][agename20홍길동]\begin{bmatrix} int & age = 20 \\ String & name = "홍길동" \end{bmatrix} - \begin{bmatrix} ORM \end{bmatrix} - \begin{bmatrix} age & | & name \\ 20 & | & 홍길동 \end{bmatrix}

ORM이 있다면?

하지만 ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용할 수 있습니다.
쉽게 말해 SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근해서 원하는 데이터를 받아올 수 있죠. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구를 ORM이라고 합니다.

ORM 장점과 단점

  • 장점
    • SQL을 직접 작성안해 사용하는 언어로 데이터베이스에 접근할 수 있음
    • 객체지향적으로 코드를 작성할 수 있기 때문에 비즈니스 로직에만 집중할 수 있음.
    • 데이터베이스 시스템이 추상적되어 있기 때문에 MySQL에서 PostgreSQL로 전환한다고 해도 추가로 드는 작업이 거의 없습니다. 즉, 데이터베이스 시스템에 대한 종속성이 줄어든다.
    • 매핑하는 정보가 명확하기 때문에 ERD에 대한 의존도를 낮출 수 있고 유지보수할 때 유리하다.
  • 단점
    • 프로젝트의 복잡성이 커질수록 사용 난이도도 올라갑니다.
    • 복잡하고 무거운 쿼리는 ORM으로 해결이 불가능한 경우가 있습니다.
profile
개발자에 꽃
post-custom-banner

0개의 댓글