본문 바로가기

Database16

MongoDB 성능 개선을 위한 Index 설정 MongoDB 에서 인덱스를 설정을 하게 되면 보다 빠르게 조회가 가능하다. (다른 DB도 마찬가지) 하지만 인덱스 설정에 따라서 성능의 차이가 있음을 이해하며, 어떤 것들을 고려하며 인덱스를 설정해야 되는지에 대해서 정리한다. MongoDB 성능 개선을 위한 Index 설정 Index 란? 먼저 들어가기에 앞서 Index에 대해서 가볍게 알아본다. 인덱스란 DB의 검색을 빠르게 하기 위해서 데이터의 순서를 미리 정해해 두는 과정을 말한다. 자주 조회되는 필드를 따로 저장해서 조회 및 정렬 시의 속도를 빠르게 하는 기법이다. MongoDB Index? MongoDB에서는 고정된 스키마는 없지만, 원하는 데이터 필드를 인덱스로 지정하여 검색 결과를 빠르게 조회하는 것이 가능하다. 그렇기 때문에 MongoD.. 2023. 6. 12.
H2 Database 연동 및 콘솔 접속 방법 정리 (+runtimeOnly) 애플리케이션을 개발 할 때 초기 테스트 디비로 H2 데이터베이스를 많이 사용하므로 설정하는 방법을 정리하고 설정할 때 궁금했던 점을 같이 정리해논다. H2 Database 연동 및 콘솔 접속 방법 정리 (+runtimeOnly) H2 데이터베이스 테스트 시 사용 이유 설정방법을 정리 해놓기 앞서 왜 테스트 데이터베이스로 많이 사용하는지에 대해서 정리하려고 한다. H2 데이터베이스는 다음과 같은 이유로 애플리케이션에서 개발 및 테스트 목적으로 메모리 내 데이터베이스로 사용된다. 1. 경량 및 내장형 - 내장형 디비로 실행하는데 별도의 서버 프로세스가 필요하지 않다. 대신 스프링부트 애플리케이션 내에서 라이브러리로 실행되어 손쉽게 개발 및 테스트를 목적으로 사용할 수 있다. 2. 빠르다 - H2 디비는 속도.. 2023. 2. 22.
MongoDB - bulkWrite() 를 이용한 대량 쓰기 작업 처리 데이터의 싱크 맞추는 작업을 하기 위해 몽고디비에서 지원하는 bulkWrite 기능을 이용해서 작업하여 bulkWrite에 대해서 정리한다. MongoDB - bulkWrite() 를 이용한 대량 쓰기 작업 처리 bulkWrite 몽고디비에서 제공하는 bulkWrite()을 이용하면 단일 컬렉션에 대해서 대량 쓰기 작업 뿐만 아니라 업데이트 및 삭제 작업도 수행이 가능하다. (대량 삽입만이라면 isertMany()도 이용 가능) bulkWrite 기능을 이용할 때는 주의점이 있는데 bulkWrite 작업 시 방식이 두가지가 존재한다는 점이다. 첫번째로는 Ordered 방식으로 순서가 존재하는 작업 목록이고 두번째로는 그 반대인 Unordered 방식으로 순서가 존재하지 않는 방식이다. Ordered 방식.. 2023. 2. 18.
MySql char varchar text 정리 개발을 하던 중 히스토리성 데이터를 디비에 저장해야 될 일이 있었는데 그 중에 파라미터에 관련된 데이터를 저장해야되는 필드가 있었다. 동적인 데이터이기 때문에 가변성 타입인 varchar 타입으로 한 후 길이를 설정하려고 하는데 이게 상황에 따라서 길수도 있고 짧을 수도 있어 고민에 빠졌다. 정말 간단하게는 text 타입을 쓰게되면 이런 길이 고민은 할 필요 없어지지만 성능에 영향을 미치기에 최대한 신중히 고민 후 선택하기로 했다. 그 과정에서 알게된 내용을 정리한다. MySql char varchar text 정리 먼저 각각의 대해서 기본개념에 대해서 정리한다. char 고정 길이이다. 0~255까지 길이를 저장 가능하다. 고정 길이 만큼 디스크 공간을 차지한다. 저장 후 남은 공간을 채우기 위해 남은.. 2022. 10. 11.
MySQL - 특정 데이터 포함 확인 LOCATE / INSTR / LIKE 들어가며 MySQL을 통해 테이블에 문자열이 포함되어 있는지 확인하는 3가지 방법에 대해서 정리한다. INSTR 기능 MySQL의 LOCATE 함수를 사용하여 문자열에 특정 데이터가 포함되어 있는지 확인이 가능하다. LOCATE 함수는 LOCATE(substr, str)과 같이 두개의 인수를 사용한다. substr에는 문자열을 입력하고 str에 있는 문자열 substr의 검색 위치를 정수로 반환한다. 만약 substr에 str이 없다면 0을 반환한다. 추가적으로 LOCATE(substr, str, pos) 가 있는데 여기서 pos 위치로 예를들어 5를 적게 되면 문자열 5 이후에 주어진 str을 찾게 된다. 쿼리를 날려보면 다음과 같이 주어진 문자열을 포함을 하고 있다면 결과를 다 반환한다. INSTR .. 2022. 8. 19.
MySql - Datetime 과 Timestamp 차이점 및 날짜형 데이터 타입 정리 들어가며 mysql을 사용하며 날짜를 다루게 되면 타입으로 datetime과 timestamp 타입을 볼 수 있다. 시간을 넣어서 보면 둘이 동일한 시간이 찍힌다. 하지만 분명 용도의 차이가 있기에 데이터 타입이 나뉘어 있을 것. 그래서 둘의 차이점을 비교한 결과를 정리한다. 날짜형 데이터 타입 먼저 둘의 차이를 정리하기 앞서 날짜형 데이터 타입이 어떤 것이 존재하는지 알아본다. DATE 타입 - 날짜는 포함하지만 시간은 포함하지 않을 때 사용 - YYYY-MM-DD 형식 - '1000-01-01' 부터 '9999-12-31' 까지만 입력 가능 DATETIME 타입 - 날짜와 시간을 모두 포함하는 타입 - YYYY-MM-DD HH:MM:SS 형식 - '1000-01-01 00:00:00' 부터 '9999.. 2022. 4. 22.