일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JPA
- 권장 PK 전략
- Database
- create-drop
- transaction
- JPA란
- github
- load balancer
- index
- 로드밸런서
- 스키마 자동 생성
- acid
- docker
- heap
- ArrayList 길이 확장
- ArrayList 소스코드
- 컨테이너
- 싱글톤 동시성
- 자바 동시성
- postgres
- 멀티스레드 싱글톤
- thread safety
- 데이터베이스
- Container
- PostgreSQL
- java
- 트랜잭션
- ArrayList 가변
- JPA 장점
- 도커
- Today
- Total
목록Database (8)
JS
1. Query Processing Pipeline Query Processing Pipeline이란 우리가 작성한 SQL 쿼리문을 실행한 뒤 결과를 볼 때까지 Postgres 내부에서 거치는 과정들입니다. 쿼리 성능을 분석하기 전에 내부 동작 과정을 간단하게라도 파악하고 넘어가면 분석 단계에서 더 많은 도움이 되겠죠? Parser (Stage) Parser Stage는 제공된 SQL문의 단어 하나하나를 확인하여 올바른 문법으로 작성되었는지 확인하는 단계이고 제공된 SQL문을 tree 형태로 만듭니다. 위에서 작성한 SQL문을 읽어들여 컴퓨터 프로그램이 이해할 수 있는 논리적 단계 형태로 만드는 작업입니다. SELECT * FROM users WHERE username = 'jamessoun93'; 위 ..
이번에는 데이터베이스를 다룰 때 정말 중요한 역할을 하는 Index에 대해 다뤄보겠습니다. 실제로 실무에서 서비스를 운영하면서 생기는 장애들을 Index를 적용하여 해결하는 경우가 많습니다. 그렇다면 Index가 무엇인지, 장/단점은 무엇인지 등에 대해 알아보겠습니다. Full Table Scan Index 동작 원리 Index 생성 및 벤치마킹 Index 단점 자동 생성 Indexes Full Table Scan Index가 뭔지 알아보기 전에 Full Table Scan에 대해서 알아보겠습니다. SELECT * FROM users WHERE username = 'jamessoun93'; 위 쿼리는 users 테이블 내 존재하는 모든 데이터 중 username 컬럼 값이 jamessoun93인 데이터를..
Postgres는 데이터를 어디에 저장할까? Postgres는 하드 디스크 내부에 개별 데이터베이스에 대한 모든 정보를 폴더와 수많은 파일의 형태로 저장합니다. 각각의 다른 파일들은 해당 데이터베이스의 여러가지 정보를 담고 있습니다. ex) 테이블 정보, 인덱스, 고유 키 그렇다면 실제로 이런 폴더와 파일들이 어디에 어떤 형태로 존재하는지 알아보겠습니다. 우선 Postgres가 어떤 디렉토리에 데이터를 저장하고 있는지 아래 명령어를 통해 확인해본 후 자세히 살펴보겠습니다. SHOW data_directory; 위 명령어를 통해 어떤 디렉토리에 데이터가 저장되고 있는지 확인했으니 해당 디렉토리로 이동해보겠습니다. 위에 보이는 여러개의 폴더들 중 우리가 원하는 데이터가 존재하는 base 폴더로 이동해보겠습니..
서버개발을 하면서 날짜 혹은 시간 계산이 필요한 경우가 많았습니다. Node.js 서버에서는 Moment.js라는 라이브러리를 자주 활용했고, Python에서는 자체 제공 datetime이라는 내장 모듈을 활용하곤 했습니다. 그러다가 날짜/시간 계산을 데이터베이스 쿼리문으로 처리할 수 없을까하는 궁금증이 생겨 알아보다가 INTERVAL이라는 데이터타입에 대해 알게되었습니다. INTERVAL 타입을 활용하여 필요한 경우 데이터베이스 레벨에서 날짜 계산을 처리할 수 있습니다. Conversion SQL 의미 1 day 1 Day 1 D 1 Day 1 D 1 M 1 S 1 Day 1 Minute 1 Second SELECT ('1 D'::INTERVAL); SELECT ('1 D 20 H 30 M 45 S':..
Isolation은 RDBMS를 정의하는 ACID 트랜잭션의 특성 중 I에 해당하는 특성입니다. 이번 포스팅에서 Isolation에 대해 설명하면서 다룰 내용들은 아래와 같습니다. Read Phenomena (읽기 이상 현상) Isolation Levels (격리 수준) Isolation 개념은 아래 질문과 관련이 있습니다. 💡 진행 중인 트랜잭션은 동시에 진행 중인 다른 트랜잭션들로 인해 생긴 데이터의 변화에 영향을 받을까요? 한 번쯤 이런 생각을 해보셨을까요? 그럼 시작해볼까요? ✔️ Read Phenomena 여러 개의 Read Phenomena(읽기 이상 현상)에 대해서 알아보겠습니다. 읽기 이상 현상이란 트랜잭션을 사용할 때 발생할 수 있는 이상 현상들을 뜻합니다. (아래 예시들은 전부 Read..
✔️ Atomicity란? 💡 Atomicity는 RDBMS를 정의하는 ACID 트랜잭션 특성 중 A에 해당하는 특성입니다. 한글로 직역하면 원자성이라는 뜻을 가지며 왜 트랜잭션에서 Atomicity란 특성이 중요한지에 대해 알아봅시다. ✔️ Atomicity (원자성) 1️⃣ 트랜잭션의 모든 쿼리는 성공해야 합니다. ➖ 원자성이란 어떤 것이 더 이상 쪼개질 수 없는 성질을 말합니다. 트랜잭션에서는 여러 가지 작업이 하나의 작업으로 간주됩니다. 원자(atom)와 같이 쪼갤 수 없다는 뜻이죠. 2️⃣ 만약 트랜잭션 도중 어떤 이유에서건 하나의 쿼리가 실패한다면 해당 트랜잭션 내 실패한 쿼리 이전에 성공적으로 실행됐던 모든 쿼리들은 ROLLBACK 되어야 합니다. ➖ 쿼리가 실패하는 경우는 다양한 이유가 될..
✔️ Transaction 트랜잭션이란 무엇일까요? 트랜잭션을 왜 사용할까요? 트랜잭션이란, 하나의 작업 단위로 처리되는 SQL 쿼리 모음입니다. 보통 원하는 작업을 전부 하나의 SQL 쿼리문으로 처리하기는 어렵습니다. 어떤 작업이냐에따라 다르겠지만 사실 불가능에 가깝죠. 이해를 돕기 위해 트랜잭션을 적용할만한 간단한 예시로 계좌이체 프로세스를 예를 들어보겠습니다. 계좌이체 프로세스를 간소화해서 실행해야하는 액션만 생각을 해본다면, SELECT - 보내는 이의 계좌 잔고를 확인한다. UPDATE - 보내는 이의 계좌 잔고에서 보낼 금액만큼 차감한다. UPDATE - 받는 이의 계좌 잔고에 받은 만큼 금액을 증감한다. 트랜잭션은 이 세가지 작업을 하나의 작업으로 처리한다는 뜻입니다. ✔️ Transacti..
MacOS에서 PostgreSQL을 설치하는 방법에 대해서 알아봅시다. ✔️ 설치 Options 1. Postgres.app을 설치해서 사용하는 방법 2. Homebrew로 설치하는 방법 이번 포스팅에서는 두 가지 방법 중 1번 Postgres.app을 설치하는 방법을 선택하겠습니다. ✔️ Download & Setup 🚩 Step 1. https://postgresapp.com/downloads.html 접속 후 Latest Release 다운로드 🚩 Step 2. Applications 폴더로 복사 🚩 Step 3. $PATH 설정 1. Introduction 탭으로 이동 2. $PATH 설정 코드 복사 후 terminal에서 실행 🚩 Step 4. Terminal을 새로 켠 후 psql 커맨드 입력..