2011년 7월 6일 수요일

[네트워크일반]Switch 의 종류 및 기능

Switch 의 종류 및 기능
Network에서 L2, L3, L4… Switch를 구별하는 것은 OSI 7Layer중 어느 Layer에서 수행되는가에 따라 결정된다.
 
따라서, OSI 7Layer를 먼저 간단히 살펴 보고, Switch에 대해 살펴 보겠다.
 
1.OSI 7Layer
1) Layer 1 (Physical Layer)
- 데이터의 정보를 전기적인 Volt로 변환하여 매개체를 통해 상대방의 수신 장치로 전송
- 장비: Hub, Repeater, Transceiver  


2) Layer 2 (Datalink Layer)
- 모든 네트워크의 연결 지원
- 장비: Ethernet, ATM, X.25 
- PDU: Frame (상위계층으로 받은 데이터를 해당 단위로 나눔)


3) Layer 3 (Network Layer)
- IP주소, 즉 논리적 주소를 가지고 발신지로부터 최종 목적지까지 경로 결정
- 장비: Router, L3 switch
- PDU: Packet (상위계층으로 받은 데이터를 해당 단위로 나눔)
- 프로토콜: IP, ARP, ICMP, IGMP


4) Layer 4 (Transport Layer)
- 데이터 전송
- 장비: L4 switch
- PDU: Segment (상위계층으로 받은 데이터를 해당 단위로 나눔)
- 프로토콜: TCP, UDP


5) Layer 5 (Session Layer)
- Session 확립.  App. 간의 연결 유지 및 데이터 전송 제어


6) Layer 6 (Presentation Layer)
- 네트워크 자원을 호출하여 응용프로그램 영역인 Appliaction 계층으로 전달 (API)
- Application 계층으로부터 받은 데이터를 컴퓨터가 이해가능한 format으로 변환


7) Layer 7 (Application Layer)
- End-User가 네트워크 자원을 효율적으로 사용할 수 있도록 제공해주는 인터페이스 계층
- 프로토콜: HTTP, FTP, SMTP, DNS, RIP, SNMP
 
2. Switch
1) Switching 기능
- L1 -> Flooding
- L2 -> Switching
- L3 -> Routing
- L4 -> port number 이용 트래픽분산처리 (Load balancing)
- L7 (cisco 6500이상 장비) -> S/W 를 장치에 올려서 Traffic filter , Security, VPN 를 할수 있다.
- L5, L6 ? TCP/IP 기반이기때문에 L7 L5~6 기능을 모두 포함하고 있다.
 
2) Switch 장비는 스위칭 방식에 따라 크게 3 종류로 나눌 수 있다.
2-1) Address 를 인식하여 해당 장비로 Packet 전송
- L2 Switch: MAC Address
- L3 Switch: IP Address
 
2-2) Port에 따라 해당 장비로 Packet 전송
- L4 Switch: TCP, UDP 포트(HTTP, FTP, Telnet etc.) 를 분석하여 packet을 처리함.
 
2-3) Packet의 내용을 읽고 해당 장비로 Packet 전송
- L5 Switch
- L6 Switch
- L7 Switch: 트래픽 내용(e-mail제목/문자열, HTTP URL, 쿠키 정보 
etc.) 패턴을 분석하여 packet을 처리함.
 
▶ 과거에는 통상적으로 패킷의 MAC Address IP Address를 이용하여 패킷을 전달하는 역할을 수행하는 L2/L3제품이 주류를 이루었다. 그 이후 급속히 증가하고 있는 인터넷 트래픽을 효율적으로 처리하기 위하여 트래픽을 분산하고 지능적인 트래픽 관리 기능을 제공하는 L4스위치가 등장하였다. L4스위치는 서버 및 네트워크 장비의 가용성과 확장성을 높이기 위한 수단으로 각광받고 있다.

3) SAN (Storage Area Network) Switch
SAN은 스토리지 시스템을 연결해 별도의 네트워크를 구성하는 방식이다. 다시 말해 전용 LAN을 별도로 구성한다고 볼 수 있다. LAN Local Area Network의 약자인 점에 주목한다면 SAN역시 스토리지 시스템끼리 연결해 놓은 자체 네트워크 라는 점을 이해할 수 있다. 다시 말해 별도의 데이터 전달 통로를 통해 스토리지시스템에 액세스 하기 때문에 일반 네트워크 소통량에 영향을 받지 않고 신속한 데이터 액세스가 가능하다. 이 방식은 이기종 플랫폼에 대해 중앙 집중식 스토리지 풀 공유가 가능하고 하드웨어 프로토콜을 이용해 높은 성능을 제공하며 스토리지 트래픽 처리를 위한 별도의 전용 네트워크가 갖추어져 있을 뿐 아니라 여러 대의 서버와 스토리지 어레이를 연동하기 쉽다는 점에서 확장성이 높고 투자 회수 효가가 높다는 장점이 있다.이때 시스템과 스토리지 사이에 연결 역할을 해주는 것이 SAN Switch 이다.
 
참고 : 네이버블로그 http://blog.naver.com/ljssemam/70014989243

2011년 6월 30일 목요일

[Oracle.6]DML (Data Manipulation Language) - TRANSACTION

DML ( Data Manipulation Language )
테이블의 데이터는 조회 및 추가, 수정, 삭제할 수 있어야 한다. DML은 이와 관련된 명령어를 부르는 용어로 데이터 조작 명령을 통해 테이블 내 데이터를 추가, 수정, 삭제 할 수 있다.
1. TRANSACTION
TRANSACTION은 하나의 작업의 단위를 말한다. 예를 들어 A씨가 B씨에게 $500을 이체 하려고 하면, 정상적인 이체가 이루어 지면 A씨 계좌에서 $500이 차감되고, B씨 계좌에서 $500이 더해지고 이것이 데이터베이스에 자장된다. 이것이 하나의 작업이 되는 것이다.
반면 A씨 계좌에서 $500을 차감 했는데 B씨 계좌를 처리하고자 할 때 시스템에 문제가 생겨 정상적으로 처리가 되지 않았을 경우에는 A씨 계좌에 대한 처리도 무효가 되어야 한다.
Oracle에서는 DML문이 정상적으로 실행되더라도 Transaction은 아직 진행 중이다. 따라서Transaction을 종료하고자 할 때는 반드시 작업이 성공적으로 처리되면 COMMIT, 작업을 취소하고자 한다면 ROLLBACK 명령으로 Transaction을 종료 하여야 한다.
1) INSERT TRANSACTION
INSERT INTO 테이블이름(칼럼이름1, 칼럼이름2, …)
VALUES(1, 2, …)
테이블에 데이터를 추가하기 위한 명령. 추가한 후에는 Transaction을 정상적으로 종료하여야 한다. ( COMMIT or ROLLBACK )
2) 여러 행을 한번에 INSERT
INSERT INTO 테이블이름(칼럼이름1, 칼럼이름2, …)
SELECT 구문
3) 여러 테이블을 한번에 INSERT
INSERT [ALL / FIRST ]
           WHEN 조건1 THEN
                     INTO 테이블이름1
           WHEN 조건2 THEN
                     INTO 테이블이름2
           ELSE
INTO 테이블이름0
SELECT 구문;
기존 INSERT구문에 OPTION, 조건 SELECT 구문이 추가 되었다. ALL일 경우 조건을 파악하여 참이면 INTO절을 수행하게 된다.
INSERT문을 중심으로 TRANSACTION에 대해 보았다. 다음으로 제약 조건과 함께 다른 조작 언어들을 살펴 보자.



*** 참조 문헌 : 10g로 시작하는 오라클 SQL & PL/SQL - 5장 데이터조작의 장애를 제거하라

2011년 6월 29일 수요일

[Oracle.5]SQL - Join, Subquery, Group by 확장, 계층적 질의

1. JOIN
하나 이상의 테이블에서 데이터를 얻고자 한다면 테이블의 수만큼 질의문을 작성해야 한다. 하지만 JOIN을 이용하여 하나의 질의문에서 하나이상의 테이블의 데이터를 얻을 수 있다.
1) SELECT FROM 을 이용한 조인
SELECT 칼럼이름1, 칼럼이름2 …
FROM 테이블이름1, 테이블이름2
WHERE 테이블이름1.칼럼이름 = 테이블이름2.칼럼이름;
양쪽 칼럼에 동일하게 있는 칼럼을 WHERE절에서 같다는 조건을 추가 시킨다.
2) JOIN절을 사용한 명시적 조인
SELECT 칼럼이름1, 칼럼이름2 …
FROM 테이블이름1
JOIN 테이블이름2
ON 테이블이름1.칼럼이름 = 테이블이름2.칼럼이름;
FROM절에 JOIN을 명시하였고 ON절에 두 테이블이 JOIN하기 위한 조건을 정의 하였다.
3) 3개 이상의 테이블 조인
SELECT 칼럼이름1, 칼럼이름2 …
FROM 테이블이름1, 테이블이름2, 테이블이름3
WHERE 테이블이름1.칼럼이름1 = 테이블이름2.칼럼이름1
  AND 테이블이름1.칼럼이름2 = 테이블이름3.칼럼이름2;
4) OUTER JOIN
OUTER JOIN은 조건(ON)을 만족하는 행뿐만 아니라 특정 테이블을 지정하여 만족하지 않은 경우도 질의의 결과로 포함하고자 할 때 사용합니다.
1)SELECT 칼럼이름1, 칼럼이름2 …
FROM 테이블이름1
LEFT OUTER JOIN 테이블이름2
ON 테이블이름1.칼럼이름 = 테이블이름2.칼럼이름;
2) SELECT 칼럼이름1, 칼럼이름2 …
FROM 테이블이름1, 테이블이름2
WHERE 테이블이름1.칼럼이름(+) = 테이블이름2.칼럼이름;
하나 이상의 테이블로부터 질의문을 작성할 때는 다음과 같은 습관을 가져야 한다.
1) 요구하는 정보는 무엇인가?
2) 요구하는 정보를 어느 테이블로부터 가져와야 하는가?
3) 어떤 칼럼이 해당하는 정보를 가지고 있는가?
2. Subquery
하나의 질의문에 두개의 SELECT절을 사용한다.
SELECT 칼럼이름1, 칼럼이름2 …
FROM 테이블이름1
WHERE 칼럼이름 = (SELECT 칼럼이름 FROM 테이블이름2)
최종경과를 출력하는 SELECT절을 MAIN Query라고 하고 ()안의 질의는 MAIN Query에 상대되는 개념으로 Subquery라 한다. Subquery의 수행결과가 Main Query에 넘겨져 최종 결과가 출력 횐다.
Ex)
SQL > SELECT employee_id, last_name, salary
      FROM employees
      WHERE salary > ( SELECT AVG(salary) FROM employees );
SQL > SELECT employee_id, last_name, job_id, salary
      FROM employees
      WHERE ( job_id, salary ) IN (SELECT job_id, MAX(salary) FROM employee GROUP BY job_id);
3. GROUP BY 절의 확장
1) GROUP BY ROLLUP
SELECT 칼럼이름, 계산식, 함수
FROM 테이블[, 테이블, 서브쿼리, , ]
[WHERE 원하는 자료를 걸러내기 위한 조건 나열]
[GROUP BY ROLLUP 그룹화할 조건 나열]
[HAVING 그룹함수 걸러내기 위한 사용
[ORDER BY 최종 결과의 정렬에 사용될 조건 나열]
GROUP BY ROLLUP (A, B, C) 하면 우측부터 하나씩 제외해 가면서 그 결과를 반환한다.
1. A, B, C 
2. A, B 
3. A 
4. 전체
2) GROUP BY CUBE
SELECT 칼럼이름, 계산식, 함수
FROM 테이블[, 테이블, 서브쿼리, , ]
[WHERE 원하는 자료를 걸러내기 위한 조건 나열]
[GROUP BY CUBE 그룹화할 조건 나열]
[HAVING 그룹함수 걸러내기 위한 사용
[ORDER BY 최종 결과의 정렬에 사용될 조건 나열]
GROUP BY CUBE (A, B, C) 하면 존재하는 모든 경우의 수에 대해 그룹을 지어준다.
1. A, B, C 
2. A, B 
3. B, C 
4. A, C 
5. A
6. B
7. C
8. 전체
3) GROUP BY GROUPING SETS
GROUPING SET ROLLUP CUBE와는 다르게 원하는 집계만 뽑아 결과를 얻을 수 있다.
CUBE(A, B, C)  GROUPING SETS으로 표현하면
GROUPING SETS( (A,B,C), (A,B), (A,C), (B,C), (A), (B), (C), () ) 이다.
만약 (A,B)별 집계와 (B,C)별 집계만 필요하다고 하면, GROUPING SETS( (A,B), (A,C) ) 를 사용하면 효과적으로 필요한 연산만 수행할 수 있다.
4. 계층적 질의
SELECT [LECEL], 칼럼이름, 계산식, 함수 
FROM 테이블[, 테이블, 서브쿼리, , ]
[WHERE 원하는 자료를 걸러내기 위한 조건 나열]
[START WITH 계층의 시작점이 될 행을 구별하는 논리식 표현]
[CONNECT BY 계층을 구성할 때 사용될 논리식 표현]
1) START WITH
완성된 계층의 중심을 설정하기 위해 사용되는 절이다. 생략이 가능하고, 생략하면 각각의 행이 중심이 되는 계층적 질의가 수행된다.
2) CONNECT BY
상위 계층의 행과 하위 계층의 행을 연결하는 규칙을 지정하는 절이며 생략할 수 없다.
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID 또는
CONNECT BY EMPLOYEE_ID = MANAGER_ID 와 같은 형태로 사용된다.
3) 실행 순서
1. START WITH
2. CONNECT BY
3. WHERE
계층적 질의에서는 SYS_CONNETCT_BY_PATH 함수를 사용할수 있으며, 부모 계층을 나타내지 않게 되면 하위 계층도 나오지 않게 된다. 또한, ORDER BY GROUP BY 절은 정력순서를 훼손하기 때문에 사용해서는 안된다



*** 참조 문헌 : 10g로 시작하는 오라클 SQL & PL/SQL - 4장 데이터 얻기 한 걸음 더 내딛다

 다양한 채널의  블로그 작성으로  집중이 좀 안되기도 하고  나의 회사를 운영하고 관리 하다 보니  회사의 블로그로 작성 해보는 것은 어떤가 하고  하나로 옮겨 봅니다.  (주)다이닝웨이브 - 블로그 바로가기