CS 지식
-
MySQL Hint (옵티마이저 힌트 & 인데스 힌트)CS 지식/데이터베이스 2022. 7. 29. 15:47
Hint 조인이나 인덱스 실행 계획을 개발자가 옵티마이저에 힌트를 주어 바꿀 수 있는 것이 힌트 옵티마이저 힌트 와 인덱스 힌트 두 종류로 나뉜다. 옵티마이저 힌트 optimizer_switch 시스템 변수를 설정하여 제어 가능 후속 쿼리에 대한 영향을 주기 때문에 mysql에 대한 이해도가 깊지 않다면 지양해야한다. 명령문 내의 옵티마이저 힌트 optimizer_switch 보다 선행되며 다양한 범위 수준에서 적용된다. 전역 전체 문에 영향 쿼리 블록 명령문 내의 특정 쿼리 블록에만 영향 테이블 쿼리 블록 내의 특정 테이블에만 영향 인덱스 테이블 내의 특정 인덱스에만 영향 주석 내에 지정해서 사용하며 SEMIJOIN, BKA 등이 있다. (상세한 것은 나중에 옵티마이저 힌트가 필요해지면 추가 정리) 인..
-
Surrogate key vs Natural Key (대체 키 vs 자연 키)CS 지식/데이터베이스 2022. 7. 29. 15:20
Surrogate key vs Natural Key Surrogate Key(대체 키) 비즈니스 의미가 없는 시스템 생성 값 (system generated) GUID, sequence, unique identifier... 컬럼들 중 유일하게 식별 가능한 단일 후보키가 존재하지 않는 경우, 임의의 식별번호로 이루어진 후보키 하나 이상의 컬럼으로 구성 (복합키) 비즈니스 의미가 없이 순차적 정수가 고유 키 역할을 하는 예시. 장점 비즈니스 요구 사항에 따른 변경 사항이 없음 모든 엔티티에서 동일한 키 전략을 유지하는 경우 코드가 줄어듦 애플리케이션 코드가 모두 순차적인 정수로 구현된 경우, 기본 키를 참조할 때 재사용 가능 대체 키는 고유성이 보장됨 시퀀스가 사용되면 값이 계속 증가하여 인덱스 단편화가 ..
-
Array DequeCS 지식/자료구조 2021. 1. 29. 17:37
Array Deque AbstractCollection 클래스와 Deque, Cloneable, Serializable 인터페이스를 상속받는 클래스 특징 사이즈 제한이 없다. ( -> 입력받는 크기에 따라 resize 된다.) 외부 동기화가 없는 상태에서, 멀티 쓰레드에서 동시 엑세스가 안된다. == Thread Safe를 보장하지 않는다.) 요소로 null을 저장할 수 없다. Stack과 LinkedList보다 빠른 속도 Thread-safe 멀티 스레드 프로그래밍에서 일반적으로 어떤 메소드나 변수, 또는 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램 실행에 문제 없음 하나의 메소드가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 해당 메소드를 호출해서 동시에 함께 실행해도 각 스..
-
Nginx 작동 원리CS 지식/기타 2021. 1. 15. 14:33
Nginx apache의 한 시스템에 동시 접속자 수가 1만명이 넘어갈 때, 효율적이지 못한 문제를 해결하기 위해 나온 Event-Driven 구조의 웹 서버 SW 가벼움과 높은 성능을 목표로 탄생 웹 서버, 리버스 프록시, 메일 프록시 리버스 프록시 컴퓨터 네트워크에서 클라이언트를 대신해서 한 대 이상의 서버로부터 자원을 추출하는 프록시 서버의 일종 자원들을 웹 서버 자체에 가지고 있는 것처럼 (origin 처럼) 클라이언트로 반환 목적지에 직접 접근하지 않고 프록시를 통해 데이터를 주고 받는 포워드 프록시와 반대되는 개념으로, 리버스 프록시는 다른 서버의 정보를 프록시를 통해 받아오는 중간 매개체 사용자가 요청하는 Endpoint는 접근하고자 하는 최종 목적지 서버가 아닌, 리버스 프록시 리버스 프록..
-
HashMap과 해시 충돌CS 지식/자료구조 2021. 1. 14. 18:08
HashMap과 HashTable 관계 HashTable JDK 1.0부터 있던 Java의 API Map 인터페이스를 구현하고 있기 때문에 HashMap과 HashTable이 제공하는 기능은 같다. JDK 버전에 따른 구현에 거의 변화가 없다. HashMap Java 2에서 처음 선보인 Java Collections Framework에 속한 API 보조 해시 함수(Additional Hash Function) (~> hashCode) 를 사용 보조 해시 함수를 사용하지 않는 HashTable에 비하여 해시 충돌(hash collision)이 덜 발생할 수 있어 상대적으로 성능상 이점이 있음 JDK 버전에 따라 지속적으로 개선되고 있다. HashTable의 현재 가치는 JRE 1.0, JRE 1.1 환경을..
-
TreeCS 지식/자료구조 2021. 1. 14. 15:46
Tree Tree 스택이나 Queue와 다르게 비선형 & 계층적 관계 자료 구조 트리는 표현에 집중한다 Node, Edge, Root Node, Terminal Node(Leaf Node, 단말 노드) => 하위에 다른 노드가 없는 최하위 노드, Internal Node(내부 노드, 비단말 노드) => 단말 노드를 제외한 모든 노드(루트 포함) Binary Tree 루트 노드를 중심으로 두 개의 서브 트리를 가지는 자료구조 서브 트리 또한 모두 이진 트리여야함 (공집합 포함) 트리의 depth를 숫자로 매겨서 레벨(Level)이라고 함( 0부터 시작 left child key) 부모의 키가 오른쪽 자식 노드의 키보다 작다. (parent key < right child key) 서브 트리도 모두 이진 탐..
-
Array vs LinkedListCS 지식/자료구조 2021. 1. 14. 15:45
Array vs LinkedList Array 논리 저장 순서랑 물리 저장 순서가 일치함 인덱스로 원소에 접근이 가능하기 때문에, O(1)로 엑세스 가능 삭제 or 삽입은 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 또 한 가지의 작업을 추가적으로 해줘야 하기 때문에, 시간이 더 걸린다. 맨 뒤에 요소를 추가하는 것은 O(1)이지만, 원래 존재하던 요소의 앞쪽에 삽입한다면 뒤에 있는 요소들의 인덱스를 +1씩 해줘야함 삭제의 경우도 뒤에 있는 요소들을 한칸씩 땡겨줘야함 (인덱스 -1) 위의 두 경우 모두 O(n)의 작업이 추가적으로 필요하다 LinkedList 논리 저장 순서와 물리 저장 순서가 일치하지 않음 논리 저장에는 실제 저장되어있는 요소의 주소 값이 들어있다. 각 원소들은 자신의 다음 원소..
-
NoSQLCS 지식/데이터베이스 2021. 1. 14. 15:35
NoSQL RDBMS를 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화된 data store 동적 스케일 아웃을 지원 CAP 이론 일관성 (Consistency) 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터 보증 관계형 데이터베이스가 지원하는 가장 기본적인 기능 일관성을 지원하지 않는 NoSQL 을 사용하면, 데이터의 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음 느슨하게 처리된다는 것 === 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것 이러한 방법을 최종적으로 일관성이 유지된다고 하여 최종 일관성 또는 궁극적 일관성을 지원한다고 함 분산 노드 간의 데이터 동기화를 위해서 두 가지 방법 동기 방법 데이터의 저장 결과를 클라이언트로 응답..