Computer Science

인덱스 DB검색을 효율적(빠르게)하기 위한 보조테이블이라고 생각하면 됨 조회성능을 높이지만 쓰기,갱신의 속도를 낮춘다. 또한 저장공간도 잡아먹는다. -> 균형을 맞추는 것이 중요하다. 정렬된 자료구조 이를 통해 탐색범위를 최소화 예) 제일많은 나이를 찾기 -> 나이를 기준으로 한 인덱스의 맨뒤를 보면됨 인덱스도 테이블이다. 인덱스의 핵심은 탐색범위를 최소화하는 것 인덱스 사용의 예시(로그북 프로젝트) 현재 진행하고 있는 로그북 앱 프로젝트로 예시를 들면 로그북DB에는 로그테이블이 있다. 그중에서 다이빙포인트가 라우라우비치인 로그들을 불러오고 싶다. 이때 인덱스를 사용하지 않는다면 모든 로그들을 탐색해서 정보를 가져온다. 정보가 매우 많다면 이는 오래걸리는 작업일 것이다. 하지만 다이빙포인트로 인덱스를 생..
메모리와 디스크의 비교 메모리 디스크 속도 빠름 느림 영속성 전원이 공급되지 않으면 휘발 영속성이 있음 가격 비쌈 저렴함 데이터베이스의 성능 디스크는 메모리에 비해 훨씬 느리다. -> 디스크 I/O(접근)을 최소화할수록 성능이 좋아진다. 데이터베이스 접근을 최소화하기 위한 방법 메모리에 올라온 데이터로 최대한 요청을 처리하는 것 -> 메모리 캐시 히트율을 높이는 것 메모리의 데이터유실을 고려해 WAL(Write Ahead Log)를 사용 WAL: 트랜잭션이 일어나기전에 로그를 미리 기록하여 트랜잭션redo,undo를 할 수 있도록 하는것, DB에서 데이터 접근을 할 때 랜덤I/O, 순차적I/O로 나뉜다. 대부분의 트랜잭션은 무작위하게 Write가 발생한다. -> 이를 지연시켜(모아서) 랜덤I/O 횟수를 ..
정규화 관계형 데이터베이스의 설계에서 중복을 최소화하게 구조화하는 프로세스를 정규화라고 한다. 중복을 제거, 한 곳에서만 데이터를 관리 -> 데이터를 변경할 때 한번에 전부 바꿀 수 있음 (하지만 항상 원본데이터를 참조해야함) 테이블 설계관점에서 조회와 쓰기 사이의 트레이드 오프 정규화 반정규화(비) 중복을 제거하고 한 곳에서 관리 중복을 허용 데이터 정합성 유지가 쉬움 데이터 정합성 유지가 어려움 읽기시 참조 발생 참조없이 읽기 가능 데이터 정합성(Data Consistency) 어떤 데이터들이 값이 서로 일치하는 상태를 의미한다. 실무에서 정규화시 고려해야 하는 점 상황에 따라 읽기vs쓰기에 따라 정규화필요성이 달라짐 얼마나 빠르게 데이터의 최신성을 보장해야 하는가? 히스토리성 데이터는 오히려 정규화..
MySQL 대표적인 관계형 데이터베이스 오픈소스 MySQL엔진 쿼리파서와 전처리기는 컴파일 과정과 매우 유사하다. 하지만 SQL은 프로그래밍 언어 처럼 컴파일 타임때 검증할 수 없어 매번 구문 평가를 진행 쿼리파서 SQL을 파싱하여 Syntax Tree를 만듬 이 과정에서 문법 오류 검사가 이루어짐 전처리기 쿼리파서에서 만든 Tree를 바탕으로 전처리 시작 테이블이나 컬럼 존재 여부, 접근권한 등 Semantic 오류 검사 옵티마이저 쿼리를 처리하기 위한 여러 방법들을 만들고, 각 방법들의 비용정보와 테이블의 통계정보를 이용해 비용을 산정 테이블 순서, 불필요한 조건 제거, 통계정보를 바탕으로 전략을 결정(실행 계획 수립) 옵티마이저가 어떤 전략을 결정하는냐에 따라 성능이 많이 달라진다. 가끔씩 비효율적..
현재 sqld 자격증취득 을 위한 공부를 진행중이다. sqld을 위해서는 기존에 공부하던 mySQL이 아닌 oracle을 공부하는 것이 도움이 된다. ORACLE 설치 mac 에서는 oracle이 정식지원되지 않는다. 그래서 docker를 이용하여 진행해야 한다. 도커 설치: https://docs.docker.com/engine/install/ Install Docker Engine docs.docker.com 터미널에서 아래 명령문을 입력하면 오라클 이미지 파일들이 조회된다. docker search oracle-xe 그 중 자신이 원하는 버전을 선택하여 설치하면 된다. docker pull jaspeen/oracle-xe-11g 여기서는 japspeen/oracle-xe-11g 를 설치한다. pul..
IMOS (いもす法, imos法) 정의 누적합 문제에서 쓸 수 있는 개념 정해진 구간 내에 시작과 끝이 포함된 부분 집합에 대한 명령이 여러개 들어올 때, 반복적으로 연산하게 되면 연산 시간이 매우 커질 수 있다. 예시문제) 도서관 좌석 예약된 수time[0]~time[100000] 의 시간이 있다.입력으로는 각 개개인의 좌석예약시작시간과 종료시간이 들어온다.이를 time[i]+=1로 수행하면 정확도는 통과하지만 속도가 무지하게 느려질 수 있다.이때 효율적으로 사용할 수 있는 것이 imos알고리즘이다. Imos의 시간복잡도는 배열의 길이이다. 1차원: O(H), 2차원: O(HW) (H:가로, W:세로) 1차원에서의 구현 방법 시작시간과 끝시간을 기록하여 준다. 먼저 각 시간에 대한 1차원 배열을 생성하..
투포인터의 정의 및 장단점 Two Pointers 는 1차원 배열에서 두 개의 포인터를 조작하여 원하는 결과를 얻는 알고리즘 여기서 두 개의 포인터를 사용하여 기존의 방식보다 시간을 개선할 수 있습니다. 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘 정렬되어있는 두 리스트의 합집합에도 사용됨. 병합정렬(merge sort)의 counquer 영역의 기초가 되기도 합니다. 투 포인터 알고리즘은 말 그대로 두 개의 포인터를 이용해 문제를 해결하는 알고리즘을 뜻한다. 보통 lt(left), rt(right)나 s(start), e(end) 같은 식으로 포인터의 이름을 붙인다. 예제 문제 - 특정한 합을 가지는 부분 연속 수열 찾기 투포인터 알고리즘의 대표적인 문제입니다...
DIGITAL-TO-ANALOG CONVERSION 디지털-아날로그 변환은 디지털 데이터의 정보를 기반으로 아날로그 신호의 특성 중 하나를 바꾸는 과정이다. 디지털 정보, 디지털-아날로그 변조 과정 및 결과 아날로그 신호 간의 관계를 설명하겠다. digital to analog 변환의 타입 Amplitude shift keying (ASK): 디지털 데이터에 따라 변경된 캐리어의 진폭 Frequency shift keying (FSK): 디지털 데이터에 따라 변경된 캐리어의 진동수 Phase shift keying (PSK): 디지털 데이터에 따라 변경된 캐리어 신호의 위상 Quadrature amplitude modulation (QAM): 디지털 데이터에 따라 변경된 캐리어 신호의 진폭과 위상이 D ..
윤재에요
'Computer Science' 카테고리의 글 목록 (7 Page)