'2011/08/15'에 해당되는 글 5건

  1. 2011.08.15 Network Layer
  2. 2011.08.15 Hash-based indexes
  3. 2011.08.15 Tree-Structured index
  4. 2011.08.15 Disks and files
  5. 2011.08.15 html,xml,rdf
공부/네트워크2011. 8. 15. 18:25


transport segment를 sender에서 receiver로 보내는 역할.
datagrams으로 캡슐화(헤더붙이기)를 한다.
모든 호스트와 라우터에 network layer protocols이 있다.
router는 헤더를 보고 다른 곳으로 전달한다.

네트워크 레이어에서의 두가지 핵심적인 기능은 forwarding과 routing이다.
forwarding은 라우터에서 패킷을 다음 라우터로 보내는 것. 
routing은 출발지에서 목적지까지의 길을 정하는 것.

datagrams이 전송되기 전에, 두 end hosts와 라우터들이 가상의 연결을 맺는다.
transport layer의 경우 두 프로세스간 연결인 반면 network layer의 경우에는 두 호스트간 연결서비스를 제공한다.

Network layer에는 연결지향적인  VC network와 비연결적인 datagram network 서비스를 제공한다.
transport layer와 비교해서 network layer는 호스트간 서비스이고, 네트워크는 둘 중에 하나만 선택할 수 있고, 둘 다는 못쓴다. 그리고 네트워크 코어에서 서비스를 구현한다.

VC. virtual circuit.
전화망 같이 동작한다.
성능이 좋다.
전송전에 setup을 한다.
각 패킷은 VC id을 지니고 있다.
라우터는 각 패킷이 어디로 보내져야 할지 상태를 유지한다.
링크, 라우터 자원을 VC에 할당해서 delivery나 delay를 보증할 수 있다. 

Datagram networks
setup이 필요없다.
이 레이어에서는 연결의 개념이 없고
도착지 host 주소를 보고 패킷을 포워딩한다.
주소를 볼 때 가장 긴 prefix로 match한다. 
단순하다. 복잡한 기능은 end system이 하도록 미룬다.

라우터 아키텍쳐
라우터의 두가지 핵심 기능 : 라우팅 프로토콜,  datagram을 인풋링크에서 아웃풋링크로 포워딩.
인풋포트 -> switch fabric -> 아웃풋포트

인풋포트
인풋포트의 포워딩 테이블을 보고 아웃풋 포트를 정한다.
 switch fabric에 포워딩되는 속도보다 데이터그램이 인풋포트에 도착하는 속도가 더 빠르면 큐에 저장된다.

switch fabric
switch fabric은 메모리나 버스, interconnection network로 만들 수 있다.

아웃풋포트
큐가 있어서 속도차 보완. 
큐에 있는 패킷중에서 어느 순서로 전송해 줄 것인지 선택할 수 있다.

큰 ip 데이터그램은 작게 쪼개질 수 있다. fragmentation.
마지막 도착지에서 합쳐진다.

subnets
ip adress는 subnet 부분과 host 부분으로 나눌 수 있다.
인터페이스를 때어냈을 때 분리되어 생기는 작은 네트워크들.
같은 subnet을 가진 호스트들은 라우터를 거치지 않고 직접통신이 가능하다.

CIDR
Classless InterDomain Routing.
subnet, host part 구분이 고정되지 않음.

어떻게 아이피를 얻는가?
수동으로 설정할 수도 있고, DHCP(Dynamic Host Configuration Protocol)을 이용해서 자동으로 받을 수 있다.

network가 subnet part를 어떻게 얻는가?
ISP가 가진 아이피 주소공간을 8개의 subset으로 쪼갠다.

ISP는 어떻게 아이피 주소공간을 얻는가?
ICANN (Internet Corporation for Assigned Names and Numbers)에서 받는다.

NAT (Network Address Translation)
전체 네트워크를 하나의 아이피가 대표한다.
좋은점 : 주소 절약. 내부 네트워크가 변경되도 바깥 네트워크는 몰라도 되고, 바깥쪽(ISP)이 변경되도 안쪽은 몰라도 된다.
테이블을 이용하여 안쪽이나 바깥쪽 네트워크로 들어오거나 나가는 패킷의 주소를 수정해준다.
NAT은 포트넘버를 보기 때문에 IP레어어 이상을 본다.
바깥쪽 네트워크의 호스트가 안쪽 네트워크의 호스트 연결을 원할 때는 어떻게 하는가?
수동으로 엔트리를 추가하거나 UPnp라는 프로토콜을 사용하여 자동으로 엔트리를 추가. 아니면 relaying이라고 두 호스사이에 다리역할을 하는 것을 둔다. 

ICMP(Internet Control Message Protocol)
라우팅에 관련된 정보를 주고 받는다. 예를 들어 TTL이 만료되었다는 메시지를 보낸다던가, 목적지 호스트에 도착해서 더이상 더 나아갈 수 있는 포트가 없다는 패킷을 보내는 것 등등.
 
Ipv6
기존의 32비트 어드레스보다 더 많은 주소길이를 갖는다.
헤더는 40 byte로 고정(헤더를 따로 추가할 수 있다, 길이가 고정되어 있어서 파이프라인 구현할 수 있다.)
fragmentation은 라우터가 분할하고 합치느라 복잡해지기 때문에 허용하지 않는다.
 
tunneling.
IPv4에서 IPv6도 작동하게 하는 방법.
IPv6에서 Ipv4로 갈 때 패킷 추가로 데이터를 붙여서 Ipv4에서도 작동하게 한다.

라우팅 알고리즘

1) Link State
각 라우터가 네트워크의 라우터들이 어떻게 연결되었는지에 대한 정보를 알고 있다.
각 라우터는 독립적으로 도착지에 대한 최선의 경로를 계산한다.
다익스트라 알고리즘 사용할 수 있다.
단점으로 routing loop가 발생할 수 있다.
한 패킷이 어느 특정 목적지로 갈 때, 2개의 서로 이웃한 라우터가 각각 서로의 라우터로 가는것이 가장 짧은 길이다 판단하고 포워딩시킬 때 루프 발생.
각 라우터가 이웃끼리 서로 정보교환을 하지 않고 경로를 계산해서 발생하는 문제이다.

2) Distance Vector
한 라우터 x에서 다른 라우터 y까지 가는 최단 경로.
각 라우터는 자신의 이웃들로 가는 링크 비용을 알고 있고, 자신의 distance vector와 이웃의 distance vector를 가지고 있다.
각 라우터가 링크비용이 변경되거나 새로운 디스턴스 벡터를 받았을 때 자신의 DV를 수정하고 수정되었으면 이웃들에게 자신의 DV를 보낸다.
벨만포드 알고리즘을 사용해서 발생하는 단점으로 count to infinity가 있다.
A가 B에게 특정 목적지로 가는 경로를 알려줄 때, B는 그 경로가 자기를 포함한 경로인지를 알지 못한다.
특정 목적지로 가는 링크가 끊어졌을 때 A와 B사이에 특정 목적지로 가는 최단경로가 무한대까지 서서히 수정이된다.

Hierarchical Rounting
여러개의 라우터를 autonomous systems(AS)로 묶는다.
한 AS의 라우터들은 같은 라우팅 알고리즘을 사용한다. (intra-AS routing protocol)
Gateway router : 다른 AS의 라우터를 연결해주는 라우터.

forwarding table은 같은 AS내부의 라우터쪽으로 포워딩할때는 intra-AS 라우팅 알고리즘을 사용하고, 다른 AS의 라우터쪽으로 포워딩할 때는 intra-AS와 inter-AS 라우팅 알고리즘을 사용한다.

Inter-AS
AS 밖으로 나가는 패킷이 있을 때 어느 AS로 포워딩될지 알려준다.
2개 이상의 AS로 갈 수 있는 경우, 자신과 가까운 gateway router에게 패킷을 처리하라고 맡긴다.

Intra-AS routing protocols

1)RIP (Routing Information Protocol)
distance vector 알고리즘을 이용한다.
이웃에게 매 정해진 시간마다 자신의 DV를 보낸다. (advertisement)
포워딩 테이블에는 다른 네트워크로 가기 위한 다음 라우터 정보가 있다.
일정시간 반응이 없으면 그 라우터가 유효하지 않은 걸로 간주한다.

2) OSPF (Open Shortest Path First)
Link State algorithm을 사용.
LS 패킷을 전체 AS에 퍼뜨림.
OSPF 메시지 보안을 제공
같은 비용의 Path가 두개 이상 있을 때 허용.
hierarchical을 제공. 하나의 AS가 크면 작은 영역으로 나눈다. 나눠진 각 영역을 Area라고 한다.
area border routers: 자신의 area에 있는 비용정보들을 요약하고, 다른 area의 area border routers에게 알려준다.
backbone routers: backbone network에 대한 라우팅 정보를 가지고 있다.
boundary routers: 다른 AS와 연결하는 라우터.

AS{multiple routers in an area -> area border routers -> backbone routers -> boundary routers} -> another AS{...}

3) BGP (Border Gateway Protocol)
표준
AS가 이웃 AS들로 부터 그것들이 접근할 수 있는 subnet의 정보를 얻는다.
AS 내부 라우터들에게 이 정보를 뿌린다. 

라우터들은 TCP연결을 통해 라우팅 정보를 주고받는다. (BGP session)
AS가 다른 AS에게 특정 prefix로 시작하는 아이피를 자기에게 보내달라고 알린다.(advertise)
AS내부에서는 iBGP를 사용해서 이 정보를 내부의 라우터들에게 알려주고,
AS에서 다른 AS로 보낼때는 eBGP를 사용.
라우터는 새로운 prefix정보를 받으면 자신의 포워딩 테이블에 기록.

prefix를 알릴 때 몇 가지 정보(BGP attributes)를 더 붙여서 보낸다.
AS-PATH는 prefix advertisement가 어떤 AS들을 거쳤는지.
NEXT-HOP은 현재 AS에서 다음 AS로 가는데 지나가는 AS 내부의 라우터들.
게이트웨이 라우터가 route advertisement를 받았을 때, poliy를 적용해서 다른 AS에 보낼지 말지를 정한다.
 
어떤 prefix로 갈 수 있는 라우터가 여러개 있을 때, 하나를 정해야 한다. 정책에 따라 할 수도 있고, AS-PATH가 짧은 것으로 정할 수도 있고, 가장 가까운 Next-hop으로 정해서 선택을 떠넘길수도 있고, 등등.

 

'공부 > 네트워크' 카테고리의 다른 글

Link layer and LANs  (1) 2011.08.18
Transport Layer  (0) 2011.07.28
Application layer  (0) 2011.07.23


Posted by skyjumps
공부/데이터베이스2011. 8. 15. 17:53


hash-based indexes는 equality selection에 가장 좋은 인덱스.
range search는 성능이 아주 않좋아 사용하지 않는다.

static hash
primary bucket pages가 고정, 연속적으로 할당되어 있다. 절대 해제되지 않고, 필요하면 오버플로우 페이지를 만든다.
hash값으로 data entry가 들어갈 버켓을 정한다.

dynamic hashing
extensible hashing, linear hashing

extensible hashing
버켓을 가리키는 디렉토리를 사용한다.
버켓이 가득차면 디렉토리 크기를 2배로 하고, 오버플로우 된 버켓에 있는 데이터엔트리들을 분산시킨다.
하지만 버켓이 가득찬다고 해서 항상 디렉토리 크기가 2배가 되는 것이 아니다.
오버플로우된 버켓의 데이터엔트리가 분산될 때, global depth, local depth를 비교해서 local depth가 커질경우 디렉토리 크기를 2배로 늘리고, global depth도 1 커진다.
global depth는 엔트리가 어떤 버켓에 속할지 구분할 때 필요한 최대 bit의 갯수이다.
local depth는 이 버켓에 속한 엔트리들을 구분하는데 이용되는 bit수이다.
최소유효비트로 구별하는 것의 좋은 점 : 디렉토리가 2배가 될때 그냥 이전 디렉토리를 복사하고, 분산되는 버켓부분의 포인터만 수정해준다.
데이터 엔트리를 삭제할 때, bucket이 비면 합칠 수 있다. 그리고 모든 directory element가 분산되기 전처럼 같은 bucket을  가리키면 디렉토리가 반으로 줄어든다.

linear hashing
여러개의 hash function을 이용.
hi+1 은 hi의 해시값 범위의 두배이다.
overflow page를 사용한다.
나눌 버켓을 round-robin으로 차례대로 정한다.
한 라운드의 버켓의 수는 라운드 시작할 때 존재하는 버켓의 수(NR)이다.
각 라운드를 level이라고 한다.
한 라운드를 끝내면 버켓의 수는 시작할 때보다 2배가 되며(점진적으로 증가)
level이 하나 증가하고, 해쉬함수도 다음 것을 사용한다.
나눠지는 시점을 적재률로도 할 수 있고, 아니면 오버플로우 될 때로 할 수 있다.
찾기 할 때 해쉬값이 이전에 나눠진 버켓을 가리킬 때에는 다음 단계 해쉬값을 사용한다.
입력할 때 level 또는 level+1의 해시함수의 값을 통해 버켓을 찾고 버켓이 가득 찼을 경우 오버플로우 페이지가 생기고,
나눠지는 시점을 오버플로우가 발생될 때로 했다면, 이번 차례의 버켓을 level+1의 해쉬함수를 이용하여 엔트리들을 분할 한다.



 
 

'공부 > 데이터베이스' 카테고리의 다른 글

Tree-Structured index  (0) 2011.08.15
Disks and files  (0) 2011.08.15
8장 storage and indexing Overview  (0) 2011.08.09
5장 SQL  (0) 2011.08.09
2장 introduction to Database Design  (0) 2011.08.06


Posted by skyjumps
공부/데이터베이스2011. 8. 15. 16:08


인덱싱의 3가지 방법. 이전 노트 참고.

Tree-structured indexing은 범위를 만족하는 것을 찾는 것(range search)과 일치하는 것을 찾는 것(equality search), 둘 다 쓰일 수 있다. 
ISAM은 정적인 구조, B+ tree는 삽입, 삭제에 유연한 동적인 구조.

ISAM
leaf page가 data entries를 포함하고 있고, 오버플로우 페이지를 갖는다.
파일생성과정 : leaf pages가 연속적으로 할당되고, 서치키에 의해 정렬된다.  인덱스 페이지가 할당되고, 오버플로우 페이지를 위한 공간을 할당한다.
삭제시 overflow 페이지가 비게되면 할당 해제.
삽입과 삭제는 leaf page에만 영향을 미친다. non-leaf page는 안변한다.

B+tree
삽입, 삭제가 logF N이다. 트리의 높이 균형을 유지한다.
루트 빼고 페이지의 최소 적재률(50%)를 유지한다. 각 노드는 d<= m  <= 2d의 entry를 포함한다. d를 order라고 한다.
data entry에 삽입할 때 공간이 없으면 노드를 분할. 중간 값이 부모노드로 복사되어 새로 생긴 노드를 가리킨다.
하지만 index entry에 삽입할 때는 중간값이 복사되지 않고 이동된다.
split되면 높이가 하나 커진다.
삭제
삭제하고 나서  최소적재율보다 작으면 이웃노드에서 엔드리들을 가져오가나(re-distribute),이게 안되면 이웃노드랑 결합(merge)한다.
data entry가 merge될 때
merge하면 부모노드에서 합쳐져서 빈 노드를 가리키는 엔트리를 삭제한다.
merge가 루트까지 영향을 미칠 수가 있고 merge는 트리 높이를 작게 한다.
인덱스 엔트리가 merge될 때 
인덱스엔트리가 merge되면 합병되는 두번째 엔트리의 맨 왼쪽의 포인터는 키 값이 없게 된다. 그래서 부모 노드에서 빈 노드를 가리키게 될 인덱스 엔트리를 삭제하고 이 엔트리의 키 값을 사용한다.
인덱스 엔트리가 re-distribute될 때
그들의 부모를 거쳐서 재분배된다.

prefix key compression
fan-out이 클 수록, 트리의 높이가 작아지고 빨리 찾기 때문에 fan-out을 크게 하는 것이 좋다.
그래서 키를 압축해서 fan-out을 늘린다.

bulk loading of a B+ tree
큰 데이터로 b+ tree만들 때 삽입연산을 계속 해주면서 만드는 것은 느리다.
bulk loading 기법을 이용한다.
data entry를 모두 정렬하고, 새로운 루트 페이지에 첫번째 leaf page를 넣는다.
인덱스 엔트리는 항상 leaf page 바로 윗 레벨의 가장 오른쪽의 index page에 삽입된다. 
 

'공부 > 데이터베이스' 카테고리의 다른 글

Hash-based indexes  (0) 2011.08.15
Disks and files  (0) 2011.08.15
8장 storage and indexing Overview  (0) 2011.08.09
5장 SQL  (0) 2011.08.09
2장 introduction to Database Design  (0) 2011.08.06


Posted by skyjumps
공부/데이터베이스2011. 8. 15. 12:57


platters가 돈다.
arm assembly가안팎으로 움직이면서 헤드를 원하는 track 위에 올려놓는다.
헤드들 밑에 놓은 트랙들은 cylinder라고 한다.
한번에 one head만 읽고 쓸 수 있다.
block size는 여러개의 sector size이다.

seek time : arm으로 head를 원하는 트랙위에 위치시키는데 걸리는 시간.
rotational delay : 원하는 block에 도착할때까지 회전하는 시간.
transfer time: data 전송시간
i/o cost를 줄이려면 seek time과  rotational delay를 줄인다.
파일의 block들을 디스크에 연속적으로 저장한다.
같은 트랙의 블락 -> 같은 실린더의 블락 -> 인접한 실린더의 블락 순으로.
연속적인 스캔을 할 때, 미리 몇개의 페이지를 메모리로 불러오는 pre-fetching은 성능항상에 도움이 된다.

RAID
여러개의 디스크를 사용해서 하나의 큰 디스크로 추상화.
성능항상과 신뢰성을 위해 사용.
data striping(data를 쪼개서 저장), redundancy(fail을 대비해서 데이터를 중복해서 저장)
 
Disk space management
페이지를 할당하고 해제하는 역할.
페이지를 읽고 쓰는 역할을 한다.

buffer management
메인메모리의 크기가 상대적으로 디스크보다 작기때문에
메인메모리에 버퍼풀을 유지. 디스크로부터 필요한 프래임을 가져온다.
replacement policy를 통해 어떤 페이지가 교체될 것인지 정한다.
교체될 때 교체되는 frame이 수정되었을 경우(dirty) 디스크에 반드시 쓴다.
새로 불러온 페이지는 pin count를 하나 증가시킨다. 다른 사용자가 그 페이지를 요청할 때 pin count는 하나씩 증가한다.
pin count가 0인 것들만 교체할 수 있다.

buffer replacement policy
LRU, Clock, MRU등이 쓰인다.
LRU가 항상좋은 것은 아니다.
스캔을 할 때, 버퍼풀에 10개 프레임이 있고, 스캔할 파일의 페이지 수가 11개 일때,
파일을 스캔할 때마다 모든 페이지를 디스크로부터 읽어야 하는 문제가 발생한다. (sequential flooding)

왜 OS 파일 시스템을 사용하지 않고 독자적인 파일 시스템을 사용하는가?
OS에 독립적으로 동작하기 위해서.
그리고  DB 연산들은 패턴이 있어서 다음에 어떤 페이지가 올지 예측할 수 있다. 그래서 page를 미리 불러올 수 있다. (pre-fetch)
 
Record format
레코드길이가 고정일 경우.
system catalog에 필드 사이즈 정보가 저장되어서, 이를 참조하여 특정 필드의 위치를 계산할 수 있다.
필드사이즈가 고정이 아닐 경우
필드 사이에 특별한 문자를 넣어서 필드를 구별하는 방법이 있다. 특정 필드 찾아내려면 레코드를 처음부터 읽어야 한다.
필드앞에 각 필드의 위치 정보를 담은 디렉토리를 사용하는 방법이 있다. 약간의 공간 오버헤드가 있지만 특정 필드를 찾기 쉽다.

page format
record id = <page id, slot #>
1) 레코드 길이가 고정일 때
i) 레코드들을 연속적인 slot에 모아두는 방법. 삭제될 때 마지막 slot이 삭제되는 slot으로 이동. 이동되는 레코드가 외부에서 참조될 때 문제.
ii) 비트맵을 유지하는 방법. 
2) 레코드 길이가 고정이 아닐 때
레코드 오프셋, 레코드 길이로 구성된 slot directory를 만든다. rid를 바꾸지 않고도 record들을 이동할 수 있다.

DBMS의 윗 레벨에서는 페이지와 블락을 모른다. 레코드와 레코드의 집합인 파일을 안다.

unordered(heap) file
정렬되어 있지 않은 단순한 파일 구조.
파일에 페이지가 할당되거나 해제된다.
파일내의 페이지, 페이지내의  빈공간, 페이지내의 레코드 위치를 추척할 수 있어야 한다.
i) 빈공간을 가진 페이지의 List와 레코드로 꽉 찬 리스트를 가지는 방법
ii) 디렉토리를 이용해서 힙파일을 만드는 방법. 

'공부 > 데이터베이스' 카테고리의 다른 글

Hash-based indexes  (0) 2011.08.15
Tree-Structured index  (0) 2011.08.15
8장 storage and indexing Overview  (0) 2011.08.09
5장 SQL  (0) 2011.08.09
2장 introduction to Database Design  (0) 2011.08.06


Posted by skyjumps
공부/웹2011. 8. 15. 11:03


html : hypertext markup language, 태그를 이용해서 문서안밖의 데이터구조를 표현.
xml : extensible markup language. 사용자가 태그를 정의할 수 있다.
rdf :  resource description framework, 정보를 구성하는 자원에 대한 자세한 설명과 관계를 표현한다.

'공부 > ' 카테고리의 다른 글

xhtml  (0) 2011.08.01
시맨틱 웹, 의미적 연결성, 웹 사이언스  (0) 2011.07.21
웹사이언스  (0) 2011.07.20


Posted by skyjumps