데이터 관리/Database
Docker로 Redis 설치하기
Docker로 Redis 설치하기
2021.12.17신규 서비스 개발환경 구성을 위해 AWS EC2에 Docker로 Redis를 설치했다. 사실 AWS ElastCache를 쓰면 오토스케일링이 가능하고 튼튼해서 좋은데, VPC 내에서만 접근이 가능하기 때문에 런칭 전까지는 EC2에서 Redis를 설치해서 사용하기로 했다. 도커 설치 $ sudo apt-get update && sudo apt-get upgrade // Set up Docker Repository $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dear..
복합키 VS 대표 ID PK
복합키 VS 대표 ID PK
2021.08.31데이터를 식별하기 위해 키(PK)를 이용합니다. 복합키는 데이터를 대표하는 키가 여러 개의 컬럼으로 구성된 것을 의미합니다. 데이터를 더욱 효과적으로 찾기 위해 키에는 기본적으로 PK 인덱스가 생성됩니다. 인덱스는 키의 위치를 정리해둔 것으로 키가 등록/삭제 되었을 때 키의 위치 기록을 하는 수고를 감수하고, 조회할 때의 성능 이점을 얻기 위해 사용됩니다. 이때 PK를 대상으로 인덱스가 자동으로 생성되는데, 이것을 PK 인덱스라고 합니다. 복합키의 경우 조회 조건의 컬럼 조합에 따라 쿼리 성능이 많이 달라지게 됩니다. 복합키 내에서는 일반적으로 카디널리티가 낮은 순에서 높은 순으로 인덱스를 구성하면, 사용하는 쿼리에서도 무난하게 사용이 가능합니다. 하지만 상황에 따라 인덱스의 컬럼 순서를 변경하거나 추가..
DBCP(Database Connection Pool) 이해
DBCP(Database Connection Pool) 이해
2021.04.07Connection pool 이란? Connection pooling 은 데이터 접근 패턴 중 하나로, 주 목적은 데이터베이스 접속하여 작업하는 데에 과부하를 줄이는 것이다. 사용자의 요청에 따라 Connection을 생성하다 보면 동시에 많은 수의 연결이 발생했을 때 서버에 과부하가 걸리게 된다. 이러한 상황을 방지하기 위해 미리 일정수의 Connection 을 만들어 pool에 담아 뒀다가 사용자의 요청이 발생하면 연결을 해주고 연결 종료 시 pool 에 다시 반환하여 보관하는 것이다. DBMS로의 연결이 오래 걸리며 DB 작업을 할 때마다 Connection ~ Close 까지의 반복 작업이 비효율적이기 때문에 Connection pool에 Connection 객체를 생성해 놓고 DB 작업 시 po..
Mac OS 오라클 설치하기
Mac OS 오라클 설치하기
2021.02.28간단 요약 (모든 설치파일은 오라클 공홈 다운 가능) JDK 8 이상 설치 Oracle VM Virtual Box 다운로드 Oracle DB Developer VM 다운로드 및 실행(Oracle 접속) Virtual Box 접속 후 Oracle VM 실행(power off 상태) 맥북에서 oracle sql developer tool 설치 후 접속 발생한 에러 Mac에서 설치 시 DB connection 시 Locale 문제로 연결되지 않는 이슈 Mac Locale not recoginized 블로그를 통해 해결 설치 참고 문서 추천문서 : 공식문서보다 친절하며 다음스텝까지 안내되어 있음 공식문서 : 최소 요구 사양, 최신 정보 확인은 공식문서를 참고하는 것을 추천
카디널리티와 복합키 순서 그리고 PK Index
카디널리티와 복합키 순서 그리고 PK Index
2020.10.12PK 복합키 순서에 따라 인덱스가 타지 않을 수 있다! JPA는 복합키를 생성할 때 컬럼명의 알파벳 순으로 생성한다. Entity Class에 정의된 순서로 생성되는 게 아니기 때문에 조회할 때 기대했던 PK Index가 타지 않을 가능성이 높다. 먼저 PK index 실행 조건에 대해 알아보겠다. PK 인덱스 실행 조건 (MySQL/Oracle) DB에 테이블을 생성할 때 PK Key 들에 대해서 자동으로 Index를 생성해준다. 이를 PK 인덱스라고 한다. 생성된 PK 순서대로 PK Index가 적용되기 때문에 큰 범위에서 작은 범위의 컬럼으로 나열하는 것이 좋다. 아래와 같은 테이블이 있을 때, 조회 조건에 어떤 PK컬럼을 매핑하느냐에 따라 옵티마이저가 PK Index를 탈지 말지 결정한다. PK ..
ORACLE SQL paging 처리
ORACLE SQL paging 처리
2017.03.21Select outer_paging_tbl.* From ( Select rownum as paging_seq , inner_paging_tbl.* From ( 쿼리쿼리쿼리 ) inner_paging_tbl.* Where rownum = (:request_page-1) * (:row_cnt)+1
Oracle instr 함수로 문자열 자르기
Oracle instr 함수로 문자열 자르기
2017.02.14Oracle instr 함수는 문자열(텍스트)에서 특정 문자의 위치를 리턴해주는 함수입니다. instr 함수와 substr 함수를 함께 사용하여 특정 문자를 기준으로 텍스트를 파싱하여 가져올 수 있습니다. 아래와 같이 '|' 기호로 구분되어 있는 문자열이 있을 때, '|' 기호의 위치를 찾아 substr 함수를 이용하면 내용별로 잘라올 수 있겠죠.12SELECT 'Start|안녕,|반가워!|End' FROM dualcs 이제 '|' 기준으로 문자열을 잘라서 가져와봅시다. 123456789SELECT 내용 , SUBSTR(내용, 1, INSTR(내용, '|', 1, 1) - 1) AS a , SUBSTR(내용, 1, INSTR(내용, '|', 1, 1) + 1, INSTR(내용, '|', 1, 2) - I..
Oracle CLOB 컬럼 Select 시 주의사항 (ORA-06502)
Oracle CLOB 컬럼 Select 시 주의사항 (ORA-06502)
2017.01.24Oracle CLOB 컬럼은 Oracle 버전 10g 이후로 지원되는 LOB 타입의 종류 중 하나로, 문자열이나 이미지 데이터를 4GB까지 저장할 수 있습니다.어느 날 화면에서 처리한 데이터가 DB에 정상적으로 들어가있는지 확인하기 위해 Orange에서 CLOB 컬럼을 조회해봤습니다.서비스 Log나 화면 IO를 보면 데이터를 정상적으로 DB에 넣는 것 처럼 보이는데, Orange에서 Select로 조회해보면 일부가 깨져서 보이거나 데이터가 잘리는 현상이 있었습니다. [현상]입력한 값 : 안녕하세요? 테스트 데이터입니다.Orange에서 조회한 CLOB 컬럼의 값 : 안녕하세요? 테스트 [원인]프로그램 오류라 생각하고 몇 시간 동안 로그도 뒤져보고, 비슷한 유형의 다른 프로그램도 테스트해보고 하다가 원인을 ..