전체 글 215

[가상면접 사례로 배우는 대규모 시스템 설계 기초] Chap12. 채팅 시스템

본 글은 가상면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 페이스북 메신저와 유사한 채팅 앱을 설계해 볼 것이다. 응답지연이 낮은 일대일 채팅 기능 최대 100명까지 참여할 수 있는 그룹 채팅 기능 사용자의 접속상태 표시 기능 다양한 단말 지원. 하나의 계정으로 여러 단말에 동시 접속 지원 푸시 알림 5천만 DAU(Daily Acitve User)를 처리해야 함 2단계 개략적 설계안 제시 및 동의 구하기 클라이언트는 서로 직접 통신하지 않는다. 각 클라이언트는 채팅 서비스와 통신한다. 채팅 서비스는 아래 기능을 제공해야 함. 클라이언트로부터 메시지 수신 메시지 수신자(recipient) 결정 및 전달 수신자가 접속 상태가 아닌 경우, 접속할 때까지 해당 메시지 보관 채팅을 시작하려..

[가상면접 사례로 배우는 대규모 시스템 설계 기초] Chap01. 사용자 수에 따른 규모 확장성

https://hudi.blog/system-design-interview-alex-xu-1/ [가상면접 사례로 배우는 대규모 시스템 설계 기초] Chap01. 사용자 수에 따른 규모 확장성 이번장을 통해 사용자 수가 증가함에 따라 시스템의 규모를 확장해 나가는 과정을 개략적으로 공부해볼 것이다. 당장 각각의 내용을 깊게 이해하기는 어렵겠지만, 규모 확장과 안정적인 시스템 hudi.blog 본 글은 위 블로그의 포스팅된 글을 참조 및 재창조 한 글임을 알립니다. 단일서버 모든 컴포넌트가 단 한대에 서버에서 실행되는 간단한 시스템부터 설계 웹 서버가 클라이언트의 모든 요청 처리 과정 클라이언트는 DNS에 도메인 이름으로 IP를 질의함. 클라이언트는 DNS 조회 결과로 IP를 얻어온다. IP 주소는 웹 서버..

[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 5탄 : 집계함수 count, min, max, sum, avg, decode, group by, having

https://www.youtube.com/watch?v=BSA0MhvbikA 본 글은 [SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리, 을 시청하고 정리한 글입니다. 집계 함수 COUNT, MIN, MAX, SUM, AVG 의 예시 SELECT statn_nm , count(*) AS 개수 , MIN(BEGIN_TIME) AS 첫출발시간 , MAX(BEGIN_TIME) AS 마지막출발시간 , SUM(NMPR_CNT) AS 총합 , SUM(NMPR_CNT) / COUNT(*) AS 평균1 , AVG(NMPR_CNT) AS 평균2 FROM dasql.tb_pbtrnsp WHERE statn_nm LIKE '%혜화%' GROUP BY statn_nm; 2개 이상의 컬럼에 대해, COUNT() 함수..

[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 4탄 : row number, (dense) rank, ntile

https://www.youtube.com/watch?v=TkLIlVCFaLE&t=4s 본 글은 [SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리, 을 시청하고 정리한 글입니다. 분할하는 쿼리 PARTITION BY PARTITION BY 고객명 ORDER BY 방문일자 → 고객명으로 분할하고, 방문일자로 정렬하기 PARTITION BY 고객명, 구매항목 → 고객명으로 우선 분할하고, 구매항목으로 분할하기 PARTITION BY 고객명, 구매항목 ORDER BY 방문일자 DESC ROW_NUMBER() → 순서가 동차라면 랜덤으로 1번, 2번을 정함 ROW_NUMBER()의 예시 ROW_NUMBER () OVER (PARTITION BY 고객명 ORDER BY 방문일자) AS 순서 RANK ()..

[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 3탄 : 테이블 생성, 삭제, JOIN

https://www.youtube.com/watch?v=E-8kpSSLulU 본 글은 [SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리, 을 시청하고 정리한 글입니다. LEFT JOIN 왼쪽 테이블의 키 값을 기준으로, 오른쪽 테이블을 붙이는 것 RIGHT JOIN 오른쪽 테이블의 키 값을 기준으로, 왼쪽 테이블을 붙이는 것 INNER JOIN 두 테이블을 키 값을 기준으로 조인하여, 교집합을 만드는 것 FULL OUTER JOIN 합집합(둘 중의 하나의 키값만 있어도 조인) UNION 행을 기준으로 조인하기 때문에, 테이블 구성이 똑같아야 함 UNION ALL 중복 상관 없이, 행을 기준으로 조인하는 것 -- 테이블 생성 및 데이터 삽입 CREATE TABLE dasql.CUST_INFO (..