Database 85

[몽고DB 완벽 가이드] 2. 몽고DB 기본

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 도큐먼트MongoDB 데이터의 기본 단위키-값 집합ex) JSON, 맵, 해시, 딕셔너리, 객체항목내용키문자열- 정렬된 상태로 저장됨- 대소문자 구분- 중복 불가- null 사용 불가- . (점)과 $는 예약어값다양한 데이터형 지원- 대소문자 구분 2. 컬렉션도큐먼트 모음보통 유사한 구조의 도큐먼트를 그룹화함쿼리 속도 향상효율적인 인덱싱데이터 지역성 향상 특징항목내용동적 스키마하나의 컬렉션 안에 서로 다른 구조의 도큐먼트 존재 가능네이밍 규칙- 빈 문자열 불가- null 문자 불가- 'system' 시작 불가- $ 사용 불가서브 컬렉션- 네임스페이스에 .(점)을 사용하여 서브컬렉션 생성 가..

Database/MongoDB 2025.04.27

[몽고DB 완벽 가이드] 1. 몽고DB 소개

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. MongoDB의 만들어진 배경과 지향점, 선택해야 하는 이유를 설명합니다. 1. 손쉬운 사용Document-Based Database항목설명예시 (MongoDB)분산 확장의 용이성분산 시스템에서 데이터를 쉽게 분산/관리할 수 있음샤딩 지원유연한 모델미리 정의된 스키마 없이 데이터 저장 ✅➡️ 빠른 개발 가능동적으로 도큐먼트 필드 추가/삭제 가능ex) JSON복잡한 계층 관계 표현내장 도큐먼트 및 배열을 하나의 레코드로 표현 ✅➡️ OOP 개발에 적합embedded documents, arrays 지원 2. 확장 가능한 설계설계 배경애플리케이션의 발전으로 다루는 데이터 규모가 커짐 (대용량 데이..

Database/MongoDB 2025.04.27

[실전 레디스] 6-1. 트러블 슈팅: 서버 정보

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 문제 발생 시, 먼저 문제를 구분하기특정 명령어만 느려지는지특정 캐시 노드에서만 문제가 발생하는지특정 클라이언트에서만 문제가 발생하는지지속적으로 발생하는 문제인지발생 빈도는 어느정도인지 1. 서버 정보 읽기INFO 명령어: 엔진 내부 상황 확인 Serverredis_version:7.0.11redis_mode:standaloneos:Linux 5.4.0-110-generic x86_64uptime_in_seconds:86400uptime_in_days:1항목설명redis_versionRedis 버전redis_mode실행 모드 (standalone / cluster / sentinel)os운영 체제 정보process_idRedis 서버의 프로세..

Database/Redis 2025.03.23

[실전 레디스] 5-4. 레디스 운용 관리: 관리

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 보안신뢰할 수 없는 환경에서 레디스에 접근할 때 사용자 접근 제한 기능을 제공함 설정네트워크 보안bind 127.0.0.1 192.168.1.100bind 지시자로 접속 호스트 제한 tls-enabled yestls-cert-file /etc/redis/redis.crttls-key-file /etc/redis/redis.keytls-ca-cert-file /etc/redis/ca.crt-------------------------------------redis-cli --tls -h my-secure-redis.comtls 통신 지원클라이언트에서 --tls 옵션으로 접속 필요 protected-mode yes보호 모드루프백 인터페이스와..

Database/Redis 2025.03.21

[실전 레디스] 5-3. 레디스 운용 관리: 셋팅

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 고려 사항노드 크기분석 항목설명데이터- 최대 키 개수- 키 당 평균 크기- 키 당 최대 크기성능- 실행되는 명령어 내역- 초당 처리해야 할 키 작업 수트래픽네트워크 트래픽 레디스 클러스터분석 항목설명필요 여부 확인- 일반 레디스 서버만으로 충분한지 확인- 사용중인 클라이언트가 레디스 클러스터를 지원하는 지 확인요구사항 확인- 쓰기 작업을 처리하는 경우- 높은 가용성이 요구되는 경우 - 메모리 확장/축소가 필요한 경우성능 확인- 노드 증설: 최소 3개의 캐시 노드를 마스터로 설정해야 함- 벤치마크 수행: 각 노드의 최대 처리 가능 요청 개수 분석- 운영 안정성 체크: 헬스 체크 메시지 증가로 운영 불안정 가능성 고려- 스케일 조정 결정: ..

Database/Redis 2025.03.21

[실전 레디스] 5-2. 레디스 운용 관리: 아키텍처

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 레디스 아키텍처원본 데이터는 RDBMS에 저장하고, Redis는 그 앞단에 캐시로 배치 읽기 관점항목Lazy-loading 패턴 (Cache-aside)Read-Through 패턴Redis에 데이터 없을 때애플리케이션이 DB에서 읽고 Redis에 저장라이브러리가 DB에서 읽고 Redis에 저장장점자주 쓰는 데이터만 캐시에 저장됨애플리케이션 코드가 단순해짐단점첫 요청이 느림캐시 로딩 로직을 직접 구현해야 함특정 클라이언트/미들웨어에 의존하게 됨적용 예시Spring + Redis 조합 (직접 로직 작성)RedisTemplate + Spring Cache 추상화 쓰기 관점항목Write-Through 패턴Write-Back 패턴Write-Aro..

Database/Redis 2025.03.21

[실전 레디스] 5-1. 레디스 운용 관리: 영속성

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. 데이터 영속성인메모리 데이터베이스레디스는 기본적으로 인메모리 데이터베이스이므로 서버가 재시작되면 데이터가 유실될 수 있음 영속성 지원레디스를 데이터 저장소처럼 데이터 영속성을 전제로 운영할 수 있음 (옵션 제공) 성능 vs 내구성영속성을 설정하면 성능에 영향을 줄 수 있으므로, 적절한 트레이드 오프를 고려해야 함성능과 내구성의 타협점을 찾고 설정하는것을 권장함 전략 설정 필요시스템 요구사항에 맞는 영속성 설정을 선택하여 운영해야 함 2. 스냅숏특정 시점의 데이터베이스 내용을 RDB라는 형식의 파일로 저장파일을 복원하는 형태로 데이터 재사용이 가능함기본적으로 설정된 영속성 방법 저장 방식방식실행 방식특징동작 방식권장 여부SAVE동기블로킹 발..

Database/Redis 2025.03.21

[실전 레디스] 3-1. 고급 기능: 주요 기능

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 트랜잭션특징트랜잭션 안의 명령: MULTI 이후 → 실행 안 되고 큐에 저장됨 (DELAYED 실행)읽기 명령: 트랜잭션 바깥 → 즉시 실행됨 (IMMEDIATE 실행)롤백 지원 X (실패한 명령어 건너뛰고 남은 작업을 계속 처리함) 명령어명령어설명MULTI트랜잭션 시작. - 이후 입력되는 명령어들을 큐에 저장함 (즉시 실행 X)EXEC트랜잭션 종료- MULTI로 큐에 저장된 명령어들을 순차 실행DISCARD트랜잭션 중 큐에 저장된 모든 명령어를 취소하고 트랜잭션 종료WATCH특정 키 감시. - EXEC 전까지 해당 키가 다른 클라이언트에 의해 수정되면 EXEC가 실패함→ CAS(Compare And Swap) 패턴 구현 가능 예제) M..

Database/Redis 2025.03.21

[실전 레디스] 3-2. 고급 기능: 루아

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. 파이프라인이전 응답을 기다리지 않고 여러 요청을 한꺼번에 서버에 보내는 방식항목설명사용 목적성능 최적화대체 가능 기능MGET, MSET과 유사 (단, 파이프라인이 더 범용적)장점- 실행 순서 보장- RTT(Round Trip Time) 절약단점- 조건 분기 불가- 복잡한 로직 작성 어려움- 원자성 보장 안 됨 예시더보기import redis# Redis 클라이언트 연결client = redis.StrictRedis(host='localhost', port=6379, db=0)# 파이프라인 시작pipe = client.pipeline()# 여러 명령어를 파이프라인에 추가pipe.set('key1', 'value1')pipe.set('key2..

Database/Redis 2025.03.21

[실전 레디스] 2-4. 자료형과 기능: 공통 명령어

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. TTL확인더보기exists mykeyttl mykeypttl mykeyexists: 키 존재 유무ttl: 키 남은 유효시간 확인 (초)설정더보기expire mykey 30pexpire mykey 30000expireat mykey 1742539500pexpireat mykey 1742539500000expire: 유효기간 설정 (n 초 후)pexpire: 유효기간 설정 (n 밀리초 후) 삭제더보기persist mykeypersist: 만료시간 제거 (영구 저장) 2. 삭제단위 삭제더보기del mykeyunlink mykeydel: 키 삭제unlink: 백그라운드에서 삭제 전체 삭제더보기flushdbflushallflushdb: 현재 db의..

Database/Redis 2025.03.21