분류 전체보기 88

[SQLD] 데이터 모델링, 데이터 독립성, 스키마

데이터 모델링   데이터 모델링정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법으로, 시스템 구현'만'을 위해 수행하는 테스크가 아니다현실 세계의 데이터를 약속된 표기법으로 표현하는 과정데이터베이스를 구축하기 위한 분석 및 설계의 과정데이터 모델링 자체로도 업무를 설명하고 분석할 수 있어야 한다 데이터 모델링 유의점중복데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다비유연성'데이터의 정의'를 '데이터의 사용 프로세스'와 분리이를 통해 '데이터나 프로세스의 작은 변화'가 '애플리케이션과 데이터베이스'에 중대한 변화를 일으킬 수 있는 가능성을 줄인다 비일관성데이터간의 연관된 정보가 있는데 이를 무시하고 데이터가 갱신되는 경우를 말한다데이터의 중복이 없더라도 비일관성은 발생할 수..

DataBase 2025.02.05

[Real MySQL 8.0] RDBMS중 왜 MySQL을 선택했는가?

RDBMS를 선택하기 위한 기준은 다음 순서대로 생각해보면 좋다안정성성능과 기능커뮤니티나 인지도여기서 추가적으로 비용까지 고려해서 비교해보자.비교할 RDBMS들은 'DB-Engines'의 랭킹 1위부터 4위까지중, windows 플랫폼에 최적화된 'Microsoft SQL Server'를 제외하고 'Oracle', 'MySQL', 'PostgreSQL'만으로 비교해보겠다.      비교 1. 안정성 - ACID 준수 여부 -> ACID를 준수하는가?Oracle: ACID를 완벽하게 준수PostgreSQL: ACID를 완벽하게 준수MySQL: InnoDB 엔진 사용시 ACID를 준수하지만, 기본 설정에서는 읽기 일관성(Read Consistency)를 보장하지 않기에, 별도 설정이 필요하다- 장애 발생 시..

DataBase 2025.01.24

[AWS] EC2 Key Pair 다른 Region으로 옮기기 (feat. Value for parameter PublicKeyMaterial is invalid. Length exceeds maximum of 2048)

EC2의 Key Pair는 다른 리전으로 복사할 수가 없다.하지만 Key Pair Import 기능이 있으니, 기존의 Key Pair를 직접 까서 값을 복사한 후 import 해주는 방법을 사용해 보자. 이때 Key Pair Import시에 private key가 아닌 public key만을 import 할 수 있으므로, 다음 절차를 잘 따라서 진행하자.  1. Key-Pair가 저장된 디렉터리로 이동 2. 다음 명령어를 사용하여 private key에서 public key를 추출ssh-keygen -y -f Key이름.pem  3. AWS EC2 -> Network & Security -> Key Pair로 이동해서 "키 페어 가져오기"  4. 이름 & 추출한 public key 붙여 넣고 생성   5..

[RabbitMQ] RabbitMQ Management 접속 에러 해결하기

Problem: aws ec2에서 RabbitMQ를 docker-compose로 실행시켰는데 RabbitMQ Management인 'ec2 ip:15672'에 접속하면, 'ec2 ip에서 접근을 거부하였습니다' 에러 발생  Environment - aws ec2- docker-compose에서 포트 포워딩 설정 완료- 인바운드 규칙에서 15672 포트 설정 완료 DOCKER-COMPOSE.YMLDOCKER-COMPOSE.YML-----------------------------version: "3"networks: # network를 먼저 정의해줘야 services에서 붙일 수 있다 my-network: # 네트워크 이름 external: true # 이미 생성되어있는 네트워크 사용# docker..

[백준/Java] 농구 경기 1159

1. 첫 번째 풀이(success): HashMap 사용import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/** * condition * - 성의 첫 글자가 같은 선수 5명을 선발 * * answer * - 가능한 성의 첫 글자를 사전순으로 공백없이 출력 * - 5명보다 적다면 PREDAJA 출력 * * approach * - HashMap 사용 * - 입력받은 이름의 첫 번째 값의 value 증가 * - 모든 입력이 끝난 후 cnt가 5 이상인 값들을 sb에 추가 후 출..

[RabbitMQ] docker-compose 실행시 오류 해결

ec2에서 docker-compose를 사용하여 rabbitmq를 실행할 때 발생했던 오류들의 해결과정을 정리해보았다docker로 실행시킨 rabbitmq 컨테이너 로그는 "docker logs 컨테이너이름" 으로 확인할 수 있으니 확인해보자 origin - Infoserveraws ec2ubuntu 22.04.5 LTSdocker-composeversion-3RabbitMQrabbitmq: image: rabbitmq:3-management-alpine container_name: rabbitmq ports: - "5672:5672" # default - "15672:15672" # management plugin volumes: - ./.docker/rabbitmq/data..

[백준/Python] 수리공 항승 1449

1. 첫 번째 풀이(success): 슬라이딩 윈도우(아님ㅋㅋ;)'''슬라이딩 윈도우로 한번 탐색 때리면 될듯!- 가장 첫 번째 지점부터 탐색하기 위해 물 세는 곳을 정렬- end = stt + l, (lst[-1]+0.5 in visited == True) 가 될 때까지 탐색- 방문할 곳이 연속적이라는 보장이 없으므로 visited는 set으로 처리- (다음 누수지점-0.5, 다음 누수지점, 다음 누수지점+0.5)를 분기처리해서 탐색'''# 입력def input_data(): n,l = map(int,input().split()) lst = list(map(int,input().split())) return n,l,lst# maindef solution(n:int, l:int ,lst:..

[백준/Python] ABCDE 13023

1. 첫 번째 풀이(success): DFS'''Condition- A-B-C-D-E 가 되는 node가 있는가?Answer- 존재하면 1, 없으면 0 출력Approach- 모든 node를 root삼아 한번씩 dfs 돌려보면 될 것 같음 - 이때 depth가 5가 된다면 끝'''from sys import stdininput = stdin.readline# 입력n,m = map(int,input().split())graph = [[] for _ in range(n)]for _ in range(m): a,b = map(int,input().split()) graph[a].append(b) graph[b].append(a)# dfsvisited = [False] * ndef dfs(no..

[RabbitMQ] RabbitMQ를 사용한 분산 서버 간 데이터 동기화

현재 우리 회사의 서비스는 Untitled와 Titled 두 개가 존재한다. 이 서비스들에서 통합 계정을 사용하기 위해서는 인증/인가를 담당할 Auth 서버가 필요해서 총 세 개의 분산된 서버를 운용하게 된다. 문제는 이 서버들이 사용하는 DB 또한 다르기 때문에, 분산된 서버들에서 공통적으로 사용되는 유저 데이터가 동기화될 필요가 있다는 것이다. 이번 글에서는 내가 어떤 식으로 분산 서비스간 데이터 동기화를 구상했는지 알아보겠다      현재 상황 및 방법 선택에 있어서의 기준 정의   먼저, 여러 방법들 중에 우리 서비스에 적용할 방식을 고르기 위해 내가 중요하게 생각했던 기준은 다음과 같다문제를 효율적으로 해결할 수 있어야 한다: 당연하겠지만, 분산 서비스간 데이터를 실시간으로 동기화 할 수 있어야..

[백준/Python] N과 M (8) 15657

1. 첫 번째 풀이(success): 백트래킹'''Condition- n개중 m개 고름- 중복해서 뽑을 수 있음- 오름차순Answer- 중복값 출력x>>>> 백트래킹으로 풀자'''def dfs(cnt, seq:list, before, lst:list): global visited, answer # 조건 확인 if cnt == m and tuple(seq) not in visited: answer.append(seq[:]) visited.add(tuple(seq)) return # 탐색 for i in range(before, n): num = lst[i] seq.append(num) dfs(cnt+1, ..