최신글 돈과 경험은 많을수록 좋은걸까? 다양한 분야의 지식과 많은 경험을 추구하는 가치관에 대한 재고현대 사회에서 높게 평가되는 태도로 끊임없이 새로운 것을 추구하고(Newness Seeking) 하나 꽂히면 끝장을 보는 중독적 성향(Addictive Personality)이 있습니다. 이게 궁극적으로는 불안에서 비롯되는 것이고, 이렇게 불안한 사람들은 빠르게 새로운 문제들을 해결해 나가다 보니 성공할 확률이 높아지게 되는 것입니다.그런데 새로운 것을 찾아다니다 보면 결국 모든 문제가 거기서 거기임을 깨닫게 되는 순간이 있습니다. 오히려 몰랐을 때의 기대감보다 알고 나니 별거 아닐 때 허무함이 더 클 때가 많아요.돈과 명예의 맹목적인 추구가 부적절한 것임을 이제는 많은 사람들이 알지만, 사실 지식과 경험으로 대상만 바뀐 게 아닌가 싶습니다. .. 댓글 1 2025.01.12 [성능 개선] 데이터베이스 튜닝의 시작, 인덱스 활용하기 데이터베이스의 성능을 향상시키기 위한 자료구조인 인덱스는 테이블의 특정 컬럼으로 생성된다. 이 때 카디널리티와 선택률은 어떤 컬럼에 대해 인덱스를 작성할 것인지 기준이 되는 지표이다. 1) 카디널리티가 높을수록 카디널리티란 값의 균형을 나타내는 개념이다. 모든 레코드에 다른 값이 들어가 있는 유일 키 컬럼인 경우 카디널리티가 높아 인덱스로 생성하기 적절하다고 판단한다. 반대로 모든 레코드에 같은 값이 들어가 있다면 카디널리티가 낮은 컬럼이다. 가령 데이터 타입이 Boolean인 컬럼을 기준으로 인덱싱을 한다면 모든 값이 TRUE OR FALSE라 인덱싱의 효율이 떨어진다. 이름, 아이디, 주소같은 데이터가 높은 카디널리티를 갖는다. 2) 선택률이 낮을수록 선택률은 특정 컬럼 값을 지정했을 때 테이블 전체.. 댓글 0 2023.05.24 [성능 개선] 결합을 지배하는 자가 성능을 지배한다 결합 알고리즘은 결합의 성능을 결정하고 SQL 전체의 성능을 좌우하는 요인으로, 옵티마이저가 어떤 알고리즘을 선택할지 여부는 데이터 크기 또는 결합 키의 분산이라는 요인에 의존한다. Nested Loop Nested Loop는 중첩 반복을 사용하는 알고리즘이다. 1) Nested Loop의 작동 ① outer loop: 결합 대상 테이블(구동 테이블)에서 레코드를 하나씩 반복해가며 스캔한다. ② inter loop: 구동 테이블의 레코드 마다 내부 테이블의 레코드를 하나씩 스캔해서 결합 조건에 맞으면 리턴한다. ③ 이러한 작동을 구동 테이블의 모든 레코드에 대해 반복한다. 2) Nested Loops의 특징 Nested Loops의 실행 시간은 레코드 수에 비례한다. (접근 대상 레코드 수 = R(A) .. 댓글 1 2023.05.21 [성능 개선] 데이터베이스의 성능을 좌우하는 쿼리 평가 엔진과 버퍼 매니저 DBMS 아키텍쳐 개요 쿼리 평가 엔진 쿼리 평가 엔진은 사용자로부터 입력받은 SQL 구문을 분석하고, 어떤 순서로 기억장치의 데이터에 접근할지를 결정하는데 이 때 결정되는 계획을 '실행 계획'이라고 한다. 이러한 실행 계획에 기반을 둬서 데이터에 접근하는 방법이 '접근 메서드'이다. 한마디로 쿼리 평가 엔진은 계획을 세우고 실행하는 DBMS의 핵심 기능을 담당하는 모듈이다. 실행 계획 실행 계획이 만들어지면 DBMS는 그것을 바탕으로 데이터 접근을 수행한다. 하지만 데이터양이 많은 테이블에 접근하거나 복잡한 SQL 구문을 실행할 경우 옵티마이저가 최적의 실행 계획을 선택하지 못할 수 있다. 이처럼 SQL 구문의 지연이 발생했을 때는 다음 명령어를 통해 실행 계획을 확인한다. DBMS 명령어 Oracle.. 댓글 1 2023.05.18 [SQL] CTE, 뷰 그리고 임시 테이블 대용량 데이터를 다룬 이후로 성능에 대한 관심이 커졌다. 특히 자주 사용하는 컬럼들에 대해 임시 테이블을 생성했던 것이 다른 테이블들과 조인 시 확실히 효율적이고 체감 성능도 개선되었던 좋은 경험이었다. 그래서 CTE와 뷰, 임시 테이블을 사용할 때 실제로 성능 차이가 있는지, 그리고 임시 테이블을 생성하기까지 몇 차례의 시행착오가 있었기 때문에 CTE와 임시 테이블을 언제, 어떻게 사용해야 할지 알아보았다. CTE와 뷰의 차이 우선 CTE와 뷰에 대해서는 이전에 메모해둔 내용이 있어서 다시 찾아보았다. 오늘 강의에서는 뷰에 대한 내용이 있었는데 뷰의 쓰임 중 하나가 복잡한 연산을 용이하게 하는 것이어서 with절과의 차이가 무엇인지 궁금해서 추가로 찾아보았다. 임시테이블이라는 관점에서는 유사하지만 .. 댓글 1 2023.05.17 유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 12주차 학습 일지 2022.04.24 ~ 2022.04.28 12주차에는 드디어 마지막 해커톤 프로젝트와 발표가 있었다. 교육 과정이 끝나자마자 끔찍한 감기 몸살을 겪어 12주차 학습 일지는 제출하지 못했지만 해커톤 대시보드 cheat sheet와 회고로 늦은 마무리를 해보려 한다. (분명 11주차 학습 일지에서 '좋은 컨디션으로 마무리할 수 있었으면 좋겠다'라고 썼었는데..😢) 목차 프로젝트: 어린이 독서 습관에 따른 웅진북클럽 콘텐츠 운영 전략 유데미 스타터스 취업 부트캠프 4기 데이터분석/시각화 과정 이수 후기 프로젝트: 어린이 독서 습관에 따른 웅진북클럽 콘텐츠 운영 전략 사용 데이터 이용자 정보 TBL 회원 정보 TBL 상품 구매 이력 TBL 온라인 콘텐츠 열람 로그 TBL 콘텐츠 정보 TBL 전시 정보 TBL .. 댓글 4 2023.05.09 유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 11주차 학습 일지 2022.04.17 ~ 2022.04.21 11주차는 고객 분석을 중심으로 SQL 실습과 마지막 프로젝트를 대비한 미니 프로젝트를 진행했다. 배운 내용을 복습하는 것은 이번 학습일지가 마지막이 될 듯해서 어떤 내용으로 마무리를 하면 좋을지 고민하다가 이번 주 학습일지에서는 유데미 스타터스 학습일지 포스팅을 통해서 블로그 유입이 얼마나 발생했을지 데이터로 확인해보기로 했다. 특히 재구매율 지표를 응용하여 블로그 재방문율을 구해보았다. 목차 월별 재구매율(복습) 일별 블로그 재방문율(응용) 월별 재구매율 step 1. 고객 구매 월 중복없이 구하기(date_trunc) -- 월별 재구매율 step 1. 고객 구매 월 중복없이(date_trunc) ), cte_month_customer as ( select .. 댓글 0 2023.04.23 유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 10주차 학습 일지 2022.04.10 ~ 2022.04.14 10주차부터는 SQL 실습이 시작되었다. 이제 정말 스타터스 교육 과정의 막바지여서 기대반 걱정반으로 마지막 프로젝트를 기다리며 하루하루를 보내고 있는데 와중에 SQL 실습도 그리 녹록치는 않았다. 개인 과제와 팀 프로젝트, 극악의 밸런스 게임이었다.. 그리고 마지막 프로젝트에서 태블로와 SQL을 동시에 활용해야 하는 부분에 대해서 슬슬 걱정이 되기 시작했다. 무엇을 태블로로 작업하고 무엇을 SQL로 접근해야 하는지? 그래서 이번 주 학습일지에서는 지표 추출 쿼리들을 복습하고 시각화까지 연습하려 한다. 목차 매출지표 일반 매출액, 구매자수, 주문건수 ARPPU, AOV 매출지표 고급 매출증감 매출누계 이동평균 ABC 분석 Z차트 매출지표 일반 1. 매출액, 구매.. 댓글 0 2023.04.16 유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 9주차 학습 일지 2022.04.03 ~ 2022.04.07 9주차는 지난 주에 이어서 진행하던 프로젝트를 마무리하고 곧바로 태블로 스페셜리스트 자격증을 준비했다. 아무래도 최종 프로젝트 전 마지막 프로젝트이다보니 긴장도 되고 어느 때보다도 피드백에 집중하게 되었다. 특히 다른 조들의 발표에서 주제를 전개하는 방식이나 LOD, 날짜 수식을 기재하는 방식들을 참고할 수 있었다. 직,간접적으로 영향을 받게 될까봐 다른 사람의 작업물을 보는 것을 기피하는 편인데 그래도 '하나만 얻어가자'라는 평소 가치관으로 마음을 다잡았다. 그리고 대망의 자격증.. 최대한 일과 시간에 졸지 않고 집중해서 공부했고 결과는 다행히 합격이었다. 오랜만에 한시름 놓은 기분이다. 이번 주 학습일지에서는 대시보드 Cheat Sheet로 마지막 프로젝트를.. 댓글 0 2023.04.09 유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 8주차 학습 일지 2022.03.27 ~ 2022.03.31 8주차는 태블로 고급 그래프 시각화를 배우면서 새로운 프로젝트를 진행했고 태블로 스페셜리스트 자격증 준비를 병행했다. 개인적으로는 틈틈이 SQL 해커랭크, 리트코드 연습문제를 풀었는데 이틀 밖에 하지 못했다. 아침 시간을 활용하려 하는데 프로젝트가 시작되면 아무래도 다른 것을 병행하기는 어려웠다. 이번 주 학습일지에서는 진행 중인 프로젝트를 복기하면서 프로젝트에서 사용했던 고급 그래프들을 복습하려 한다. 목차 태블로 고급 그래프(게이지 차트, 막대 게이지 차트, 불릿 차트, 폭포 차트) 프로젝트: Google Playstore Free to Paid App Conversion Dashboard 태블로 고급 그래프 게이지 차트 계산된 필드 생성 (sales(%)).. 댓글 0 2023.04.02 Placements (HackerRank) Placements | HackerRank Write a query to output the names of those students whose best friends got offered a higher salary than them. www.hackerrank.com Write a query to output the names of those students whose best friends got offered a higher salary than them. Names must be ordered by the salary amount offered to the best friends. It is guaranteed that no two students got same salary offer. 풀이.. 댓글 0 2023.03.28 262. Trips and Users (LeetCode) Trips and Users - LeetCode Can you solve this real interview question? Trips and Users - Table: Trips +-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | request_at | leetcode.com Write a SQL query to find the cancellation rate of requests with unbanned users (both client and drive.. 댓글 0 2023.03.27 이전다음 코없분: 코딩없이 분석하기 어떤 데이터를 봐야 할까? - 지표 설정 오늘 처음 만난 사람에게 데이터를 보여주면서 '이것이 문제입니다'라고 말할 때 어떤 데이터를 활용해야 할까? 문제라고 정의한 것과 이를 설명하기 위한 데이터(지표)가 논리적으로 일치하지 않는 경우가 많다. '어딘가에서 그래프와 표를 수집해서 그로부터 내릴 수 있는 결론을 내리'는 접근법을 취하기 때문인데 이처럼 '데이터 중심'으로 분석하다 보면 단순히 데이터를 통해 알 수 있는 사실을 열거하게 될 뿐이다. 따라서 '목적 중심'으로 말하고자 하는 결론에 부합하는 데이터를 제시하기 위해서는 용어의 정의가 명확하고 설득력 있는지 목적과 문제, 결론과 활용된 데이터가 일치하는지 검토하여 적합한 지표를 설정해야 한다. 잘못된 지표 설정 사례 1. 문제 정의가 명확하지 않은 경우 문제: 고객 불편사항에 대한 개선이.. 2023.02.20 야 너두 수요 예측 할 수 있어! - 이동 평균 데이터 분석은 예측이다 방향성, 대상, 목표, 규모, 패턴, 전략 수립 등 통찰을 원하는 모든 행위가 더 나은 내일을 위한 것이라면 데이터 분석은 모두 예측을 위한 행위라고 할 수 있다. 출처: 한 달 공부 데이터 분석(71p) 시계열 분석은 과거의 데이터를 바탕으로 미래의 상황을 예측하는 데이터 분석 방법이다. 시계열 분석 방법 중 가장 기본이 되는 이동평균법으로 매출 수요를 산출해보고 실제 해당 년도의 매출과 얼마나 일치하는지 비교해보려고 한다. 이동평균에 의한 수요 예측은 다음의 두 가지를 고려한다. 이동평균은 장기적인 예측보다 다음 차수의 예측값을 확인하는 데에 적합하다 이동평균을 구해 예측할 때는 언제나 예측값에 따른 변화와 실제 매출 추이를 비교하고 점검한다 필요 데이터 2 ~ 3개년의 월별 .. 2023.02.03 왜 내가 한 데이터 분석은 그저 그런 것일까? - 문제 정의 “데이터 분석을 통해 상황을 파악하고 문제를 정의한다”는 말의 의미 갖고 있는 데이터를 적당히 만지다 보면 어떤 추세나 특징을 파악할 수는 있겠지만 이를 통해 알 수 있는 사실은 제한적이다. 그래서 이미 알고 있는 내용의 그저 그런 분석에 그치게 되는데 이 때 선행되어야 하는 것이 ‘문제 의식’이다. 문제 의식은 무엇을 알고 싶은지, 이를 확인할 수 있는 지표를 어떻게 정의할지, 확인한 사실로 무엇을 하고 싶은지 객관적인 주장을 합리적인 결론으로 도달하게 하는 문제 해결 중심의 사고방식이다. 특히 내가 가장 어려움을 느낀 부분은 현상과 문제, 원인을 구분해서 정의하는 것인데 이것도 앞서 연습한 가설-검증 방법 수립처럼 훈련이 필요하다. (사실 문제 정의 단계가 선행되어야 한다) 따라서 겉으로 드러난 현상.. 2023.01.30 지표 개선은 어떻게 하는 거에요? - 가설과 검증 목표 지표가 있다는 전제하에 지표를 개선하기 위해서는 '어떤 액션이 지표에 영향을 주었는지' 확인해야 한다. 지표를 개선하려면 1) 달성하고 싶은 지표를 결정한다. 2) 사용자 행동 중에서 지표에 영향을 많이 줄 것으로 보이는 행동을 결정한다. 3) 2)에서 결정한 행동 여부와 횟수를 집계하고 1)에서 결정한 지표를 만족하는 사용자의 비율을 비교한다. 예) [목표] 다음날 지속률을 개선하고 싶다 [가설] 다음날 지속해서 사용하는 사용자는 등록 당일에 특정 액션을 취하지 않을까? [검증] 등록 당일에 액션을 했는지 여부를 집계하고 다음날 지속률 비율을 비교한다 출처: 데이터 분석을 위한 SQL 레시피(301p) 돌려 돌려 말했지만 결국 특정 액션 여부와 횟수에 따라 지표의 결과가 어떠한지 액션과 지표의 관.. 2023.01.13 more 바닥부터 이커머스 기획 17. 교환/반품/환불 정책 정의 1단계: 처리상태 정의하기 - 주문취소 상태에 대해 정의했다. (입금전/결제완료/상품준비중(배송전)) - 교환준비(수거전) 상태를 추가로 정의했다. 어드민에서 교환 신청을 접수 처리하고 상품이 회수되기를 기다리는 단계가 필요하다. 카페24에서 반품은 수거전 상태가 정의되어 있었는데 교환은 없어서 동일하게 회수 단계가 필요하다고 생각했다. - 카페24에서 반품은 반품처리중(수거전), 반품처리중(환불전)으로 구분되는데 환불 여부는 별도의 상태값으로 관리한다. 그래서 반품준비(수거전) 상태를 정의했다. - 한 가지 헷갈린게 반품완료 상태인데 아래 매뉴얼에 의하면 궁극적으로 반품완료라는 것은 환불이 완료된 상태를 의미한다. (환불전까지는 반품처리중 상태이므로) 2단계: 교환/반품/환불 정책 정의하기 여기서는 교.. 2021.03.08 16. 교환/반품/환불 데이터 설계 1단계: 교환/반품/환불 데이터 나열하기 일단 교환과 반품 프로세스는 모두 환불로 이어진다.(더 큰 금액의 상품으로 교환 시 추가 입금하는 경우 제외) 각 교환, 반품 접수 처리 시 동시에 환불 접수를 처리할 수 있다. 이 때 접수 처리란 고객의 신청이 발생한 시점이 아닌 관리자가 신청 건을 접수 처리하는 것을 말한다. 그래서 교환, 반품 단계는 신청-접수이지만 환불은 접수-완료이다. 각 테이블에 들어갈 데이터를 주황색으로 표시해보았고 나머지 데이터들은 이전 테이블에서 정의한 데이터들이다. 2단계: 교환/반품/환불 테이블 구성하기 - 선후 관계를 따지면 주문취소, 교환, 반품 신청이 일어나야 환불이 일어나는 것이므로(그리고 미입금 주문 취소나 동일 상품 교환 등 환불이 꼭 필수가 아닌 경우도 있음) 각 .. 2021.02.15 15. 주문 취소 플로우차트 1단계: 주문 취소 프로세스 분석 주문서가 접수되고 결제확인을 위해 발주서 목록을 조회한다. 정상적으로 결제가 완료된 발주서 목록을 가지고 상품 준비가 가능한지 확인한다. 상품 준비에 문제가 없으면 상품준비 단계로 이동한다. 이 때 상품 준비 가능 여부를 다시 한 번 체크하고 입금후 주문 취소 신청 내역이 있는지 확인한다. 관리자가 주문 취소 신청을 승인하였다면 이 주문은 취소 처리가 완료된 것이다. (정확히는 출고 중지 요청으로 이어짐) 관리자의 승인이 이루어지지 않은 경우 배송준비중 단계로 이동한다. 아래의 쿠팡 배송/환불 API 워크플로우를 참고하였다. 결과적으로 주문 취소가 일어날 수 있는 케이스는 다음과 같다. 1) 입금전 입금전 주문취소 2) 배송전 결제완료: 품절 주문취소 / 결제직후 주문취.. 2021.01.25 14. 주문 취소 정책 정의 1단계: 처리상태 정의하기 주문 취소 상태는 추후 교환/환불 상태와 함께 정의할 것이다. 2단계: 주문 취소 정책 정의하기 앞서 입금후 주문 취소는 배송전까지 가능한 것으로 정의했다. 배송전 상태는 상품준비와 배송준비로 구분된다. 그런데 위 매뉴얼에서 설명한 것과는 달리 보통 구매자는 배송준비중인 경우 주문 취소를 할 수 없다. 아래 썸바이미라는 쇼핑몰의 사례이다. 이 경우 [배송준비중] 상태에 입금(주문)확인-상품준비-배송준비 과정을 모두 포함한다. 주문서를 보고 상품 준비, 송장 등록시점을 구분해서 고지하지 않기 때문에 구매자가 배송준비중 단계에서 주문 취소가 불가능하다는 것이다. 그렇다면 왜 카페24에서는 배송준비중 단계에서 주문 취소가 가능할까? 한참 고민했는데 답은 너무 당연하게도 관리자이기 때.. 2021.01.21 13. 주문 취소 데이터 설계 1단계: 주문 취소 데이터 나열하기 주문 취소는 크게 입금전과 배송전으로 나뉜다. 입금전에는 전체 주문취소만 가능하고 입금(결제)이후 배송전(상품 준비, 배송 준비)에는 상품마다 부분 취소가 가능하다. 배송이 시작되면 주문을 취소할 수 없고 상품마다 개별 반품을 신청하게 된다. 2단계: 주문 취소 테이블 구성하기 첫 번째 이슈는 주문 취소내역을 따로 저장하는 테이블의 필요 여부였다. 한 건의 주문에 여러 건의 주문 취소가 발생한다면 취소 내역을 주문 테이블과 별도의 테이블로 분리해야 할 것이다. 여러 건의 주문 취소가 발생할 수 있는 경우는 두 가지인데 하나는 부분 취소 케이스이고 다른 하나는 주문-주문취소-주문취소 철회 케이스이다. 부분 취소는 품목별 주문번호가 있기 때문에 사실상 각각 별도의 주문이라.. 2021.01.19 12. 배송 플로우차트 1단계: 배송 프로세스 분석 현재 가장 일반적인 배송 프로세스를 떠올려보면 주문 발생 시 판매자가 직접 택배사에 택배를 접수한다. 이후 택배사는 판매자의 제품을 수거해서 물류 센터에 집화시킨다. 이 때 물류 센터는 제품을 입고시키지 않고 분류 작업만 하는 경유지로써 기능하는데 이게 크로스도킹(Cross Docking) 이다. 나에게는 매우 친숙한 배송 프로세스인데 알고 보니 오픈마켓 초기에 서로 다른 판매자들의 배송 편차를 컨트롤(주문 합배송)하기 위한 혁신적인 방법이었다고 한다. 물류 센터는 재고를 보유하지 않기 때문에 운영비가 감소하고 구매자는 배송비를 중복으로 지불할 필요가 없다는 장점이 있다. (이 Pick up&Delivery 방식은 D&Shop이라는 업체의 물류 대행 비즈니스 모델이었는데 현재.. 2021.01.13 more