[PostgreSQL] 2. PostgreSQL Index 알아보기 (Index Type, Index Scan)
·
DB
0. 들어가기 전이전 챕터에서 PostgreSQL의 Internal, 내부 구조에 대해서 간략하게 살펴봤습니다. 이번에는 PostgreSQL에는 어떤 Index Type이 있는지, Index Scan은 어떤 것이 있는지 살펴보겠습니다.Index는 깊게 들어가면 너무나 어려운 내용이라서 간략하게만 다뤄보도록 하겠습니다 :(('PostgreSQL'의 Index에 대해서 알아보는 것이기 때문에, 기본 Index에 관한 개념은 알고 있다고 가정하고 다루지 않겠습니다!) PostgreSQL의 Index를 공부하면서 목표로 한 점은 다음과 같습니다.여러 PostgreSQL Index Type의 동작방식, 내부 원리를 설명할 수 있다.여러 PostgreSQL 타입, 상황에 대해 어떤 Index를 적용할지 떠올릴 수 ..
[PostgreSQL] 1. PostgreSQL 내부 구조 알아보기 (feat. 쿼리 처리 과정)
·
DB
0. 들어가기 전저는 이전까지 DB 벤더 중에서 학습용으로 MySQL만 사용해왔었습니다.그러나 이번 실무에서 PostgreSQL을 사용하게 되면서 PostgreSQL에 대해서 알아보고자 글을 작성하게 되었습니다. PostgreSQL의 모든 내용을 다루기에는 너무나 방대한 양이기에 제가 궁금한 부분, 중요한 부분들만 다뤄보도록 하겠습니다.하나의 주제를 잡아서 주제별로 PostgreSQL의 공식문서를 보고 글을 작성해보겠습니다. 처음은 PostgreSQL에서 커넥션을 맺고 쿼리를 어떻게 처리하는지 PostgreSQL의 내부 구조를 간략하게 추상적으로 살펴보도록 하겠습니다.https://www.postgresql.org/docs/17/overview.html Chapter 50. Overview of Pos..
[DB] DB PK 생성 전략 알아보기 (feat. Auto Increment, UUID, ULID, Snowflake ID, TSID)
·
DB
0. 들어가기 전이전까지 저는 모든 프로젝트에서 관성적으로 다음과 같이 Auto_Increment 전략을 사용해서 DB PK를 생성했습니다.public class XxxEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ...} 이번에 프로젝트 코드 분석을 하는 도중에 JPA Entity에 다음과 같이 PK 생성을 하는 것을 보게 되었습니다.public class XxxEntity { @Id @Tsid private String id; ...} 관련해서 검색해보니, TSID라는 생성 전략이 있는 것을 확인했습니다.해당 TSID 외에도 다른 PK 생성 전략에 대해 무지했기 때문에 다른 ..
[DB] AWS DynamoDB 알아보기
·
DB
0. 들어가기 전이번에 AWS의 DynamoDB를 사용할 기회가 생기게 되었습니다.이전에 사용해보지 못했던 기술이기 때문에 DynamoDB에 대한 이해가 선행되어야 했습니다.이번 글에서는 DynamoDB의 적용보다는 DynamoDB의 개념에 대해 알아보고 DynamoDB를 이루는 구성 요소들을 이해하고자 합니다.그래서 다음과 같은 AWS DynamoDB의 공식문서를 참고하여 글을 작성하면서 DynamoDB를 이해해보겠습니다.https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html What is Amazon DynamoDB? - Amazon DynamoDB이 페이지에 작업이 필요하다는 점을 알려 주셔서 감..
[Redis] Redis의 다양한 자료구조와 활용 예시 알아보기
·
DB/Redis
0. 들어가기 전이전에 Redis에 대해서 간단하게 정리해봤었습니다.https://ksh-coding.tistory.com/127 [DB] Redis란?여러 프로젝트를 살펴보니, 인메모리 저장소로 Redis를 사용하는 것을 많이 볼 수 있었습니다.Redis가 무엇이고, 어떤 장점이 있길래 많이 사용하는 걸까요?프로젝트에 적용하기 전에 간략하게 Rediksh-coding.tistory.com 해당 글 이후에 여러 기능에서 Redis를 사용했고, 잘 동작하는 것을 확인할 수 있었습니다.그러나, Redis를 사용할 때 추상화된 Spring Data Redis를 사용하면서 어떤 자료구조로 저장되는지,어떤 자료구조가 해당 기능, 데이터에 적합한지, Redis에 어떤 자료 구조들이 존재하는지에 대해 모르고 사용했었..
[Redis] EC2 환경에서 Docker에 Redis 설치 후 실행하기
·
DB/Redis
개인 프로젝트에서 EC2 환경에서 Docker에 Redis를 설치할 일이 생겼습니다.다음에도 설치 과정을 구글링해서 찾아볼 것 같아서 기록용으로 기록해보고자 합니다! 설치 과정은 도커가 설치되어 있는 EC2 Linux 환경으로 진행되었습니다.1. 도커에 Redis 설치기본적으로 도커 자체에 Redis를 설치하는 것은 간단합니다. 1-1. Docker Redis Image 다운로드$ docker pull redis 1-2. 다운로드 된 Docker Image 확인$ docker images 2. Redis 추가 설정추가 Redis 설정 부분을 설정해봅시다. 2-1. Docker Volume 설정Redis는 in-memory 기반 저장소이기 때문에 Docker Container 내에서 실행 시 해당 컨테이너..
[DB] Redis란?
·
DB/Redis
여러 프로젝트를 살펴보니, 인메모리 저장소로 Redis를 사용하는 것을 많이 볼 수 있었습니다.Redis가 무엇이고, 어떤 장점이 있길래 많이 사용하는 걸까요?프로젝트에 적용하기 전에 간략하게 Redis를 살펴보도록 합시다.1. Redis란?Redis는 Remote Dictionary Server의 약자로, Key-Value 형태로 데이터를 저장하는 원격 서버를 의미합니다.Redis 공식 홈페이지(https://redis.io/)에서는 Redis를 다음과 같이 간략하게 소개하고 있습니다. ‘Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스의 인메모리 데이터 구조 저장소’ 여기서, Redis는 디스크나 SSD가 아닌 메모리에 데이터를 저장하는 인메모리 NoSQL Key..
[DB] MySQL 및 InnoDB의 DB Lock 알아보기
·
DB
MySQL에서 사용되는 락은 다음과 같은 2가지 종류로 나뉩니다. MySQL 엔진의 락 스토리지 엔진(InnoDB)의 락 MySQL 엔진의 락, 스토리지 엔진 중 현재 MySQL의 기본 스토리지 엔진인 InnoDB의 락을 알아보도록 하겠습니다. 0. 테스트 환경 구성 도커에서 MySQL 사용 다음과 같은 coupon 테이블, member 테이블에서 진행 1. MySQL 엔진의 락 MySQL 엔진은 MySQL 아키텍쳐에서 스토리지 엔진 위의 계층에 속하기 때문에 MySQL 엔진의 락은 모든 스토리지 엔진에 영향을 미치게 됩니다. MySQL 엔진의 락은 다음과 같은 3종류를 제공합니다. 글로벌 락 (Global Lock) 메타데이터 락 (Metadata Lock) 네임드 락 (Named Lock) 1-1. ..
[DB] MySQL InnoDB의 인덱스(feat. 클러스터링 인덱스, 세컨더리 인덱스, 인덱스 스캔 종류, 다중 컬럼 인덱스)
·
DB
이전에 전반적인 DB 인덱스에 대해 살펴봤었습니다. https://ksh-coding.tistory.com/122 [DB] DB 인덱스(Index)란? 0. 인덱스란? 인덱스는 ‘색인’이라는 뜻입니다. 색인은 책의 맨 앞 또는 맨 끝에 있는 ‘찾아보기’로 비유되곤 합니다. 요리 레시피 책을 볼 때 제가 관심있는 요리는 오직 ‘김치볶음밥’이 ksh-coding.tistory.com 이번에는 MySQL의 InnoDB에서는 인덱스를 어떻게 구현했는지 살펴보도록 하겠습니다. 1. B-Tree 인덱스를 사용하여 구현 B-Tree는 DB 인덱싱 알고리즘 중 가장 일반적으로 사용되고, 가장 먼저 도입된 알고리즘입니다. MySQL의 InnoDB는 B-Tree 알고리즘을 사용하여 인덱스를 구현하고 있습니다. 그렇다면 B..
[DB] DB 인덱스(Index)란?
·
DB
0. 인덱스란? 인덱스는 ‘색인’이라는 뜻입니다. 색인은 책의 맨 앞 또는 맨 끝에 있는 ‘찾아보기’로 비유되곤 합니다. 요리 레시피 책을 볼 때 제가 관심있는 요리는 오직 ‘김치볶음밥’이라고 해봅시다. 이때 책의 색인(index)이 존재하지 않는다면 저는 김치볶음밥이 몇 페이지에 존재하는지 모르므로 하나 하나 책의 페이지를 넘기며 김치볶음밥 페이지를 찾아야 할 것입니다. 만약 저자가 이를 배려하여 색인(index)을 ‘김치볶음밥’ - 64p 이런 식으로 기록해놨다면 저는 1p 부터 하나씩 넘기면서 김치볶음밥을 찾지 않고 64p로 바로 찾아갈 것입니다. DB의 인덱스의 목적도 원하는 데이터를 찾아가는 검색 속도를 향상시키기 위함입니다. DB의 인덱스는 다음과 같이 정의할 수 있습니다. DB 데이터의 검색..
BE_성하
'DB' 카테고리의 글 목록