관계형 데이터베이스와 NoSQL — 무엇을 고르고, 무엇을 기준으로 고르는가
저장소를 고르기 전에 정리해야 할 것들을 다룬다. 관계형 모델이 「관계」를 물리적으로 어디에 저장하는지, NoSQL 네 유형이 각각 무엇을 잘하고 못하는지, 그리고 제품 선택을 성능이 아니라 문제 해결·비용·유지·보수로 판정하는 이유다.
태그
7편
저장소를 고르기 전에 정리해야 할 것들을 다룬다. 관계형 모델이 「관계」를 물리적으로 어디에 저장하는지, NoSQL 네 유형이 각각 무엇을 잘하고 못하는지, 그리고 제품 선택을 성능이 아니라 문제 해결·비용·유지·보수로 판정하는 이유다.
개체-관계 모델의 네 요소와 카디널리티 표기, 이상현상을 없애는 정규형 1NF~5NF, 반정규화를 꺼내도 되는 조건과 3원칙, 쿼리가 모델을 결정하는 NoSQL 모델링, 그리고 데이터 표준이 실제로 줄이는 비용을 정리한다.
선택지 열두 개가 각각 무엇을 얻고 무엇을 내주는지, 장애 아홉 가지가 어떤 증상으로 드러나는지를 표로 모으고, 저장소 선택·모델링·SQL·트랜잭션에 걸친 34개 질문에 결론부터 답한다.
알림센터 다섯 편의 마지막이다. 앞의 네 편이 주제별로 나눠 답한 것을 질문이 실제로 오는 세 자리로 다시 세운다 — 아직 아무것도 정하지 않은 「고를 때」, 이미 돌고 있는데 증상이 나온 「터졌을 때」, 그 판단의 근거를 남에게 대야 하는 「설명해야 할 때」다.
알림은 지워지는 계기가 없어 무한히 쌓이는데 실제로 읽히는 것은 언제나 최신 스무 건뿐이다. 이 비대칭 위에서 저장소를 문서형으로 고른 근거를 도메인 특성에서 끌어내고, 기준값을 넘겨 받는 페이징과 읽음 경계를 시각 한 값으로 푸는 설계, 가장 자주 불리는 엔드포인트를 캐시로 받는 자리, 그리고 90일이 지난 문서를 배치 없이 치우는 만료 인덱스까지 차례로 본다.
캐시를 붙이기 전에 끝내야 할 세 가지 결정을 정리한다. 캐싱 대상 판별 기준, 요구사항에 맞는 Redis 자료구조 선택, 그리고 Look-Aside부터 Write-Back까지 네 가지 캐시 전략의 트레이드오프다.
좋아요·구독을 Set으로 푸는 근거와 멱등 API 설계, 댓글을 Redis가 아닌 저장소에 두는 판단, 단일 스레드 모델이 낳는 운영 제약, 영속화·축출 정책·고가용성 구성을 정리한다.