전체 글
-
카테고리에 캐시를 적용한 경험프로젝트/BLUE DELIVERY 2021. 7. 11. 13:28
배달의민족 서버를 클론하는 프로젝트에서 카테고리를 구현하던 중 ENUM을 통해 카테고리를 관리할지, DB에 저장하여 관리할지 고민했던 적이 있었습니다. 대략 다음의 순서로 정리했습니다. 캐시 적용 전 모습 문제점 캐싱이 적합한가? 캐시 종류 Scale-out 확장시 캐싱 데이터의 정합성 문제 로컬캐시 Eventual Consistency 캐시 적용 전 모습 (ENUM) 기존에 카테고리는 아래와 같이 enum 클래스로 관리하였습니다. public enum Category { KOREAN(1L), CHINESE(2L), JAPANESE(3L), CHICKEN(4L), PIZZA(5L), FAST_FOOD(6L); .... } enum을 관리할 경우 장점과 단점을 생각해보면 장점으로는 자바 코드만 보고 어떤 ..
-
Eventual Consistency 란개발/OOP, Design Pattern 2021. 7. 11. 13:22
Eventual Consistency 분산 시스템을 구성하려면 CAP 이론에 의해서 일관성과 가용성 중 하나를 포기해야하는 상황이 올 수 있습니다. 클라이언트의 요청을 받았을 때, A서버의 데이터가 변경되면 즉시 다른 서버에 반영되지 않습니다. 아래 두가지 경우가 있습니다. 모든 서버가 동일한 데이터를 갖도록 동기화 하는동안 클라이언트의 접근을 막는 경우 (가용성의 문제) 다른 클라이언트들이 변경된 데이터를 요청했을 때 어떤 클라이언트는 최신의 데이터를, 어떤 클라이언트는 오래된 데이터를 받게되는 경우.(일관성의 문제) 그러나 2번의 경우 언젠가는 동기화가 되면, 모든 클라이언트가 동일한 데이터를 받아볼 수 있게 됩니다. 이것이 Eventual Consistency 입니다. Eventual consist..
-
인덱스데이터베이스 2021. 7. 11. 13:18
인덱스가 무엇인지, B-Tree Index, Hash Index 등에 대해 알고있다는 가정하에 작성 인덱스는 왜 쓰는가? 인덱스는 '인덱스가 검색 범위를 제한시켜주기 때문에' 빠르게 데이터를 검색할 수 있게 해준다. 인덱스가 왜 어떻게 검색 범위를 제한해주나? 인덱스는 항상 정렬이 되있기 때문에 라고 생각할 수 있지만, 그건 특정 인덱스에 한정된 이야기다. 검색범위를 제한해주는 방법은 어떤 인덱스를 사용하느냐에 따라 달라진다. B-Tree 인덱스 B-Tree 인덱스는 항상 정렬된 상태를 유지한다. (장점) 항상 정렬된 상태를 유지하기 위해서는 삽입과 삭제시에 정렬이 발생한다. (단점) 이 경우는 정렬된 상태로 검색 범위를 제한시킬 수 있는게 맞다. Hash Index 해시 인덱스는 정렬되어 있다고 볼 수..