본문 바로가기
728x90

Study3

Java 동시성 이슈를 해결할 수 있는 방법 - Lock 개요최근 동시성 처리에 대한 관심이 생겨 자바에서 동시성 이슈를 처리하는 방법에 대해 공부해 보았고, 일부 내용을 정리해 두려고 한다. 각 방법별로 테스트를 위해 간단한 재고 감소 로직을 구현해 테스트하였다. 재고 감소 테스트 코드이번 글에서는 동시성을 해결할 수 있는 방법 별로 실제 동시성이 해결되는지를 확인하기 위해. 간단한 재고 감소 코드를 작성하여 테스트하였다. 재고 감소를 위해 Stock이라는 엔티티를 생성한 뒤, 주어진 id에 해당하는 재고를 quantity만큼 감소시키는 아래 메서드를 작성하여 테스트하였다.@Transactionalpublic void decrease(Long id, Long quantity) { Stock stock = stockRepository.findById(id).o.. 2025. 7. 31.
Elasticsearch는 어떻게 검색할까? 보통 MySQL을 이용해서 특정 상품을 검색한다고 하면 아래와 같은 쿼리를 짤 것이다. 맥북 프로 M4 라는 상품이 products라는 테이블에 있다고 가정할 때, 이것을 검색하려고 하는 상황을 가정한다.SELECT * FROM products WHERE name = "%맥북 프로 M4%";하지만, 사람들이 검색할때 항상 위와 같이 단어 순서를 상품명에 맞게 검색하지는 않기 때문에 만약 단어 순서가 바뀐 상태로 검색을 한다면 위의 미리 등록된 상품을 조회되지 않게 된다.SELECT * FROM products WHERE name = "%M4 맥북 프로%";-- 조회 결과 X위와 같은 케이스를 Elasticsearch를 통해서 검색 기능을 구현하면 해결할 수 있는데, 이번 포스팅에서는 어떻게 Es에서 단어.. 2025. 6. 29.
Elasticsearch 기초 정리 전부터 관심을 갖고 있던 ELK의 Elasticsearch를 학습하게 되었다. 공부한 내용 관련해서 간단한 포스팅을 남겨두려고 한다. Elasticsearch란Elasticsearch란 흔히 검색엔진으로만 생각하기 쉽지만, 실제로는 데이터를 저장하고 조회하고 수정 및 삭제까지 가능한 NoSQL 기반의 강력한 데이터 저장소이다. 처음 배우는 입장에서 생소한 용어가 몇가지 있기 때문에 RDBMS(ex. MySQL)과 비교하면 쉽게 개념을 익힐 수 있다. Es의 기본 용어 정리MySQL 용어Elasticsearch 용어데이터베이스(DB)클러스터(cluster)테이블(table)인덱스(index)컬럼(column)필드(field)레코드(row)도큐먼트(document)스키마(schema)매핑(mapping) M.. 2025. 6. 29.