CS(49)
-
[데이터베이스] Join
조인이란? 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다. JOIN 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN INNER JOIN 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT A.NAME, B.AGE FROM EX_TABLE A INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP LEFT OUTER JOIN 기준테이블값과 조인테이블과 중복된 값을 보여준다. SELECT A.NAME, B.AGE FRO..
2022.10.07 -
[운영체제] 뮤텍스와 세마포어
공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이 때, 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둬야 한다. 이를 위해 나온 것이 세마포어이다. 세마포어 : 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법 임계 구역(critical section) 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분 공유 데이터를 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기 때문에, 한 프로세스가 임계 구역을 수행할 때에는 다른 프로세스가 접근하지 못하도록 해야 한다. 세마포어 자바를 통해 세마포 구조(block-wakeup 방식)를 간단히 살펴보면 아래와 같다. class S..
2022.10.07 -
[운영체제] IPC(Inter Process Communication)
메모리는 두 가지 영역, user space 와 kernel space 로 이루어져 있다. user space 일반 프로세스들이 동작하는 공간, user space에 있는 일반 프로세스들은 kernel space에 접근하지 못한다. (system call을 통해 software interrupt를 일으키는 경우 제외) kernel space 커널이 수행하는 코드가 있는 공간, 운영체제가 cpu를 잡고 작업할 때, kernel space에서 작업이 이루어짐 IPC(Inter Process Communication) 프로세스 간의 커뮤니케이션을 지원하기 위한 기법, 크게 두 가지가 있다. 굳이 IPC가 필요한 이유? 도입된 이유? 그냥 다른 process의 주소 공간에 접근하면 되잖아? → 프로세스 A가 프..
2022.10.07 -
[알고리즘] 정렬 알고리즘
버블 정렬(Bubble sort) 개념 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘, 인접한 두 개의 레코드를 비교하여 크기가 정렬되어 있지 않으면 서로 교환한다. 예시 초기 상태 배열 : 7, 4, 5, 1, 3 시간 복잡도 O(N^2) 선택 정렬(Selection sort) 개념 - 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘 - 첫 번째 순서에는 첫 번째 위치에 가장 최솟값을 넣고, 두 번째 순서에는 두 번째 위치에 남은 값 중에서 가장 최솟값을 넣는다. - 선택 정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지와 차례대로 비교하여 그 ..
2022.10.07 -
[데이터베이스] 무결성 제약 조건
무결성 제약 조건 무결성 : 데이터에 결함이 없는 상태, 즉 데이터를 정확하고 유효하게 유지하는 것이다. 무결성 제약조건의 주요 목적은 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것이다. 그래서 이를 위해 필요한 세부 규칙도 정의하고 있다. 데이터베이스가 삽입, 삭제, 수정, 연산으로 상태가 변하더라도 무결성 제약조건은 반드시 지켜져야 한다. 1. 개체 무결성 : 기본키는 null 값이 될 수 없음 개체 무결성 제약조건은 기본키를 구성하는 모든 속성은 널 값을 가지면 안 된다. 관계 데이터 모델에서는 릴레이션에 포함되는 튜플들을 유일하게 구별해주고 각 튜플에 쉽게 접근할 수 있도록 릴레이션마다 기본키를 정의하는 기본키를 구성하는 속성 전체나 일부가 널 값이 되..
2022.10.07 -
[데이터베이스] 파티셔닝(Partitioning) & 샤딩(Sharding)
파티셔닝이란? 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법 테이블을 나눠가지는 방식에 따라 파티셔닝은 크게 수평 파티셔닝과 수직 파티셔닝으로 나눌 수 있다. 1. 수평(horizontal) 파티셔닝 하나의 테이블의 각 행을 다른 테이블에 분산시키는 방식이다. 스키마(schema)를 복제한 후 키를 기준으로 데이터를 나누는 것을 말한다. 즉, 스키마(schema)가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 것을 말한다. 데이터의 개수가 작아지고 따라서 index의 개수도 작아지게 된다. 자연스럽게 성능은 향상된다. 2. 수직(vertical) 파티셔닝 관계형 DB에서 3정규화와 같은 개념으로 접근하면 이해하기 쉽다. 하지만 수직 파티셔닝은 이미 정규화된 데이터를 분리하는 과정이다..
2022.10.07