본문 바로가기

CS

(39)
Key of Database 한빛 아카데미의 책을 참고하였습니다. 키의 종류 특징 Super Key 슈퍼 키 유일성의 특성을 만족하는 속성 또는 속성들의 집합 Candidate Key 후보 키 유일성과 최소성을 만족하는 속성 또는 속성들의 집합 Primary Key 기본 키 여러 후보 키 중에서 기본으로 사용할 수 있는 키 Alternate Key 대체 키 기본 키를 제외한 후보 키들 Foreign Key 외래 키 어떤 테이블(Relation)에서 다른 테이블의 기본 키를 참조하는 속성 Composite Key 복합 키 2개 이상의 속성(attribute)을 사용하여 유일성의 특성을 만족하는 키 Key의 종류 및 특징 ※ Uniqueness (유일성) : 한 테이블에서 키로 지정된 속성(Attribute)값은 튜플들 사이에서 구분될..
Transaction 데이터 베이스에 다수의 사용자가 접근하더라도 데이터베이스 내의 데이터는 손상되지 않고 반드시 정확하고 일관되게 유지되어야 한다. 데이터 베이스의 데이터가 손상이 되었어도 빠르게 복구하여 원래의 기능을 다 할 수 있도록 해야 한다. DB 내에는 데이터를 보호하기 위해 다양한 기능들이 제공되는데 그 중심에 트랜잭션이 있다. 한빛 아카데미의 책을 참고하였습니다. Transaction 트랜잭션이 수행되는 예로 비밀번호를 변경하기 위한 과정을 생각해보자. 비밀번호 변경하기를 누르고, 해당 이메일로 관련 Entity를 가져오고 업데이트하는 과정을 하나의 작업이라 볼 수 있다. 이 작업을 처리하기 위해 다수의 연산이 동작해야 하며 이 연산들의 집합을 트랜잭션이라고 볼 수 있다. 트랜잭션은 데이터베이스의 데이터가 변경..
Java에서의 Hash Hash 가능한 한 빨리 데이터를 저장하고 검색하기 위해 Hash라는 자료구조를 많이 활용한다. 해시 테이블은 데이터를 저장하는 테이블로 Key와 Value가 한 쌍으로 존재한다. Key 값은 해시 테이블에서 인 mysterlee.tistory.com 이전 포스팅으로 Hash에 대해 간단히 정리하였다. Hash는 Hash Function을 이용하여 데이터가 저장된 또는 저장될 위치의 고유한 인덱스를 반환한다. 이 인덱스 값을 통해 해시 테이블의 데이터 탐색 또는 삽입, 삭제를 하는데 가장 빠른 경우 O(1)의 시간 복잡도로 이루어진다. 하지만 해시 테이블의 크기는 한정되어 있어서 언젠가는 Collision이 발생하기 마련이다. 따라서 Collision이 발생하지 않도록 Hash Function을 잘 설계..
Hash 가능한 한 빨리 데이터를 저장하고 검색하기 위해 Hash라는 자료구조를 많이 활용한다. 해시 테이블은 데이터를 저장하는 테이블로 Key와 Value가 한 쌍으로 존재한다. Key 값은 해시 테이블에서 인덱스로 사용되며, 데이터를 찾기 위해 해시 함수를 거쳐 키 값을 얻고 검색하는 데 평균적으로 O(1)의 시간 복잡도가 걸린다. Hash에 대해 알아보자 Hash Hash Function 해시 함수는 임의의 길이를 갖는 데이터를 고정된 길이의 키 값(인덱스 값)으로 변환하여 해시 테이블에 저장하는 기능을 한다. 그림의 우측 테이블은 해시 테이블로, Index는 해시 함수를 통해 생성된 키 값으로 해시 테이블에 저장될 공간을 의미하고 Data는 hash 값, Value라고도 하며 입력받은 데이터를 저장한다. ..
Dead Lock 멀티프로그래밍에서 한정된 자원을 사용하려고 할 때 경쟁(Race Condition)이 발생한다. 프로세스 간 서로의 자원을 차지하기 위해 대기 상태로 들어감으로써 이러한 상황을 Dead Lock 상황이라 볼 수 있다. 책을 참고하였습니다.Dead Lock교착상태라고도 하며, 두 개 이상의 스레드가 자원을 얻지 못해 서로 상대방의 작업이 끝나기만을 기다리며 더 이상 작업을 진행하지 못하는 상태를 말한다.서로 다른 프로세스가 공유할 수 없는 자원을 사용할 때 발생 Dead Lock 발생조건Dead Lock은 아래 4가지 조건을 모두 만족하면 발생한다. 이 중 하나라도 충족하지 않으면 Dead Lock은 발생하지 않는다. 1. Mutual Exclusion (상호 배제) 한 프로세스가 사용하는 자원은 다른 프..
동기화 문제의 해결 멀티프로그래밍 작업을 할 때 프로세스는 독립적으로 작업을 하거나, 공유된 자원을 활용하여 공동작업을 하기도 한다. 멀티 프로세싱은 IPC(프로세스 간 통신방법)를 통해 자원을 공유하고, 멀티스레딩의 스레드들은 프로세스의 메모리 영역(코드, 데이터, 힙)을 공유하며 공동 작업을 한다. 자원 공유를 통해 응답성과 경제성을 높일 수 있지만 이에 따른 문제도 발생할 수 있다. 공유 자원을 동시에 여러 스레드가 접근한다면 어떤 문제가 일어날까? 2개 이상의 스레드가 공유 자원에 접근할 경우 그곳의 데이터는 온전하지 않을 수 있다. 따라서 Critical Section을 설정하여 두 개 이상의 스레드가 동시 접근을 할 수 없도록 막아야 한다. 이와 같은 동기화 문제의 해결 방법에 대해 알아보자. 책을 참고하였습니다..
Multi-Process VS Multi-Thread 이전까지 프로세스와 스레드에 대해 알아보았다. 운영체제 입장에서 작업의 단위는 프로세스이고 CPU 입장에서의 작업 단위는 스레드이다. 이번 포스팅을 통해 멀티 프로세스와 멀티 스레드의 기능 및 차이점을 알아보고, 관련 용어들을 알아보려고 한다. 책을 참고하였습니다.용어정리1. 멀티 프로그래밍컴퓨터 시스템에서 실행 또는 대기 중인 프로세스들이 있다. 이들은 차례를 기다리며 CPU를 할당받고 처리가 되어진다. 시분할(Time-Sharing)에 의해 차례가 종료되어 다시 Ready Queue에 들어가거나, I/O 작업 처리가 필요해 Block(Waiting) Queue에 들어가기도 한다. 이처럼 운영체제는 여러 작업들을 빠르게 처리하며 CPU가 낭비되지 않도록 적절히 Context Switching을 하며 성..
Thread란 지난 process의 정리에 이어서 스레드에 대해 정리해보려고 한다. 프로세스는 실행 중인 프로그램으로, 원초적으로 단일 스레드 프로세스를 말한다. 프로세스와 프로세스끼리는 약하게 연결이 돼있지만, 스레드와 스레드 사이에는 메모리를 공유하기 때문에 강하게 연결되어 있다. 예전에는 스레드라는 개념이 없었다. 프로세스의 개념만 존재했고, 단일 스레드를 가진 프로세스이므로 굳이 스레드라는 용어 자체가 필요하지 않았다. 하지만 오늘날 기술의 발전으로 인해 다중 코어를 가진 CPU가 생겨나 스레드를 생성해 멀티 쓰레딩 작업이 가능해지면서 시스템의 효율을 높일 수 있었다. 책을 참고하였습니다. Thread 위 그림처럼 하나의 프로세스는 여러 개의 쓰레드로 구성될 수 있고, 프로세스 내의 스레드는 서로 강하게 연결되..