오라클 테이블 복사

Posted by b모노리스d
2019. 3. 4. 14:04 IT/SQL
반응형

#테이블 복사하기 스키마 데이터

CREATE TABLE 새로만들테이블명 AS

SELECT * FROM 복사할테이블명 [WHERE 절]

 

#테이블 구조만 복사하기

CREATE TABLE 새로만들테이블명 AS

SELECT * FROM 복사할테이블명 WHERE 1=2 [where에다가 참이 아닌 조건을 넣어줌]

 

#테이블은 이미 생성되어 있고 데이터만 복사

INSERT INTO 복사할테이블명 SELECT * FROM 복사할테이블명 [WHERE 절]

 

#테이블 이름 변경

ALTER TABLE 구테이블명 RENAME TO 신테이블명



출처: https://applejara.tistory.com/400 [애플자라]

 

 

반응형

'IT > SQL' 카테고리의 다른 글

실행중인 오라클 쿼리 KILL 하는 방법  (0) 2019.02.26

실행중인 오라클 쿼리 KILL 하는 방법

Posted by b모노리스d
2019. 2. 26. 14:18 IT/SQL
반응형

가끔 운영 환경에서 APP의 에러로 쿼리가 계속 실행됨으로 인하여 시스템의 부하가 발생하는 상황이 종종 생기게 되었다.

위의 문제로 DB서버의 부하가 발생할 경우 아래 예제를 통해 해결이 가능하다.


1. 현재 실행중인 쿼리문 조회

SELECT
  a.sid,       -- SID
  a.serial#,   -- 시리얼번호
  a.status,    -- 상태정보
  a.process,   -- 프로세스정보
  a.username,  -- 유저
  a.osuser,    -- 접속자의 OS 사용자 정보
  b.sql_text,  -- sql
  c.program    -- 접속 프로그램
FROM
  v$session a,
  v$sqlarea b,
  v$process c
WHERE
  a.sql_hash_value=b.hash_value
  AND a.sql_address=b.address
  AND a.paddr=c.addr
  AND a.status='ACTIVE';

 
2. 1의 결과를 확인한 후 불필요한 쿼리문 삭제

ALTER SYSTEM KILL SESSION 'SID,시리얼번호';

반응형

'IT > SQL' 카테고리의 다른 글

오라클 테이블 복사  (0) 2019.03.04

XDCR(Cross Datacenter Replication) 이해 – Part 1

Posted by b모노리스d
2019. 1. 31. 13:34 IT/NoSQL
반응형

XDCR(Cross Datacenter Replication) 이해 – Part 1

 

당신이 카우치베이스를 잘 알고 있다면, 당신은 확실히 XDCR을 알 것이다.

응용 프로그램에 대해 Couchbase를 사용하는 경우 XDCR을 사용할 가능성이 매우 높다.

XDCR은 고객이 가장 좋아하는 제품 중 하나라고 해도틀린 말은 아닐 것이다.

지금 XDCR을 멋지게 만드는 것에 관심이 있다면, 제대로 들어온 것이며, 계속해서 읽으십시오.

반대로, 만약 여러분이 무슨 말을 하고 있는지 모른다면, 이것은 여러분이 그것에 대해 배울 수 있는 기회랍니다.


복제는 향상된 성능, 고가용성 및 내결함성을 제공하기 위한 분산시스템의 효율성의 핵심이다. XDCR은 두 개의 Couchbase 클러스터간에 데이터를 복제하는 데 사용되는 고성

능 복제 기술이다.

이것은 클러스터 내 복제를 보완한다. XDCR은 비동기식 복제를 제공하며, 궁극의 일관성을 통해 사이트 간 데이터 일관성을 유지한다.

이는 단일 돌연변이 복사본이 실행되자마자 승인이 애플리케이션에 전송되고 결국 데이터가 토폴로지의 서로 다른클러스터 간에 일관된다는 것을 의미한다.

 

 

기술의 핵심 원칙

고성능: XDCR은 대기 시간이 매우 짧은 네트워크 및 메모리 속도로 작동하는 고성능 복제 시스템이다. 복제는 메모리에 대한 메모리다.

독립적으로 확장 가능한 시스템 : XDCR은 클러스터를 추가하거나 제거할 수 있고 위상의 모든 클러스터를 다른클러스터에 영향을 미치지 않고 스케일업 또는 스케일다운

할 수 있는 피어 투 피어 아키텍처

인프라 불가지론: XDCR은 구축 플랫폼에 관계없이 베어 메탈, VM, 프라이빗 클라우드, 퍼블릭 클라우드, 하이브리드 또는 컨테이너로 데이터를 복제하는 데사용할 수 있다.

토폴로지 인식: XDCR은 토폴로지를 인식하며 노드가 클러스터에서 추가/제거될 때 시스템이수동 개입 없이 복제를 조정하고 관리함

단순화된 설정 및 관리: XDCR은 두 개의 Couchbase 클러스터 간에 <15초 이내에 설정될 수 있다. 일단 설정되면, 문서는 원본과 대상 간에 계속 동기화된다. 페일오버나 재

조정 같은토폴로지 변경 중에도 수동 개입 없이 작동한다.

유연한 위상 : 단방향, 양방향, 허브및 스포크, , 메시 등 복잡한 위상을 설정할 수 있다.

탄력적 : 모든 네트워크 장애의 경우, XDCR은 중단된 곳으로부터 복제를재개할 수 있다. 또한 XDCR 복제가 성공할 때까지 계속 재시도 한다.

 

 

XDCR 내부 구조

Couchbase 서버 아키텍처에 익숙해지려면 이 대화를 들어 보십시오.

이 블로그에서는 XDCR 아키텍처에 초점을 맞출 것이다.




상위 레벨의 흐름을 설명하기 위해 애플리케이션 서버의 애플리케이션 데이터가 클라이언트 SDK를 통해 내장된 메모리(캐시)에 기록됨.

이 데이터가 메모리에 저장되면 복제 및 지속성을 위해 다른 대기열로 채널 조정됨.


클러스터 간 복제는 위의 그림에서 표시한 대로 메모리 간에서 발생한다. 이것은 XDCR이 매우 짧은 대기시간을 제공할 수 있게 하는 주요 요인들 중 하나이다.


또한 소스와 타깃의 노드 간에 복제가 매우 유사함.

복제 대기열은 대역폭 가용성과 원하는 성능에 따라 2-100 사이에서 튜닝할 수 있다.




카우치베이스에 있는 버킷은 문서를 위한 논리적인 컨테이너다. XDCR은 버킷 레벨에서 설정할 수 있다. 각 버킷은 vbuckets라고 하는 1024개의 가상 버킷으로 분할됨.

이러한 vbuckets는 각 클러스터의 노드 간에 균등하게 분할된다. 이러한각 노드는 결국 일부 활성 및 일부 복제본 데이터가 된다. XDCR은 클러스터 내의 이러한 노드 간

에 복제를 분산시킨다.


카우치베이스는 주문된 changelog를 이용해 데이터 상태를 전달하기 위해 "데이터베이스 변경 프로토콜(DCP)"이라는 스트리밍 프로토콜을 유지한다. XDCR은 이 프로

토콜의 소비자로, 변화를 전파하기 위해 DCP에 의존한다.


XDCR 복제 대기열은 XDCR 관련 변경 사항을 유지 관리하며, XDCR 작업자 스레드는 노드에서 지정된 활성 vbucket에 대한 변경 사항을 선택하고 대상 클러스터에서 

vbucket을 유지하는 원격 노드에 변경 사항을 전달한다. 아키텍처에서는 지연 시간이 짧고 처리량이 높은 특성을 가진 각 vbucket의 복제를 위해 

중앙집중적 조정이 필요하지 않다. 가용 대역폭에 따라 처리량을 극대화하도록 작업자 스레드수를 구성할 수 있다.

XDCR은 체크포인트를 유지한다. 네트워크 장애 또는 소스 클러스터 페일오버등으로 인해 복제가 중단될 때마다 XDCR은 마지막 체크포인트에서 복제를 재개한다.

떤 이유로든 성공하지 못한 경우, XDCR은 성공할 때까지 계속재시도한다. 복제는 또한 키만 복제하는 비관적인 복제와 키와 값이 모두 복제될 수 있는 낙관적인 복제에

서도일어난다.


또한 XDCR은 문서 압축, 네트워크 조절및 낙천적 복제와 같은 기능을 통해 대역폭 보존을 위해 최적화되어 있으며, 여기서 복제를 위해 문서를압축하고 대역폭 활용도

를 제한하며, 지연 시간을 줄이기 위해 특정 임계값까지 낙천적인 복제를 선택하여문서를 복제한다.


XDCR 시리즈의 첫 번째 부분에서 XDCR의 정의, 작동 방식 및 효율적인 복제 시스템에 대한 좋은 개요를 제공받았기를 바란다.


다음 파트에서 이 제품의 기능, 이점, 애플리케이션, 성능 튜닝 등에 대해 자세히 알아보도록 하자


출처 : Chaitra Ramarao, 2018-12-01, https://blog.couchbase.com/understanding-xdcr-part-1/



반응형

'IT > NoSQL' 카테고리의 다른 글

Couchbase Eventing Service 예제  (0) 2019.01.28

Couchbase Eventing Service 예제

Posted by b모노리스d
2019. 1. 28. 11:49 IT/NoSQL
반응형
Eventing 서비스의 예제

Eventing Service는 Couchbase Server 5.5 부터 사용할 수 있는 새로운 기능입니다.

이번 게시글은 이벤트 기능에 대한 예제를 소개하는 게시글 입니다.

VIP고객에게 보다 신속하게 서비스를 제공하고자 합니다관리자는 한 명 이상의 VIP에게 할당됩니다. VIP가 야구장에 입장하면 문자 메시지가관리자에게로 전송됩니다관리자는 그 자리에서 VIP를만날 수 있습니다.

함수 (Eventing의 일부)를 사용하여 텍스트 메시지를 보내는 예제를만들었습니다Twilio  평가판 계정을 사용 하여 메시지를 보냅니다.  Twilio를 사용하여 시작하는 것은 무료이며 쉽습니다. 그래서 이벤트 기능을 알리기 위해서 예제로 사용하기로 결정했습니다. HTTP API가있는 한 원하는 메시징 / 알림 서비스 (대신)를 사용할 수 있습니다.

참고 : 컬 구성은 아직 개발 중입니다. 이 기능은 개발 목적으로 만 사용되며 프로덕션 환경에서는 사용하지 않아야 합니다.


티켓 검색


첫 번째 단계는 게이트에서 고객의 티켓을 스캔하는 것입니다나는 이것을 시뮬레이션 하는 프로그램을 썼다. Couchbase "티켓"버켓에 임의의 "ticketscan"문서가 생성됩니다.


티켓을 검색하기 전에 몇 가지 데이터를 Bucket에 미리 채워야 했습니다.

고객 1 ~ 9 VIP이고 그 외의 고객은 기타고객 이라고 결정했습니다.

1
2
3
4
5
6
7
8
9
_bucket.Upsert("customer::1", new { Name = "George Clooney" });
_bucket.Upsert("customer::2", new { Name = "Josh Hutcherson" });
_bucket.Upsert("customer::3", new { Name = "Darius Rucker" });
_bucket.Upsert("customer::4", new { Name = "Brooklyn Decker" });
_bucket.Upsert("customer::5", new { Name = "Eddie Vedder" });
_bucket.Upsert("customer::6", new { Name = "Nick Lachey" });
_bucket.Upsert("customer::7", new { Name = "Nick Goepper" });
_bucket.Upsert("customer::8", new { Name = "Johnny Bench" });
_bucket.Upsert("customer::9", new { Name = "Ryan Collins" });

또한 3명의 관리자를 만들었으며 그들에게 각각 3명의 VIP를 할당했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
_bucket.Upsert("concierge::1", new
{
    Name = "Matt Groves",
    CellNumber = _yourVerifiedNumber,
    vips = new List<string> { "customer::1", "customer::2", "customer::9" }
});
_bucket.Upsert("concierge::2", new
{
    Name = "Mr. Redlegs",
    CellNumber = _yourVerifiedNumber,
    vips = new List<string> { "customer::3", "customer::4", "customer::5" }
});
_bucket.Upsert("concierge::3", new
{
    Name = "Rosie Red",
    CellNumber = _yourVerifiedNumber,
    vips = new List<string> { "customer::6", "customer::7", "customer::8" }
});

위의 예에서 고객 1, 2, 9 "Matt Groves"에게 지정합니다. 이것은 George Clooney, JoshHutcherson

Ryan Collins관리자 Matt Groves가 관리하는 VIP 인 것을 의미합니다. _yourVerifiedNumberTwilio로 확인한

전화 번호로 대체 하십시오.

또한 Twilio 자격 증명을 문서에 저장하고 있습니다. Couchbase Function 내부에 자격 증명이 필요하기 때문에 이

작업을 수행 함으로써 하드 코딩하지 않으려고 했습니다. 자격 증명 문서는 다음과 같습니다.

1
2
3
4
5
6
{
  "url": "https://api.twilio.com/2010-04-01/Accounts/< twilio user name here >/Messages.json",
  "username": "< twilio user name here >",
  "password": "< twilio password name here >",
  "fromNumber": "< twilio 'from' number here >"
}


새로운 "ticketscan"문서를 만들 콘솔 앱을 만들었습니다. 
실행하면 VIP 스캔 또는 기타 고객 스캔을 만들도록 선택할 수 있습니다.
1
2
3
4
Console.WriteLine("1 - Simulate a VIP ticket scan.");
Console.WriteLine("2 - Simulate a regular joe ticket scan.");
Console.WriteLine("Q - End simulation.");
var choice = Console.ReadKey().KeyChar;


ticketscan 문서에는 고객 문서의 ID, 타임 스탬프 및 시트 번호의 세 가지 필드 만 포함됩니다.
1
_bucket.Upsert(ticketScanId, new {CustomerId = customerId, Timestamp = ticketScanTimestamp,
Seat = seatInformation });
Github 에서 전체 소스 코드를 찾을 수 있습니다 .


이벤트 함수

이 글의 핵심은 함수입니다. 이 함수를 만들 때 "notifyConcierge"라고 했습니다. "tickets_metadata" Bucket을 사용했습니다 (아래 그림 참조). 가장 중요한 것은 "tickets" Bucket의 별칭을 만들고 이를 "src"라고 했습니다. 함수 내에서 이 Bucket은 읽기 전용이지만 Twilio 자격 증명뿐만 아니라 고객 및 관리자 정보를 얻기 위해 필요합니다.

전체 기능에 Github에서 볼 수 있습니다. 다음은 함수의 분류입니다.

1 - 돌연변이 된 문서가 ticketcan 있습니까? 그럴 경우 계속하십시오. 그렇지 않은 경우 이 함수는 이를 무시할 수 있습니다.

2 - 스캔 한 티켓의 고객이 VIP입니까? 그렇다면 관리자세부 정보를 받아 계속 진행하십시오. 그렇지 않으면 무시하십시오. 함수의 이 부분에서 인라인 N1QL을 확인하십시오. 이것은 Couchbase 기능에 사용되는 JavaScript의 고유 한 기능입니다.

3 - VIP의 세부 정보를 가져옵니다.

4 - Twilio 자격 증명을 가져옵니다.

5 - 메시지를 구성하십시오 (VIP 이름, 좌석 번호 및 관리자이름 포함). dataTwilio의 API를 사용하는 데 필요한 최소값입니다.

6 - Twilio API를 사용하여 관리자에게 문자 메시지 보내기. curl 구성은 여전히 ​​개발 중입니다. 이 기능은 개발 목적으로 만 사용되며 프로덕션 환경에서는 사용하지 않아야 합니다.

Eventing 데모 실행

이제 ticketcan 문서가 생성되거나 수정 될 때마다 관리자에 휴대 전화로 알림이 전송됩니다. 다음은 티켓 스캔에서 SMS 알림에 이르는 전체 데모의 예입니다.


이 이미지에서 4 장의 티켓 스캔을 만듭니다. 첫 번째는 VIP 용이고, 다음 두 개는 기타 그룹 용이며, 마지막은 VIP 용입니다. 두 개의 문자 메시지가 나타납니다. 실제로 이것은 다른 전화기에 표시되지만 모든 알림을 하나의 번호로 보내 테스트합니다. 참고 : join.me  사용하여 내 안드로이드 화면을 콘솔과 나란히 표시합니다.

어떤 문제가 발생하면 좋은 소식은 Couchbase의 함수에서 디버깅이 가능하다는 것입니다. 자바 스크립트에서 중단 점을 설정하고 Chrome과 같은 도구를 사용하여 단계별로 실행할 수 있습니다. 그것에 대한 더 자세한 내용은 Eventing 공지 사항을 확인하십시오.


출처 :Matthew Groves, 2018년 8월 6일, https://blog.couchbase.com/eventing-notification-couchbase-functions/



반응형

'IT > NoSQL' 카테고리의 다른 글

XDCR(Cross Datacenter Replication) 이해 – Part 1  (0) 2019.01.31

CRC : CRC-16, CRC-32에 대한 설명과 구현

Posted by b모노리스d
2018. 2. 28. 12:16 IT/ETC
반응형

CRC-16/32

 

CRC(Cyclic Redundancy Check)는 시리얼 전송에서 데이타의 신뢰성을 검증하기 위한 에러 검출 방법의 일종이다.

간단한 에러 검출방법으로는 parity 비트에 의한 방법과 check-sum에 의한 에러 검출 방법이 있지만 parity 비트에 의한 방법은 데이타 중에 한꺼번에 2비트나 4비트가 변하게 되면 검출을 할 수 없고, check-sum에 의한 방법은 한 바이트에서 +1, 다른 바이트에서는 -1로 에러가 생기는 경우만 해도 에러는 검출 되지 않는다. 즉, 이들 방법으로는 에러를 검출해 낼 수 있는 확률이 대단히 낮다.

CRC에 의한 방법은 높은 신뢰도를 확보하며 에러 검출을 위한 오버헤드가 적고, 랜덤 에러나 버스트 에러를 포함한 에러 검출에 매우 좋은 성능을 갖는 것을 특징으로 한다.

이러한 CRC 방법으로 보통 2가지 종류가 사용 되는데, 원칩 마이크로 프로세서와 같이 간단한 용도에서는 CRC-16 이 사용되고, 이보다 더욱 정확한 에러 검출이 필요한 경우에는 CRC-32를 사용한다.

ZIP,ARJ,RAR 과 같은 압축 프로그램이나 플로피 디스크 등의 데이터 검증 용도에 널리 사용되고 있다.

* CRC 검증의 에러 확률 p = 2-k (여기서 k는 CRC 비트수)
예를들어 CRC16의 경우 에러 확율은 p = 2-16 = 1 / 65536 = 0.0000152587890625 = 0.0015%
반대로 데이터의 신뢰성은 1 - p = 0.9999847412109375 = 99.9984 %

 

기본 원리

n 비트의 주어진 정보가 있을때, 이를 k 비트 만큼 자리를 올리고 미리 약속한 k 비트의 키 값으로 나누면 r 비트의 나머지가 남게 된다. 송신측에서는 원래의 정보 비트를 k 비트 자리 올린 것에 r 비트의 나머지를 더해서 n+r 비트의 데이타를 만들어 보낸다.
수신측에서는 수신된 n+r 비트의 데이타를 키 값으로 나누어 보고 나머지가 정확히 0 이 되는지를 검사하면 된다.

이 때 k 가 16 비트이면 CRC-16, 32비트이면 CRC-32 가 되고 키 값으로는 수학자 들에 의해 정해진 값을 주로 사용한다.
CRC-16 에는 0x8005, CRC-32 에는 0x04c11db7 이 많이 사용된다. 그리고 r 비트의 나머지를 Frame Check Sequence(FCS)라고 부른다.

여기서 CRC 계산에 사용되는 modulo-2 연산의 세계를 살펴보자.

CRC 계산시의 사칙연산은 carry를 고려하지 않는다.
1 + 1 = 0 (carry는 생각하지 않음)
0 - 1 = 1
덧셈 연산은 뺄셈 연산과 결과가 같으며 XOR 연산과도 같다.

다항식 표현 방법을 통해 CRC 계산 방법을 살펴보자.

(1) 2진 다항식으로 표시

예) 비트열 101 --> 다항식 x2 + 1

정보 다항식: 데이터 비트열의 다항식으로 P(x) = pn xn-1 + ... + p3x2 + p2x1 + p1
CRC 다항식: CRC 생성을 위한 다항식으로 G(x) (미리 정해진 키 값)
몫: Q(x)
나머지: R(x)
전송 데이타: T(x)

(2) CRC 계산 방법

P(x)를 k 비트 만큼 자리를 올리고( P(x)에 xk를 곱하는 것과 동일) G(x)로 나누면

xk P(x) = Q(x)*G(x) +/- R(x) 이다.

(k는 CRC 다항식의 최고 차수)

R(x) = dk xk-1 + .. + d2x1 + d1 ( R(x)의 최고 차수는 k-1)

비트열 dk ... d2 d1 을 FCS(Frame Check Sequence) 라 함

위 식에서 xk P(x) + R(x) 는 Q(x)*G(x) 와 같다.

즉, xk P(x) + R(x) 는 G(x)의 배수이므로 G(x) 로 나누면 나머지가 0 임을 알 수 있다.

결과적으로 전송되는 데이터 비트열 : pn ... p3 p2 p1 dk ... d2 d1

즉, 전송 T(x) = xk P(x) + R(x)

 

예) 데이터 비트열 110011 즉 P(x) =x5+x4+x1+x0, CRC 다항식G(x) = x4+x3+1, 즉 11001일 경우 FCS와 전송되는 비트열은?

xkP(x) = x4 (x5 + x4 + x1 + 1) = x9 + x8 + x5 + x4, 비트열로 표시하면 1100110000

                   100001
          ____________
11001 | 1100110000
            11001
          ____________
                     10000
                     11001
          ____________
                       1001    

xkP(x) = Q(x)G(x) - R(x)에서

Q(x) = x5 + x0 이므로,

R(x) = x3 + x0, ---> FCS는1001

따라서 전송되는 비트열 1100111001

 

연산의 최적화

CRC의 계산은 일반 나눗셈 명령을 이용해 구현할 수 없다. 1비씩 shift 하면서 XOR 연산을 통해 나머지를 구해야 한다.
하지만 정보 비트에 대해 하나하나씩 연산을 하는 것에는 분명 속도 개선의 여지가 있다.
실제 계산 시에는 모든 바이트에 대해 CRC 다항식에 대한 CRC값을 계산해 표로 만들어 두고 들어오는 데이타를 인덱스로 삼아 계산값을 바로 얻는 방법을 사용 한다.

CRC-16 C소스 : crc16h.c
CRC-32 C소스 : crc32h.c

8051 어셈블리 CRC-8 소스 : 8051crc8.zip
8051 어셈블리 CRC-16 소스 : 8051crc16.zip

반응형

'IT > ETC ' 카테고리의 다른 글

20년 전부터 진행된 IPv6, 용어의 이해와 현황 정리  (0) 2018.02.23

20년 전부터 진행된 IPv6, 용어의 이해와 현황 정리

Posted by b모노리스d
2018. 2. 23. 15:23 IT/ETC
반응형

인터넷 주소가 고갈되기 직전이라는 우려는 이제 거의 잦아들었다. 느리긴 해도 인터넷 프로토콜 버전 4(Internet Protocol Version 4, IPv4)에서 IPv6으로의 이동이 확실히 시작됐고, 많은 이가 예상했던 인터넷 주소 대란을 방지하기 위한 소프트웨어도 나와 있기 때문이다. IPv6의 현황과 전망을 설명하기 전에 인터넷 주소의 초창기를 잠깐 살펴보자.

IPv6은 무엇이고 왜 중요한가
IPv6은 인터넷 전역에서의 기기를 식별해 그 위치를 알 수 있게 해주는 인터넷 프로토콜의 최신 버전이다. 인터넷 커뮤니케이션을 위해 인터넷을 사용하는 모든 기기는 IP 주소를 통해 식별된다. 그런 면에서 편지를 쓸 때 알아야 하는 주소 및 우편 번호와 비슷하다.

이전 버전인 IPv4는 32비트 주소 체계를 사용해 총 43억 개의 기기를 지원한다. 과거에는 그 정도로 충분하다고 생각했다. 그러나 인터넷, 개인용 컴퓨터, 스마트폰에 이어 이제는 사물인터넷 기기까지 확산되면서 필요한 주소의 수도 그만큼 늘었다.

다행히 인터넷 엔지니어링 태스크 포스(Internet Engineering Task Force, IETF)는 20년 전부터 이를 대비했다. IETF는 1998년 128비트 주소 체계를 사용해 2,128개의 주소를 지원하는 IPv6을 고안했다. 1~3자리 수 4개가 한 세트가 되는 IPv4와 달리 IPv6은 콜론으로 구분되는 4자리의 16진수 8개 묶음을 사용한다.

IPv6의 장점과 도입 현황
IETF는 IPv6를 만들면서 IPv4에 비해 더 개선된 부분을 포함했다. IPv6 프로토콜은 더 효율적으로 패킷을 처리하고 성능을 개선하고 보안을 강화할 수 있다. 또한 라우팅 테이블을 더 계층화해 인터넷 서비스 제공업체가 라우팅 테이블의 크기를 줄일 수 있게 해준다.

이러한 모든 장점을 감안하면 업계가 IPv4에서 IPv6으로 전환하는 데 오랜 시간이 걸린다는 점이 이상하게 보일 수 있다. 전환이 지연되는 이유 가운데 하나는 네트워크 주소 변환(Network Address Translation, NAT)이다. NAT는 각기 하나의 퍼블릭 IP 주소를 사용하는 NAT 게이트웨이를 통해 프라이빗 네트워크의 수많은 개별 IP 주소로 트래픽을 보낼 수 있게 해준다.

통신업체와 ISP들은 IPv6을 가장 먼저 구축하기 시작한 그룹이며 그 가운데서도 모바일 네트워크가 가장 앞서 있다. 예를 들어 T-모바일 USA는 트래픽의 90% 이상을 IPv6으로 처리하며 버라이즌 와이어리스가 82.25%로 그 뒤를 따르고 있다. 월드 IPv6 런치(World IPv6 Launch)에 따르면, 컴캐스트와 AT&T는 각각 네트워크의 63%와 65%가 IPv6이다.

주요 웹사이트가 그 뒤를 따른다. 월드 IPV6 런치 측에 따르면, 알렉사 상위 1,000개 웹 사이트 가운데 현재 IPv6을 통해 접속이 가능한 비율은 30%가 조금 못된다.

IPv6 구축에서 기업은 뒤처져 있다. 인터넷 소사이어티(Internet Society)의 "2017 IPv6 구축 현황" 보고서에 따르면, IPv6을 본격적으로 사용하는 기업의 비율은 1/4에 약간 못 미친다. 이유는 복잡성, 비용, 완료되기까지 소요되는 시간 등이다. 또한 일부 프로젝트는 소프트웨어 호환성 문제로 지연됐다. 예를 들어 2017년 1월 한 보고서에 따르면, 윈도우 10의 버그로 인해 마이크로소프트 시애틀 본사에 IPv6으로만 구성된 네트워크를 구축하려는 계획이 지연되기도 했다.

IPv6, 본격적인 구축은 올해부터 
인터넷 소사이어티 측은 IPv4 주소의 비용이 2018년에 최고조에 이르고 이후 IPv6 구축이 50%를 돌파하면서부터 하락할 것으로 예상했다. 현재 구글에 따르면 전 세계 IPv6 도입 비율은 20 ~ 22%다(미국의 경우 약 32%).

인터넷 소사이어티는 IPv4 주소 가격이 하락하기 시작하면 기업은 IPv6 구축 비용을 충당하기 위해 기존 IPv4 주소를 팔게 될 것으로 예상했다. 깃허브의 한 게시물에 따르면, 매사추세츠 공과 대학은 이미 IPv4 주소를 팔았다. 이 대학은 2,000양 개(2 뒤에 0이 31개가 붙는 수)의 IPv6 주소를 보유한만큼 함께 보유한 800만 개의 IPv4 주소는 "과잉"이고, 따라서 팔아도 현재 또는 미래의 주소 수요에는 영향이 없을 것으로 판단했다는 것이다.

또한 구축이 늘어날수록 IPv6 서비스를 무료로 제공하면서 IPv4 주소 사용에 대해 비용을 청구하는 기업이 증가하게 된다. 영국의 ISP 미딕 비스트(Mythic Beasts)의 경우 "IPv6 연결이 표준이고 IPv4 연결은 옵션으로 제공되는 부가 서비스"라고 말했다.

IPv4, 천천히 사라질 뿐 폐기는 없다 
2011년~2018년 사이 대부분의 세계에서 신규 IPv4 주소가 "고갈"되지만 IPv4 주소는 앞서 언급했듯이 판매 후 재사용되므로 완전히 사라지지는 않으며, 남은 주소는 IPv6 전환에 사용된다.

공식적으로 정해진 폐기 날짜는 없으므로 어느 날 갑자기 인터넷 접속이 안 될까 걱정할 필요는 없다. 전환되는 네트워크가 증가하고 IPv6을 지원하는 콘텐츠 사이트가 늘어나고 IPv6 기능이 있는 장비로 업그레이드하는 최종 사용자가 늘어남에 따라 세계는 IPv4에서 천천히 멀어질 것이다.

원문보기: 
http://www.itworld.co.kr/news/108307#csidx3c6ade770fefa4683f8b5ea1c1633c5 

반응형

'IT > ETC ' 카테고리의 다른 글

CRC : CRC-16, CRC-32에 대한 설명과 구현  (0) 2018.02.28
$(document).ready(function(){ var tmpLogin = document.getElementsByClassName("tt_menubar_logout")[0].getElementsByTagName("a")[0]; tmpLogin.className = ""; tmpLogin.innerHTML = tmpLogin.innerHTML.replace("로그아웃",' Logout'); tmpLogin.innerHTML = tmpLogin.innerHTML.replace("로그인",' Login'); document.getElementById("loginout_append").innerHTML = tmpLogin.outerHTML; });