티스토리 뷰
이번 블로그는 AWS에서 서비스 하는 RDS에 대해 적어보려 한다. RDS에 대해 간략히 설명해 보겠다.
- RDS란?
아마존 관계형 데이터베이스 서비스(Amazon Relational Database Service) 또는 아마존 RDS(Amazon RDS)는 아마존 웹 서비스(AWS)가 서비스하는 분산 관계형 데이터베이스이다.
그리고 애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순케 하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다.
데이터베이스 소프트웨어를 패치하거나 데이터베이스를 백업하거나 시점 복구를 활성화하는 것과 같은 복잡한 관리 프로세스들은 자동으로 관리된다.
스토리지와 연산 자원들을 스케일링하는 것은 하나의 API 호출로 수행할 수 있다.
요새 주식에 관심이 생겨 시시각각 변하는 주가를 한번 분석해 보려하다가 RDS를 알게 되어 이것을 사용해 분석해 보고 싶었다.
이번 블로그에서는 PostgreSQL을 구축해보고, Python에 구축 및연동을 하는 방법을 쉽게 익혀보는 시간을 가져보자.
- 들어가기에 앞서
전에 블로그에 남겨 보았던 EC2와 비슷해 보여 차이점을 찾아 보았는데 그 내용은 아래와 같다.
EC2는 내가 직접 리눅스 위에 사용하려는 DB(oracle,maria db, postgresql등)를 설치하고 그위에 서비스하
는 것이고 RDS는 EC2와 함께 사용하며 아마존에서 DB의 설정, 운영, 백업 등의 기능을 편하게 이용할 수 있
게 해주는 EC2와 분리된 DB전용서버라고 할 수 있다.
-RDS 생성하기
먼저 AWS에 접속하여 로그인을 하자.
Step.1 AWS 관리 콘솔 - 데이터베이스 - RDS 클릭!
Step.2 Dashboard - 데이터베이스 생성 클릭하기
Step 3. 데이터베이스 생성방식 - 표준 생성 클릭엔진 옵션 - PostgreSQL 클릭하기
Step 4. 템플릿 설정하기
프로덕션이나 개발/테스트 옵션을 할 경우 좀 더 높은 성능의 DB서버를 구축할 수 있다. 하지만 요금이 꽤
나갈수 있으므로 상황에 따라서 잘 알아보고 선택해 주는 것이 좋다.
이번 블로그는 일단 RDS 생성하는 방법을 위한 또 나의 공부를 위한 블로깅이기 때문에 프리티어로 템플릿
을 설정하였다.
Step 5. DB 정보 입력하기
이제 DB정보를 입력해보자. 여기서 좀 더 신경 써야 하는건 자격 증명 설정인데 마스터 사용자 이름과 마스터 암호는 Python 연결 시 꼭 필요하기 때문에 중요하다. 여기서 사용할 정보는 아래와 같다.
- 마스터 사용자 이름: postgres_test
- 마스터 암호: studypassword
Step 6. DB 인스턴스 크기 설정하기
다음으로 DB인스턴스 크기를 설정 해주자. 각각의 성능과 그에 따른 요금이 있으며 여기에선 db.t2.micro 버전을 사용하겠다.
Step 7. 퍼블릭 액세스 설정하기
퍼블릭 액세스 설정 부분이다. 이번에는 개인 데스크탑에 python 연결 하려고 하기 때문에 퍼블릭 액세스에 예를 해주었다. 사실 이는 어느정도 보안 문제로 충분히 위험할 수 있다. 이를 아니요로 했을경우에는 EC2에만 연결이 되게 된다. 실제 업무에 사용할 때는 전문가와 상의하고 설정해야 하는 것이 꼭 필요하다는 것을 명심하자.
Step 8. 데이터베이스 이름 설정
이제는 데이터베이스의 이름을 설정해주자. 이 역시 Python 연결 시 필요한 정보이다. 여기서 데이터베이스 정보는 다음과 같이 적어보았다.
추가 구성 tab 클릭 -> 초기 데이터베이스 이름: studydb 입력
Step 9. 월별 추정 요금 확인 및 데이터베이스 생성하기
이번 블로그에선 프리티어로 설정했기 때문에 비용이 발생하지 않지만 실제로는 월별 추정 요금이 나오게 된다.
Step 10. RDS 생성완료
사진에 보이는 것과 같이 DB를 생성하고 있는 모습을 볼 수 있다. 다소 시간이 좀 걸린다.
Step 11. 생성된 데이터베이스 정보 확인하기 (연결 및 보안 Tab)
RDS가 생성이 되면 해당 DB를 클릭하여 다음의 정보를 확인해보자. 우선 연결 및 보안 부분에서 엔드포인트와 포트 정보를 알아두어야 한다. 왜냐하면 python과 연동 시 꼭 필요하기 때문이다.
Step 12. 생성된 데이터베이스 정보 확인 (구성 Tab)
이곳에서는 생성한 DB의 정보를 확인할 수 있다. 이제 AWS에 RDS 생성이 완료되었다.
참고사항. RDS 사용 중지하는 방법
RDS 사용을 중지하기 위해서는 작업 필터에서 중지를 해주면 된다. EC2와 다르게 우클릭으로 작업 실행/중지가 아니다.
- Python 연결하기
마지막단계로 RDS와 Python의 연동을 확인해보자. psycopg2를 사용하고 이에 대한 자세한 정보는 다음의 출처를 참고하면 된다.
출처 : python으로 postgreql 데이터베이스 연동 간단 리뷰
- database: 초기에 설정한 database 이름
- host: RDS의 엔드포인트
- port: 포트 번호. PostgreSQL의 포트번호는 5432
- user: 마스터 사용자의 이름
- password: 마스터 암호
1. 연결하기
Postgres와 연결하기 위해서는 psycopg2 패키지의 connect메서드를 이용하면 된다.
conn=pg2.connect(database="studydb",
host="database-1.csky6gkw0wws.ap-northeast-2.rds.amazonaws.com",
port="5432",
user="postgres_test",
password="studypassword")
정상적으로 생성이 완료되면, 추가적으로 cursor라는 인스턴스를 만들어서 그 인스턴스를 통해 데이터 조작을 진행하자.
cur = conn.cursor()
cur
2. 변경하기
이제 생성한 cursor를 통해 데이터베이스와 연동을 해보자. 먼저 데이터를 입력 및 조회하기 위한 간단한 테이블을 생성하자.
cur.execute("CREATE TABLE test1 (id serial PRIMARY KEY, num integer, data varchar);")
CREATE TABLE명령어를 이용하여 테이블 생성을 시킨다.
간단하게 한 개의 Row를 입력해보자.
cur.execute("INSERT INTO test1 (id, num, data) VALUES (%s, %s, %s);", (1, 100, "data01") )
execute 메서드의 첫 번째 파라미터는 실행시키려는 SQL문을 지정한다. 하나의 데이터를 포함한 완벽한 SQL를 사용해도 가능하고 위의 예제처럼 파라미터를 따로 지정하는 것도 가능하다.
3. 조회하기
select문도 execute메서드를 이용하여 쿼리를 실행시킨다.
fetchone(), fetchmany(), fetchall() 3개의 메서드가 있다. fetchall() 같은 경우 아주 큰 테이블에 실행할 경우 문제가 생길 수 있으니 잘 고려해서 사용하자.
cur.execute("SELECT * FROM test1")
(id, num, data) = cur.fetchone()
print(f"{id}, {num}, {data}")
4. 해제하기
사용이 완료된 인스턴스들은 해제하는 것이 좋다.
cur.close()
'나만의 스터디' 카테고리의 다른 글
구글 코랩(colab) 시작하기. (0) | 2021.06.09 |
---|---|
Doker를 사용하여 Dash 생성하는 방법 (0) | 2021.06.08 |
Docker의 개념 및 이해하기 (1) | 2021.06.06 |
쉘스크립트를 작성하여 jupyter notebook 실행하기 (0) | 2021.06.04 |
AWS Ubuntu 환경에서 jupyter-notebook 설치방법 (0) | 2021.06.04 |