VMware에 Ubuntu까지 설치가 완료되었다면 이제 PostgreSQL을 설치할 차례다. 목차1. PostgreSQL 설치2. PostgreSQL 동작3. PostgreSQL 접속 PostgreSQL 설치1. PostgreSQL Package 저장소 생성우선 PostgreSQL 패키지 저장소를 추가해야 한다.sudo apt install -y postgresql-commonsudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh 2. PostgreSQL Package 업데이트저장소가 추가되면 패키지 리스트를 업데이트한다.sudo apt update –y 3. PostgreSQL Package 설치PostgreSQL 15 버전을 설치한다.sudo ap..
이번에 PostgreSQL Admin 교육을 받게 되어 교육 내용들을 다음에도 보기 위해 정리해 놓으려고 한다.목차1. M1에 VMware 설치하기2. Ubuntu 설치하기3. 패키지 설치 M1에 VMware 설치하기Window 노트북이 없어서 Mac에서 VMware를 설치했다. VMware Fusion 13 Pro가 개인용으로 무료로 제공되기 때문에 쉽게 다운로드할 수 있다.- 먼저 Broadcom Support에서 회원가입을 하고 아래 링크에서 VMware Fusion을 다운로드한다.VMware Fusion 다운로드 링크- "VMware Fusion 13 Pro for Personal Use"를 선택한 다음, 원하는 버전을 선택하고 다운로드 아이콘(구름 모양)을 클릭한다.처음에 다운로드가 활성화되지 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNb5aZ%2FbtsIghEQ0of%2F0mpNZniWlC8ggmUfWb1ZT1%2Fimg.png)
이기종 마이그레이션을 실습해 보고 간단하게 어떠한 과정을 거치는 알아보려고 한다.환경은 MySQL 8버전 PostgreSQL 15 버전이다. MySQL 데이터베이스 접속mysql -u root -p MySQL 데이터베이스 생성먼저 MySQL에서 데이터베이스를 생성한다.CREATE DATABASE testdb; MySQL 테이블 생성생성한 데이터베이스에 접속한 후 테이블을 생성한다.USE testdb;CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(15) NOT NULL, position VARCHAR(15), hire_date DATE); 샘플 데이터 삽입INSERT INTO employees (nam..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsrN0q%2FbtsHXuddbKq%2Fmil1EbjTjJva22hxyoV1Ek%2Fimg.png)
PostgreSQL에서 대규모 데이터를 효율적으로 관리하고 쿼리 성능을 최적화하기 위해 파티셔닝을 활용하는 방법을 단계별로 테이블을 생성하고 데이터를 삽입하며 성능 비교를 수행한다. 초기 설정 및 데이터 생성먼저 practice_org라는 테이블을 생성하고 여기에 랜덤 데이터를 삽입한다. 그런 다음 인덱스를 생성한다.-- PostgreSQL에 접속psql -U postgres-- 테이블 생성CREATE TABLE practice_org ( id serial NOT NULL, g int NOT NULL);-- 랜덤 데이터 삽입INSERT INTO practice_org(g)SELECT floor(random() * 100)FROM generate_series(0, 10000000);-- 인덱스 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7zeuZ%2FbtsHlFOguCP%2FVFpkoy0uHmFeckl4ROw5x1%2Fimg.webp)
데이터베이스의 테이블과 인덱스가 디스크에 어떻게 저장이 되고 그리고 SELECT를 했을 때 어떤 식으로 데이터를 가져오는지 정리해보려고 한다! Table 데이터베이스에서 테이블은 저장소에 비트와 바이트 형태로 저장한다.가로: row(행), 세로: column(열)emp_idemp_nameemp_birthemp_salary2000Hussein1/2/1988$100,0003000Adam3/2/1977$200,0004000Ali5/2/1982$300,000 Row_ID1. 사용자가 직접 생성하거나 수정할 수 없는 내부 시스템에 의해 관리되는 열이다.2. 데이터베이스 관리 시스템이 내부적으로 사용하고 유지 관리하는 식별자로, 각 행을 고유하게 식별하는 데 사용된다.row_idemp_idemp_nameemp_bi..
설명 한 번 트랜잭션이 커밋되면, 그 결과가 영구적으로 데이터베이스에 반영되어 시스템 장애가 발생하더라도 유지된다는 것을 보장 내용 Durability techniques 구분 설명 예시 WAL(Write ahead log) 기본 원리 데이터를 데이터베이스 파일에 직접 쓰기 전에 모든 변경 사항(트랜잭션)을 로그 파일에 먼저 기록하는 것 작동 원리 로그 기록 - 데이터 쓰기 - 회복 절차 Redo, Undo Asynchronous snapshot 장점 1. 데이터 복구 지원 2. 성능 저하 최소화 3. 데이터 일관성 보장 buffer RDB / AOF RDB 특정한 시점의 스냅샷으로 백업하는 방식 AOF 모든 쓰기 명령에 대한 로그를 남기는 방식 Redis 정리 지속성은 데이터베이스 시스템에서 중요한 특..
설명 트랜잭션의 실행 전과 후에 데이터베이스가 정의된 비즈니스 규칙과 제약 조건을 계속해서 충족하도록 보장하는 속성 내용 구분 설명 비고 데이터의 일관성 데이터가 일관된 상태를 유지하는 것을 의미 사용자에 의해 정의, 참조 무결성(외래키) 원자성, 고립성(격리 레벨에 따라 달라짐) 읽기의 일관성 데이터를 읽을 때 사용자가 항상 최신의 일관된 데이터를 보게 되는 것 데이터의 변경 사항이 다른 트랜잭션에 어떻게 즉시 반영되는지는 격리 레벨에 따라 달라짐 이는 관계형 및 비관계형 데이터베이스 모두에 적용되며, 참조 무결성을 포함한 일관성을 보장하는 데 필수적 데이터의 일관성 예시 pictures 테이블 ID(PK) title LIKES 1 Sunset 2 2 Mountain View 1 picture_like..
설명 같은 데이터를 쓰고 읽기 위해 다중 트랜잭션의 동시성이 발생할 수 있는 가능성이 있는데 이것이 고립의 시작이며, 격리 레벨에 따른 읽기 현상이 발생한다. 내용 트랜잭션 격리 레벨(Transaction Isolation Level) [MySQL] 트랜잭션 격리 수준(간단한 정리) READ UNCOMMITTED 정의 다른 트랜잭션에서 아직 커밋되지 않은 데이터도 조회할 수 있다. 부정합 '더티 리드(Dirty Reads)'가 발생할 수 있다. 아직 확정되지 않은 데이터를 읽어서 그 트랜잭션이 롤백되 zambbon.tistory.com 읽기 현상(Read Phenomena) 구분 설명 Dirty Reads 아직 커밋되지 않은(즉, 최종 확정되지 않은) 데이터를 읽는 현상 Non-Repeatable Rea..
설명 트랜잭션의 모든 쿼리들은 성공해야만 한다. 하나의 쿼리가 실패한다면, 트랜잭션의 이전 성공한 쿼리들은 즉시 롤백 트랜잭션의 커밋 이전에 데이터베이스가 다운된다면, 트랜잭션의 이전 성공한 쿼리들은 즉시 롤백 내용 원자성을 구현하는 방법에는 여러 가지가 있다. 가장 일반적인 방법은 로깅과 체크포인트를 사용하는 것이다. 구분 설명 Logging 트랜잭션과 관련된 모든 변경 사항을 로그에 기록한다. 트랜잭션이 실패할 경우, 로그를 사용하여 변경 사항을 롤백하고 데이터베이스를 이전 상태로 복원할 수 있다. Checkpoints 주기적으로 또는 특정 조건에서 데이터베이스의 현재 상태를 안전한 저장 위치에 기록한다. 시스템 장애 발생 시, 최근 체크포인트부터 복구 과정을 시작하여 시간과 자원을 절약할 수 있다...
트랜잭션 이란? A Collection Of Queries(쿼리 모음) One Unit Of Work(하나의 작업 단위) 예시) 은행 거래(SELECT, UPDATE, INSERT) 트랜잭션 수명(Transaction Lifespan) 구분 설명 Begin 트랜잭션 시작 Execution 트랜잭션 실행 Validation 트랜잭션 검증 / 결정 Commit or Rollback 트랜잭션 커밋(디스크에 입력) or 트랜잭션 롤백(메모리에 있는것을 되돌리기) Unexpected Ending 예상치 못한 상황(=Rollback) ex) Crash, Bug 트랜잭션 특성(Nature of Transactions) 데이터베이스 트랜잭션이 안전하고 신뢰할 수 있도록 만드는 규칙 세트 구분 설명 Atomicity(원..