논리적 데이터베이스 설계란 현실 세계의 업무를 분석하여 이를 약속된 표기법을 사용하여 개념적 모델(ERD)로 표현하는 과정으로, 데이터 모델링이라고도 부릅니다. 데이터베이스 용어 모델링 용어 테이블 엔티티 컬럼, 열 속성 튜플, 행 인스턴스 기본키 주 식별자 외래키 외래 식별자 용어 엔티티 (entity) 현실 세계를 데이터 관점에서 모델링할 때 사용되는 핵심 개념 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 관리할 필요가 있는 유형, 무형의 사물(개체) ex. 회원, 상품, 쇼핑카트 속성 (attribute) 엔티티에서 관리해야 할 최소 단위의 정보 항목 엔티티는 하나 이상의 속성을 포함합니다. 관계 (relationship) 두 엔티티 사이의 관련성으로, 이는 상호 공유하는 속성이 ..
CS/데이터베이스
데이터베이스는 데이터의 집합으로, 파일 형태로 산재했던 데이터, 정보들을 하나로 모아 이를 관리하고 사용자와 데이터 사이에 인터페이스 역할을 할 수 있는 S/W를 만들기 위해 정립된 개념입니다. 특징 데이터 독립성 지원 데이터베이스 시스템에서는 사용자 혹은 응용 프로그램이 직접 데이터베이스에 접근할 수 없고 반드시 DBMS를 통해서만 접근이 가능합니다. 데이터베이스 내에 있는 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않도록 하여 독립성을 보장합니다. 데이터 무결성 유지 데이터베이스 시스템은 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입, 길이, 값의 범위 등에 대한 정보를 갖고 있습니다. 이를 위반하는 데이터가 들어올 경우 처리를 거절함으로써 데이터의 무결성을 지원합니다. 데..
데이터베이스에서 데이터를 캐싱할 때, 사전 예방적(proactive) 및 사후 대응적(reactive)으로 취할 수 있는 캐싱 패턴으로 Redis와 Memcached가 있습니다. 구현하기 위해 어떤 패턴을 취하든 모두 자신이 사용할 캐싱과 애플리케이션 목표와 밀접하게 관련되어 있어야 합니다. 가장 흔한 접근은 사전 예방적으로 'cache-aside'(혹은 'lazy loading')을 취하는 것, 그리고 사후 대응적으로 'write-through'를 취할 수 있습니다. Cache-aside는 데이터가 요청된 후에 수정되는 방식이며, write-through 캐시는 메인 DB가 수정되었을 때 즉시 수정하는 방법입니다. 두 방법 모두, 애플리케이션이 어떤 데이터를 얼마나 캐싱할지를 관리하는 방법입니다. 아래..
e-commerce 웹 애플리케이션을 구현하던 중 가장 빈번하게 요청되면서도 거의 동일한 응답을 반환할 '단일 가게 조회' 기능에 Redis 캐싱을 적용하여 1) 정보 조회 속도를 높이고, 2) DB의 부하를 낮추는 것을 목표로 프로젝트를 진행했다.☆ 코드 ☆// build.gradle// Redisimplementation 'org.springframework.boot:spring-boot-starter-data-redis' // common/RedisRepositoryConfig.java@Configuration@EnableRedisRepositories(basePackages = "com.example.baglemonster.common.config")public class RedisReposito..
일반적으로 SpringBoot의 인증/인가 필터를 JWT에 기반하여 구현합니다. 하지만, 한번 발행된 JWT의 유효 시간을 자체적으로 만료시킬 방법이 없다는 보안 상의 취약점을 해결하기 위해 JWT와 함께 언급되는 것이 Refresh Token입니다. Refresh Token을 구현하기 위한 참고한 모든 블로그들은 한결 같이 Redis를 통해 구현하는 것을 확인했습니다. 해당 게시글은 Redis의 특징을 통해 그 이유를 파악하고 그로 인해 얻을 수 있는 장점에 대한 내용으로 구성되었습니다. Redis의 특징1. 속도와 성능Redis는 메모리 기반 데이터 저장소로, 빠른 속도와 높은 성능을 제공합니다.이는 Refresh Token 같은 인증 데이터를 빠르게 읽고 쓸 수 있어 애플리케이션의 응답 시간을..