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"를 선택한 다음, 원하는 버전을 선택하고 다운로드 아이콘(구름 모양)을 클릭한다.처음에 다운로드가 활성화되지 ..
웹이든 앱이든 데이터베이스(DB)와 연결되어 있고, 쿼리를 사용한다면 SQL 튜닝은 언제나 중요한 이슈가 된다. 그래서 MySQL을 주 DB로 사용하는 입장에서 관련 서적을 자주 접하게 된다.이번에 읽은 책은 "업무에 바로 쓰는 SQL 튜닝"으로 MySQL과 MariaDB에서 SQL 튜닝을 시작하려는 사람들을 대상으로 한 입문서라고 소개되어 있었다.이 책의 목차는 다음과 같다:1장 MySQL과 MariaDB 개요2장 SQL 튜닝 용어3장 SQL 튜닝의 실행 계획4~5장 악성 SQL 튜닝 MySQL과 MariaDB 개요이 장에서는 MySQL과 MariaDB의 역사 그리고 오라클과의 비교를 통해 몇 가지 쿼리 차이점을 간략히 설명한다. 제목 그대로 개요만 다루고 있어 별다른 깊이 있는 내용은 없다. SQL ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj31h5%2FbtsIQgfoM28%2FrMHmOKgim1tiJs3SpO41oK%2Fimg.png)
1년 전부터 손목이 안 좋아져서 손목이 덜 꺾이는 로지텍 마우스를 사용해 왔다. 그런데 어느 날 갑자기 왼쪽 클릭이 잘 안 되기 시작했다.물을 쏟은 적도, 마우스를 떨어뜨린 적도 없는 깨끗한 상태였기 때문에 원인을 알 수가 없었다.처음에는 다음과 같은 방법들을 시도했다.1. 블루투스 재연결2. 배터리 충전3. 전원 껐다 켜기4. 다른 노트북에 연결해보기하지만 상황은 똑같았고,, 혹시나 해서 ChatGPT에게도 물어봤지만 소프트웨어 문제나 간단한 해결책이 없었고 A/S를 받는 것만이 답인가 싶었었다.그런데 보증기간도 지났고 증명할 수 있는 것도 없어서 새로운 마우스를 사야 하나 고민하게 되었다.. 그러던 중 비슷한 증상을 해결한 블로그를 발견!!그 블로그에서 제시한 해결 방법은 너무 간단했다. 마우스 클릭..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAAAd4%2Fbtr97nYOYUc%2FIhI6uPDmsy5kNSSAlksYh0%2Fimg.gif)
힙(Heap)- 힙(heap)은 데이터를 저장하고 조작하는 데 사용되는 트리 기반 자료구조- 일반적으로 힙은 완전 이진트리(complete binary tree)를 기반으로 하며, 부모 노드와 자식 노드 간의 대소 관계가 있다.- 최소 힙(min heap)은 부모 노드가 항상 자식 노드보다 작거나 같은 값을 가지는 힙을 말하며,- 최대 힙(max heap)은 부모 노드가 항상 자식 노드보다 크거나 같은 값을 가지는 힙을 말한다. 문제 1) 프로그래머스 - 더 맵게# heapq는 파이썬의 내장 라이브러리 중 하나로, 힙(heap) 자료구조를 제공하는 모듈# heapq 모듈은 리스트(list)를 힙 자료구조로 변환하고, 힙의 원소를 삽입하고 삭제하는 함수들을 제공한다.# heappush 함수는 힙에 원소를 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPyYwQ%2Fbtr9Yl7C80a%2FxJk6eQjAAWQUi1FPHtzHJk%2Fimg.png)
해시(Hash)- 임의의 크기를 가진 데이터를 고정된 크기의 데이터로 매핑하는 함수문제 1) 프로그래머스: 완주하지 못한 선수 * 라이브러리 없이 풀이def solution(participant, completion): part = {} for person in participant: part[person] = part.get(person, 0) + 1 for person in completion: part[person] -= 1 result = [key for key, value in part.items() if value > 0] return result[0]이 코드의 시간 복잡도는 O(n)for 문을 사용하여 parti..
![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 정리 지속성은 데이터베이스 시스템에서 중요한 특..