Today I Learned

Today I Learned

[Mysql, nGrinder] 캐싱 vs 파티셔닝 성능 비교 -1

서론개발 중인 스프링 프로젝트에서 캐싱과 파티셔닝을 적용해보았다.이전 글에서 캐싱으로 응답속도가 빨라진 것을 확인했는데, 과연 파티셔닝도 적용했을 때 성능이 좋아졌을까? 파티셔닝은 주로 대용량 테이블의 유지 관리를 돕고 테이블에서 대량의 데이터를 빠르게 로드하고 제거하는 방법을 제공하기 위해 설계된 기능이다. 파티셔닝은 쿼리 성능을 향상시킬 수 있지만, 그 성능 향상이 보장되는 것은 아니다.  캐싱과 달리 파티셔닝은 IDE만으로는 테스트하기 까다로워서 nGrinder 라는 성능 테스트 도구를 사용했다.     1. nGrinderhttps://github.com/naver/ngrindernGrinder는 네이버에서 제공하는 서버 성능/부하 테스트 오픈 소스 프로젝트이다.애플리케이션을 개발하고 nGrind..

Today I Learned

[Mysql, Spring JPA] 파티셔닝 적용하기

서론스프링 프로젝트에서 폐의약품 수거함 위치 정보를 저장하는 bin_location 이라는 테이블을 조회하는 시간이 오래 걸려서 파티셔닝을 적용해보기로 했다.이 테이블은 시/도를 의미하는 addr_lvl1 컬럼과 시/순/구를 의미하는 addr_lvl2 로 주로 조회가 되고, 추가/수정/삭제 되는 작업이 드물게 일어난다. 테이블은 처음에 csv, geojson 파일에서 정보를 가져와서 저장된다.addr_lvl1 컬럼의 값의 예: "서울특별시", "전라남도", "경기도"   1. 파티셔닝 적용 시행착오1) LIST COLUMNS 파티셔닝 시도 Mysql에서는 string형 컬럼을 파티션 키로 사용하려면 LIST COLUMNS를 이용해야 한다.String형인 컬럼 addr_lvl1 을 기준으로 파티셔닝을 하기..

Today I Learned

[WIL] Spring 입문 강의 3

1.컨트롤러, 서비스, 리포지토리의 역할 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 *아직 데이터 저장소 선정X --> 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 2.TDD란? 왜 하는가? TDD : 테스트 주도 개발(test-driven development), 선 테스트 후 개발 방식의 프로그래밍 방법. 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 ..

Today I Learned

[WIL] Spring 입문 강의 0~2

[필수 정리 내용] 1. MVC 패턴이란 MVC : model-view-controller. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분함. 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴 모델: 데이터와 비즈니스 로직을 관리 뷰: 레이아웃과 화면을 처리 컨트롤러: 명령을 모델과 뷰 부분으로 라우팅 예시) Controller @Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name..

falco_
'Today I Learned' 카테고리의 글 목록