Hanpy's Blog

두 글자 이상 입력하세요.

/backend/ko/database

Database

Explore database technologies, data modeling, indexing strategies, query optimization, schema design, and both relational (SQL) and NoSQL databases. It includes practical insights into effective database management and best practices.

시리즈2

글23

MongoDB

  • MongoDB - Data Modeling

    MongoDB 데이터 모델링: Embedding, Referencing, 그리고 Mapping Collection 패턴

  • MongoDB와 B-tree

    동시성 제어는 다중 사용자 환경에서 데이터베이스나 공유 자원의 일관성과 무결성을 유지하기 위한 핵심 기술입니다.

  • MongoDB - Indexes Guide

    MongoDB에서 인덱스(Indexes)는 데이터 검색 성능을 비약적으로 향상시키는 핵심 도구입니다. MongoDB 인덱스의 구조와 사용법, 최적화 전략을 알아봅시다

  • MongoDB - Compound Indexes Guide

    MongoDB에서 Compound Index(복합 인덱스)는 두 개 이상의 필드를 결합하여 만든 인덱스로, 다차원 쿼리에서 효율적인 검색을 지원합니다.

  • MongoDB - Concurrency Control

    MongoDB를 비롯해 대부분의 데이터베이스가 지향하는 핵심 목표 중 하나는 동시성 제어(Concurrency Control)입니다. 문서 수준 잠금(Document-Level Lock)과 과거의 전역 잠금(Global Lock) 개념을 중심으로 설명합니다.

  • MongoDB - Lock Granularity와 Lock 동작 방식

    MongoDB에서는 문서(Document) 단위로 락이 걸린다고 알려져 있지만, 실제로는 컬렉션·데이터베이스 수준 등 다양한 단계(Granularity)에서 락이 발생할 수 있습니다. 이번 글에서는 문서·컬렉션·인덱스 등 어디에 어떻게 락이 걸리는지 살펴보고, MongoDB 내부에서 사용하는 Intent Lock, Shared Lock, Exclusive Lock 개념을 설명합니다.

  • MongoDB - Transaction

    MongoDB에서는 문서(Document) 단위로 락이 걸린다고 알려져 있지만, 실제로는 컬렉션·데이터베이스 수준 등 다양한 단계(Granularity)에서 락이 발생할 수 있습니다. 이번 글에서는 문서·컬렉션·인덱스 등 어디에 어떻게 락이 걸리는지 살펴보고, MongoDB 내부에서 사용하는 Intent Lock, Shared Lock, Exclusive Lock 개념을 설명합니다.

  • MongoDB - Sharding

    대용량 트래픽과 방대한 데이터 집합을 다루는 MongoDB 환경에서, 샤딩(Sharding)은 확장성(Scalability)을 확보하기 위한 핵심 전략입니다.

  • MongoDB - Aggregation Match

    MongoDB의 $match는 Aggregation Pipeline 단계 중 하나로, SQL의 WHERE 절과 비슷하게 문서 필터링을 수행합니다. 사용법과 성능 최적화에 대해 알아봅시다.

  • MongoDB - Aggregation Count

    MongoDB는 대용량 데이터를 효율적으로 관리하기 위해 다양한 집계(aggregation) 기능을 제공합니다. 그중에서도 count 집계 방식은 특정 조건에 맞는 도큐먼트의 개수를 빠르게 파악할 수 있는 중요한 기능입니다. count 집계 방식의 사용법과 성능 최적화에 대해 알아봅시다.

Database

  • Concurrency Control

    동시성 제어는 다중 사용자 환경에서 데이터베이스나 공유 자원의 일관성과 무결성을 유지하기 위한 핵심 기술입니다.

  • Database Transaction

    Database에서 트랜잭션(Transaction)이란 DB의 상태를 변화시키기 위한 일련의 작업 단위로 데이터베이스에서 여러 쿼리를 하나의 작업 단위로 묶어 처리하는 개념입니다.

  • 공유 락(Shared Lock)

    Shared Lock(공유 락)은 데이터베이스나 파일 시스템 등에서 동시성을 제어하기 위한 중요한 기법 중 하나로, 주로 데이터를 안전하게 읽기(read) 위한 용도로 사용됩니다.

  • 배타 락(Exclusive Lock)

    Exclusive Lock(배타 락)은 데이터에 대한 변경(Write) 연산을 수행할 때 다른 트랜잭션이나 사용자가 해당 데이터를 참조하거나 수정하지 못하도록 보장하는 잠금(Lock) 기법입니다.

  • 낙관적 락(Optimistic Lock)

    낙관적 락 (Optimistic Lock)은 데이터 갱신 시 충돌이 발생했는지 검증하고, 충돌이 없을 때만 갱신을 허용하는 방식을 의미합니다.

  • 비관적 락(Pessimistic Lock)

    비관적 락 (Pessimistic Lock)은 데이터에 접근하는 동안 다른 작업이 접근하지 못하도록 강제로 락을 걸어 충돌을 방지하는 방식을 의미합니다.

Redis

  • Redis cli

    Redis는 빠른 인메모리 데이터 저장소로, 캐싱, 세션 관리, 메시지 브로커 등 다양한 용도로 널리 사용됩니다. 이 글에서는 Mac 환경에서 Redis CLI를 설치하는 방법과 몇 가지 기본 명령어를 통해 Redis 서버와 상호작용하는 방법을 알아봅시다.

  • BullMQ Overview

    BullMQ는 Redis 기반의 작업 큐 라이브러리로, Node.js 애플리케이션에서 작업을 효율적으로 관리하고 비동기 처리를 가능하게 합니다. 이 글에서 BullMQ의 핵심 개념을 이해하고 실제 코드 예제를 통해 사용법을 알아봅시다.

  • BullMQ - Queue

    BullMQ를 사용하여 Node.js 환경에서 효율적이고 신뢰성 높은 작업 큐(Queue)를 생성하고 관리하는 방법을 알아봅니다.

  • Redis Atomic Lock(SET NX) 활용법과 동시성 문제 해결

    Redis의 Atomic Lock(SET NX)을 이용해 동시성 문제를 쉽고 빠르게 해결하는 방법을 알아봅니다.

  • RedLock - Redis 기반 분산 락 구현

    RedLock은 Redis를 이용한 분산 락 알고리즘으로, 분산 환경에서 안전한 락을 보장하는 데 사용됩니다.

Trouble-Shooting

  • Could not connect to Redis at 127.0.0.1:6379: Connection refused

    "Could not connect to Redis at 127.0.0.1:6379: Connection refused"라는 메시지는 Redis CLI가 지정된 호스트(127.0.0.1)와 포트(6379)에서 Redis 서버에 연결하려 했지만, 해당 주소에서 Redis 서버가 실행되고 있지 않다는 의미입니다.

  • MongoDB에서 텍스트 검색 오류

    MongoDB에서 한글, 유니코드 문자열 검색 시 NFC와 NFD 차이로 인해 발생하는 문제와 이를 해결하는 방법을 설명합니다.