db2 DB Optimistick Lock : 쇼핑몰 서비스 개발시 발생할 수 있는 이슈 쇼핑몰 서비스를 제공할 때 개발자에게 발생할 수 있는 이슈가 있다. 쇼핑몰에는 상품이 있으며, 상품에 대한 재고가 존재할 것이다. 예를 들어 재고가 한 켤레만 존재하는 한정판 나이키 신발에 대해, 거의 동시에 두 고객이 신발을 구매하기 위해 접근을 한다고 하자. 이에 대해 아무런 조치를 취하지 않는다면 두 고객은 구매 처리를 모두 완료할 것이며, 수량은 -1이 되어 실제로 존재하는 재고와 일치하지 않는 상황이 발생할 것이다. 이처럼 동시에 같은 DB Table row를 업데이트 하는 상황을 방어하기 위해 어떻게 개발할 수 있을까? 이런 동시성 문제에 대비하기 위하여 일반적으로 처리하는 방식은 잠금(Lock) 방식이다. Locking은 DB에 접근하는 것을 방지하는 것으로, 서비스 유저의 데이터 접근 경쟁.. 개발기초 2023. 6. 23. 데이터베이스에서 인덱스란? 왜 필요한가? 데이터베이스에서 인덱스(Index)란? 왜 필요 할까? 두꺼운 책의 맨 앞에 목차가 기재되어 있으면 내가 원하는 내용을 더 빨리 탐색할 수 있다. 반대로 목차가 없으면 두꺼운 책 내용 중에 어떤 내용을 어디에서 찾을지 모르기 때문에 전체를 다 탐색해야 한다. 시간과 에너지가 많이 든다. 이 때문에 어떤 순서대로 정렬된 목록(색인)의 필요성을 느낀다. DB에서 이와 같은 기능을 하는 것이 인덱스이다. - 즉, 인덱스는 데이터베이스에서 데이터를 빠르게 찾아낼 수 있도록 돕는 자료구조이다. - 데이터를 찾기 위한 '색인'으로 데이터의 주소록이라고 부를 수 있다. - 인덱스가 있으면 전체 Pull Scan 할 필요없다. 인덱스의 구성 - 인덱스는 키(key)와 포인터들로 구성되어있다. - DB에서 추출한 일부 .. 개발기초 2023. 5. 10. 이전 1 다음