반응형 데이터베이스8 [GoLang] 환경변수(.env) 설정 어느 프레임워크에서나 데이터베이스를 직접 연결할 때 데이터베이스 정보를 절대 코드에 직접 입력하지 않는다. 보안상 이슈 때문에 보통은 .env 안에 환경변수로서 정보들을 관리한다. (데이터베이스 뿐만 아니라 인증에 필요한 정보나 그 외 보안상 필요한 정보는 환경변수로 관리한다. 일단 go에서는 똑같이 루트 디렉토리에 .env 파일을 만들어준다. 그리고 필요한 정보를 입력해준다. 지금은 로컬에서 돌리지만 클라우드 디비를 활용할 경우 그에 맞는 정보를 입력해야한다. 그리고 디비를 연결할 때 env를 먼저 로드해줘야한다. err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } dbHost := os.Getenv("DB_HOST.. 2023. 12. 8. [MySQL] AWS RDS MySQL Too many connections 에러 프로젝트를 하던 중에 갑자기 위 에러가 떴다. 즉 모든 연결 가능한 커넥션들이 다른 clients 들에 의해 쓰이고 있다는 것이고 max_connect_errors 동안 커넥션에 실패하면 이후의 모든 커넥션이 블로킹이 되버린다. 일단 왜 커넥션을 확인해보니 현재 59개가 연결되어 있고 show variables like '%max_connections%'; 명령어를 통해 max_connections를 보니 60이였다. 참고로 이 RDS는 db.t3.micro이고 기본 max_connections는 66이라고 한다. 왜 커넥션 수가 증가 했는지도 파악하긴 해야겠지만 일단 당장 에러가 났으니 커넥션 수를 늘리려고 시도했다. 방법은 두가지인데 RDS 인스턴스 스펙을 db.t3.small로 올리던가(이러면 15.. 2023. 10. 5. [DataBase]inner join과 left join의 차이 지금까지 개발을 하면서 제일 많이 썼던 JOIN 방식 중 두개의 차이를 알아보고자 한다. 보통 JOIN 연산의 경우 데이터를 가지기 위해 테이블을 합치는 경우가 많은데 이 때 inner join과 left join을 많이 쓰게 된다. 이 두가지 방식의 차이점을 알아보자. 예시를 위해 개발하고 있는 프로젝트의 게시판 테이블과 게시판 댓글 테이블을 사용해 예시를 들겠다. 게시판 테이블의 행은 106개이고 댓글 테이블의 행은 52개이다. LEFT JOIN left join은 outer join의 일종이다. 여기서 중요한건 outer join은 합집합을 의미한다는 것이다. 따라서 왼쪽에 있는 테이블의 모든 행을 조회하게 된다. 쿼리를 이렇게 날리게 되면 왼쪽에 있는 테이블인 board 테이블의 모든 행을 다 조.. 2023. 5. 12. [NestJS]NestJS에서 Transaction(트랜잭션) 활용 프로젝트를 개발하면서 한 객체를 데이터베이스에 넣고 해당 인덱스를 활용하여 또 다른 insert 작업을 해야하는 상황이 발생했다. 만약 중간 단계에서 에러가 난다면 해당 작업 도중 발생한 insert를 모두 되돌려야 하는데 이럴 때 트랜잭션 단위로 묶어서 처리를 해줄 수 있다. 트랜잭션이 무엇인지 정리하고 프로젝트 도중 트랜잭션을 활용한 내용으로 공유하도록 하겠다. 트랜잭션(Transcation) 트랜잭션의 사전적 정의는 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위라고 말할 수 있다. 데이터베이스에서의 트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 엑세스를 하거나 응용프로그램이 갱신을 처리할 때 중단 될 수 있는 등 데이터 부정합을 방지하고자 할 때 사용한다. 예를 들.. 2023. 1. 27. 이전 1 2 다음 반응형