반응형

공부 624

Part 5-4-2. 부록 : 쓰레드와 캐시

🌚 부록  지난 시간에는 데이터베이스 원리에 대해서 알아보았다. 데이터베이스는 많이, 빠르고, 안전하게 이 3가지의 특징을 잘 지켜야 하는데 각각의 개념은 서로 상충되기 때문에 쉽게 이 모든 것을 지키며 수행하기가 어렵다는 것을 알 수 있었다. 그렇지만 그 중에서도 안전성은 정말 정말 중요했기 때문에 무조건적으로 지켜야 한다는 것 까지 알 수 있었다. 오늘은 더 나아가 쓰레드와 캐시에 대해서 알아보는 시간을 가지되 이전 시간과 마찬가지로 실습이 아닌 이론을 통해 알아보도록 한다.  ⚽ 쓰레드   사실 쓰레드와 캐시는 Part 4 게임 서버 수업에서 이미 학습한 경험이 있어서 크게 어렵지 않다. 쓰레드와 캐시가 꼭 게임 서버에 국한되는 것이 아니라, SQL에도 적용되는 것이다. 그렇다면 데이터베이스에서 ..

Part 5-4-1. 부록 : 데이터베이스 원리

🌚 부록  지난 시간에는 소팅 즉 정렬에 대해서 알아보았다. 데이터베이스의 정렬은 데이터가 어마어마하게 많기 때문에 유의해야한다. 만약 하더라도 최소한으로 하되, 정말 필요한지 확인해야 하는 경우도 생긴다. 오늘은 데이터베이스의 원리에 대해서 알아보는 시간을 가져보도록 하자. 이번 시간에는 SQL을 통해 실습하는 것이 아닌 이론을 통해 진행된다.   👔 데이터베이스 원리  여태까지 관계형 데이터베이스를 통해 여러가지를 알아보았다. 1) SQL 구문을 사용해서 이용하는 방법2) 튜닝을 통해 보다 효율적으로 SQL을 작성하는 방법 (인덱스, 소팅 등)  사실 원래대로 라면 이론 먼저 공부를 하고 실습을 진행 하지만, 데이터베이스는 실습을 통해서 먼저 사용해보고 사용하면서 이러한 것들이 왜 필요한지 알아보..

Part 5-3-10. SQL 튜닝 : Sorting

🌞 SQL 튜닝  지난 시간에는 조인의 3가지 마지막 원리로 Hash 조인에 대해서 알아보았다. 해시 조인은 인덱스의 유무에 영향을 받지 않고, 정렬이 필요하지 않다는 장점을 가지고 있다. 오늘은 Sorting 즉 정렬에 대해서 알아보는 시간을 가져보도록 하자.  이번 시간에는 Northwind 데이터베이스를 사용하는 것이 아닌, 다시 BaseballData  데이터베이스를 사용한다. 🎑 Sorting  알게 모르게 많이 사용했지만, 사실 정렬은 굉장히 위험한 놈이다. 일반적으로 클라이언트에서 사용하는 데이터는 크기가 그렇게 크지도 않고, 일반적인 정렬의 시간복잡도는 O(NlogN)이기 때문에 한 두번 하는건 그렇게 위험하지 않다. 그러나 DB에서 사용하는건 유의해야 한다. DB는 클라이언트와 다르게..

Part 5-3-9. SQL 튜닝 : Hash 조인

🌞 SQL 튜닝  지난 시간에는 조인의 3가지 원리 중 하나인 Merge 조인에 대해서 알아보았다. 머지 조인은 양쪽 집합을 정렬하고 병합하여 Sort Merge 조인이라고도 부르기도 한다. 또한 다대다(Many-To-Many)보다는, 일대다(One-To-Many) 조인에 보다 효과적인 것 까지 알아보았다. 이번 시간에는 마지막으로 Hash 조인에 대해서 알아보는 시간을 가져보도록 하자.  이번 시간에는  BaseballData 데이터베이스를 사용하는 것이 아닌, 다시  Northwind  데이터베이스를 사용한다.  🧛‍♀️ Hash 조인  해시 조인은 인덱스가 없을 때 큰 위력을 발휘하는데, 오늘도 실습을 통해 알아보도록 하자. -- TestOrders 테이블 생성SELECT *INTO TestOr..

[밑시딥2] Chapter 4. word2vec 속도 개선

본 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 읽고 공부 및 학습 내용을 정리한 글입니다. 언제든지 다시 참고할 수 있도록, 지식 공유보단 개인적인 복습을 목적으로 포스팅하였습니다.  4.1 word2vec 개선 ①   3장에서 구현한 CBOW모델은 단어 2개를 맥락으로 이용해 하나의 단어(target)을 추측했다. 그러나 이 때에는 말뭉치를 7개만 사용했는데 실제로는 더 거대한 말뭉치를 사용하게 되는데 이 때 문제가 발생한다.   만약 100만개의 말뭉치 데이터를 사용한다고 하면 많은 뉴련으로 인해 두 계산의 병목 현상이 생긴다. 1. 입력층의 원핫 표현과 가중치 행렬 Win의 곱 계산2. 은닉층과 가중치 행렬 Wout의 곱 및 Softmax 계층의 계산 1번은 입력층의 원핫 표현과 관련된 문제이며, ..

Part 5-3-8. SQL 튜닝 : Merge 조인

🌞 SQL 튜닝  지난 시간에는 조인의 3가지 원리 중 하나인 Nested Loop 조인 (이하 NL 조인)에 대해서 알아보았다. 우리가 일반적으로 사용하는 이중 포문의 형태가 바로 NL 조인이며, NL 특징으로는 먼저 액세스 한 OUTER 테이블의 로우를 차례 차례 스캔을 하면서 Inner 테이블에 랜덤 엑세스하며, 부분 범위 처리에 효과적인 것 까지 알아보았다. 이번 시간에는 그 다음 차례인 Merge 조인에 대해서 알아보는 시간을 가져보도록 하자.   마찬가지로 이번 시간에도 Northwind 데이터베이스를 사용하는 것이 아닌, BaseballData 데이터베이스를 사용한다.   🐋 머지 조인  Merge(병합) 조인은 일반적으로 Sort Merge(정렬 병합) 조인이라고 한다. 이전 시간에 살..

Part 5-3-7. SQL 튜닝 : Nested Loop 조인

🌞 SQL 튜닝  지난 시간에는 복합 인덱스를 사용 할 때 인덱스의 컬럼 순서를 어떻게 설정하냐에 따라 논리적 읽기의 값이 변하는 것에 대해서 알아보았다. 이번 시간에는 조인의 3가지 원리 중 하나인 Nested Loop(이하 NL 조인이라 한다.)에 대해서 알아보는 시간을 가져보도록 하자.   이번 시간에서는 이제 Northwind 데이터베이스를 사용하는 것이 아닌, BaseballData 데이터베이스로 돌아와 사용한다.  🐕‍🦺 조인의 원리  조인은 데이터베이스에서 굉장히 중요한 개념이다. 애당초 우리가 RDBMS를 사용할 경우 데이터는 모두 여러 테이블에서 가져와서 사용하기 때문이다. 예를 들어 MMORPG만 하더라도 플레이어 정보, 몬스터 정보, 아이템 정보 등 여러 정보를 담당하고 있는 데..

Part 5-3-6. SQL 튜닝 : 인덱스 컬럼 순서

🌞 SQL 튜닝  지난 시간에는 북마크 룩업이라는 개념에 대해서 알아보고, 이를 어떻게 줄이면 좋을지에 대한 다양한 방법이 대해서 알아보았다. 이번 시간에는 이전 시간에 학습한 Covered Index와 같이 복합 인덱스를 사용할 때 인덱스의 컬럼 순서를 어떻게 설정하냐에 따른 실행 속도에 대해서 알아보는 시간을 가져보도록 하자. 😎   마찬가지로 이번 시간에서도 저번 시간과 마찬가지로 BaseballData 데이터베이스를 사용하는 것이 아닌, Northwind 데이터베이스를 사용할 것이다.   🙋‍♀️ 복습  먼저 오늘도 인덱스 컬럼 순서에 대해서 알아보기 전에 이전에 학습한 것을 짧게 복습해보자. -- 논클러스터드-- 1-- 2 3 4-- 클러스터드-- 1-- 2 3 4-- Heap Ta..

Part 5-3-5. SQL 튜닝 : 북마크 룩업

🌞 SQL 튜닝  지난 시간에는 Index Scan과 Index Seek의 개념과 동작 방식은 어떻게 되는지, 마지막으로 어떤 방식이 더 좋은 방식인지 알아보았다. 이번 시간에는 이전 시간에 설명하지 않고 지나친 북마크 룩업(Bookmark Lookup)이라는 개념에 대해서 알아보고, 이를 어떻게 줄일 수 있을까?에 대해서 알아보는 시간을 가져보도록 하자. 😎    마찬가지로 이번 시간에서도 저번 시간과 마찬가지로 BaseballData 데이터베이스를 사용하는 것이 아닌, Northwind 데이터베이스를 사용할 것이다.   👁️‍🗨️ 복습  먼저 북마크 룩업에 대해서 알아보기 전에 이전에 학습한 것을 복기해보자. 이전 시간에 인덱스 스캔과 인덱스 시크에 대해서 학습했었다. 인덱스 스캔이 일반적으로..

Part 5-3-4. SQL 튜닝 : Index Scan vs Index Seek

🌞 SQL 튜닝  지난 시간에는 인덱스의 두 가지 종류인 클러스터드 인덱스와 논클러스터드 인덱스의 개념과 동작 방식, 그리고 어떤 차이점이 있는지 알아보았다. 이번 시간에는 Index Scan과 Index Seek의 개념과 동작 방식은 어떻게 되는지, 마지막으로 어떤 방식이 더 좋은 방식인지에 대해 알아보는 시간을 가져보도록 하자. 😎    마찬가지로 이번 시간에서도 저번 시간과 마찬가지로 BaseballData 데이터베이스를 사용하는 것이 아닌, Northwind 데이터베이스를 사용할 것이다.   👜 인덱스 접근 방식  이전 시간에 간략하게 인덱스 접근 방식, 소위 엑세스를 어떻게 하는가?를 언급한 바 있다. 인덱스 접근 방식은 소위 말하는 Index Scan과 Index Seek 두 가지로 나뉘..

[밑시딥2] Chapter 3. word2vec

본 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 읽고 공부 및 학습 내용을 정리한 글입니다. 언제든지 다시 참고할 수 있도록, 지식 공유보단 개인적인 복습을 목적으로 포스팅하였습니다.  3.1 추론 기반 기법과 신경망 단어를 벡터로 표현하는 방법은 크게 두 부류로 나눌 수 있다. 하나는 '통계 기반 기법' 이하 A와 나머지는 '추론 기반 기법' 이하 B라 한다. 이번 장에서는 이전 시간에 학습했던 A의 문제를 지적하고 그 대안으로서 사용하는 B의 이점을 알아보자. 3.1.1 통계 기반 기법의 문제점 A의 문제점은 대규모 말뭉치를 다룰 때 발생한다. 기존까지는 적은 말뭉치를 통해 A를 처리했지만, 현업에서 쓰는 말뭉치는 100만이라는 수를 훌쩍 넘는다고 한다. 만약 어휘가 100만 개라면, A는 100만 *..

[밑시딥2] Chapter 2. 자연어와 단어의 분산 표현

본 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 읽고 공부 및 학습 내용을 정리한 글입니다. 언제든지 다시 참고할 수 있도록, 지식 공유보단 개인적인 복습을 목적으로 포스팅하였습니다. 2.1 자연어 처리란? 우리가 일상생활에서 평소에 쓰는 한국어, 영어와 같은 말을 자연어라고 한다. 따라서 자연어 처리(Natural Language Processing, NLP)란? 말 그대로 '자연어를 처리하는 분야'이며, 사람의 말을 컴퓨터에게 이해시키기 위한 기술이다. 2.2 시소러스 시소러스란 사전적 정의로는 '뜻이 같은 단어(동의어)'나 '뜻이 비슷한 단어(유의어)'가 한 그룹으로 분류된 것을 뜻한다. 이러한 시소러스는 자연어 처리에서 '상위와 하위' 혹은 '전체나 부분'등 조금 더 세세한 관계까지도 정의할 수 있..

[밑시딥2] Chapter 1. 신경망 복습

본 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 읽고 공부 및 학습 내용을 정리한 글입니다. 언제든지 다시 참고할 수 있도록, 지식 공유보단 개인적인 복습을 목적으로 포스팅하였습니다. 1.1 수학과 파이썬 복습 1.2 신경망의 추론 1.3 신경망의 학습 1.4 신경망으로 문제를 풀다 1.5 계산 고속화 1.6 정리신경망은 입력층, 은닉층(=중간층), 출력층을 지닌다.완전연결계층에 의해 선형 변환이 이뤄지고, 활성화 함수에 의해 비선형 변환이 이뤄진다.완전연결계층이나 미니배치 처리는 행렬로 모아 한꺼번에 계산할 수 있다.오차역전파법을 사용하여 신경망의 손실에 관한 기울기를 효율적으로 구할 수 있다.신경망이 수행하는 처리는 계산 그래프로 시각화할 수 있으며, 이를 통해 순전퍼와 역전파를 이해하는 데 도움이 된..

신입생을 위한 백준공부법

이 글은 23학번인 제가 24학번 신입생들을 위해 작성하는 글 입니다. 개발자가 되기를 원하는 여러분들은 프로그래밍 실력을 키워야합니다. 프로그래밍이라는 단어에 포함되는 의미는 여러가지가 있겠지만 프로그래밍의 기본이 되는 문제해결력을 기르고 자료구조 알고리즘을 공부하는 것은 여러분이 선택한 분야와는 상관없이 꼭 필요한 능력입니다. 그렇다면 백준이라는 사이트를 통해 문제해결력을 기르고, 자료구조와 알고리즘은 난이도 순서대로 효과적으로 공부해나가는 방법에 대해 알아봅시다.  더 읽어보기 및 출처 : Velog의 dlgkdms4660님https://velog.io/@dlgkdms4660/%EC%8B%A0%EC%9E%85%EC%83%9D%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%B0%B1%EC%..

공부/자기계발 2024.06.24

코딩 테스트를 준비하는 모두를 위한 조언

합격자가 되고 싶은 여러분에게이번 글에서는 코딩 테스트에 어떤 마음가짐으로 임하면 좋을지, 책 ‘코딩 테스트 합격자 되기’ 저자들의 조언을 모아봤습니다. 그럼 여행을 떠날 준비를 한다고 생각하면서 함께 천천히 살펴보겠습니다. 코딩 테스트를 조금 더 효율적으로 준비하기 위해서는 타인의 풀이를 확인하고, 내가 생각한 테스트 케이스를 추가하는 것이 좋습니다. 왜 그런지 구체적인 내용을 알아보겠습니다.  더 읽어보기 및 출처 : 요즘 IT의 골든래빗님https://yozm.wishket.com/magazine/detail/2612/?utm_source=stibee&utm_medium=email&utm_campaign=newsletter_yozm&utm_content=contents 코딩 테스트를 준비하는 모두를..

공부/자기계발 2024.06.24

의사소통이 즐거운 개발자의 3가지 능력

몇 년 지난 일입니다. 회사 CTO님이 판교에서 개발자를 구하는 창업자를 만나고 와서 했던 질문이 꽤 인상 깊게 남았습니다. 그는 “코딩 실력만 있는 것이 아니라 대화가 통하는 동시에 일도 믿고 맡길 수 있는 개발자가 한국에 몇 명이나 있을 것 같냐”고 내게 물었습니다. ‘누구와의 대화’가 통해야 하는 지는 불분명했지만, 제 추측으로는 창업자를 만나고 온 직후이니 고용주가 개발자와 나누고 싶은 이야기들이 그 대상일 듯했습니다. 생각해 본 일이 없어서 대답을 망설이자 그가 먼저 숫자를 제시했습니다. 충격적으로 적은 숫자였습니다. 정말 우리나라에 의사소통이 능통한 개발자가 그렇게 부족할까요? 돌아보면 저 역시 의사소통의 중요성을 깨달은 것은 오래되지 않은 듯도 합니다. 개발자에게 의사소통 능력이 역량의 전부..

공부/자기계발 2024.06.24

4년 차 개발자의 SI 대기업 이직기 ① 이직 결심부터 코딩테스트까지

“저 이직해요.” 전 회사에 이직을 알린 순간부터 현재 회사로 옮겨 n년째 재직 중인 지금까지, 이직에 대한 질문을 많이 받습니다. 생각보다 이직에 관심 있는 사람도, 실제로 준비하는 사람도 많다는 것을 알게 되었죠. 제가 이직을 준비할 때는 주변에 이직을 경험한 친한 선배가 없어 어려움을 겪었습니다. 그래서 구글링으로 다른 사람은 어떻게 준비하고 있는지 하나하나 찾아보고 참고해야 했습니다. 그럴 때마다 이직을 경험해 본 사람이 A부터 Z까지 정리해 줬으면 좋겠다는 생각을 많이 했습니다. 이번 기회에 제가 자주 받은 질문을 중심으로 제 경험을 직접 정리해 보고자 합니다. 두 편을 시리즈로 준비했고, 이번 글에서는 이직을 결심하는 것부터 면접 전, 즉 서류와 코딩테스트까지 과정을 다룰 예정입니다.  더 읽..

공부/자기계발 2024.06.24

Part 5-3-3. SQL 튜닝 : Clustered vs NonClustered

🌞 SQL 튜닝   지난 시간에는 복합 인덱스를 통해 여러 칼럼을 동시에 인덱스를 걸어서 조회하고, 또 동시에 인덱스를 건 상태에서 특정 칼럼만 조회할 경우 어떤일이 발생하는지에 알아보았다. 이번 시간에는 인덱스의 종류인 Clustered와 Non-Clustered의 개념과 각자 동작방식은 어떻게 되는지, 마지막으로 어떤 차이점이 있는지 알아보는 시간을 가져보도록 하자. 😋   단, 이번 시간에서도 저번 시간과 마찬가지로 BaseballData 데이터베이스를 사용하는 것이 아닌, Northwind 데이터베이스를 사용할 것이다. 😎    🎞 인덱스(Index)의 종류 인덱스의 종류는 크게 2가지로 나눠 볼 수 있다. 바로 Clustered Index와 Non-Clustered Index이다.  Cl..

Part 5-3-2. SQL 튜닝 : 복합 인덱스, 조회/SPLIT/가공 테스트

🌞 SQL 튜닝  지난 시간에는 인덱스 분석을 통해 인덱스를 생성하고, 생성한 인덱스의 값과 인덱스 내부에 테이블 값에 대해서 알아보았다. 이번 시간에는 복합 인덱스를 통해 여러 칼럼을 동시에 인덱스를 걸어서 조회해보고, 여러 칼럼을 동시에 조회했을 때 특정 칼럼만 조회할 경우 어떤일이 발생하는지 등에 대해 알아보는 시간을 가져보도록 하자. 😋  단, 이번 시간에서도 저번 시간과 마찬가지로 BaseballData 데이터베이스를 사용하는 것이 아닌, Northwind 데이터베이스를 사용할 것이다. 😎    🔶 복합 인덱스  복합 인덱스라고 하니 조금 어려워보이지만 사실 복합 인덱스는 인덱스를 걸 때 여러 컬럼을 동시에 인덱스를 걸어버리는 것이 복합 인덱스이다. 늘 그렇듯이 말로 설명하면 어려우니 예..

Part 5-3-1. SQL 튜닝 : 인덱스 분석, RID

🌞 SQL 튜닝  지난 시간에는 윈도우 함수를 통해 순위를 매기는 방법, 첫 값과 마지막 값, 이전 값과 다음 값등 다양한 윈도우 함수에 대해서 알아보았다. 이번 시간에는 인덱스 분석을 통해 인덱스를 생성하고 생성한 인덱스의 값에 대해서 알아보는 시간을 가져보도록 하자. 🧐  🍄 Northwind Database  이번 시간부터는 기존부터 사용하던 BaseballData 데이터베이스를 사용하는 것이 아닌, Northwind 데이터베이스를 사용할 것이다. 해당 데이터베이스는 설정과 관련된 정보는 아래 링크를 참조한다. https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs sql-server..

반응형