데이터베이스3 데이터베이스 - 인덱스 데이터베이스의 인덱스란? 사전적 의미? 색인 - 쉽게 찾아볼 수 있도록 일정한 순서에 따라 놓은 목록 인덱스는 데이터베이스 테이블의 검색 속도를 향상시키는 자료구조이다. 우리가 책에서 원하는 내용을 찾는다고 가정하면, 책의 모든 페이지를 찾아보는 것은 시간이 많이 걸린다. 이를 위해서 책의 뒷편에는 핵심 키워드 기준으로 그 키워드가 어느 페이지에 있는지 알려주는 페이지가 있다. 밑의 사진은 이펙티브 자바 3판의 뒷편의 찾아보기 페이지이다. 키워드별로 그 키워드가 어디 있는지 볼 수 있다. 데이터베이스에서도 테이블의 모든 테이블을 다 탐색하면 시간이 오래 걸리므로, 데이터와 데이터의 위치를 저장해두는 자료구조를 따로 생성해서 이를 통해서 빠르게 데이터 조회가 가능한 것이다. 이것이 바로 데이터베이스의 인덱.. 2023. 4. 19. JPA에서 동시성 이슈 해결하기 트랜잭션 동시성 이슈 해결하기 이번 프로젝트에서 특정 컨텐츠를 클릭하면 조회수를 +1 해주는 기능이 있었다. 아래 그림에서 보는 것과 같이 유저가 특정 컨텐츠를 클릭하면 해당 컨텐츠의 조회수가 +1이 된다. 해당 프로세스에서 동시성 이슈가 발생할 수 있고 이에 대해서 포스팅 해보고자 한다. 조회수 증가 API의 전체 프로세스 조회수 증가 API의 전체 프로세스는 다음과 같다. 조회수 증가 API의 전체 프로세스 1. 사용자가 특정 컨텐츠를 클릭함. 2. 조회수 증가 API가 애플리케이션 서버에 요청됨 3. 동일한 IP에서 특정 URL을 조회한 기록이 있는지 검사(특정 IP에서 여러번 같은 컨텐츠를 클릭해도 조회수는 1이어야 하므로) 4. 있으면 조회수 +1 로직 처리를 안함 5. 없으면 조회수 +1 로 .. 2023. 4. 5. 검색 API에 인덱스, Elastic Search 적용하기 검색 API 성능 개선하기 검색 API 성능을 개선하기 위해서는 여러가지 방법이 있다. 이번에 스프링 기반의 프로젝트를 진행하면서 검색 API 성능 개선을 시도했는데 이 과정에서 Index 추가 더 나아가 Elastic Search 도입을 해보았다. 이 과정에 많은 고민과 시행착오를 겪었고 이에 대해서 정리해보았다. 검색 API가 활용되는 프론트엔드 화면 아래는 검색 API가 활용되는 프론트엔드 화면이다. 카테고리를 선택하고 검색어를 검색하면 검색어에 해당하는 크롤링 컨텐츠가 나오는 기능이다 검색 API를 개선을 하려는 이유 이 프로젝트의 검색 API는 크롤링 컨텐츠를 기반으로 검색이 이루어진다. 크롤링 컨텐츠들이 있고 검색어가 입력되면 그 크롤링 컨텐츠들의 제목 기반으로 매칭해서 검색 컨텐츠를 제공하는.. 2023. 3. 19. 이전 1 다음