YouTube 클론 프로젝트 - Product App(YouTube) 한 방 쿼리 작성
2021. 10. 2. 23:16
YouTube Clone Project
이 글은 전 포스팅에 이어지는 글입니다. https://jminie.tistory.com/114 Product App 데이터 모델링 및 ERD 구축 📌 데이터 모델링이란? 우리는 일상생활에서 모델을 많이 접하고 있다. 예술 분야의 작품의 대상과 건축 분야의 설계도 등을 우리는 모델이라고 일컫는다. 이와 같이 모델이란 어떤 대상을 의 jminie.tistory.com 이번 글에는 유튜브의 각 화면을 SQL문 하나로 가져오는 이른바 한방 쿼리(?)를 사용하여 화면에 맞는 데이터를 불러와 보도록 하겠다. 모든 부분을 일일이 다 가져오지는 못했다. 당초 유튜브라는 거대한 앱의 모든 데이터들을 ERD화 시키기가 힘들었다. 📌 한방 쿼리 1. 유튜브 첫 화면 select V.thumbNail, V.vidioName..
YouTube 클론 프로젝트 - Product App(YouTube) 데이터 모델링 및 ERD 구축
2021. 10. 2. 16:49
YouTube Clone Project
📌 데이터 모델링이란? 우리는 일상생활에서 모델을 많이 접하고 있다. 예술 분야의 작품의 대상과 건축 분야의 설계도 등을 우리는 모델이라고 일컫는다. 이와 같이 모델이란 어떤 대상을 의미하는 포괄적 의미를 가지고 있으며, 특히 데이터 모델은 현실 세계에 대한 우리가 관심 있는 대상을 데이터베이스 화하기 위한 개념적 도구라고 정의할 수 있다. 📌 데이터 모델링 단계 개념 데이터 모델링 : 주제별로 분류 가능한 업무를 분석해서, 핵심 엔터티를 추출하고 그들 간의 관계를 정의하여 데이터 전체 골격을 생성한다. 논리 데이터 모델링 : 핵심 엔터티와 관계를 바탕으로 상세 속성을 정의하고 식별자를 확정하며, 정규화와 같은 상세화 과정을 수행한다. 물리 데이터 모델링 : DBMS의 특성 및 구현 환경 등을 감안한 스..
AWS RDS 구축 - 데이터베이스 분리 (MySQL)
2021. 9. 29. 16:40
Server Program
📌 왜 AWS RDS를 구축할까? Web Server(WS), Backend Lanauage(BL), DataBase(DB)로 구성된 서버에는 2가지 구조가 존재한다. 1) DB가 각각 서버 컴퓨터에 존재하는 경우 장점: 하나의 계정이 해킹당해도 다른 그 계정으로 다른 서버 컴퓨터에는 있는 DB에 접근할 수 없으므로 보안상 강점이 있다. 단점: 상호 서버간 DB 호환성이 좋지 않다. 따라서 정보 공유가 어려고, 특히 서버가 다운되면 DB도 함께 꺼진다.(데이터 유실 가능성) 2) DB가 독립된 경우 장점: 상호 서버간 DB 호환성이 좋다. 서버가 다운되어도 데이터 유실이 발생하지 않는다. DB를 따로 관리하다 보니 DB에 보안을 집중할 수 있게 된다. 단점: 보안상 위험, 각 서버와 연동되면서 속도 저하..
리트코드(LeetCode) 561번 배열 파티션(Array Partition)
2021. 9. 27. 16:07
Algorithm
📌 첫 번째 풀이 크게 어렵지 않은 문제이다. 우선 규칙을 확인해야 하는데 주어지는 수는 무조건 짝수이고 리스트를 오름차순으로 정렬한 뒤 2개씩 묶으면 왼쪽에 있는 숫자의 합을 구하면 된다. 예를 들어 [6, 2, 6, 5, 1, 2] 라면 정렬을 하면 [1, 2, 2, 5, 6, 6] 이 되고 이를 2개씩 묶으면 (1, 2), (2, 5), (6, 6) 이 되어 1+2+6 = 9 가 배열 파티션의 최댓값이 되는 것이다. 이를 위해 for 문의 range(x, y, z) 의 세 번째 파라미터 즉 z는 증분을 지정하는 파라미터라는 성질을 이용해 풀었다. nums를 정렬 한 뒤 홀 수 번째 있는 숫자들만 result에 담은 뒤 sum(result)를 해준다. 풀이 코드 class Solution: def a..
리트코드(LeetCode) 238번 자신을 제외한 배열의 곱(Product of Array Except Self)
2021. 9. 27. 14:44
Algorithm
📌 첫 번째 풀이 (시간 초과) 우선 제일 먼저 생각난 것은 for문을 돌리면서 자신을 제외한 모든 수를 곱한 것을 새로운 arr배열에 넣는 것이었다. 하지만 이를 위해서는 필수적으로 이중 for문이 들어가게 되고 문제의 조건인 시간 복잡도 O(N)을 만족할 수 없게 되어 시간 초과가 나오게 되었다. class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: arr = [] for i in range(len(nums)): num = 1 for j in range(len(nums)): if i == j: continue else: num *= nums[j] arr.append(num) return arr 📌 두 번째 풀이 그렇다면 ..