Singleton Pattern (싱글턴 패턴)

Singleton Pattern


정의


1.    Singleton Pattern은 해당 Classinstance가 하나만 만들어진다.


2.    어디서든 그 instance에 접근할 수 있게 한다.


3.    class에서 하나뿐인 instance를 관리하게 한다.


4.    Instance가 사용될 때 똑 같은 instance를 만드는 것이 아닌, 동일 instance를 사용하게끔 하는 것이다.

 

고전적인 Singleton Pattern

public class Singleton {
    private static Singleton uniqueInstance;
 
    private Singleton(){}
 
    public static Singleton getInstance() {
        if(uniqueInstance == null){
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }
}

전역변수로 instance를 생성하는데 private static 키워드를 사용한다.


Static이 붙은 class 변수는, 인스턴스화에 상관없이 사용할 수 있다.


하지만, private 접근 제어자로 인해

Singleton.uniqueInstance

와 같은 방법으로 접근할 수 없다


이 상태에서 private 키워드를 붙이는데 그러면 new 키워드를 사용할 수 없게 된다.


그 결과 외부 class가 위 classinstance를 가질 수 있는 방법은, getinstance() method를 사용하는 방법밖에 없다.


 하지만 위의 방법은 Multi-threading과 관련해서 문제가 생긴다


       그 이유는 thread getinstance() method를 호출하면 instance가 두 번 생길 수 있기 때문이다.


       이러한  문제를 방지하기 위해, getinstance() method를 동기화 시킨다.

public class Singleton {
    private static Singleton uniqueInstance;
    // 기타 인스턴스 변수
    private Singleton() {}
    //synchronized 키워드만 추가하면 
    // 두 스레드가 이 메소드를 동시에 실행시키는 일은 일어나지 않게 된다.
    public static synchronized Singleton getInstance() {
        if (uniqueInstance == null) {
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }
}


위와 같이 할 수 있는데 이 방법도 문제가 있다. 수 많은 thread들이 getinstance()

method를 호출하기 위해 동기화 하면 성능이 떨어진다.

이러한 문제를 방지하기 위해서 instance를 필요할 때 생성하는 것이 아니라, 처음부터 생성하는 방법이 있다.

public class Singleton {
    private static Singleton uniqueInstance = new Singleton();
 
    private Singleton() {}
 
    public static Singleton getInstance() {
        return uniqueInstance;
    }
}

위와 같이 하는 방법 외에도 DCL(Double-Checking Locking)을 사용하여 getinstance()에서 동기화되는 부분을 줄이는 방법이 있다.


DCL을 사용하면 instance가 생성되어 있는지 확인한 후, 생성이 되어있지 않을 때만 동기화를 할 수 있다


Volatile 키워드를 사용해서 multi-threading을 사용하더라도변수가 Singleton instance로 초기화 되는 과정이 올바르게 할 수 있다.

public class Singleton {
    private volatile static Singleton uniqueInstance;
 
    private Singleton() {}
 
    public static Singleton getInstance() {
        if (uniqueInstance == null) {
            //이렇게 하면 처음에만 동기화 된다
            synchronized (Singleton.class) {
                if (uniqueInstance == null) {
                    uniqueInstance = new Singleton();
                }
            }
        }
        return uniqueInstance;
    }
}


Runge-Kutta vs Trapezoidal (Method)

소스코드

#include<stdio.h>
#include<math.h>
#define TOL 0.0001
double f(double t, double w);
double y(double t);
double absol(double x);
void main()
{
	int i, k, N = 5, n = 0;
	double t, k1, k2, k3, k4, p1, p2, h = 0.2;
	double w[6], v[5];
	for (k = 1; k <= 2; k++)
	{
		w[0] = -1;
		v[0] = -1;
		p2 = -1;
		for (i = 0; i<N; i++) {
			t = h*i;
			k1 = h*f(t, w[i]);
			k2 = h*f(t + h / 2, w[i] + k1 / 2);
			k3 = h*f(t + h / 2, w[i] + k2 / 2);
			k4 = h*f(t + h, w[i] + k3);
			w[i + 1] = w[i] + (k1 + 2 * k2 + 2 * k3 + k4) / 6;
		}
		for (i = 0; i<N; i++) {
			t = h*i;
			p1 = 100;
			while (absol(p2 - p1) >= TOL)
			{
				p1 = p2;
				p2 = p1 - (p1 - v[i] - h / 2 * (f(t, v[i]) + f(t + h, p1))) /
					(1 - h / 2 * (5 * exp(5 * (t + h))*(2 * p1 - 2 * (t + h))));
			}
			v[i + 1] = p2;
		}
		if (k == 1) {
			printf(" \tRunge-Kutta Method \t\tTrapezoidal Method\n");
			printf(" \t\t h=0.2 \t\t\t\t h=0.2\n");
			printf("t \tw   \t\terror\t\t w\t\terror\n");
			for (i = 0; i <= 5; i++)
			{
				t = 0.2*i;
				printf("%.1f\t%f\t%e\t %f\t%e\n",t, w[i], absol(y(t) - w[i]), v[i], absol(y(t) - v[i]));
			}
		}
		h = 0.25;
		N = 4;
	}
	printf("\n\tRunge-Kutta Method \t\tTrapezoidal Method\n");
	printf(" \t\t h=0.2 \t\t\t\t h=0.2\n");
	printf("t \tw   \t\terror\t\t w\t\terror\n");
	for (i = 0; i <= 4; i++)
	{
		t = 0.25*i;
		if (w[i] == INFINITY) //OVERFLOW 체크
			printf("%.2f\t OVERFLOW\t OVERFLOW\t %f\t%e\n", t, v[i], absol(y(t) - v[i]));
		else	//w[i] = atof("stackoverflow");
			printf("%.2f\t%e\t%e\t %f\t%e\n",t, w[i], absol(y(t) - w[i]), v[i], absol(y(t) - v[i]));
	}
}
double f(double t, double w)
{
	return 5 * exp(5 * t)*(w - t)*(w - t) + 1;
}
double absol(double x)
{
	if (x >= 0)return x;
	else return (-1) * x;
}
double y(double t)
{
	return t - exp(-5 * t);
}
결과





'SW > Numerical analysis' 카테고리의 다른 글

미분방정식 3가지 기법 비교  (0) 2017.09.05

Server & Client

Server/Client

server 클라이언트의 요청 대기 -> 정보 및 서비스 제공

client 서버에서 제공되는 정보 및 서비스를 이용하는 호스트

서버에 정보 및 서비스의 제공을 요청하고 응답을 기다림

 

socket 네트워크로 입출력을 하기위해 사용자에게 필요한 수단을 제공하는 응용 프로토콜 인터페이스

입출력을 위한 요소

프로토콜, 소스,목적지의 IP, PORT


-Socket = 소켓 생성

-Bind = 소켓에 주소 정보 할당

 

네트워크 바이트 순서

Big-Endian 상위 바이트가 먼저, 네트워크 바이트 순서

Little-Endian 하위 바이트가 먼저, 호스트 바이트 순서

 

inet_addr = Dotted-Decimal Notation -> Big-Endian 32bit

listen = 서버가 클라이언트의 연결 요청 대기

connect = 클라이언트가 서버에 연결 요청

accept = 서버가 클라이언트에게 연결 요청 수락

recv(), send() =receive, send

close = 소켓 연결 종료

select

 

Select = 소켓의 I/O변화를 감지

 

Thread

프로세스의 문제점 : context switch overhead, 프로세스 생성 시간이 김, 동기화 오버헤드

프로세스는 여러 개의 쓰레드를 가질 수 있다.

함수호출 vs 멀티쓰레딩

비슷한 점 = 다른 함수나 쓰레드에서 선언된 변수를 접근할 수 없다.

전역 데이터와 힙영역은 모든 함수와 쓰레드가 공유

 

쓰레드는 쓰레드는 해당하는 스택이 하나씩 있고, 동시에 함수의 수행이 가능하다.

코드, 데이터, 파일은 공유하지만 레지스터와 스택은 개별

 

프로세스는 두 개의 컴포넌트로 나뉘어지는 복잡한 개체

쓰레드의 집합과 자원의 집합

수행 유닛은 쓰레드이며 수행환경을 제공해주고 쓰레드 id가 있다

pthread_self, create, exit, join, cancel(다른 쓰레드 제거), cleanup_push,pop 스택!

쓰레드 동기화

임계영역(critical section) = 둘 이상의 쓰레드가 공유하는 메모리 공간에 접근하는 코드영역

동기화 = 공유된 메모리에 둘 이상의 쓰레드가 동시 접근 막음, 실행순서 컨트롤

자체 동기화(pthread)

-mutex, lock and unlock

-mutex = 임계영역에 들어갈 때 잠그고 나올 때 풀고나옴(init, destroy, lock, unlock)

semaphore

하나 이상의 플레스가 동기화 또는 배제를 위한 목적으로 획득하거나 놓아주는 커널

(프로세스, 쓰레디 모두 적용)

wait, signal 함수로 접근 wait으로 세마포어를 획득하면 토큰이 감소, signal로 세마포어를 놓아주면 토큰의 수가 증가

세마포어가 생성될 때, 토큰도 생성됨

 

binary semaphore = 하나의 공유 자원에 직렬로 접근


세마포어 생성 -> 세마포어 연산 -> 세마포어 제어 -> 공유 자원 사용

semget = 세마포어 생성, 세마포어 설정을 확인

semop = 세마포어 조작, 세마포어 아디를 갖는 세마포어에 대해 연산을 수행

semctl = 세마포어 원소들은 사용되기 전에 semctl로 초기화

'SW > LINUX' 카테고리의 다른 글

IPC (Inter Process Communication)  (0) 2017.09.05
NETWORK (네트워크)  (0) 2017.09.05
GDB  (0) 2017.09.05
버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05

IPC (Inter Process Communication)

IPC의 종류

Same host

pipes, FIFOs, semaphores, shared memory

Different host

sockets

 

Communication

process1 -> channel(Same host) -> process3

 

pipe = 하나의 프로세스로부터 데이터 흐름을 다른 프로세스로 연결

한프로세스의 출력을 다른 프로세스의 입력으로 붙이거나 파이프로 연결

파이프 함수는 호출자가 순차적으로 생성된 파일 디스크립터를 통해 접근할수 있는 통신 버퍼 생성

 

Shared memory = 여러 프로세스들이 동일 메모리영역에서 읽고 쓸 수 있도록 제공

연관이 없는 프로세스들이 동일 물리적 메모리에 액세스

동기화 기능이 없어서 공유메모리에 대한 액세스를 동기화 해야함

 

Message Queue = 다른 프로세스들 간에 메시지를 주고받을 수 있는 IPC 메커니즘

파이프를 열고 닫을 필요가 없고, 송신프로세스, 수신프로세스에 대해 독립적으로 존재

 

부모-자식간은 Pipe 다른 부모-자식은 나머지것들

dup = copy fdp dup2 = change fdp

 

FIFO = open을 통해서 연 뒤 READ, WRITEFIFO에 액세스, 권한이 있음

mkfifo = Make FIFO file

unlink = REMOVE FIFO

 

Shared Memory

연관이 없는 두 프로세스가 동일 메모리에 액세스

read/write로 프로세스간 데이터를 주고받음

get key(ftok) -> get SM id(shmget) -> get start address(shmat) -> read/write -> free(remove)(shmdt) -> ipcrm(remove SM)(shmctl)

 

'SW > LINUX' 카테고리의 다른 글

Server & Client  (0) 2017.09.05
NETWORK (네트워크)  (0) 2017.09.05
GDB  (0) 2017.09.05
버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05

Computer architecture (용어, 상식) 3

ch 9

정보 보안의 개요

1.1정보 보안의 목표

1 기밀성 : 허가되지 않은 사용자에게 비밀 (접근통제, 암호화)

2 무결성 : 허가되지 않은 사용자가 수정 불가 정보가 수정되지 않음을 확인

3 가용성 : 허가됬으면 언제든지 사용 (백업, 중복성 유지)

1.2보안위협의 공격형태

정상통신 : 전송 요청 -> 전송 수락 -> 전송

1. 정보 가로막기 정보 전송 수락전에 불가능하다고 응답 (고의적으로 흐름 차단)

2. 정보 가로채기 정보를 도청 또는 유출

3. 정보 수정 전송 중인 정보를 수정하여 수신자에게 보내는 행위

4. 정보 위조 1. 수락응답이 공격자에게 보내져 정보를보냄

2. 보내지 않았는데, 송신자인것처럼 위장하여 정보를 보냄

1.3정보 보안을 위한 서비스

1. 인증 : 송수신자의 신분을 확인

2. 접근 제어 : 허가없이 정보접근 불가

3. 부인방지 : 송수신후 그 사실에 대한 부인 막음

 

2. 악성코드

2.1 바이러스의 분류

1세대 원시형->2세대 암호화->3세대 은폐형->4세대 갑옷형->5세대 매크로->6세대 차세대

원시형 : 도스 초기버전

암호화 : 백신등장함으로 진단할 수 없도록 함

은폐형 : 먼저 컴퓨터를 감영시켜 메모리 손실이 없는것처럼 함

갑옷형 : 백신을 감염시켜 자기변형함

매크로 : 오피스 매크로

차세대 : 도용

2.2 : 이메일로 보냄 자기복제하여 실행

2.3 트로이목마 :정상적인 프로그램에 있다가, 실행될 때 활성화, 전염은 없다.

2.4 기타

스파이웨어 : 본래 정보 수집 기술이지만 보안측면에서는 동의 없이 하는 것

키로거 : 키보드로 정보수집, 저장

조크 : 이메일에 개소리하는 것, 포맷영삼만 보여주거나 롬이 저절로 열리고 화면거꾸로보임

 

3. 해킹

3.1 DoS 서비스 거부 공격

3.2 DDoS 분산 서비스 거부공격

좀비 컴퓨터를 분산 배치하여 동시에 공격 컴퓨터나 네트워크를 공격

3.3 스푸핑 : 전자메일 주소등을 위장하여 가짜 사이트를 방문하도록 유도

3.4 스니핑 : 네트워크에서 주고받는 데이터를 도청하여 내용을 가로챔 쿠키정보를 이용하면 바로 로그인되는데 이것을 해킹

3.5 XSS : 악성스크립트가 포함된 글을 등록하여 열면 정보가 털림

3.6 피싱

 

4. 정보 보안 기술

암호화 : 평문을 암호문으로 복호화는 그 반대

4.1 암호화기술

동작형태에 따라 대체 암호, 전치 암호로 나뉘고 키의 방식에 따라 키 암호화 공개 키 암호화

1. 대체암호 : 일정 규칙으로 각 글자를 다른 글자로 대체

2. 전치암호 : 순서를 바꿈

3. 비밀 키 암호화 : 복호화 암호화의 키가 동일 쉽게 털림 (대칭 암호화)

4. 공개 키 암호화 : 복호화와 암호화의 키가 달라 비공개 키로 사용자가 씀 (비대칭암호화) -> 처리속도가 느림

4.2 인증 기술

1 전자 서명 : 송수신이 제대로 됬음을 증명

2 디지털 서명 : 정보가 변경되지 않음, 사용자가 제대로 됬음을 증명

3 공인인증서

4.3 네트워크 보안 기술

1 방화벽 : 외부의 공격으로부터 시스템을 보호

모든 정보가 방화벽을 통하므로 속도가 느려진다

패킷 필터링 : TCP/IP 프로토콜(3계층), 전송계층(4계층) 패킷을 분 석하여 수신이나 발신을 막음

응용 게이트웨이 : 3계층에서 허가되지 않은 트래픽의 출입을 통제

프록시서버를 사용하므로, 외부 공격에 강함()

2 침입 탐지 시스템 : 공격을 탐지, 해킹규칙을 자체적으로 내장

IDS(cctv)

호스트기반(HIDS) 호스트의 동작 상태 분석

네트워크(NIDS) 네트워크 트래픽 흐름 분석

하이브리드(HIDS) 두 방식 결합

3 허니팟 : 컴퓨터의 침입자를 속임, 공격당하는 척하다가 해커 추적

ch 10

멀티미디어의 개요

멀티와 미디어의 합성어로 미디어라는 정보를 전달하는 매체

미디어를 2개 이상 사용하여 통신매체를 통해 제3자에게 표현

1.1 멀티미디어의 특징

디지털화 : 문자, 소리, 이미지 등이 디지털 데이터로 처리

쌍방향성 : 정보를 쌍방향으로 받음

통합성 : 단일 미디어 기반이 아니라 여러 종류의 미디어로 통합 전달

비선형성 :선형적이 아니라 사용자의 선택에 따라 자유롭게 전달

1.2 멀티미디어 시스템

하드웨어 : 입력장치, 출력장치, 저장장치, 네트워크장치, 기타장치

 

2. 멀티미디어의 구성 요소

2.1 문자 : 가장 많이 사용하며 주로 키보드로 입력하며 용량이 적음

문자코드 : ASCII, EBCDIC, 유니코드

ASCII : 7비트로 개의 문자 및 숫자를 나타냄 8비트로 확장함

EBCDIC : 개 중에서 150개만 사용 ASCII에 밀림

유니코드 : 국가마다 달라서 정보 공유가 어려워서 나타남 16비트 사용

폰트

비트맵 폰트 : 문자의 모양과 크기를 정의한 폰트로 도트의 패턴인 비트맵으 로 문자를 나타냄 연산이 필요 없다는 장점 확대하면 ㅈㅈ

벡터 폰트 : 외곽선의 벡터를 이용 수학적으로 계산 깨끗하고 좌표값만 저장 하므로 데이터의 양이 적음

문자 기반 문서 파일형식

RTF : 문서 파일 형식 문자뿐 아니라 폰트의 종류 크기 그림 도표 제어 크 기가 크고 처리시간 소요

2.2 사운드 : 공기압의 변화를 파형의 형태로 표현 (가청주파수)

구성요소 : 주파수, 진폭, 음색

주파수 : 1초당 주기의 반복 횟수 Hz 사용 (1Hz = 1초에 1개 파형)

높을수록 고음

진폭 : 파형의 기준선에서 최고점까지의 폭 진폭이 크면 소리도 큼(상쇄)

db(데시벨) 로 읍압의 변화율로 측정

음색 : 파형의 고유 특징 복합음의 형태

 

파일 형식 : WAV, MIDI, MP3, WMA

WAV : 압축 않한 PCM 압축한 ADPCM 모두 지원 PCM은 용량이 커서 효과음이나 짧은 음악에 사용

MIDI : 컴퓨터를 이용하여 악기 연주에 사용, MIDMIDI에서 사용하는
사운드 파일 형식, WAV에 용량이 작고 자연음이나 사람목소리는 재생 불가

MP3 : WAV에 비해 압축 기술이 우수, 음질이 좋음 40MB->3MB

WMA : MP3와 음질은 같지만 용량이 절반 보급률이 늘어나

 

2.3 이미지

표현방식 : 비트맵, 벡터

비트맵 : 픽셀이라 하는 여러 점들이 모여 완성시킴

1개의 픽셀에는 RGB값 저장 이미지 확대 ww

벡터방식 : 점 직선 도형으로 이미지 표현 좋음

 

비교!

 

비트맵은 확대하면 구리지만, 벡터는 아님

비트맵은 해상도 커지면 용량이 커지지만 벡터는 아님

속도는 비트맵이 좋음

 

파일 형식 : BMP, GIF, JPEG, PNG

BMP : 비트맵임

GIF : 256개 컬러만 지원해서 단순색의 그림이 좋아

JPEG :압축 잘됨

손실 압축, 무 손실 압축방식 JPEG2000은 무 손실 압축방식 사용

PNG : JPEG, GIF 장점을 갖고 BMP수준의 해상도 압축 갑, 투명화, 24비트

웹브라우저에서 사용되며 용량이 JPEG, GIF보다 큼

2.4 애니메이션 : 생명을 불어넣는 일

종류 : 플립 북 애니, 셀 애니, 컴퓨터 애니

플립 북 : 책에다 그림 한 장 한 장 그려서 넘김

셀 애니 : 여러 장의 투명용지로 만든 쉘을 겹쳐서 하나의 프레임으로 구성

컴퓨터 애니 : 컴퓨터로 하는 것

 

파일 형식 : GIF, FLA, SWF, DIR, DCR

애니메이티드 GIF : 여러 개의 이미지가 정해진 순서대로 나타남 쉬움

FLA, SWF : FLA는 편집이 가능한 압축안한 플래시 웹에서 보려면 SWF

DIR, DCR : 디렉터를 사용한 것으로 디렉터 플레이어에서만 사용

DCR은 제작된 파일을 쇼크웨이브를 사용하여 볼수 있게함

 

2.5 비디오 : 프레임 단위의 이미지를 초당 24~30장 정도를 연속적으로 보여줌 방대한양

중요한건 시간당 데이터 처리능력(대역폭)

대역폭 : 해상도(가로pixel x 세로pixel) x bit x frame

 

MPEG 표준(압축표준)

MPEG-1 :1.5Mbps로 압축 저장, 비디오 CD, MP3 오디오 압축

MPEG-2 :1을 개선한 것으로 HDTV, DVD, 위선, 유선, 영화 광고

MPEG-3 :고선명도 화질을 얻기 위해서 개발 MPEG-2 흡수 통합됨

MPEG-4 :음성 및 비디오 데이터를 전송, 저장 인코딩과 복원 표준

실제로는 디코딩 과정만 기술

MPEG-7 : 멀티미디어를 빠르고 효율적으로 검색 데이터검색, 전자상거래

MPEG-21 : 모든 규격 환경 포함, 휴대폰, PDA, Tv 유무선 네트워크기기와 멀티미디어 콘텐츠에 적용 가능

 

비디오 파일 형식 : AVI, ASF, MOV, DivX

AVI : 오디오와 비디오를 번갈아가며 저장(윈도우만됨)스트리밍 X

ASF : 윈도우 미디어 도구를 이용 제작 넷쇼에서 사용

MOV : 애플 하드웨어 없이 시청 스트리밍도됨, 플러그인 필요

DivX : DVD 재생 전용 파일 형식

 

3. 멀티미디어의 활용 분야

3.1 디지털 콘텐츠 분야

온라인교육 OCW(open course ware)

영화, 게임, 뮤직비디오

3.2 인터넷 기술 응용 분야 : VOD, 원격진료 서비스

 

4. 멀티미디어 콘텐츠의 관리와 보호기법

4.1 디지털 저작권 관리(DRM Digital Right Management)

복제를 막는 것이 아니라 복제해도 돈

4.2 보호기법 : 암호기법, 워터마킹, 핑거프린팅

암호기법 : 평문을 제3자가 알 수 없도록 암호문으로 변환 전송 (키를 통해 해독)

워터마킹 : 콘텐츠에 저작권 정보와 같은 비밀 정보를 삽입

가시성 워터마킹 : 보임

비가시성 워터마킹 : 안보임 (유행)

핑거프린팅 : 불법복제를 전적으로 막는것이 아니라 재배포 방지

비밀 정보를 콘텐츠에 삽입한다는 점에서는 워터마킹과 같지만, 작권자의 정보가 아닌 사용자의 정보를 담음

ch 11

유비쿼터스 컴퓨팅의 개요

사람, 정보, 공간을 하나로 통합

1.1 유비쿼터스 컴퓨팅의 개념 : 보이지 않는 컴퓨터, 조용한 컴퓨터

보이지 않는 컴퓨터 : 자연스럽게 의식하지 않고 사용

조용한 컴퓨터 : 3의 물결, 센서, 디스플레이, 부품 등을 사물에 내장시켜 연결

1.2 유비쿼터스 컴퓨팅의 특징 : 5C, 5Any

5C : 조용하게(Calm) 협동(Connectivity), 어디서나 컴퓨팅(Computing), 맞춤제공 (Contents), 사람-사물 간 통신(Communication)

5Any : 언제(Any time), 어디서나(Anywhere), 네트워크에 관게없이(Any network),

어떤 단말기도(Any device), 다양한 서비스(Any service)

4가지로 요약 : 네트워크는 항상연결(connectivity)

친화력 인터페이스 보이지않음(invisible)

어디서나 사용(accessibility)

사용자의 상황에 따라 서비스 변함(context)

 

2. 유비쿼터스 컴퓨팅의 종류 : 웨어러블, 노매딕, 퍼베이시브, 감지 컴퓨팅!

2.1 웨어러블 : 악세사리나 의류등에 장착

2.2 노매딕 : 노트북이나 스마트폰처럼 언제 어디서나 외부와 접속할수 있는거 (always connected)

2.3 퍼베이시브 : 모든 사물에 컴퓨터를 심어서 도처에 컴퓨터가 퍼져있음

2.4 감지 컴퓨팅 : 감각기관같은 센서장치를 이용해 정보를 획득하고 처리

탁자에 커피잔 감시하기(인간 중심적)

3.유비쿼터스 컴퓨팅 기반 기술 : RFID, USN

3.1 RFID : 태그가 장착된 상품을 RFID리더가 자동으로 인식하여 재고 현황을 실시간으로 앎

시스템의 구성 : 태그와 리더가 필요

태그에는 안테나와 집적회로(고유 인식정보 기록) 안테나로 송신

리더는 주파수로 원거리도 가능하고 인식률도 높다. 태그정보 변경

동작 원리 : 태그의 칩에 저장된 정보를 리더에 전송, 리더는 해독하여서 GUI방식으 로 상품관리자에게 제공

 

RFID vs BARCODE

바코드는 빛으로 물체를 인식 인식거리가 짧고 주변환경에 영향을 많이받으며 양도 제한되어있고, 정보 수정 재입력 불가능, 오염물질이 없다

 

RFID 시스템의 분류 : 수동형 능동형 반능동(하이브리드)

수동형 : 태그에 전원공급장치가 업어서 리더로부터 전력을 받음

반영구적이며 저렴하고, 인식거리가 짧고 회로가필요(전력)

능동형 : 태그에 배터리가 있어 인식 거리가 길고 기능이 우수

고가고 유지보수가 필요(배터리)

반능동형 : 정보를읽을땐 배터리 통신에는 리더의 전원사용

통신에 사용하는 전파의 주파수에 따른 분류 : 저주파, 고주파, 극초단파, 마이크로파

저주파 : 비금속에 대한 투과성이 높아 주변 환경 영향 덜받음 비싸 속도느려 커

고주파 : 교통카드 시스템 작고 싸고 인식거리 짧고 속도느려

극초단파 : 1m 이상의 중작거리 인식과 고속 전송가능 물류관리

마이크로파 : RIFD 초소형 태그 구성 주파수대역이 블루투스, WIFI 등과 겹쳐 간섭 많아

 

3.2 유비쿼터스 센서 네트워크 USN

구조 : 센서노드가 센서 네트워크에 연결되고 USN라우터로 IP기반 네트워크에 연결

응용서비스는 USN 미들웨어로 BcN IP 기반 접속 네트워크에 연결되어

각각 센서노드의 데이터를 이용, 센서 노드의 데이터는 리더, 싱크노드를

통해 라우터에 전달

요약 : 응용서비스는 센서노드의 데이터를 라우터에서 IP, BcN 거쳐 USN 미들웨어를 통해 수신한 후 사용자에게 USN 응용 서비스를 제공

 

구성요소 : 센서 네트워크, USN 라우터, USN 미들웨어

센서 네트워크 : 센서노드와 싱크노드를 수천개 뿌림

센서노드 : 외부 변화 감지, ADC(아날로그->디지털), 송수신기구성

싱크노드 : 센서노드에서 감지된 데이터를 외부 네트워크로 전달

USN 라우터 : USN 응용 서비스에 제공할 수 있도록 센서네트워크와 외부 네트워크를 연동

USN 미들웨어 : 센서 네트워크의 데이터를 외부네트워크를 통해 수신

추출, 저장, 관리, 검색하여 응용 서비스에 제공

'SW > Computer Architecture' 카테고리의 다른 글

Computer architecture (용어, 상식) 2  (0) 2017.09.05
Computer architecture (용어, 상식)  (0) 2017.09.05

Computer architecture (용어, 상식) 2

Ch3

시스템 소프트웨어는 컴퓨터 시스템의 효율적인 운영과 제어를 담당한다.

PC = Program Counter 다음에 수행할 명령어의 주소를 저장

MAR = Memory Address Register input/output 수행할 주기억장치의 주소를 저장

SP = Stack Pointer 스택의 최상의 주소를 저장

IX = Index Register 인덱스 주소지정 방식에서 인덱스를 저장

IR = Instruction Register 현재 실행중인 명령어를 저장

MBR = Memory Buffer Register 주기억장치의 데이터를 임시저장

AC = Accumulator 연산결과데이터를 임시저장

PSR = Program Status Register CPU 의 현재 상태 정보를 저장

터치스크린 = 접촉점의 좌표값을 컴퓨터에 전달

스캐너 = 화상 정보를 광학적으로 인식하여 컴퓨터에 입력

햅틱인터페이스 = 사물의 촉감을 감지하고 재현함

CISC 보단 RISC가 더 범용적임

명령어와 주소가 간단하며 형식도 고정되있으며, 레지스터는 많다. ROM을 사용하지 않고 하드와이어드 방식을 사용, 빠름

주소명령어

0-    주소명령어 스택구조컴퓨터에서 사용

1-    주소명령어 누산기레지스터를 이용

2-    대부분컴퓨터 주소필드에 레지스터 번호나 주기억장치의 주소를 지정한다.

3-    2와 같지만, 프로그램의 길이가 짧아지는 장점이 있는 반면 명령어 하나의 길이가 김

ROM

마스크ROM 제조과정에서 데이터를 저장하지 않고, 미리 정보를 기록하여 생산하고 저장된 정보를 변경할순 없지만 대량생산

PROM 제조과정에선 데이터를 저장할수 없지만 라이터로 정보를 입력하여 한번만 쓸 수 있음

EPROM 자외선을 이용하여 새로운 정보를 기록 여러 번쓸수있찌만 비싸

EEPROM 전기적 펄스를 이용하여 데이터를 삭제함 중간에 데이터를 넣을수 있음

중앙처리장치가 필요로 하는 데이터가 캐시 메모리에 존재하는 상황을 캐시 적중이라 하고 반대를 캐시 미스라고 함.

자기디스크 순차접근과 직접접근이 모두 가능하며, 지정된 액세스 암이 지정된 트랙까지 이동하는 데 걸리는 시간을 탐색시간이라고 한다. 원하는 데이터의 저장위치가 헤드까지 오는 데 걸리는 시간을 회전 지연 시간이라고 한다.

CRT 전자총의 전자가 유리의 형광물질 자극

LCD 2장의 유리판 사이의 액정에 전압을 가함

PDP 2장의 얇은 ㅇ리판 사이에 가스를 넣고 양전음전 사이에서 방전현상을 이용

OLED 유기발광다이오드 전류가 흐르면 빛을 내는 현상을 이용하는 자체 발광형 유기물질


 

Ch 4

프로그램은 데이터와 데이터를 처리하는 기능을 뜻함

구조적 프로그램은 단일 입출구를 가진다.

절차지향프로그램은 데이터와 기능을 분리한다.

프로그램제어구조에는 크게 순차 선택 반복으로 구성

인터프리터 방식에서는 번역과 실행이 동시에 이뤄진다.

구조적프로그래밍으로 goto를 지움

객체를 정의 한다는 것은 속성과 기능을 정의하고 다른 객체와의 관계를 정의

절차지향으프로그램은 goto문을 줄이고 명령문의 처리를 블록으로 모듈화하기 위해 구조적프로그래밍이 필요

객체지향언어는 캡슐화 시킨후 메시지를 전달하여 일을 처리

 

CH5

프로그램은 수동적 개체이고, 프로세스는 능동적 개체이다.

색인 순차파일은 순차접근과 직접접근 모두 가능하다.

CPU 스케쥴링은 CPU를 언제 어느곳에 사용할것인지를 결정

운영체제란 자원의 관리를 하는것임, 하드웨어와 사용자 사이의 인터페이스를 제공

작업처리방식

일괄처리시스템 모아뒀다가 한꺼번에 처리함 시스템을 효율적으로 사용하지만 반환시간 ㅠ

다중 프로그래밍시스템 CPU의 유휴시간에도 다른 프로그램을 처리하기 때문에 효율 갑

다중처리 시스템 컴퓨터에 2개이상의 CPU

시분할시스템 일정한 CPU시간을 할당 대화형식으 프로그램실행

실시간시스템  입력된 데이터를 즉시 처리한 후 바로 결과를 보낸다.

분산 처리 시스템 네트워크를 통해 PC에 작업과 자원을 분할

PCB는 주기억장치에 저장되며 운영체제에게 프로세의 대한 정보를 제공하는 자료구조, 프로세스와 같이 살고 죽음 CPU를 다른 프로세스에 넘겨줄 때 실행중인 모든 프로세스정보가 저장됨

CPU 스케쥴링

FCFS (First Com First Server) 준비큐에 도착한 순서대로 CPU할당

라운드 로빈 동일한 CPU시간 할당 (선점)

SJF(Shortest Job First) 실행시간이 짧은 것을 우선처리 (비선점)

SRT(Shortset Remainin Time) 프로세스 중 잔여 실행시간이 짧은 것 선택 (선점)

HRN (Highest Response ratio Next) 가장 높은 응답률먼저 (비선점)

우선순위 프로세스마다 우선순위 부여(비선점)

MLQ(Multi Level Que) 다수의 그룹으로 분류하여 그룹마다 별도의 큐 제공 (선점)

MFQ(Multi-level Feedback Queue) 입출력 프로세스와 CPU위주 프로세스이 특성에 따라 CPU의 할당량을 다르게 부여 (선점)

보조기억장치의 작업을 주기억장치의 어디에 배치할건가?

최초적합 첫번째 공간에 배치

최적적합 가장 작은곳에 배치

최악적압 가장 큰 곳에 배치

페이징기법

페이지와 페이지 프레임의 크기는 동일하며 프로세스가 참조하는 가상주소는 실행 중에 실제 주소로 변환 프로세스마다 별도의 페이지 테이블을 부여

파일구조

순차파일 테이프에 사용 빈공간없이 효율적사용 삽입삭제 어려움

색인순차파일 키값에 따라 정렬된 레코드를 순차적으로 접근 직접파일구조 ,순차파일구조 모두사용 삽입과 수정용이 색인을이용하므로 처리 속도가 늦고 색인 저장공간도 필요

직접파일 레코드에 직접 접근 물리주소를 키 값으로 계산하여 접근 키 값에 의한 순차 검색이 어려움

분할파일 서브파일로 구성되어 라이브러리 저장에 용이 시작주소는 디렉터리레코드에 저장


 

파일의 공간할당기법

연속할당 연속적으로 빈공간에 저장 저장곤간없으면 안됨 빈공간이 조각나면 단편화 현상이 발생하므로 집약이 필요

불연속할당 파일의 크기변화에 유연하게 대응
섹터단위 섹터들이 연결리스트로 구성 다른 섹터와 연결을 위한 포인터를 가짐 (링크드리스트)
블록단위 섹터를 묶은 블록단위로 ㅎ할당 연속할당과 불연속하당의 절충 디스크전체에 분산되므로 검색에 시간이 많이 걸림

접근제어행렬 개별파일이나 디렉터리에 대한 접근이 가능한 사용자와 허용되는 동장한 기록한 것

Ch6

데이터베이스 관리 시스템은 db관리 프로그램의 집합 많은 사람이 사용할수록 효율

파일 구성의 기본요소는 레코드  레코드는 연관 필드의 집합으로 구성되며 자료 저장,표현의 기본단위 필드는 속성을 나타내는 기본

다수의 데이터파일에서 데이터 불일치 현상을 막기위해 db등장

DB는 데이터를 공유할 수 있도록 데이터를 통합,관리함

DB

통합된 데이터 : 연관된 데이터의 모임

저장된 데이터 : 보조기억장치에 저장되어있는 데이터의 모임

운영 데이터 : 특정 조직체의 존재 목적이나 역할 측면에서 필요한 데이터가 구조적으로 통합

특징

실시간접근, 계속적인 변화, 동시공유, 내용참조

DBMS

효율적인 데이터베이스 사용환경을 제공
구조 명시, 생성, 검색, 수정 보호, 접근

파일처리 시스템과 비교할때의 DBMS의 장점

데이터의 중복,불일치 감소, 융통성 향상, 개발 유지비용 감소, 복구 가능, 무결성 향상,표준화

DB언어

데이터 정의어 : 저장구조, 접근방법, 형식 -> 데이터 구축이나 수정

데이터 조작어 : 데이터 검색 수정 삽입 삭제

데이터 제어어 : 데이터 보호 관리

데이터베이스 구조와 근간을 이루는 데이터 모델은 논리구조 표현함

계층적 데이터모델은 레코드와 링크로 구성된 트리

네트워크형 데이터모델 레코드를 노드로, 레코드간의 관계는 간선(edge)로 나타냄

                                간선으로 되어있어 확장성이 떨어짐

관계형 데이터 모델 개념이 단순하여 널리 사용 2차원 테이블에 데이터를 저장, 테이블은 엔티티에 관한 정보를 저장, 고유이름을 가짐

객체지향형 데이터모델 데이터와 메소드를 하나의 객체에서 다룸

릴레이션은 2차원 테이블로 하나의 릴레이션은 하나의 엔티티에 관한 데이터를 저장

속성이 가질수 있는 값의 집합을 도메인 이라함 비워져있을떈 NULL

키 는 하나 이상의 속성 모임 후보키는 최소한의 속성으로 구성

후보 키가 두개 이상이면 하나를 기본키 하나를 대체키로 정해야함

무결성 제약조건 : DB상태가 만족해야 하는 조건으로서 사용자에 의한 DB갱신이 DB의 일관성을 손상하지 않도록 보장하는 수단

도메인 제약조건 : 각 속성값은 반드시 도메인에 속한 하나의 값을 가져야함

개체 무결성 제약조건 기본키를 구성하는 어떤요소도 NULL값이면 안된다.

참조 무결성 제약조건 외래키의 값은 참조된 릴레이션의 기본 키의 값과 같아야함

관계형 대수란 DB데이터를 삽입, 저장 데이터를 검색 수정 삭제 하는 언어이며 데이터가 무엇인지 검색방법은 어떻게 되는지 기술하므로 절차적 언어이다.

선택연산 주어진 릴레이션에서 특정조건을 만족하는 튜플을 구함

추출연산 주어진 릴레이션에서 원하는 속성만 구함

합집합연산 합집합 튜플 튜플을 구함

교집합연산 교집합 튜플

차집합연산 차집합 튜플

카티전 곱 연산 두 개의 릴레이션에 존재하는 모든 튜플의 조합

조인연산 선택연산하여 튜플을 결합하여 하나의 튜플로만듬

나누기 연산 나머지가 나오는 연산

 

SQL

데이터 정의, 조작, 제어 기능

CREAT TABLE

DROP TABLE

ALTER TABLE (ADD, MODIFY, DROP)

SELECT FROM

WHERE (조건문)

ORDERED BY 정렬 조건

INSERT 한번에 하나의 튜플을 삽입

DELETE WHERE조건을 만족하는 튜플을 삭제

UPDATE 튜플의 속성 값을 변경

CH7

네트워크의 시초는 모스가 발명한 전신 기술 모스부호는 원거리에 있는 상대방에게 전기신호의 길이와 끊김으로 정보를 전송

프로토콜 : 네트워크에서 데이터를 주고받을 때 수행되는 절차

기능

주소지정 : 보낼 데이터에 송신측과 수신측의 주소를 추가

동기화 : 송신 컴퓨터가 수신컴퓨터에 데이터를 전송할 때 상호 데이터 전송속도와 타이밍 일치

캡슐화 : 데이터 보호

오류제어 : 오류를 송신컴에 보냄

흐름제어 : 데이터 전송을 위한 데이터 전송과 응답방식

데이터 분할 및 조합 : 여러 개로 나눠서 보냄

연결 제어 : 연결 설정 -> 데이터 전송 -> 연결 해제 단계

프로토콜의 절차

연결 설정 -> 데이터 전송 -> 연결 해제

OSI 참조 모델

7계층 -> 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용

네트워크까지는 하위로 네트워크 특성에 영향을 받지만 상위계층으 영향 x

물리계층 : 시스템 연결에서 기계적, 전기적 특성과 물리적 신호 제어 절차

데이터 링크 계층 : 데이터 물지적 전송 오류를 감지 복구 오류제어기능과 전송 데이터 흐름 제어

네트워크 계층 : 네트워크에서 최적의 경로로 전송될 수 있도록 경로 배정과 혼합제어기능

전송계층 : 특성에 영향없이 오류제어, 흐름제어 기능 수행 신뢰데이터전송

세션계층 : 송수신 컴간 네트워크 대화 제어 동기화 유지

표현 계층 : 구문과 의미에 관련된 기능으로 변환, 암호화, 압축수행

응용계층 : 최상위 계층으로 사용자의 데이터처릴 도와줌

네트워크는 허브와 라우터 같은 교환기들이 통신회선으로 서로 연결

네트워크 구성형태

메쉬형 점과 점으로 연결되어 회선이 고장나더라도 전체 네트워크에 영향을 주진 않지만 회선수가 너무 많아 공간확보가 필요함

스타형 허브라는 네트워크에 점과 점으로 연결되어 재구성이 간편하지만 허브가 고장나면 전체 네트워크 문제

트리형 스타형끼리 연결되어 있어 허브만 준비되면 많은컴을 쉽게연결하지만 허브가 고장나면 전체문제임

버스형 하나의 통신회선에 여러대의 컴ㅍ터가 멀티포인트로 연결되어 컴터 추가, 삭제가 편하지만 무분별하게 추가하면 성능 저하 통신회선일부가 고장나면 전체 네트워크 문제

링형 : 컴퓨터가 점대 점으로 연결 컴퓨터를 통신회선에 연결할 때 리피터를 사용하여 재구성이 쉽지만 링 부분이 문제면 전체 문제

하이브리드형 다씀

 

'SW > Computer Architecture' 카테고리의 다른 글

Computer architecture (용어, 상식) 3  (0) 2017.09.05
Computer architecture (용어, 상식)  (0) 2017.09.05

Entity-relation을 사용한 conceptual data modeling

Ch7 entity-relation를 사용한 개념적 데이터 모델링

7.1 DB 설계를 위한 고수준의 개념적 데이터 모델의 사용

1. 요구사항 수집 및 분석 : 요구사항(트랜잭션으로 구성), 검색과 갱신에 대한 연산들도 포함(diagram)
2.
개념적 설계 : 고수준의 개념적 data model을 사용하여 개념 schema(요구사항 간단히 기술)를 만든다.
3.
논리적 설계 : 상용 DBMS를 이용하여 DB를 실제로 구현 고수준 데이터모델을 구현 데이터모델로 변환
맵핑을 하고 정규화 과정을 통해 설계한다.
4.
물리적 설계 : DB file들에 대한 내부 저장 구조, 파일 구성, 인덱스, 파라미터 등을 명시 DB TR로 설계 구현

7.2 간단한 예제 DB응용

7.3 엔티티 타입, 엔티티집합, 에트리뷰트,

7.3.1 엔티티와 attribute
entity :
실세계에서 독립적으로 존재하는 실체(자동차, , 사원), entity를 기술하는 attribute들을 갖는다.
attribute : entity
를 기술하는 속성(이름, 나이, 주소, ) 여러 유형이있다 그유형은 아래로
복합 attribute : 더 작은 구성 요소(자체로 독립적인 의미를 갖음)들로 나눈다. 더 이상 나눌 수 없는 attribute를 단순 attribute라 한다. (복합 attribute를 세분화한게 단순 attribute)
단일값 attribute : 하나만 갖는 것,
다치 attribute : 여러 개의 값을 가질수 있는 attribute (집이 여러 개, 차가 여러 대)
저장 attribute : 유도 attribute가 유도를 받는 attribute
NULL : entity
의 특정 attribute에 적용할 값이 없는 것
복잡한 attribute : ()에 복합 attribute 를 넣고 {} 안에 다치 attribute를 나타냄으로 중첩을 표현

7.3.2 entity type, entity set, key, value set
entity type :
같은 attribute들을 갖는 entity의 집합, 이름과 attribute리스트로 기술
entity set :
임의의 시점에 DB내의 특정 entity type의 모든 entity 모임
entity type
에 속하는 entity들에 대한 중요한 제약조건은 attribute들에 대한 key, 유일함의 제약조건이 있다.
Key attribute : entity set
안에 entity마다 서로 다른 값을 가지는 attribute
weak entity type : key
를 갖지 않는 entity type
값집합(domain) : entity에서 해당 attribute가 가질수 있는 값들의 집합

Entity e에 대한 attribute A의 값을 A(e)로 표현한다.

7.4 관계, 관계 타입, 역할, 구조적 제약조건

7.4.1 관계 타입, 집합, 인스턴스
관계 : attribute끼리의 참조를 관계로 명시
관계타입 : entity type에 속하는 entity들 간의 관계집합, 관계 인스턴스들의 집합

7.4.2 관계 차수, 역할 이름, 순환적 관계
차수 : 관계 타입에 참여하고 있는 entity type들의 개수
Role name : entity type
에 속한 한 entity가 각 관계 인스턴스에서 가지는 역할을 강조
같은 entity type이 어떤 관계 타입에 두번 이상 참여하는 경우에는 각 참여하는 entity가 하는 역할의 의미를 구분하기 위해 역할 이름이 필수적이다 이런 관계타입을 순환적 관계라 한다.

7.4.3 이진 관계 타입에서의 제약조건
cardinality ratio : entity
가 참여할 수 있는 최대 관계 instance
참여 제약조건 : entity의 존재가 관계 타입을 통해 연관되어 있는 다른 entity에 의존하는이 여부를 명시, 이 제약조건은 각 entity가 참여할 수 있는 관계 인스턴스의 최소 수를 명시하며 최소 카디널리티 제약조건이라 함
참여 제약 조건에는 전체참여와 부분참여가 있다.
전체 참여 : entity들의 전체집합에 속하는 모든 entity가 반드시 다른 entity와 연관되어야 한다.(존재 종속성)
부분 참여 : 일부 entity들만 다른 entity들과 연관되어 있는 것
M:N
관계 타입에서는 참여 entity들의 조합에 의해서 결정되는 attribute들을 반드시 관계 attribute로 명시

7.5 weak entity type : 자신의 key attribute가 없는 entity type(key가 있으면 정규 attribute)
weak entity type
entity들은 그들의 attribute값들 중 하나를 통해 다른 entity type과 연계하여 식별하는데 그러한 다른 entity type을 식별 entity type이라 한다.이 두 type의 관계를 식별 관계라 한다. 항상 weak entity type은 식별 entity type에 전체 참여 제약조건(존재 종속성)을 가진다. 역은 성립하지 않는다.
일반적으로 부분키(점선)를 가지는데 부분키는 동일한 식별 entity에 연관되는 weak entity들을 서로 구분할 수 있는 attribute들이다.

'SW > Database MySQL' 카테고리의 다른 글

sql의 데이터 정의와 타입  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

sql의 데이터 정의와 타입

4.1 SQL의 데이터 정의와 데이터 타입

4.1.1
SQL
환경 : SQL을 사용할 수 있는 어떠한 프레임워크를 설치한 것
클러스터 : catalog의 집합
catalog :
어떤 SQL 환경에 있는 스키마들의 모임
SQL schema : schema
의 이름으로 식별, schema의 각 원소(테이블, 제약조건, , 도메인 등)에 대한 기술자 뿐 아니라 소유계정을 가리키는 권한부여 식별자도 포함

4.1.2 SQLCREATETABLE 명령
relation
의 이름과 함께 attribute의 초기 제약조건들으 명시하여 새로운 relation을 만드는데 사용
attribute마다 이름, 값의 도메인을 명시하는 데이터 타입, NOT NULL과 같은 제약조건을 포함 그 외의 제약조건은 attribute들이 선언된 후 CREATE TABLE 구문 안에서 표현되거나 나중에 ALTER TABLE로 표현됨
base relation : CREATE TABLE
로 정의된 relation
virtual relation : CREATE VIEW
로 정의된 것
외래키들이 순환 참조하도록 선언하거나 아직 생성되지 않은 테이블을참조하면 외래키에 오류가 발생

4.1.3 SQL에서 attribute data type & domain
DATE data type : YYYY-MM-DD
TIME data type : HH:MM:SS
TIMESTAMP data type : YYYY-MM-DD HH:MMM:SS.SSSSSS
INTERVAL data type :
세기의 시간을 저장

4.2 SQL에서 기본 제약조건 명시

4.2.1 attribute 제약조건과 default값 명시 : SQLattribute값으로 NULL을 허용하기에 아니면 NOT NULL
또한 DEFAULT <value> 를 이용하여 default value를 명시할 수 있다.

4.2.2 키와 참조 무결성 제약조건의 명시
CREATE TABLE
구문에 키와 참조 무결성을 위한 특별한 절을 가진다.
UNIQUE
절은 대체키를 명시한다.
FOREIGN KEY
절은 참조무결성을 명시(tuple들을 삽입, 삭제, 수정할때 위배할 수 있다.)

4.2.3 CONSTRAINT 다음에 제약조건의 이름을 부여
4.2.4 CHECK
를 사용하여 테이블제약조건을 명시 (CREATE TABLE의 끝에 사용)

4.3 SQL에서의 기본 검색 질의(SELECT FROM WHERE)
SQL
과 관계모델의 차이점으로는 SQL table tuple들의 집합이 아니고 tuple들의 다중집합이다.
SELECT
DINTINCT를 함께 사용하면 SQL relation에 집합의 성질을 갖도록 함

SELECT <attribute list> ,FROM <table list>, WHERE<조건>
JOIN :
두개 이상의 table을 합치는데 사용

4.3.2 모호한 attribute 이름,별명, 재명명, 투플 변수

Relation name.attribute name, AS를 사용하여 재명명, 별명을 만들수도 있다.
4.3.3 where
절을 생략하면 Relation의 모든tuple검색되고 만약 FROM에 두개 이상의 relation이 명시되고, where절이 없다면 크로스프로덕트(모든 가능한 tuple의 조합)이 검색된다.
선택된 tuple들의 모든 atrribute값을 검색하려면 SELECT절에 attribute명 대신 *을 입력한다.

4.3.4 SQL에서 집합으로의 테이블 : 앞에서 말했듯이, SQL은 집합보다는 다중집합으로 table을 표현한다. 중복 tuple이 테이블의 질의의 결과에서 하나 이상 나타날 수 있다. => SQL은 중복 tuple을 제거하지 않는다.
키를 가진 SQL 테이블은 키값이 각 tuple마다 구별되어야 하므로, 집합으로 표현되도록 제한을 받는다. SQL 결과에서 중복된 tuple을 삭제하려면 SELECT절에 키워드 DISTINCT를 사용한다.
SQL
에서의 관계 대수 : 합집합(UNION), 차집합(EXCEPT), 교집합(INTERSECT)가 있다.
관계대수 다음에 ALL을 붙이면 중복을 허용한다. Ex) UNION ALL

4.3.5 부분 문자열 패턴 비교와 산술 연산자
LIKE
를 통해 문자열의 일부에 대해서 비교 조건을 명시한다 (몇글자, 시작하는 문자)
질의 내에서 산술식을 허용한다(사칙연산), BETWEEN을 사용하여 범위를 지정한다.

4.3.6 질의 결과의 정렬
ORDER BY
를 사용하여 질의결과에 있는 tuple들을 정렬(default는 오름차순, DESC를 사용하면 내림차순)

4.4 SQL에서 삽입, 삭제, 갱신문

4.4.1 INSERT 명령 : relationtuple을 추가
relation
이름과 attribute값들의 리스트를 명시해야 하며 attribute들의 순서는 CREATE TABLE에서 명시한 attribute들의 순서와 일치해야한다.
새로운 tuple에 일부 attribute만 명시할 경우에는 INSERT INTO R (attributes)를 사용하고 다음줄에 VALUES (삽입할 attribute)를 사용한다.

4.4.2 DELETE 명령 : relation에서 tuple을 삭제한다. WHERE절과 같이 사용할 수 있다. 한번에 한 테이블 내의 tuple들만 삭제할 수 있다. 그러나 DDL에서 참조 무결성 제약조건 내에 참조 트리거된 동작이 명시되어있다면 삭제는 다른 relation에 있는 tuple들도 연쇄적으로 삭제할 수 있다. table자체를 삭제하려면 DROP TABLE

4.4.3 UPDATE 명령 : 선택된 하나 이상의 tuple에서 attribute값들을 수정하기 위해 사용
DELETE
명령처럼 UPDATE명령에 있는 WHERE절은 한 relation에서 수정할 tuple들을 선택

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

basic relation model (기본 관계 모델)

3.1 관계모델은 DB relation들의 모임으로 표현


3.1.1 domain, attribute, tuple, relation


Domain :
원자값(더 이상 나눠질수 없는 것)들의 집합, 해당 Domain이 속하는 값들의 datatype을 명시

NULL은 모든 domain의 멤버, 다른 attribute가 같은 domain을 갖을 수 있다. 구성요소 : 데이터타입, 형식, 이름


릴레이션 스키마 : R이라는 릴레이션 이름과, A_1 이라는 에티르뷰트(도메인과 같은 역할)들로 이루어진다.


릴레이션스키마의 릴레이션(relation state) : n-tuple들의 집합, 실세계의 특정상태에서 해당되는 tuple들만 반영


3.1.2 릴레이션의 특성


릴레이션에서 투플들의 순서는 존재하지 않지만 저장 순서는 존재한다.


투플 내에서의 값들과 순서와 릴레이션의 또 다른 정의 : 투플 내에서 값들의 순서는 중요하지 않다.


투플 내의 각 값은 원자값이다 => 1 정규형


NULL :
값을 모를 때, 가능하지 않은 값일 때,  이 투플에 그 attribute를 적용할수 없을 때 사용한다.


3.2 관계 모델 제약조건과 관계 DB 스키마


본질적 모델 기반 제약조건 : data model 자체에 존재하는 제약조건


스키마 기반 제약조건 : data modelschema에서 직접 표현 가능한 제약조건으로 DDL로 명시


응용 기반 제약조건 : schema에서 표현이 불가능한 제약조건으로 응용프로그램에 의해 표현


3.2.1 도메인 제약조건 : 각각의 투플 내에서 각각의 attribute의 값이 반드시 도메인에 속하는 원자값이여야 함


3.2.2 키 제약조건과 널 제약조건


형식 관계 모델에서 relation tuple들의 집합으로 정의


releation
의 모든 tuple도 중복되지 않아햐 한다. tuple마다 갖는 uniqueattributesuperkey라 한다.


유일성 제약조건 : super key가 같은 tuple은 존재하지 않는다.


모든 relation은 적어도 하나의 superkey를 갖는다.


KEY :
최소의 superkey


3.2.3 관계 DB, 관계 DB schema


관계DB는 서로 연관된 다수의 relation을 갖는다.


관계DB schema : relation schema들의 집합과 무결성 제약조건들의 집합이다.


관계DB state : relation state들의 집합


무결성 제약조건을 준수하면 유효한 상태 아니면 유효하지 않은 상태


무결성 제약조건은 DB schema에 명시되어있다


3.2.4 엔티티 무결성 제약조건, 참조 무결성 제약조건, 외래키


엔티티 무결성 제약조건 : 기본키는 null값이 될 수 없다. (기본키는 tuple들을 구별하는데 사용하기 때문)


참조 무결성 제약조건 : 두 릴레이션 사이에 명시되는 제약조건, relation에 있는 tuple이 다른 relation의 

tuple을 참조하려면 반드시 참조되는 tuple이 그 relation안에 존재 해야한다.


foreign key :
외래키가 되기 위해서는 참조 무결성 제약조건이 만족되어야 한다. 동일한 relation을 참조할 수 없다. 외래키는 자신의 relation을 참조할 수 있다.


외래키의 attribute는 기본키의 attribute와 동일한 doamin을 갖는다. -> 외래키는 참조한다.


현재 상태의 한 tuple 내의 외래키의 값은 현재상태의 어떤 tuple 내의 기본키와 일치하거나 null값을 가져아한다.


3.3 갱신 연산과 트랜잭션 그리고 제약조건 위반의 처리


관계 모델의 연산은 추출과 갱신(삽입, 삭제, 갱신 또는 수정)으로 나누어진다.


3.3.1      


삽입 연산은 relation R에 삽입한 tuple t에 대한 attribute값들의 리스트를 제공한다.


도메인 제약조건, 키 제약조건, 엔티티제약조건, 참조 제약조건 4가지를 위반할 수 있다. 기본은 거부


3.3.2 삭제 연산


참조무결성 제약조건 1개만 위반할 수 있다. 기본은 거부


3.3.3 갱신 연산


relation R
에 있는 tuple들 중에서 하나 이상의 attribute값을 변경하는데 사용



기본키나 외래키가 아닌 attribute의 갱신에는 아무런 문제가 없다, 데이터타입과 도메인이 정확한지 확인


3.3.4 트랜잭션 개념 : DB로부터 읽기, 삽입, 삭제, 갱신 같은 DB 연산을 수행하는 program

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
sql의 데이터 정의와 타입  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

Data model, schema, instance

데이터 모델, 스키마, 인스턴스

2.1 데이터 모델, 스키마, 인스턴스
데이터 모델 : 필수적인 특징만을 강조하는 추상화를 위한 도구데이터 구조를 명시하기 위해 사용할 수 있는 개념들의 집합으로 대부분 검색과 갱신을하는 기본연산들을 포함한다.
DB
구조 : 데이터 타입, 관계, 제약조건을 의미

2.1.1 데이터 모델의 분류
저수준(물리적)데이터 모델 : 어떻게 데이터가 저장되는지를 제공
표현(구현)데이터 모델 : 사용자들이 쉽게 이해할 수 있는 개념을 제공
고수준(개념적)데이터 모델 : 많은 사용자들이 데이터를 인식하는 방식에 대한 개념 제공
고수준(개념적)데이터모델 : entity(사원이나 프로젝트 같은 실세계의 객체나 개념을 나타냄), attribute(사원이 이름이나 급여 같은 entity의 특성), relationship(사원과 프로젝트 사이의 관계처럼 entitiy들 사이의 연관성)

2.1.2 스키마, 인스턴스, 데이터베이스 상태
DB schema : DB
기술(description)으로 자주 변경되지 않는다. 대부분은 도식적으로 스키마를 표현하는 표기법을 갖는데 이를 스키마 다이어그램이라 한다.(실제 인스턴스는 표현하지 않고 레코드 타입의 구조를 나타냄)
DB
상태 : 어떤 특정 시점에 DB에 들어있는 data(레코드를 변경할 때 DB는 다른 상태로 바뀜)
새로운 DB를 정의할 때 DB schemaDBMS에 명시, DBdata가 처음으로 적재될 때 초기상태로 됨

2.2 3단계-스키마 아키텍처와 데이터 독립성
2.2.1 3
단계-스키마 아키텍처
내부단계(internal level) : 내부 스키마를 가지며 이 스키마는 DB의 물리적 저장 구조 기술
개념단계(conceptual level) : 개념 스키마를 가지며 이 스키마는 모든 사용자를 위한 DB구조 기술(제약조건 등)
외부단계(external level) : 외부 스키마와 사용자 view를 가지며 이 스키마는 특정 user group이 관심을 갖는 DB 기술(나머지은폐)
사상(mapping) : 단계들 간 요구와 접근 결과를 변환하는 과정

2.2.2 데이터 독립성 : 고수준의 스키마를 변경할 필요없이, DBS의 어떤 단계에서 스키마를 변경할 수 있는 능력
논리적 데이터 독립성 : 외부스키마나 응용 프로그램들을 변경하지 않으면서 개념 스키마를 변경
물리적 데이터 독립성 : 개념스키마를 변경하지 않으면서 내부스키마를 변경
DBMS
catalog는 여러 단계 사이에서 요구와 데이터를 mapping하는 방법에 대한 정보 포함

2.3 DB언어와 interface
2.3.1 DBMS
언어
DDL(data definition language) :
스키마들을 명시
SDL(storage Defintion Language) :
내부스키마를 나타냄 (오늘날의 DBMS SDL이 거의 없다)
VDL(View Defintion Language) : 3
단계-스키마 아키텍처를 이용하여 사용자 뷰를 명시, 개념스키마들 사이의 맵핑
대부분의 DBMS DDL이 개념 스키마와 외부 스키마를 정의하는데 사용

DML(data manipulation language) : 데이터의 검색 삽입 삭제 수정 조작하는 언어
고수준(비절차적) DML : 복잡한 DB 연산을 간단하게 나타냄, 한번에 레코드 집합(선언적)
저수준(절차적) DML : 범용 프로그래밍 언어에 삽입하여 나타냄, 한번에 한 레코드
DML모두 범용 프로그래밍 언어 내에 DML이 삽입된 경우 프로그래밍 언어는 호스터언어, DML은 데이터 부속어라 하며 고수준 데이터 조작어가 대화식으로 진행되면 질의어라고 부른다

SQL(Structure Query Language) : DB와의 소통 수단으로 DDL DML의 융합, 제약조건 명시 외에 많은 기능

2.4 데이터베이스 시스템 환경

2.4.1 DBMS 구성 모듈
DB
DBMS catalog는 디스크에 저장되어 있으며 OS로 디스크에 접근
buffer
관리 모듈 : 많은 DBMS는 성능에 영향을 미치기 때문에 디스크 입출력을 스케쥴
저장 데이터 관리자 모듈 : 디스크에 저장되어 있는 DBMS의 정보(DB, catalog)에 대한 접근 제어
DDL compiler : DDL
로 명시된 스키마 정의들을 처리, 스키마들에 대한 정보(meta-data)DBMS catalog에 저장
catalog : DBMS
모듈들이 필요로 하는 파일의 정보, 제약조건을 포함(DBMS가 정보가 필요할 때 접근하는곳)
대화식질의 interface : 질의 컴파일러(질의들을 파싱하고 데이터원소들이 정확한가 입증하고 내부 형태로 컴파일 + 질의 최적화기(연산들을 재배치하고 중복제거, 적절할 알고리즘과 인덱스를 선택)
precomiler :
호스트 언어로 작성된 응용프로그램에서 DML 명령들을 추출하여 DB접근을 위한 목적코드(object code)로 컴파일 하기 위해서 DML compiler로 보내고 프로그램에서 DML 명령을 제외한 나머지 부분은 호스트언어 compiler로 보낸다.
Runtime DB processor :
특권 명령, 실행가능 질의 계획, 미리 작성된 트랜잭션등을 수행, system catalog, 저장데이터 관리자와 함께 작동)
동시성 제어 모듈 : 제약조건을 침해하지 않으면서 트랜잭션이 잘 수행되도록 한다.
회복 모듈 : DB의 일관성, 트랜잭션의 원자성, 지속성을 유지
동시성 제어 모듈과 회복 모듈은 TR관리를 위해서 runtrim DB processor와 통합하여 동작한다.

2.4.2 DBS utilities : DBA DBS를 관리하는 것을 도와줌
적재(loading) : 기존의 data file DB에 적재
백업(backup) : 저장매체에 DBcopy를 만듦
파일 재조직(file reorganization) : DB의 파일 구조를 다른 파일 구조로 재조직, 새로운 접근경로 형성(성능향상)
성능 모니터링(performance monitoring) : 사용통계를 DBA에게 전달

2.4.3 도구, 응용, 환경, 통신 장비
케이스 도구 : DBS를 설계하는 과정에 사용
데이터 사전(저장소) 시스템 :
응용개발환경, 통신 소프트웨어가 있다.

2.5 DBMS를 위한 중앙집중식과 클라이언트/서버 아키텍처

2.5.1 중앙집중식 DBMS 아키텍처

2.5.2 기본적인 client/server 아키텍처
client :
사용자 인터페이스와, 자체 처리 능력을 제공
server :
클라이언트 컴퓨터에게 서비스들을 제공할 수 있는 hw, SW

2.5.3 DBMS를 위한 2- client/server architecture : client handles, server handles, API 제공

2.5.4 웹 응용들을 위한 3-client/server architecture

2.6 DBMS의 분류 (DBMS를 분류하기 위해 여러 기준이 사용)
1. data model :
가장 많이 사용하는건 관계 데이터모델,
2.
사용자 수
3.
사이트 수
4.
비용
5.
범용, 특수목적 DBMS 

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
sql의 데이터 정의와 타입  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

'분류 전체보기'에 해당되는 글 125건

1 ··· 5 6 7 8 9 10 11 ··· 13 →