상세 컨텐츠

본문 제목

#2. 관계형 데이터베이스 RDB, AWS RDS 사용

내일배움캠프 학습/Node.Js

by 남민우_ 2024. 12. 4. 20:33

본문

데이터의 저장

데이터를 저장하는 방식에는 여러가지가 있다.

가장 간단한 방법으로는 컴퓨터의 메모리에 직접 저장하는 In-Memory 방식이고, DB를 편리하게 사용하겠다 하면 NoSQL의 일종인 MongoDB 를 사용하는 방식이 있겠다.

하지만 이 MongoDB는 비관계형 데이터를 사용하기에 정형화된 데이터 처리나 복잡한 비즈니스 로직을 수행하기에 부족하다는 점이 있어 더 복잡한 SQL 쿼리를 작성하겠다 하면 관계형 데이터를 사용하는 RDB 를 사용해야 한다.

 

이번 파트에서는 이 관계형 데이터 학습을 위해 AWS의 RDS를 이용할 것이다.

관계형 데이터베이스 RDB

먼저 이 RDB가 무엇인지 간단하게라도 짚고 넘어가자.

하나의 데이터를 형식대로 나눠놓은 사진이다. 엑셀에 익숙한 사람이라면 이 표도 익숙하게 받아들여질 텐데 실제로 유사한 개념이라고 볼 수 있다.

 

엑셀에서의 한 개의 시트지를 RDB에서는 '테이블' 이라고 부를 수 있다.

이 테이블은 행/열을 가지며 서로 다른, 혹은 같은 데이터를 가질 수 있고 그 데이터 유형를 '컬럼' 이라고 부른다. 

따라서 한 개의 테이블은 여러 개의 컬럼으로 이루어져 있고, 여러 개의 테이블은 하나의 데이터 베이스를 구성한다 라고 이해할 수 있다.

 

연관 관계

또한 하나의 데이터베이스 안의 테이블들은 서로 연관 관계를 가질 수 있다.

한가지 예시를 들자면,  'Accounts' 라는 테이블이 있고 이 안에 Account, UserName 이라는 두 개의 컬럼이 있다. 또 다른 테이블인 'Characters' 테이블에는 CharacterName, Account 라는 두 개의 컬림이 있다고 해보자.

우리가 일반적으로 게임을 플레이 할 때를 생각해보면 하나의 계정을 만들고, 그 안에서 여러 개의 캐릭터를 만들 수 있다. 해서 계정 정보를 저장하는 Accounts 테이블과 계정 안의 캐릭터를 저장하는 Characters 테이블은 서로 '연관' 되어야 할 것이다.

이 연관 관계는 외래키 라고 부르는 Foreign Key 를 사용해 정의하긴 하지만, 이 부분은 추후에 다시 다루도록 하자.

중요한 점은 이렇게 다른 정보를 저장하고 있는 테이블끼리도 서로의 연관 관계를 가질 수 있고, 이를 관계형 데이터 베이스 RDB 라고 부르는 것이다.

 

RDS 구매, MySQL 세팅

먼저 MySQL 이란 오픈소스 관계형 데이터 베이스를 말한다. 오픈 소스이기 때문에 라이센스 비용이 따로 들어가지 않으며, 데이터 베이스를 관리하는 SQL을 사용하기 때문에 이번 실습에 적합해 사용한다.

 

그럼 RDS 는 무엇일까?

 

RDS

AWS(Amazon Web Service) 에서 제공하는 '관계형 데이터 베이스 서비스' 를 말한다.

서버 운영, 유지 보수, 백업 등 DB 관련 작업을 AWS에 위임하고 우리는 그 DB를 빌려올 수 있다. 해서 개발자는 DB에 정보를 저장, 조회 등 사용에만 집중할 수 있도록 하는 것이다.

 

데이터 베이스 생성

 

https://aws.amazon.com/ko/free/

 

무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어

이러한 프리 티어 혜택은 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과할 경우

aws.amazon.com

 

AWS 사이트의 주소이다.

여기서 우리는 RDS를 검색해 '데이터 베이스' 를 찾아 들어간다.

RDS로 들어가면 왼쪽 상단에 있다

이제 여기서 우리가 사용할 데이터베이스를 생성하는 과정을 진행한다.

템플릿의 경우 학습을 위한 과정이기 때문에 별도의 요금이 발생하지 않는 프리티어로 진행하였다.

자격 증명 설정 항목을 보면 기억해두어야 할 정보가 있따.

'마스터 사용자 이름' 과 '마스터 암호' 가 있는데, 이 두가지 정보는 VSCode 에서 사용할 DB를 받아오기 위해 알아두어야 하는 정보들이다.

물론 생성 이후에도 재확인이 가능하지만, 처음 접하는 사이트에 낯선 용어가 많다보니 찾는 과정이 다소 번거로웠다.

미리 기억해두면 좋을 듯 하다.

이후 인스턴스 구성 항목에서 DB 인스턴스 클래스를 정할 수 있다.

프리티어 사용과 마찬가지로 무료로 사용하기 위해 'db.t3.micro' 버전을 채택하였다.

db.t4 이상이나, db.t3의 다른 버전을 사용하면 별도의 요금이 발생할 수 있다고 한다.

 

이후로는 건드릴 것 없이 계속 진행하다가

추가 구성 항목이 있다.

'초기 데이터베이스 이름' 이 보이는데, DB 인스턴스 생성과 동시에 그 안에서 사용할 데이터베이스를 하나 만드는 것이다. 별도로 만들 수도 있지만, 이렇게 자동적으로 만들어주기도 한다.

 

이렇게 모든 설정을 완료했으면 데이터 베이스 생성을 마치고

생성 중 이라고 나타나는 모습을 볼 수 있다.

이 과정에는 약 5 ~ 10 분 정도 소요가 된다. 잠시 커피 한잔 내리고 와도 좋을 것 같다.

 

생성이 완료되었다면

이렇게 만든 DB 인스턴스의 정보를 확인할 수 있다.

여기서 '엔드 포인트' 라는 항목이 보이는데, 이 또한 VSCode 에서 DB 인스턴스에 접근하기 위해 알아두어야 하는 정보로 이 인스턴스의  실제 주소를 나타내는 항목이다.

 

이렇게 갓 만든 DB 인스턴스는 외부의 무차별적인 접근을 막기 위해 보안 설정이 걸려있다.

보안 항목에서 RDS 포트를 열어줘야 개발자 측에서 해당 포트를 통해 DB에 접근할 수 있다.

 

보안 - 인바운드 규칙 편집 으로 들어간다.

마찬가지로 학습을 위한 과정이므로 별도의 동작 없이 접근하기 위해 접근 가능한 IP 주소를 0.0.0.0 으로 설정해 모든 IP에서 접근 가능하도록 구성했다.

'포트 범위' 가 이제 우리가 사용할 포트 번호를 뜻하는데, 3306으로 설정해두었다. 이 포트 번호 또한 알아두어야 한다.

 

여기까지 과정을 진행했다면 DB 인스턴스를 준비해 IDE 프로그램과 연결할 모든 과정이 끝났다.

이제는 IDE, 지금 사용하고 있는 VSCode 에서 DB에 접근하는 과정이 필요하다.

 

VSCode 에서 MySQL 세팅

먼저 확장 프로그램을 설치해준다.

 

그렇게되면 왼쪽 하단에

다음처럼 나타나는 것을 볼 수 있다.

이 + 버튼으로 속성을 넣어줘야 하는데 여기에 위에서 언급한 정보들을 사용할 것이다.

 

처음으로 나타나는 것은 'host' 이다.

이 항목은 DB 인스턴스의 '엔드 포인트' 에 해당한다.

 

그 다음은 'user' 가 보인다.

DB 인스턴스를 생성할 때 사진에서는 root 로 설정했던 부분이 이에 해당한다.

 

그 다음은 'password' 이다.

마찬가지로 root 설정 바로 다음에 작성했었다.

그 다음에는 port number, 보안 속성에서 인바운드 규칙 편집을 통해 허용했던 포트 범위를 말한다.

우리는 3306으로 설정했었다.

 

마지막으로 이 항목이 나타나는데 실습에 크게 중요한 내용이 아니라 Enter 를 통해 넘어가주었다.

 

이 과정까지 모두 마치고 나면 

다음처럼 DB가 정상적으로 연결된 모습을 볼 수 있다.

'내일배움캠프 학습 > Node.Js' 카테고리의 다른 글

#6. ORM - Prisma  (0) 2024.12.17
#5. Raw Query  (1) 2024.12.13
#4. SQL 제약 조건  (0) 2024.12.12
#3. SQL 기초  (0) 2024.12.11
#1. 웹 브라우저, HTTP, 웹 서버/어플리케이션  (1) 2024.11.20

관련글 더보기