일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- NoSQL
- reverse프록시
- 이진탐색
- 불변객체
- immutable
- acid
- forward프록시
- binarySearch
- 자료구조
- proxy
- transaction
- 인덱스
- 데이터베이스
- 방어적복사
- 얕은복사
- 프록시서버
- 정규화
- RDBMS
- mutable
- Database
- index
- ERD
- 조인
- java
- 알고리즘
- 깊은복사
- Today
- Total
목록Cs (14)
jacketList

인덱스(index)란? 데이터베이스 인덱스(index)는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 데이터 = 책의 내용, 인덱스 = 책의 목차, 물리적 주소 = 페이지 번호 라고 생각하면 된다. index를 사용하는 이유? 만일 위와같은 테이블에서 AIRPORT 컬럼에서 값이 LCY인 것을 조회한다고 가정해보자. 그렇다면 select문은 모든 테이블에 있는 데이터를 조회 후 최종적으로 LCY가 포함된 모든 값들을 반환하는 동작을 수행한다. 데이터가 수십만 개가 들어있는 테이블에서 위와같은 작업이 자주 실행된다면 Full Scan을 하기 때문에 트래픽에 따라 성능이 저하될 수 밖에 없다. 따라서! index를 활용해 자주 조회되는 Coulm..
👀 트랜잭션(Transaction)이란? 하나의 논리적 기능을 수행하기 위한 작업의 단위 - > 여러 개의 쿼리들을 하나로 묶는 단위 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. Commit 지금까지 작업한 내용을 DB에 영구적으로 저장 transaction을 종료 RollBack 지금까지 작업한 내용들을 전부 취소하고 transaction 이전 상태로 되돌린다. transaction 종료 AutoCommit 각각의 쿼리에 자동으로 transaction 처리를 해주는 개념 쿼리가 성공하면 자동으로 commit한다. 실행 중에 문제가 생기면 rollback한다. MySQL은 default로 autocommit이 활성화 되어있다. MySQL에서 Start Transaction을 실행하면 활성화 되어..

이진 탐색(Binary Search) 이란? '정렬된 배열'에서 '특정 값'을 찾는 알고리즘이다. - 전체를 순회하며 탐색하는 선형탐색에 비해 빠른 속도를 보장하지만 배열이 정렬되어 있어야 한다는 조건이 필요하기 때문에 배열이 정렬되어 있지 않은 경우 정렬 작업이 필요하다. 위의 모션은 '이진탐색'의 탐색 과정과 '선형탐색'의 과정을 보여주고 있다. 이진탐색 과정 배열의 중간 값을 선택하여 찾고자 하는 값과 비교한다. 만약 중간 값이 찾고자 하는 값보다 크면 배열 왼쪽 부분에서 다시 탐색을 진행하고 중간값이 작다면 배열 오른쪽 부분에서 탐색을 진행한다. 해당 과정을 찾고자 하는 값이 나올때까지 반복한다. 이진 탐색의 구현 방법에는 재귀를 통한 구현과 반복을 통한 구현 방법이 있다. 기본적인 구현 과정 1..

Join 이란? RDB에서 기본키-외래키로 연관된 두 테이블을 묶어 하나의 테이블로 만드는 방법으로 RDB를 사용함에 있어 중요한 역할을 한다. Join이 왜 필요할까? 관게형 데이터베이스 특성상 정규화를 수행하면 각 속성이 최소성과 유일성을 만족하는 데이터의 집합으로 테이블이 구성되고 테이블간 관계(Relationship)을 갖게 된다. 이렇게 서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되므로 연관있는 데이터를 효율적으로 검색하고 처리하기 위해 조인이 필요하다. Join의 종류 INNER JOIN 두 테이블에서 '공통된 값' 만을 가진 행을 출력해준다. 다시말해 테이블 데이터 간 교집합을 의미한다. 보통 INNER JOIN이 기본적인 JOIN 방법이다. 위와같은 정규화된 2개의 상품 Table이 ..

B tree 란? B-tree는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조로 좌우 균형을 맞추어 트리의 검색,삽입,삭제 시 시간 복잡도를 개선한 자료구조이다. B-tree는 아래와 같은 구조를 지니고 있다. 노드의 최대 숫자가 2보다 크다고 했으므로 최대 자식수가 3개면 3차 B-tree 4개면 4차 B-tree.... m차 B-tree라고 부른다. 루트(root) 노드 최상단에 위치한 노드 리프(leaf)노드 자식이 없는 최하단에 위치한 노드 내부(internal)노드 루트노드와 리프노드를 제외한 모든 노드 B-tree의 규칙 노드의 데이터 수가 N개이면, 자식 노드 수는 N+1개..

RDBMS와 NoSQL의 개념과 각각의 차이점 RDB란? RDB는 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산 정보 데이터베이스이다. RDB의 장점? 정형화된 데이터를 저장하기 때문에 데이터의 형태와 크기를 미리 정하고 테이블 단위로 구분하여 데이터를 저장 트랜잭션을 통해 ACID(원자성, 일관성, 격리성, 지속성)를 보증하기 때문에 안정적인 데이터 관리가 가능하다. 조인을 포함해 복잡한 조건을 포함하는 데이터 검색이 가능하다.(복잡한 질의 처리 가능) 정규화를 통해 데이터 중복성을 줄이고 데이터 무결성을 개선하는 설계 기법을 사용한다. RDBMS 란? DBMS 앞에 R(Relational) 이 추가되어 관계형 데이터베이스 관리 시스템이라고 한다. RDB는 관계..

ERD가 뭐죠? ERD는 Entity Relationship Diagram의 약자로 요구 분석 사항에서 얻은 엔티티와 속성들의 관계를 그림으로 나타낸 개체-관계 모델이다. 프로젝트에서 사용하는 데이터베이스 구조를 한눈에 파악할 수 있고 서비스 구축 시 제일 먼저 신경써야 하는 부분이다. ERD 구성요소와 표기법 기본 요소로 Entity, Attribute, Relationship등이 있고 구체적으로 weak Entity, Multivalued Attribute, Weak Realationship 이 있다. 먼저 엔티티에 대해서 보자면 엔티티(Entity) 정의 가능한 사물 또는 개념 사람도 될 수 있고 도서정보와 같은 무형의 정보도 데이터화가 가능하다. 데이터베이스의 테이블이 엔티티라고 생각하면 된다 예..

데이터베이스 무결성에 대해 먼저 정리하고 넘어가자 개체 무결성 Entity Integrity 기본키를 구성하는 속성은 null값을 가질 수 없다. 기본키를 구성하는 속성은 다른 레코드와 중복될 수 없다. 참조 무결성 Referential Integrity 외래키를 구성하는 속성은 참조 릴레이션(테이블)의 기본키 값과 동일해야만 한다. 도메인 무결성 Domain Integrity 속성값은 속성이 정의된 도메인의 범위를 벗어날 수 없다. 이 무결성을 기억하며 각 키(key)들에 대해 알아보자 데이터베이스에서 키(key)가 존재하는 이유? 하나의 릴레이션에는 수많은 튜플이 존재하고 각 튜플간에는 중복되는 값이 있을 수 있다. 그래서 튜플을 구별해주기 위해 모든 속성을 이용하는 것보다 일부 속성만 이용하는 것이..