분류 전체보기 154

DW/ETL - 데이터 웨어하우스의 필요성

개요BI/OLAP 개발자로서 데이터웨어하우스와 ETL, 차워 모델링에 대한 개념을 정리할 필요를 느꼈다. 이에 대한 관련 지식을 정리하면서 하나씩 써내려갈 생각이다. 가장 먼저 데이터 웨어하우스가 왜 필요한지를 짚어보는 것을 첫번째 주제로 삼았다. 데이터 웨어하우스는 기업의 운영과 분석에 필수적인 요소이다. 데이터의 효율적인 사용을 통해서 기업은 조직 운영을 원활히 하고 미래를 위한 전략적인 결정을 내릴 수 있다. 데이터의 두 가지 사용 목적을 OLTP, OLAP으로 나누어 살펴보고 이를 통해 데이터 웨어하우스의 필요성을 정리할 수 있도록 하겠다.OLTP( Online Transactional Processing )운영 데이터는 기업의 일상적인 활동을 지원하는데 사용된다. 여기에는 주문 접수 및 이행, ..

BI 2024.06.21

평생 공부할 생각

의외로 주변에 평생 공부할 생각을 가진 개발자는 그다지 없는 듯하다.내가 상상하던 개발자는 평생 공부할 생각을 가지고 사는 사람이었다.새로운 기술에 관심을 가지고 어떻게 하면 더 나은 시스템을 만들 수 있을지를 고민하는 사람이었다.내가 너무 이상적인 개발자의 상을 상상했던 것인지 모르겠다. 주변에 개발을 재미있어하고 일할 때만은 엄청나게 몰입해서 문제에 집중하고 풀어나가는 사람은 많다. 그런데서 즐거움을 느끼는 것만으로도 개발이 적성에 맞는다고도 할 수 있다. 하지만 평생 공부할 생각을 하는 사람은 그다지 없는 듯했다. 한 번은 누군가가 프론트엔드 개발자는 되기 싫다고 하는 이야기를 들은 적이 있다. 그 이유라는 게 매번 프레임워크가 바뀌니 새로운 공부를 해야할 것이 부담이라는 것이었다. 그 이야기를 들..

개발일기 2024.06.21

문서로 소통하는 것의 중요성

개발에서 소통은 중요하다. 지난 프로젝트를 진행하면서 느낀 점이었다. 이번 프로젝트에서는 유난히 소통이 잘 안 되고 있기에 더 크게 느끼고 있는 부분이다. 주어진 일을 할 뿐인 주니어 개발자 입장에서는 소통이라고 해도 일방적으로 요건을 받을 수 밖에 없다. 요구사항을 직접적으로 듣고 정리하는 것은 PM, PL의 역할이다. 전에 참여하던 프로젝트에서는 대부분 잘 정리된 요건에 내가 할일이 명확했다. 하지만 지금 프로젝트는 그렇지 못하다. PM, PL의 요구사항 정리 능력이 부족하든 현업의 그림이 구체적이지 못했든 소통 부분에서 문제가 있다고 느끼고 있다. 일을 받는 입장에서는 불만이 생기는 부분이다. 만들어야 하는 내용이 어제 다르고 오늘 다르기 때문이다. 불만을 간접적으로 내비치긴 했지만 PM, PL로서..

개발일기 2024.06.20

SQL튜닝 - SQL 튜닝의 기본 원칙과 전략

개요이번 글에서는 SQL 튜닝의 기본 원칙과 전략에 대해서 다루어본다. SQL 실행 계획의 생성 과정과 서능 튜닝의 중요성에 대해서 배우고 문제를 식별하고 해결하는 단계별 절차를 통해 성능을 최적화하는 방법을 배운다.문제 식별SQL 쿼리에서 문제가 발생하면 첫 번쨰로 해야 할 일은 문제를 식별하는 것이다. 네트워크나 CPU와 같은 외부 요인으로 인해 같은 외부 요인으로 인해 발생할 수 있으므로 문제의 정확한 원인을 파악하는 것이 중요하다. 문제가 쿼리나 데이터베이스 내부에 있는지 확인한 후 세부 사항을 명확히 해야한다.데이터 수집성능이 저하된 쿼리에 대한 데이터를 수집한다. SQL 성능 분석기, SQL 추적 도구, TKPROF, 운영 체제 보고서, 클라이언트 보고서 AWR 보고서 등 다양한 도구를 사용할..

DB&SQL 2024.06.07

경영 정보 시각화 - 1 : 경영과 정보

개요이 글은 경영 정보 시각화 시험에서 다루어지는 개념들을 정리하여 쓴 글이다. 주요 개념은 대한상공회에서 제공하는 시험가이드를 참고하여 정리하였으며 제공되는 정보 이외에도 알고 싶은 부분도 찾아서 정리해보았다. 오늘은 경영과 정보에 대하여 정리해보도록 하겠다. 경영(Management)경영은 조직의 목표를 달성하기 위해 자원을 효과적으로 계획하고 실행하며, 점검하고 개선하는 과정이다. 이 과정은 일반적으로 PDCA 사이클(Plan-Do-Check-Act)로 요약된다.계획: 목표를 설정하고 이를 달성하기 위한 전략과 방법을 수립한다.실행: 계획을 실행에 옮기고 실질적인 활동을 시작한다.점검: 실행 결과를 모니터링하고 평가하여 계획된 목표와의 차이를 확인한다.개선: 점검 결과를 바탕으로 필요한 조치를 취하..

BI 2024.06.01

SQL 튜닝 - Row Source Generator

개요이번 글에서는 로우 소스 생성기(Row Source Generator)에 대해 다루어보겠다. 로우 소스 생성기는 실행 계획 생성기의 다음 단계로 볼 수 있다. 실행 계획 생성기가 최적의 계획을 생성하면 이를 로우 소스 생성기에 전달하여 실제로 데이터베이스에서 실행 가능한 반복적 실행 계획을 생성한다. 이를 통해 쿼리가 최적의 성능으로 실행된다.로우 소스 생성기로우 소스 생성기는 실행 계획 생성기로부터 최적의 실행계획을 받아 이를 기반으로 실행 가능한 단계별 계획을 생성한다. 각 단계에서 생성된 행 집합(row set)을 다음 단계로 전달하며, 최종적으로 반복적 실행 계획(iterative execution plan)을 만든다.Row Source란 무엇인가?로우 소스는 행 집합을 가져오는 영역을 의미한..

DB&SQL 2024.05.31

SQL 튜닝 - 실행 계획 생성기

개요이번 글에서는 실행 계획 생성기(Plan Generator)에 대해 자세히 다루어보겠다. 옵티마이저의 마지막 구성 요소인 실행 계획 생성기는 다양한 실행 계획을 생성하고, 각 계획의 예상 비용을 계산하여 최적의 실행 계획을 선택하는 역할을 한다. 실행 계획이 어떻게 생성되는지에 대한 개요를 제공하고 주요 개념을 간단한 예제를 통하여 다루어 보겠다.실행 계획 생성기의 역할실행 계획 생성기는 다양한 접근 경로, 조인 방법, 조인 순서를 시도하여 여러 실행 계획을 생성한다. 생성된 각 계획의 비용을 추정기 (Estimator)가 계산한 후, 가장 성능이 좋은 계획을 선택하여 Row Source Generator에 전달한다.실행 계획 생성 방법접근 경로: 접근 경로는 테이블 데이터를 읽는 방법을 나타낸다. ..

DB&SQL 2024.05.29

SQL 튜닝 - 쿼리 비용(cost) 이해하기

개요이번 글에서는 쿼리의 비용에 대해 다루어본다. 기본적인 비용 개념은 전반적으로 이해가능한 부분이고 따라서 이전 글들에서도 가볍게 다루었지만 비용이 어떻게 계산되는지 그리고 비용이 무엇을 의미하는지 깊이 있게 다루어보지는 않았다. 이를 이햄함으로써 성능 튜닝을 이해하는 데에도 더욱 도움이 될 수 있을 것이다.쿼리 비용이란비용은 옵티마이저가 SQL 문을 실행하기 위해 예상되는 I/O 작업의 수이다. 비용 단위는 단일 블록을 읽는 작업을 의미한다. 예를 들어 실행 계획의 비용이 1,000이라면, 해당 쿼리를 실행하기 위해 1000개의 단일 블록을 읽어야 한다는 의미이다. 하지만 이는 단순한 추정치에 불과하다.비용 계산 방법비용은 디스크 I/O, CPU 사용량, 메모리 사용량을 종합하여 계산된다. 비용 계산..

DB&SQL 2024.05.28

SQL 튜닝 - 선택성과 카디널리티

개요이번 글에서는 선택성(Selectivity)와 카디널리티에 대해 자세히 알아본다. 선택성은 전체 테이블에서 반환되는 행의 비율이고 카디널리티는 선택되는 행의 수이다. 이는 옵티마이저의 비용 계산 실행 계획 관리 등에서 사용된다.선택성이란?선택성은 쿼리에서 반환되는 행의 비율이다. 테이블의 총 행 수에 대한 비율로 계산된다.SELECT COUNT(*) FROM sales WHERE promo_id = 22; sales 테이블에 약 90만 개의 레코드가 있다고 가정할 때 이 쿼리에서 반환되는 행 수가 약 80만개라고 하면 이 쿼리는 거의 모든 레코드를 반환하므로 선택성이 낮다. 반면에 promo_id를 33으로 변경하여 2000개의 행이 반환될 경우 선택성이 높아진다.선택성은 쿼리에서 반환되는 행 수를 ..

DB&SQL 2024.05.27

SQL 튜닝 - Query Transformer

개요이번 글에서는 Query Transformer에 대해서 알아보겠다. 이전 글에서 쿼리 최적화의 첫 번째 단계가 쿼리 변환이라는 것을 다루었따. 같은 결과를 반환하는 여러 쿼리가 있을 수 있지만 우리가 작성한 쿼리가 항상 최적의 것은 아니다. 쿼리 변환을 통해 오라클은 성능을 향상시키는 방향으로 쿼리를 변환하려고 시도한다. 물론 이는 쿼리의 의미를 변경하지는 않는다.쿼리 변환의 필요성우리가 작성한 쿼리가 항상 최적의 실행 계획을 가지고 있는 것은 아니다. 쿼리 변환기를 사용하여 오라클은 동일한 결과를 반환하지만 성능이 더 나은 쿼리로 변환한다. 하지만 이는 항상 적용되는 것은 아니며 원본 쿼리가 더 나은 경우 변환되지 않는다.쿼리 변환 방법오라클은 쿼리 성능을 향상시키기 위해 몇 가지 변환 방법을 사용..

DB&SQL 2024.05.26