어떻게 DBMS가 SQL 쿼리를 실행하는지에 대해서 알아 볼 것이다. 어떻게 '인덱스'라는 것으로 쿼리를 최적화 하는지를 다룰 것이다. 1. 인덱스(Index)란 무엇인가 - 인덱스란 DBMS나 SQL을 사용하는 툴이 제공하는 피처이다. 이 인덱스를 통해서 쿼리의 속도와 성능을 증가 시킬 수 있다. WHERE문을 사용하여 조건에 해당하는 것을 쿼리할 때, 인덱스가 이 검색하는 것을 도와주는 역할을 한다. WHERE문이 없는 쿼리는 테이블 전체를 가져 오기 때문에 더 빠르게 하지 않는다. 위의 그림에서 볼 수 있듯, WHERE + 조건을 통해서 쿼리 할 때, 테이블의 모든 row를 기준에 맞는지 검색해야 하는데, entry가 많고 큰 테이블일 경우 이 모든 row를 검색하는 것이 매우 느리고 비효율적이 될..
이 글에서 다룰 내용은 다음과 같다. 1. Data normalization을 이해한다. (테이블을 어떻게 나누어야 하는지) 2. INNER JOIN, LEFT JOIN 등으로 데이터를 결합하는 방법 3. Data relationships의 타입들 (One-to-One, One-to-Many, Many-to-Many) 데이터베이스에서 데이터는 Key를 통해서 연결된다. 한 테이블의 primary key가 다른 테이블의 foreign key로 사용된다. Primary key와 foreign key를 통해서 테이블간의 관계를 형성 하는 방식이 전형적인 SQL 세계에서 connection을 형성하는 방법이다. 모든 테이블은 최대한 하나의 Primary key를 가질수 있지만 모든 테이블은 여러개의 Foreig..
오늘 백준 Brute-force 알고리즘에 관련한 문제를 풀다 한번 정리 하고 싶다는 생각이 들어 글을 작성한다. 아래 글은 reference에도 남기겠지만, 'Do it! 자료구조와 함께 배우는 알고리즘 입문'을 정리한 글이다. 1. 브루트-포스(Brute-force)법 완전탐색 알고리즘이다. 모든 경우의 수를 탐색하면서, 요구 조건에 충족되는 결과만을 가져 온다. 선형 검색을 확장한 알고리즘이다. 예시로 문자열을 검색하는 알고리즘을 들어 보자. 문자열에 특정 문자열이 들어 있는지 조사하고, 들어 있따면 그 위치 index 값을 반환하는 프로그램을 작성한다 생각해보자. 텍스트 "ABABCDEFGHA"에서 패턴 "ABC"를 브루트포스법을 이용해 검색하는 순서는 다음과 같다. (1) 문자열의 첫 문자 'A..
람다식과 Optional, Stream은 정말 한 세트같다는 느낌이 든다. 그래서 현재 람다식 공부를 깊게 하지 않은 나에게, 람다식을 필수적으로 공부해서 잘 사용할 수 있게 만들어야 겠다는 생각이 든다. 먼저 Optional 클래스가 Java 8 버전부터 등장했는데 왜 Optional이라는 클래스가 추가 되었으며, 이 클래스가 하는 역할이 무엇이라서 어떤 경우에 쓸수 있는지를 알아보고자 한다. 1. Optional 클래스란 Optional이라는 의미에서도 알수 있다싶이, "존재 할수도 있지만 안 할 수도 있는 객체". 즉 " Null이 될수도 있는 객체"를 감싸고 있는 Wrapper 클래스를 말한다. Optional 클래스를 살펴 본다면, Optional는 제네릭 클래스로 T 타입의 객체를 감싸는 래퍼..
1. Stream이란 스트림이란 영어의 뜻처럼 데이터의 연속적인 흐름을 말한다. 스트림이 JDK 1.8부터 등장하여 사용 방법이 다 다른 다양한 Collection Framework들을 표준화 하여 다루는것이 가능하게 해주었다. 스트림은 데이터 소스를 표준화된 방법으로 다루기 위해서 등장 하였고, 안에는 데이터를 다루는데 자주 사용되는 메소드들을 정의해 놓았다. 데이터 소스를 추상화 하여 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 되었고, 코드의 재사용성이 높아지는 결과를 가져오게 되었다. 예를들어, String[] strArr = {"Apple", "Banana", "Orange"}; List strList = Arrays.asList(strArr); //출력 Arrays.sort(str..
git push를 할때 다음과 같이 terminal에서 내 아이디와 깃헙에서 발급한 token을 입력해야 한다. 이렇게 매번 commit 할때 마다 토큰번호를 입력해만 하고 토큰을 잊으면 다시 새로운 토큰을 발급해야하고, 그러지 않기 위해 어디에 복사 해놔야 하고 매번 push때마다 토큰을 복사-붙혀넣기 하는 것이 여간 귀찮은 일이 아니다. SSH를 이용하면 그럴 필요가 없어진다고 한다. 1. SSH란 SSH는 Secure Shell의 줄임말로 보안이 강화된 안전한 방법으로 정보를 교환하는 방식입니다. SSH에서는 기본적으로 Private key와 Public key를 한 쌍으로 묶어서 컴퓨터를 인증한다. public key는 말 그래도 외부에 공개되는 키이고 private key는 아무도 알 수 없게 ..
2022년, 00시가 지나고 나서 내가 가장 먼저 한 일이 있는데 바로 내 깃헙 주소의 README.md 파일을 작성한 것이다. 그리고 어제부터 이틀간 git에 대해서 공부했는데, 전반적인 git 사용법에 대해서 정리해 보고자 한다. 1. Git은 왜 사용할까 git은 버전 관리를 하기 위해서 리눅스 운영체제를 만든 사람인 Linus Torvalds가 2005년에 처음 소개했다고 한다. 이를 통해 수많은 소스코드를 효율적으로 관리할 수 있다. 깃으로 크게 '버전관리', '백업', '협업'을 할 수 있다. 2. Git을 통한 버전 관리 (1) Working Tree와 Stage 그리고 Repository - Working Tree(작업 트리) : 파일 수정, 저장 등의 작업을 하는 디렉토리. working..
- Total
- Today
- Yesterday