리스트 예시: 게시물이 존재할 경우 3건을 노출합니다.
-
프로그래밍_인강
조회수 - InMemoryDB, 분산락
조회수 요구사항조회수 조회수 어뷰징 방지 정책각 사용자는 게시글 1개 당 10분에 1번 조회수 집계10분동안 100번 조회하더라도, 1번만 집계된다. 1. 조회 수 설계1.1. 데이터 특성조회수는 좋아요 수, 게시글 수, 댓글 수처럼 다른 데이터의 개수로 파생되는 데이터가 아니다. 사용자는 조회 내역을 확인하지 못하므로, 조회수만 보여주면 된다. 즉, 전체 조회수를 단일 레코드에 비정규화하여 저장해도 충분하다. 비정규화 했던 게시글 수/ 댓글 수/좋아요 수와 데이터의 특성을 비교하면 아래와 같다. 데이터 일관성게시글 수/댓글 수/좋아요 수 : 비교적 중요원본 데이터를 통해 개수가 파생되므로, 불일치가 발생하면 안된다. 데이터 불일치가 발생하면 사용자가 인지할 수 있다. 조회수 : 비교적 덜 중요모든 조회..
-
프로그래밍_인강
좋아요 수 설계 - 비정규화, 락
좋아요 수 설계는 아래의 내용을 전제로 한다.좋아요 수는 전체 개수를 실시간으로 빠르게 보여줘야 한다. 좋아요 설계 방향좋아요 수의 전체 개수를 실시간 조회(count)하는데 큰 비용이 든다면, 좋아요가 생성/삭제될 때마다 미리 좋아요 수를 갱신하는 방법이 있다. 좋아요 테이블의 게시글 별로 데이터 개수를 미리 하나의 데이터로 비정규화해두는 것이다. 좋아요 수를 설계하기 위해 좋아요 수의 데이터 특성을 살펴봐야 한다. 이 데이터는 아래와 같은 특성을 가지고 있다고 가정한다. (요구 사항에 따라 적절히 판단)쓰기 트래픽이 비교적 크지 않다.데이터의 일관성이 비교적 중요하다. 쓰기 트래픽이 크지 않고, 데이터 일관성이 중요하다면 RDB의 트랜잭션을 고려해볼 수 있다. 좋아요 테이블의 데이터 생성/삭제와 좋..
-
개발
일급 컬렉션
✅일급 컬렉션이란? Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태 public class Orders { private final List orders; // Set, Map public Orders(List orders, int maxOrderCount){ if(orders.size() > maxOrderCount){ throw new RuntimeException(); } this.orders = orders; // this.orders = Collections.unmodifiableList(orders); }} 일급 컬렉션의 장점 비즈니스에 종속적인 자료구조특정 ..