Home
Jun
Cancel

range 검색과 filesort

회사 프로젝트 중, filesort가 발생했습니다. 그런데 filesort의 개념과 발생 원인을 한 문장으로 정의 하지 못한 것을 보고 이를 정리하고 싶어 글을 작성하게 되었습니다. 1. B-Tree의 특성: 사전식 정렬 B-Tree 인덱스는 앞에 선언된 컬럼부터 차례대로 사전식으로 정렬되어 저장됩니다. 즉, 첫 번째 컬럼의 값이 가장 ...

LangChain이란 무엇일까?

글을 작성하게 된 계기 AI 관련 기사를 읽으면서 Agent, LangChain, LLM 등 많은 용어들을 들었지만, 직무와 다르다고 별다른 관심을 가지지 않았는데요. 최근 너무 서버 개발, 도메인 등에 치우쳐 있다는 생각이 든 후, 조금은 관심을 가져야 겠다고 마음을 바꾸었습니다. 그 중, 최근 관심을 가지게 된 LangChain에 대해 간단히...

비동기 작업 처리 시, 어떤 ThreadPool 정책을 사용할까?

글을 작성하게 된 계기 판매자 등급 산정 을 하기 위한 배치를 개발하고 있는데, 대형 판매자의 매출 집계 작업 이 오래 걸려 전체 배치가 지연 되는 문제가 발생했습니다. 이를 해결하기 위해 비동기 처리를 도입했는데, 이 과정에서 알게된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 판매자 등급 산정 배치는 각 판매자들...

칼럼 지향 데이터베이스의 검색이 빠른 이유

글을 작성하게 된 계기 ClickHouse 세미나에서 새로운 분을 알게 되었는데, 왜 칼럼 지향 데이터베이스가 빠른가요? 라는 질문을 받았습니다. 이를 답하면서 석연치 않은 부분이 있었는데, 이를 정리해보기 위해 글을 작성하게 되었습니다. 확실히 알고 있다고 착각하고 있었는데, 막상 말로 표현하려고 하니까 생각보다 답답하더라고요. 😆 1. ...

INSERT...SELECT 구문에서 테이블 락 발생 여부

글을 작성하게 된 계기 회사에서 회원 등급을 조정하는 배치로직을 개발하던 중, INSERT...SELECT 구문에서 테이블 락이 발생하는지 궁금해졌고, 이 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 진행 배경 테스트를 진행한 이유는 데이터를 SELECT한 뒤, 같은 트랜잭션 내에서 INSERT를 수행할 때 ...

ElasticSearch와 Opensearch의 차이점

글을 작성하게 된 계기 ElasticSearch 스터디를 하다가 명현님이 Opensearch와 ElasticSearch의 차이점을 물어보셨는데 명확하게 대답을 못했습니다. 그래서 두 제품의 차이점을 확실히 알기 위해 글을 작성하게 되었습니다. 이직한지 얼마 안되긴 했지만…… 비겁한 변경 같습니다. 🤔 1. 탄생 배경 Elast...

ElasticSearch의 내부 구조와 동작 원리

글을 작성하게 된 계기 최근 OpenSearch를 사용하게 됐는데, 이전에 학습했던 Elasticsearch의 Near real-time 검색 원리와 내부 구조와 동작 원리를 복습 및 정리하기 위해 글을 작성하게 되었습니다. 1. ElasticSearch의 내부 구조 엘라스틱서치의 내부는 다음과 같이 구성 돼 있습니다. 하나의 인덱스(...

ISO Week Numbering: ISO 주와 일반 주의 차이점

글을 작성하게 된 계기 MySQL YEARWEEK( ) 함수를 사용하다 ISO 주와 일반 주의 차이점에 대해 궁금해서 글을 작성하게 되었습니다. 1. ISO 주와 일반 주의 차이점 일반적인 달력에서 사용하는 주차 계산 방식은 단순합니다. 1월 1일이 속한 주를 해당 해의 첫 번째 주, 즉 1주차로 정합니다. 그래서 1월 1일이 포함된 ...

LOAD DATA의 중복 데이터 삽입 방지

글을 작성하게 된 계기 영중소 차액정산 프로젝트를 진행하며 MySQL LOAD DATA 를 사용해 수 천만 건의 데이터를 삽입 하는 작업을 했습니다. 이 과정에서 중복 데이터 삽입 방지 에 대해 고려하게 되었고, 알게된 방식을 정리하기 위해 글을 작성하게 되었습니다. 대용량 데이터의 정의는 사람마다 다를 수 있습니다. 저는 이번 프로젝트에...

ISOLATION LEVEL의 관습적 사용

글을 작성하게 된 계기 ISOLATION LEVEL을 관습적으로 사용하던 것을 느꼈고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. 왜 이런 고민을 하게 됐을까? 문제가 발생했던 것은 아닌데요, 스프링에서 @Transactional을 사용할 때, 관습적으로 REPEATABLE READ 만 사용하고 있는 것을 느꼈습니다. 별도 설...