본문 바로가기

DB

(35)
샤딩에서 데이터 일관성 모델: 강한 일관성, 약한 일관성, CAP 이론 강한 일관성: 모든 샤드에서 동일한 데이터를 보장한다.강한 일관성은 데이터베이스 시스템에서 모든 읽기 요청이 항상 최신 데이터를 반환하도록 보장한다. 즉, 데이터가 여러 샤드에 분산되어 있더라도, 모든 샤드에서 동일한 데이터를 읽을 수 있다. 이는 데이터의 일관성을 유지하는 데 매우 중요하지만, 네트워크 지연이나 시스템 장애 시 가용성이 떨어질 수 있다.약한 일관성: 일시적으로 일관성이 깨질 수 있지만, 최종적으로 일관성을 보장한다.약한 일관성은 데이터베이스 시스템에서 일시적으로 일관성이 깨질 수 있지만, 시간이 지나면 최종적으로 일관성을 보장한다. 즉, 모든 샤드가 동일한 데이터를 가지게 되기까지 시간이 걸릴 수 있다. 이는 가용성을 높이는 데 유리하지만, 일시적으로 최신 데이터가 아닌 데이터를 읽을 ..
샤딩에서의 캐싱 샤딩(Sharding)에서 캐싱을 구현하는 방법은 여러 가지가 있다. 일반적으로 샤딩된 데이터베이스에서 캐싱을 사용할 때는 각 샤드에 대해 별도의 캐시를 유지하거나, 전체 샤드에 대해 글로벌 캐시를 사용하는 방법이 있다.  다음은 그 방법들에 대한 개요와 예제입니다.   방법 1: 각 샤드에 대해 별도의 캐시 유지각 샤드에 대해 별도의 캐시를 유지하는 방법은 각 샤드의 데이터에 대해 독립적인 캐시를 사용하는 것이다. 이 방법은 캐시 일관성을 유지하기 쉽지만, 캐시가 여러 개로 분산되기 때문에 관리가 복잡할 수 있다. 방법 2: 글로벌 캐시 사용글로벌 캐시를 사용하는 방법은 모든 샤드에 대해 하나의 캐시를 사용하는 것이다. 이 방법은 관리가 용이하지만, 캐시 일관성을 유지하기 어려울 수 있다. - 끝 -
복합 인덱스 설정 방법 복합 인덱스를 사용하여 다중 컬럼 검색을 최적화하는 방법은 다음과 같다:복합 인덱스 생성: 여러 컬럼을 포함하는 인덱스를 생성한다.쿼리 최적화: 인덱스를 활용할 수 있도록 쿼리를 작성한다.예제1. 복합 인덱스 생성CREATE INDEX idx_example ON table_name (column1, column2);2. 쿼리 최적화SELECT * FROM table_nameWHERE column1 = 'value1' AND column2 = 'value2';이렇게 하면 column1과 column2에 대한 검색이 최적화 된다. - 끝 -
서버 재 부팅 시 postgresql 자동 시작 하게 만들기 # 서버 재 부팅 시 postgresql 자동으로 시작하게 하기 /etc/rc.local 파일에 su - postgres -c "/usr/lib/postgresql/14/bin/pg_ctl start -D /database -m fast" 위의 스크립트만 등록해 놓으면 된다. - 끝 -
예제 애플리케이션에 Login시 Redis와 연동되도록 해보자 # 예제 애플리케이션 로그인 시 Redis와 연동되도록 구성해보자. 1편을 참고하여, docker에 Redis 띄우고 실행까지 해보자. 2023.08.02 - [DB/Redis (레디스)] - Springboot 백엔드 세션을 Redis 서버에 저장하기 with gradle Springboot 백엔드 세션을 Redis 서버에 저장하기 with gradle # Springboot로 구성된 웹 애플리케이션의 세션을 Redis에 저장하기 세션 클러스터링을 위해서 세션 스토리지를 따로 구성하는 경우가 많다. 대표적인 서비스로 레디스가 존재한다. # Redis의 특징 Mysq may9noy.tistory.com 1. 예제 애플케이션을 살펴보면 아래와 같다. - 스프링 부트로 만들어 졌고, 회원가입 및 기본 게시판..
Springboot 백엔드 세션을 Redis 서버에 저장하기 with gradle # Springboot로 구성된 웹 애플리케이션의 세션을 Redis에 저장하기 세션 클러스터링을 위해서 세션 스토리지를 따로 구성하는 경우가 많다. 대표적인 서비스로 레디스가 존재한다. # Redis의 특징 Mysql, PostgreSQL, Oracle 등 대부분의 데이터 베이스는 디스크 또는 SSD에 저장하지만 Redis는 서버의 주 메모리에 저장된다. 메모리에 저장되므로 더 빠른 응답속도를 유지할 수 있다. 1. Redis를 docker로 실행하기 - 우분투에서 아래의 명령어로 redis를 docker로 실행한다. docker pull redis - redis의 기본포트인 6379번 포트를 활용해 서비스를 실행 시킨다. sudo docker run -p 6379:6379 redis - redis do..
DB 쿼리 자동정렬 # RDS 쿼리 자동정렬 (AWS Athena 포함) - AWS Athena에서 쿼리문을 작성 후 보면 자동정렬이 되어 있지 않아서 보기가 불편할 때가 있다. https://www.dpriver.com/pp/sqlformat.htm Instant SQL Formatter www.dpriver.com - 위의 사이트에서 쿼리를 보기좋게 자동정렬 할 수 있다. Athena는 RDB쿼리를 사용하므로 Mysql 쿼리 자동정렬로 정렬하면 이전보다 보기가 편하다. - 끝 -
Postgresql Database와 테이블 생성하기 # Postgresql의 Database와 테이블 생성하기 1. SQL Shell에 접근한다. - 윈도우 찾기에서 아래와 같은 아이콘을 검색한다. 2. cmd 화면에서 DB로 접근을 시도한다. 3. DB 생성 및 테이블 생성 # 아래 명령어를 실행하여 데이터 베이스를 생성한다. create database testdb; # 생성한 데이터 베이스로 이동한다. \c testdb # 아래의 명령어를 활용하여 테이블을 생성한다. create table test (id integer primary key, name varchar(20), location varchar(20), age varchar(20), information varchar(20)); 4. pg admin을 활용하여 위에서 생성한 데이터베이스와 ..