반응형

https://quantgnu.tistory.com/6

 

퀀트 트레이딩 프로젝트

https://colab.research.google.com/drive/1c6Pz4rRr5ct1-kZrXIAca3PEk0PKuXMl?hl=ko#scrollTo=Zu9Q1JTMMy-l 퀀트기반 추천주 프로그램.ipynb Colaboratory notebook colab.research.google.com 군대에서 사지방을..

quantgnu.tistory.com

 

1. MySQL 설치

MySQL 설치와 관련된 내용은 구글링을 하면 찾아볼 수 있다.

무료로 이용할 수 있으면서 이전에 사용해본 경험이 있었기 때문에 MySQL로 선택을 하게 되었고

현재 진행할 프로젝트의 경우에는 AI와 관련된 내용보다는 주로 재무데이터나 가격데이터를 일단위로 활용하기 때문에, 데이터가 많지 않고 데이터간의 연관성이 중요해서 RDBMS를 선택하였다.

 

2. 외부 접속 계정 추가

create user 'id'@'%' identified by 'password';
FLUSH privileges;
grant all privileges on *.* to 'id'@'%';
FLUSH privileges;

외부 접속을 허용해 줄 계정을 생성하고, 해당 계정에 모든 권한을 부여해 준다.

colab 환경을 사용할 것이기 때문에, 로컬 컴퓨터의 데이터베이스에 접속하기 위해 설정 해 주는 것이다.

 

간단하게 적어놨지만, 실제로 필자는 해당 과정을 하는데 많은 시간이 소모되었다.

 

문제점 - 공유기 사용

공유기를 사용하게 되면, 공인ip와 내부ip가 존재하게 되는데 이때 내부ip가 아닌 공인ip를 이용해서 Mysql에 접속해야 하고, MySQL에 접속하기 위한 Port또한 열어 주어야 한다. 그리고 해당 포트에 접근 했을때 특정 내부ip와 연결시키기 위해 pc에서 사용하는 ip를 고정시켜주는 작업도 필요하다. 해당 내용에 대해서 너무 많이 다루게 되면 조금은 포스팅의 내용을 벗어나게 되는 것 같아 구글링을 참고하길 바란다.

 

또한 공유기를 하나가 아닌 두개 이상을 사용하는 경우가 있다. 필자의 경우에도 skt에서 인터넷을 설치해주고 가며 모뎀을 하나 설치해주고 갔는데, 해당 모뎀은 유선공유기이기 때문에 그것 또한 설정이 필요했다. 무선공유기 하나만 설정해주게 되면 제대로된 접속이 안될 수 있기 때문에 자신이 이용하고 있는 인터넷 통신사에서 설치해준 모뎀을 잘 확인하여 3306포트를 잘 열어주는 것이 필요하다.

 

2 - 1. MySQL 경로 변경 (필수X)

C드라이버의 용량이 부족한 관계로, 여유분의 SSD에서 데이터베이스를 실행 시키기 위해

경로가 C드라이브로 되어 있던 것을 E드라이브로 변경하려고 한다.

윈도우 작업관리자를 실행하여 먼저 MySQL을 찾아 중지시킨다.

 

C:\ProgramData\MySQL\MySQL Server 8.0\Data 폴더를 그대로 복사하여 E드라이브 옮긴다.

MySQL 폴더를 만들어 해당 폴더 안에 Data 파일을 복사해준다

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 파일을 메모장(관리자권한)으로 열어준다

이후 datadir을 찾아서 원래 것을 주석 처리하고 새로 옮긴 곳으로 경로를 저장한다.

그리고 MySQL을 다시 실행시켜 준다.

 

이렇게 한 뒤 WorkBench를 통해 경로를 확인해 보면

경로가 바뀌어 있는 것을 알 수 있다.

 

2 - 2. MySQL 데이터 복사 (필수 X)

이 프로젝트는 군대시절 사지방에서 하던 프로젝트로, 예전의 로컬PC에서 서버가 돌아가고 있었다.

전역을 한 뒤 컴퓨터의 파워 문제로 아예 성능 향상을 같이 하기 위해 pc를 바꿨고, 이후 MySQL을 설치하지 않고 있다가 이번에 설치하게 되어 이전PC에 있던 데이터를 ibd파일을 이용해 복사해야 하는 상황이 발생하였다.

 

하지만 기존 데이터가 없어도 크롤링을 이용해 수집하기 때문에, 이후의 과정만 따라하게 된다면, 새로운 데이터를 수집하는데는 문제가 없을 것이다. (하지만 과거의 데이터까지 이용하는 것이 더 많이 분석할 수 있기 때문에 기존의 데이터를 활용하려고 하는 것이다)

예전 파일을 확인해보면 이렇게 ibd파일이 생성되어 있는 것을 알 수 있다.

하지만 frm파일은 따로 없었기 때문에 테이블의 구조는 colab에 저장해두었던 sql을 이용해 복원하였다.

create table ktbl (
	kind varchar(4) Not Null,
    k_name varchar(20) Not Null,
    PRIMARY KEY (kind)
);

create table comtbl (
	c_code char(6) Not Null,
    c_name varchar(20) Not Null,
    c_kindlarge char(2) Not Null,
    c_kindsmall char(4) Not Null,
    PRIMARY KEY (c_code),
    FOREIGN KEY (c_kindlarge) REFERENCES ktbl (kind),
    FOREIGN KEY (c_kindsmall) REFERENCES ktbl (kind)
);

create table ftbl (
	c_code char(6) Not Null,
    f_date DATE Not Null,
    sales BIGINT NOT Null,
    gm BIGINT NOT Null,
    ni BIGINT NOT Null,
    asset BIGINT NOT Null,
    ca BIGINT NOT Null,
    cl BIGINT NOT Null,
    issued_shares BIGINT NOT Null,
    bps INT NOT Null,
    EPS INT NOT Null,
    PRIMARY KEY (c_code, f_date),
    FOREIGN KEY (c_code) REFERENCES comtbl (c_code)
);

create table prtbl(
	c_code char(6) Not Null,
	p_date DATE Not Null,
    price int not null,
    PRIMARY KEY (c_code, p_date),
    FOREIGN KEY (c_code) REFERENCES comtbl (c_code)
);

총 4개의 테이블로 이루어져 있으며, 해당 테이블의 자세한 내용은 해당 게시글의 가장 위 링크를 통해 프로젝트 시작으로 들어가보면 깃허브 링크가 있다, 해당 링크에 colab 문서를 통해서 작성해 둔 조금 더 시각적으로 표현된 markdown이 존재한다.

SET foreign_key_checks = 0;
ALTER TABLE comtbl DISCARD TABLESPACE;
ALTER TABLE ktbl DISCARD TABLESPACE;
ALTER TABLE ktbl DISCARD TABLESPACE;
ALTER TABLE prtbl DISCARD TABLESPACE;

외래 키가 있어서 삭제가 안될 수 있기 때문에, 우선 외래키 확인 조건을 false로 놔두고 ibd파일을 모두 삭제해준다.

기존 파일 -> 현재 경로로 복사

그리고 원래 가지고 있던 파일들을 복사하여 quantdb안에 넣어준다.

ALTER TABLE comtbl IMPORT TABLESPACE;
ALTER TABLE ktbl IMPORT TABLESPACE;
ALTER TABLE ftbl IMPORT TABLESPACE;
ALTER TABLE prtbl IMPORT TABLESPACE;
SET foreign_key_checks = 1;

그리고 옮긴 ibd파일을 적용시킨 후, 외래키 확인 조건을 True로 변경해주면 설정이 끝난다.

이렇게 설정이 끝난 뒤에는 colab에서 sql에 접근 할 수 있게 된다.


이후에는 Worbench는 거의 이용하지 않고 colab을 통해서 데이터를 insert, select 할 것이기 때문에 이번 포스팅은 여기서 마치고 다음 Part2로 찾아오겠습니다.

반응형
Posted by 진우식
,