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..
클래스 함수나 멤버(예: 자바의 static)는 밑줄로 표시합니다. 상수(예: 자바의 final)은 이름 짓는 관례에 따라 모든 글자를 대문자로 합니다. - 이 부분은 Naming Convention을 한번 살펴보세요. 자바의 경우 상수는 CamelCase를 쓰지 않고, 모두 대문자로 하며, 단어와 단어는 언더바(_)로 구분합니다. 기울임체는 추상 개념(예: 자바의 abstract)를 의미할 때 사용합니다. 자바의 경우 인터페이스, 추상클래스인 경우, 클래스 이름을 기울임으로 표시하고, 추상함수의 경우, 함수 표기도 기울임으로 하면 됩니다. + 는 public -는 private #은 protected
MySQL 자료형의 종류 자료형은 크게 숫자형, 문자형, 날짜형 세가지로 나뉠 수 있다. 각 종류에 따른 타입의 이름과 쓰임새에 대하여 알아보겠다. 1. 숫자형 2. 문자형 3. 날짜형 원글:https://andrew0409.tistory.com/108
윤재에요
'Computer Science/데이터베이스' 카테고리의 글 목록 (5 Page)