일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- springboot
- 요리
- Spring Boot
- IntelliJ
- Git
- docker
- Web Server
- AWS
- php
- 맛집
- elasticsearch
- redis
- linux
- devops
- jsp
- Design Patterns
- tool
- javascript
- Oracle
- ubuntu
- Spring
- ReactJS
- Gradle
- java
- jenkins
- JPA
- db
- MySQL
- it
- laravel
- Today
- Total
목록db (36)
아무거나
BatchGetItem (WHERE IN) 정의 다수의 테이블 아이템을 hashkey, rangedkey 를 지정해서 가져올 수 있으나 결과값이 100개로 제한된다, 특정 rangedkey 로 다수의 아이템 검색이 필요하면 query 과 권장된다. BatchGetItem 은 조건식을 사용할 수 없고 쿼리 결과를 수정할 수 없기 때문에 상황에 따라 GetItem 과 적절하게 선택하여 사용하는것이 좋다. WHERE IN 절과 비슷하게 사용할 수 있다. 사용법(SDK) [build.gradle] ... implementation 'com.amazonaws:aws-java-sdk-dynamodb:1.12.239' ... [DynamoDBConfig.java] ... import com.amazonaws.serv..
파티션 (partition) 대량의 데이터를 테이블에 저장할 때, 물리적으로 별도의 테이블로 분리해서 저장시키는 기법 (단, mysql 내부적으로 분리되어 처리되기 때문에, 파티션이 얼마나 있든 사용자는 하나의 테이블로 보인다.) 특정 DML과 Query의 성능을 향상시키고, 주로 데이터가 실시간으로 쌓이는 데이터베이스 환경에서 효율적이다. 특히 Full Scan에서 데이터의 접근 범위를 줄여 성능 향상을 가져올 수 있습니다. 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들며, 각 파티션 별로 독립적으로 백업하고 복구할 수 있다. 다만, 테이블 간 Join이 일어날 경우 비용이 증가 하며 테이블과 인덱스를 별도로 파티셔닝 할 수는 없다. 파티션 종류 기본적으로 파티셔닝은 수평 분할과 수직 ..
Spring Boot 에서 aws-java-sdk-dynamodb 를 활용한 AWS DynamoDB 연동 (+Credentials Setting 포함) 먼저 AWS Credentials 설정을 application.yml 기반으로 하게된다면 중요키들이 노출하게된다. 그래서 보통 KMS(=Key Management System)를 통한 관리, 키값 암호화 관리, 서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용(Ex- ~/.aws/credentials) 등의 방법이 있으며 해당 내용에서는 서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용 하는 방법으로 진행하도록 한다. aws-java-sdk-dynamodb 를 선택한 이유 (=spring-data-dynamodb 의 단점) 2020.03.0..
JDBC란 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스 JDBC 작동 순서 JDBC 드라이버 로드 jdbc.drivers 라는 시스템 환경변수에 등록된 내용으로 함 class.forName() 메서드를 이용해서 직접 해당 클래스를 로드하는 방법 (대부분 사용) 데이터베이스 연결 Java.sql.Connection 에 정보를 입력하여 연결 Statement 생성 데이터베이스 연결로부터 SQL문을 수행할 수 있도록 해주는 클래스 Statement: 데이터베이스 연결로부터 SQL문을 수행할 수 있도록 해주는 클래스 PreparedStatement: SQL문을 미리 만들어주고 변수를 따로 입력하는 방식 (효율성이나 유지보수 측면에서 유리) SQL문 전송 {St..
AWS RDS MySQL VS Aurora Aurora란 AWS가 MySQL과 Postgresql을 호환해서 만든 RDBMS이다. 둘의 가장 큰 차이점은 Storage이며 Aurora는 Shared Storage를 사용하며 MySQL은 Binary Log 기반의 Replication 기반이 아닌 Storage와 Page 기반의 Replication을 사용 Aurora 장점 기본적으로 MySQL 및 PostresSQL 호환 가능하다. 스토리지 용량이 64TB까지 자동 증가된다. (RDS MySQL은 EBS 볼륨 할당을 직접 해야함) 3개의 AZ (가용 영역)에 대해서 6방향 복제를 지원한다 (6개의 스토리지 지원) Read Replica (읽기 전용 복제본)을 15개까지 지원한다 Read Replica에 ..
ORA-01795 항목의 수가 1,000개 넘어갈 경우 발생하는 에러 IN 구문 사용시 항목의 수가 1,000개가 넘어가면 에러가 발생한다. 해결1: 복수 컬럼 SubQuery 사용 WHERE (0, 비교컬럼) IN ((0, 조건1), (0, 조건2), (0, 조건3), ...) 해결2: Mybatis 기준 foreach 구문을 사용하는 경우 WHERE (1, A1.PROD_NO) IN (1, #{prodNo})
Spring Boot 환경에서 DatasourceConfig 설정 (Multi Connection 또는 추가 설정시 유용) DataSourceConfig 추가 [DataSourceConfig.java] package com.example.bkjeon.base.config; import java.util.HashMap; import javax.persistence.EntityManager; import javax.sql.DataSource; import lombok.RequiredArgsConstructor; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdb..
DB 관련 로그 의존성 추가 [build.gradle] ... // DB Log implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' ... ../resources/log4jdbc.log4j2.properties 파일 생성 [log4jdbc.log4j2.properties] # log4jdbc spy의 로그 이벤트를 slf4j를 통해 처리 log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator # 로그를 표시할 줄의 제한 0은 무제한 log4jdbc.dump.sql.maxlinelength=0 # log4jdbc의 드라이브 클래스 설정 log4jdbc..
1. 12g 이전 버전 SELECT ROW_NUM, LOG_NO, SVC_NM, DB_NM, TBL_NM, PROCDR_NM, CALL_URL, CALL_MTHD_SP_VAL, CALL_PARA_VAL, EXEC_TME, LOG_DESC, INPT_DM FROM ( SELECT ROW_NUMBER () OVER (ORDER BY INPT_DM DESC) AS ROW_NUM, LOG_NO, SVC_NM, DB_NM, TBL_NM, PROCDR_NM, CALL_URL, CALL_MTHD_SP_VAL, CALL_PARA_VAL, EXEC_TME, LOG_DESC, INPT_DM FROM TB_CM_OP_L ) WHERE ROW_NUM BETWEEN ((NVL(1, 0)-1) * 10 + 1) AND (NVL(..
MySQL에서의 인덱스: insert, update, delete의 성능을 희생하고 select의 성능을 향상(update, delete, insert의 행위가 느린것이며 해당 쿼리를 실행하기 위해 데이터를 조회하는 것은 인덱스가 존재하면 빠름) B-Tree Index(=Balanced Tree) 설계기준 개수는 3~4개가 적당 인덱스의 키는 길면 길수록 성능이 저하(인덱스 키란 데이터타입(ex: varchar, int ..)의 크기로 이해하면 되고, InnoDB Storage Engine에서 전체 인덱스 키 크기는 767byte이다.) 1개의 컬럼만 Index를 적용시 카디널리티(=Cardinality)가 가장 높은 것으로 잡는게 좋음(인덱스로 최대한 효율을 내기 위해서는 많은 부분을 걸러내야 한다. ..