바탕화면에 위젯을 붙이듯 웹페이지에 적용할 수 있는 가젯에 대한 ibm developerWorks 의 글

구글 가젯 만들기, Part 1: 구글 가젯 기본요소 (한글)
이번 새 웹 개발 연재에서는 구글 가젯을 만드는 법을 배웁니다. 가젯은 작은 애플리케이션인데 동적이고 품질 좋은 콘텐츠를 제공하는 수단으로서 대부분의 웹 페이지에 추가할 수 있습니다. 구글은 자유롭게 사용할 수 있는 가젯을 많이 보유하고 있습니다. 하지만 가젯의 가장 흥미로운 점은 누구나 스스로 가젯을 만들어 그것을 구글에 배포하여 다른 개발자들이 그 가젯을 그들의 웹 프로젝트에 통합, 사용할 수 있다는 것입니다.

구글 가젯 만들기, Part 2: 사용자 인터페이스 다루기 (한글)
'구글 가젯 만들기' 연재 Part 2에서는 탭 기반 UI, 드래그 앤 드롭 그리고 MiniMessage와 같은 가젯의 고급 기능을 소개하고 여러분 스스로 만들 수 있도록 도와줄 것입니다.

* 개인화된 홈페이지

개인화 홈페이지e


Posted by ukmie
,
J2EE 개발 관련 아티클은 많긴 하지만, OTN에 괜찮은 연재가 있어 정리 해놓는다.
실전적인 글 위주이고 다양한 주제를 다루고 있어 유용해 보인다.

Mastering J2EE Application Development

개방형 표준이 IT 소프트웨어 인프라스트럭처의 흐름을 주도하고 있습니다. 그 중에서도 개방형 표준의 중심에 서 있는 것이 바로 J2EE입니다. 여러 주에 걸쳐 연재되는 이번 시리즈를 통해, OTN은 프로젝트 도입에서 최종 구축에 이르는 전체 J2EE 개발 라이프사이클을 단순화하는 데 관련한 기술적 이슈를 총체적으로 짚어봅니다. 특히, J2EE의 기반을 마련한J2EE 전문가 들과 엔지니어들의 실제 경험이 상세하게 소개되며, 오라클 제품을 이용하여 직접 구현할 수 있는 예제가 포함됩니다. 모델링, 디자인, 디버깅 테크닉, 코드 최적화 및 프로파일링 등 다양한 주제에 걸쳐 논의가 전개됩니다.

1부: J2EE의 해부(Slicing and Dicing J2EE)
Ted Neward, Effective Enterprise Java 저자

애플리케이션의 요구사항을 정확하게 이해하는 것은 J2EE의 복잡성을 완화하는 데 크게 도움이 됩니다.
...

개발자들은 지나치게 넓은 선택의 폭을 강요 받고 있습니다

...

엔터프라이즈” Java 애플리케이션에는 기본적으로 다섯 가지 종류(stovepipe, jewel, aggregator, integrator, enterprise app)가 존재합니다.

...

2부: 프로젝트의 관리
Julien Dubois, Senior J2EE Developer

프로젝트 관리 툴과 베스트 프랙티스를 선택하는 것은 프로젝트 관리자가 결정해야 하는 가장 중요한 문제의 하나입니다. (with Maven)

3부: 설계와 모델링(설계는 먼저, 코딩은 나중에)
Scott W.Ambler, Senior Consultant, Ronin International

UML(Unified Modeling Language) 다이어그램을 이용한 다양한 테크닉을 활용하여 J2EE 애플리케이션을 효과적으로 모델링할 수 있습니다.

4부: 프레임워크 기반의 구축(프레임워크를 이용한 J2EE 테크놀로지의 보완)
Rashmi Sinha (Ph.D) and Jonathan Boutelle, Principal, Uzanto Consulting

JSF 호환 Oracle ADF Faces 프레임워크가 제공하는 컴포넌트들을 활용하여 복잡한 Web UI를 구현하는 방법에 대해 알아봅니다.

5부: 프레임워크 기반의 구현(애플리케이션 사용성을 고려한 설계)
Andrei Cioroianu, Founder of Devsphere

소프트웨어 개발 프로세스에 사용성 분석(usability analysis) 과정을 도입함으로써, 향후 발생되는 변경 요구사항에 쉽게 대응할 수 있습니다.

6부: 서버-사이드 Java 마스터하기(JMS 기반 Object Cache를 이용한 성능 향상)
Rod Johnson, co-author, Spring Framework; and James Clark, Oracle TopLink Development.

J2EE 클러스터에서 서버 간에 in-memory cache를 동기화하는 방법을 사용하여 server-side Java 애플리케이션의 성능과 확장성을 향상시킬 수 있습니다.

7부: 사용자 인터페이스의 설계
Venkat Tipparam, Oracle Java Developer of the Year 2004

기능성과 사용편의성이 뛰어난 웹 애플리케이션 인터페이스를 구현하는 방법을 알려 드립니다.

8부: 사용자 인터페이스의 설계 (2부-장점의 조합: J2EE 애플리케이션의 JSF-Struts 통합)
Hans Bergsten, member JCP expert groups, and Author of JavaServer Faces (O’Reilly)

Struts 애플리케이션에 JavaServer Faces 컴포넌트를 추가하는 방법을 설명합니다.

9부: 서버-사이드 Java 마스터하기(2부-Persistence와 POJO: 오브젝트 및 관계형 모델의 통합)
Craig McClanahan, Creator of Struts

Oracle TopLink와 Spring의 DAO layer를 함께 활용하여 Plain Old Java Object의 persistence를 구현하고 높은 성능과 생산성을 확보할 수 있습니다.

10부: 디버깅 테크닉 마스터하기(Breakpoint의 정복)
Satadip Dutta, Software Architect, Hewlett-Packard

Java 애플리케이션의 디버깅을 위한 프로그램적인 메커니즘을 설명하고, 버그의 근본 원인을 확인하기 위해 stack trace를 이용하는 방법을 설명합니다.

11부: 최적화 및 프로파일링(Memory Leak의 확인)
Benjamin Livshits, Ph.D. candidate, Stanford University

Memory profiling과 heap debugging을 이용하여 listener pattern의 사용 등으로 인해 초래되는 memory leak 문제를 방지하는 방법을 설명합니다.

12부: 구축(Deployment: 개발 작업의 완결)
Lonneke Dikmans, Senior Consultant, Transfer Solutions

deployment profile과 Ant를 이용하여 다수의 애플리케이션 서버에 J2EE 애플리케이션을 deploy하는 방법을 설명합니다.

12-1부: 구축(Deployment: 개발 작업의 완결-2부)
Lonneke Dikmans, Senior Consultant, Transfer Solutions


Commentary: The State of J2EE
Peter Zadrozny, Vice President & Chief Evangelist, Oracle Application Server
Trends in J2EE computing and key technologies to watch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Posted by ukmie
,
java.sql.DriverManager 사용시,,

...
Class.forName("com.mysql.jdbc.Driver").newInstance(  );
Connection con = DriverManager.getConnection(sConn, sUser, sPass);

이게 왜 작동하는걸까.?
누가 물었는데 그냥 버벅 거리고 말았다.
그러고 보니 DriverManager 인스턴스를 Dirver 클래스에서 만들어주는거였나.?
어떤식일까 봤더니,, 아래와 같다.

...
static {
    try {
        DriverManager.registerDriver(new Driver());
    } catch (SQLException E) {
        throw new RuntimeException("Can't register driver!");
    }
 }
...

// Class.forName("com.mysql.jdbc.Driver").newInstance(  ); 대신,
// 아래처럼 써도  된다. 뭐 똑같은것 같다.  
DriverManager.registerDriver(new com.mysql.jdbc.Driver());



Posted by ukmie
,
사람들은

1. 자신이 가치 있는 일을 하고 있다는 느낌 (sense of meaningfulness)을 받거나,
2. 그 일을 할 때 자신에게 선택권이 있다는 느낌(sense of choice),
3. 그 일을 할만한 기술과 지식을 갖추고 있다는 느낌 (sense of competence),
4. 실제로 진보하고 있다는 느낌(sense of progress)을 갖게 될 때
일속에서 재미와 열정을 느낀다.

- Kenneth W. Thomas (2000). Intrinsic Motivation at work


급여이외에 동기를 부여할 수 있는, 혹은 동기를 찾을 수 있는 부분은 많다.
물론, 대개의 경우 돈이 모든 조건을 변형시키지 싶다.
Posted by ukmie
,
일견, 멋진 사이트이다.
보기엔 좋은데, 현재까진 딱히 무슨 쓸모가 있는지 모르겠다.
구글, 아마존, facebook 브라우저가 애플릿으로 구현되어 있다.
응용할 수 있는 여지가 상당할듯 하다.

TouchGraph
http://www.touchgraph.com/TGGoogleBrowser.html

아래는 'carlos jobim' 으로 TouchGraph Google Browser 에서 검색한 화면이다.
보사노바나 브라질음악 관련 도메인들을 쉽게 찾을 수 있다.

사용자 삽입 이미지


Posted by ukmie
,
* RETE usually pronounced either 'REET', 'REE-tee' or, in Europe
- Jboss Drools(룰엔진) 매뉴얼 중에서 Rete Algorithm

- AIstudy 에 있는 번역글
출처:   http://www.aistudy.co.kr/expert/rete_patterson.htm


THE RETE MATCHING ALGOROTHM

인공지능 개론 : Dan W. Patterson 저서, 김영렬.김우성.김정규.박용법.정목동 옮김, 지성출판사, 1995  (원서 : Introduction to Artificial Intelligence and Expert Systems, 1990), Page 258~262

 

생성 시스템 (production system) 들은 15장에서 기술된다. 그 시스템들은 전문가 시스템의 일반적인 구조이다. 전형적인 시스템은 생성 혹은 규칙의 형태로 영역 (domain) 전문가의 지식을 나타내는 구조를 포함한 지식 베이스와 현재 문제의 파라메터를 갖는 작업 메모리 (working memory) 와 어떤 규칙이 현재 문제에 적절한가를 결정하는 추론엔진 (inference engine) 을 포함한다.

 

그림 1 생성시스템의 성분과 기본 사이클

생성 시스템의 기본적인 인터페이스 사이클은 그림 1에서 표시한 비교(match), 선택(select) 그리고 수행(excute)이다. 이러한 연산은 다음과 같이 수행된다.

       비교 (Match)    사이클의 매치시간 동안 지식베이스내 규칙의 LHS(left hand side) 조건은 작업 메모리(working memory)를 계속 결합시키는 것을 만족하는 LHS 조건을 갖는 규칙이 무엇인지를 결정하기 위해 작업 메모리의 내용과 비교된다. 매치된 것으로 판명된 규칙들은 충돌집합(conflict set) 에 넣는다.

       선택 (Select)   충돌 집합 (conflict set) 에서 규칙중의 하나가 선택되어 실행된다. 이러한 선택 정책은 최신 사용법, 특정한 규칙, 그 외의 기준에 의해 결정된다.

      수행 (Execute)   충돌 집합에서 선택된 규칙은 그 기능 또는 규칙의 결말 부분 즉, 규칙의 RHS (Right Hand Side) 를 수행함으로써 작업 메모리 (working memory) 에서의 조항을 제거하거나 교체하는 것 또는 단순 정지 원인 및 입출력 연산, 덧셈과 같은 것들을 포함한다.

이상의 순환은 더 첨가될 규칙이 없거나 종결 조건에 도달될 때까지 되풀이된다. 전형적인 지식 베이스는 수백 또는 수천가지 이상의 규칙을 포함하는데 각 규칙은 몇가지(아마도 10여가지 이상의) 규칙들을 포함한다. 작업 메모리 역시 전형적으로 수백 가지 이상의 조항들을 포함한다. 결과적으로 작업메모리 (working memory) 에 대한 모든 규칙과 LHS 조건들을 소모적으로 매칭하는 데 수만번의 비교가 필요하다. 이러한 주장에 대한 설명은 서문에 잘 나타나 있는데 이러한 시스템은 계산 시간의 90% 정도가 매칭연산과 관련되어질 수 있다. 그러므로 각 사이클마다 매칭연산이 수 천번 수행되어지는 것을 제거할 수 있다. 이에 효과적인 매치 알고리즘을 개발하게 되었는데 이를 RETE라고 부른다. (Forgy, 1982)

RETE는 초기에 프로그래밍 언어의 OPS 계열의 일부분으로 개발되었다.(Brownston, et al 1985) 이러한 알고리즘에는 연속적인 사이클에서 비교가 반복되는 것을 피할 방법을 포함한 몇 가지 새로운 특성을 나타낸다.

RETE의 주요 시간 절약 특성은 다음과 같다.

대부분의 전문가 시스템에서 작업 메모리(working memory)의 내용은 사이클과 사이클 사이에서는 거의 변화가 없다. 데이타에는 임시 중복(temporal redundancy)이라고 알려진 지속성이 존재한다. 이것은 매 사이클마다 소모적 매칭을 불 필요하게 만든다. 대신, 매칭 정보를 저장함으로써 작업 메모리에의 변화를 사이클마다 비교하는 것만이 필요하게 된다.

게다가 RETE 에서는 작업 메모리의 대한 변화가 직접 충돌 집합으로 전송변환(mapping)되는 것을 막는다. (그림 2) 그 후 충돌 집합(conflict set)으로부터 한 규칙을 선택 실행할 때 그것은 집합에서 제거되고 남아있는 엔트리들은 다음 사이클을 위해서 저장된다. 즉, 작업 메모리에 대한 규칙들이 반복적으로 비교되는 것을 피하게 된다. 더 나아가 그들의 LHS에 나타나는 조건 조항(term)을 가지는 규칙을 색인화하여(indexing) 작업 메모리 교체에 매치되는 단지 그러한 규칙들 만 조사할 필요가 있다. 이것은 각 사이클에 요구되는 비교의 횟수를 상당히 감소 시킨다.

그림 2 작업 메모리에 대한 변화가 충돌집합으로 사상(mapping)

지식베이스의 대부분의 규칙들은 그것의 LHS 에서 발생하는 것과 같은 조건들을 가질 것이다. 이는 불 필요한 매칭이 발생할 수 있는 또 다른 방법이 되고 있다. 그러한 규칙들을 묶음으로서(grouping), 또한 동일 조건들을 공통항으로 연결하여 피할 수 있게 된다. 이는 모든 적용 가능한 규칙들에 대해 한번의 테스트를 실행함으로써 가능하게 될 것이다. 연결화(linking) 절차는 다음과 같다.

규칙이 처음으로 지식 베이스에 적재될 때 이것은 규칙 컴파일러에 의해 검사되고 처리된다. 컴파일러는 LHS조건을 체크하고 규칙 이름과 LHS 조건 조항사이의 결합을 형성한다. 또한 컴파일러는 LHS에서 공통 조건을 가지는 모든 규칙과 연결되는 네트워크 구조를 구축한다. 이 네트워크는 새로운 작업 메모리 조항에 일치되는 바인딩(binding)에 만족되는 규칙 조건을 찾아내서 실행시간 동안 검사하고 위치화(locate)시키는 데 사용된다. 그림 3은 공통 LHS 조항을 공유하는 규칙들이 어떻게 그룹화되고 (grouping) 공통조건 조항으로 색인화(indexing)될 수 있는 지를 설명해 주고 있다.

LISP를 사용하여 결합시키고 색인(indexing)화를 형성하는 한 방법은 특성 LISP를 사용하여 결합시키고 색인(indexing)화를 형성하는 한 방법은 특성리스트 (property list)로 가능하다. 예를 들면,

(putprop 'R6 'father 'cond-1)

(putprop 'R6 'father 'cond-2)

(putprop 'R12 'father 'cond-1)

 

그림 3 전형적인 규칙과 컴파일된 네트워크 일부

 규칙들과 LHS 조건 사이의 연결(link)을 만들어 주고, 다음과 같은 문은

(putprop 'father (cons R6 (get 'father 'cond-1) 'cond-1))

동일한 LHS 위치에 조항(term)을 포함하는 모든 규칙들에 구체화된 LHS 조항을 연결해 준다. 절(clause)의 첨가와 같이 작업 메모리의 교체가 일어날 때(father bill joe) LHS 조건으로서  father를 포함하는 모든 규칙은 쉽게 확인되고(identify) 검색될(retrieved) 수 있다.

RETE에서의 검색(retrieved)과 규칙 조건의 연속적인 검사는 토큰(token)을 만드는 것으로 시작되는데 이러한 토큰(token)은 규칙 컴파일러에 의해 구축된 네트워크를 통과하게 된다.

네트워크는 적절한 검사 경로를 제공하는데 이 검사는 동일한 바인딩(binding)을 이끌어 내고 LHS 규칙을 완전히 만족시킨다. 매치 비교기(matcher)는 새로운 매치나, 더 이상 작업 메모리 요소에 매치되지 않는 규칙을 찾아내는 네트워크를 돌아다닌다. 매치 비교기(matcher)로부터 출력되는 것은 쌍(pair)으로 된 요소로 구성된 자료구조이다. 즉, 규칙 이름과 (R6  ( father bob sam )  (father mike bob))과 같은 LHS에 매치된 작업 메모리 요소의 리스트(list)이다.

독자는 다음 장에 제시될 색인화(indexing) 방법과 위에서 기술한 색인화(indexing) 방법이 유사하다는 것을 알 수 있다. 그 외 다른 시간 절약 기술도 RETE에서 적용된다. 그러나 위에서 쓰인 방법이 가장 중요한 방법이라고 할 수 있다. 실제로 이것은 수백 또는 수만 가지에 이르는 조건을 완전히 매치하는 것을 줄이는 방법을 제공한다.

Posted by ukmie
,

데이터베이스 관리시스템은 기본적으로 대용량의 데이터를 효율적으로 저장 하고 관리할 뿐만 아니라 여러 사용자가 동시에 접근할 수 있는 환경을 제공하 고 시스템의 고장에 대비하여 데이터베이스의 상태를 일관성 있게 유지하는 회 복 기능을 제공한다. 데이터베이스 관리시스템에 대한 사용자의 만족도는 데이 터의 저장기술과 관련된 시스템의 성능에 크게 좌우된다. 시스템의 성능은 데 이터베이스 내의 데이터를 표현하기 위한 데이터 구조의 효율성과 데이터에 대 한 연산을 얼마나 효율적으로 수행할 수 있는 지 여부에 달려있다. 자료저장 기술은 데이터베이스 시스템의 하부에서 데이터베이스 관리시스템의 성능을 좌 우하는 기술이다.
본 절에서는 먼저 기존의 Oracle, DB2, Informix 등의 데이터베이스 관리 시스 템에서 자료저장에서 사용되는 핵심 기술인 인덱스, 동시성제어, 회복기법에 대하여 설명하고, 최근에 자료저장 기술과 관련하여 비정형 대용량 데이터의 저장 기법과 백업 관련 기술, 그리고 저장시스템의 하부 인프라로 등장한 네트 워크 자료저장 시스템의 기술과 그에 관련 된 최신기술인 NAS, SAN, iSCSI, DAFS 등에 대하여 다룬다.

1. 데이터 저장 핵심 기술

가. 인덱스

인덱스는 인덱스를 구성하는 키의 순서가 유지되는지의 여부에 따라 크게 두 종류로 나눌 수 있는데, 키가 일정한 순서로 유지되는 트리 계열과 키의 순서 와 관계없이 무작위로 유지되는 해쉬 계열로 구분할 수 있다. 트리 계열 인덱 스는 일정한 범위가 주어지는 연산을 처리할 때 유용하게 사용될 수 있으며, 해쉬 계열 인덱스는 특정한 키에 의한 빠른 데이터 접근을 제공한다. 트리 계 열 인덱스로는 B+ 트리, T 트리 등이 있으며, 해쉬 계열 인덱스로는 체인 버킷 해슁(CBH, Chained Bucket Hashing), 확장 해슁(EH, Extensible Hashing), 선 형 해슁(LH, Linear Hashing), 수정된 선형 해슁(modified Linear Hashing), 다중 디렉토리 해슁(Multi-directory Hashing) 및 확장된 체인 버킷 해슁 (ECBH, Extensible Chained Bucket Hashing) 등이 있다. 최근에는 지리정보시 스템과 멀티미디어 데이터베이스 등에서 비정형 데이터의 검색을 위해 R-트리 계열의 인덱스 기법이 사용된다.

(1)디스크 기반의 데이터베이스 시스템을 위한 인덱스 기법
기존의 Oracle, DB2, Informix, Sybase 등의 디스크를 기반으로 하는 상용 데이터베이스 관리시스템에서 기본적으로 사용되는 인덱스 기법은 B-트리, B+ 트리, B* 트리 계열의 인덱스와 확장 해슁과 같은 해쉬 계열의 인덱스 가 대표적이다.
B 트리의 확장 및 변형된 형태로는 B+ 트리, B* 트리 등이 있으며, 특히 B+ 트리는 디스크를 기반으로 하는 데이터베이스의 인덱스를 생성할 때 가 장 많이 사용되는 기법이다. B+ 트리는 B 트리 형태인 인덱스 부분과 실제 데이터들이 유지되는 말단 부분으로 구성되는데, 인덱스인 내부 노드의 데 이터는 단지 빠르게 단말 노드를 찾아가는 길잡이 정도의 역할만 수행한 다. 모든 데이터를 단말 노드에 유지하고 단말 노드끼리 연결 리스트를 구 성함으로써 범위가 주어진 연산을 수행할 때 데이터에 대한 빠른 순차적 접근을 제공한다.
확장해싱(EH) 기법은 데이터의 양이 변화함에 따라 해쉬 테이블의 크기를 확장할 수 있게 함으로써 동적인 환경에 적합하도록 고안된 해슁 기법으로 빠른 데이터의 검색을 위해 많이 사용된다.

(2)주기억장치 상주 기반의 데이터베이스 시스템을 위한 인덱스 기법
Altibase나 Timesten과 같이 주기억장치 상주 기반의 상용 데이터베이스 시 스템에서는 트리 계열의 인덱스로 B-트리 계열의 인덱스와 함께 T 트리를 사용 하고 있으며, 해싱 기능으로는 확장 해슁과 체인 버킷을 결합해서 만든 확장된 체인 버킷 해슁을 지원하고 있다.
T 트리는 AVL 트리와 B 트리의 장점을 이용하여 주기억장치 상주 데이터베이 스를 접근하는 데 적합하도록 고안된 대표적인 트리 계열의 인덱스기법으로 한 노드에 많은 수의 데이터를 갖는 이진 탐색 트리로 구성되어 빠른 데이터 접근 을 제공하며 메모리의 사용상에도 장점을 갖는다. T 트리의 노드에 포함되는 데이터는 실제 키 값이 아닌 키를 포함하는 레코드의 메모리 주소를 나타낸다. 키를 포함하는 레코드의 메모리 주소를 데이터로 사용함으로써 키 값을 구하 는 연산으로 인한 부하가 전체 인덱스의 처리 속도에 거의 영향을 미치지 않는 상태에서 고정 길이 키에 대해서 뿐만 아니라 가변 길이 키를 처리할 때 발생 하는 메모리 사용의 낭비 문제도 해결할 수 있다.
확장된 체인 버킷 해슁(ECBH)은 Kairos에 구현된 주기억장치 상주용 인덱스 로서 확장 해슁과 체인 버킷을 결합해서 만든 해쉬 인덱스이다. ECBH 인덱스는 EH 테이블, CBH 테이블, RID 풀(pool)의 3 부분으로 구성되며, EH에서의 단말 페이지를 CBH의 해쉬 테이블과 RID 리스트로 대치한 형태를 갖는다.

(3) 멀티미디어 데이터베이스 시스템을 위한 인덱스 기법
멀티미디어 데이터는 특별한 형식이 없는 비정형의 구조를 갖는다. 즉 전통 적인 관계형 데이터베이스에서 다루는 레코드 형태와 같은 일정한 구조를 갖지 않고 긴 문장이나 연속된 비트 스트림 형태를 갖는다. 이러한 비정형 데이터를 효율적으로 저장하고 이에 대한 내용 기반 검색을 지원할 수 있는 저장 및 검 색 기법이 필요하다.
공간 데이터 액세스를 위한 인덱스 구조로서 R 트리, R* 트리, MLGF(Multi-Level Grid File) 등의 구조가 사용되고 있다. R-tree는 B-tree로 부터 유도된 계층적 자료구조로 트리의 각 노드는 자신의 자식 노드를 포함하 는 가장 작은 d-차원 사각형으로 구성된다. 단말 노드는 데이터베이스에 있는 자식을 포함하는 대신 실제 기하학적 객체에 대한 포인터를 포함한다. 객체들 은 그들이 포함된 최소의 정렬된 사각형에 의해 표현된다. 가끔 노드는 디스크 페이지와 관련시켜 트리를 정의하는 파라미터가 공간 질의 동안 적은 수의 노 드가 방문되도록 선택된다. 서로 다른 노드에 해당하는 사각형들은 중복될 수 있다.
R-tree는 B-tree와 유사하게 높이가 균형화 된 트리이다. 인덱스는 완전히 동적이기 때문에 주기적인 재구성은 필요 없으며, R-트리의 단말 노드는 인덱 스 레코드 개체들을 포함한다. R 트리는 k 차원의 공간 객체를 자르거나 변환 하지 않고 겹치는 k 차원의 사각형 영역 안에 객체가 완전히 포함된다. R* 트 리는 R 트리의 색인 구조와 같으며 중간 노드의 영역 사각형들이 겹치는 것을 허용한다. R 트리가 색인 구조를 최적화하기 위하여 한가지 기준만을 적용하여 영역 사각형의 면적을 최소화하는 것에 비해 R* 트리는 네 가지의 최적화 기준 을 적용한다.
R* 트리의 삽입 알고리즘은 R 트리의 삽입 알고리즘이 영역의 면적만을 고려 하는 데에 비하여 영역의 면적, 둘레, 겹치는 영역의 크기를 모두 고려하여 공 간 객체를 삽입할 최적의 단말 노드를 선택한다.

나. 동시성 제어 기법

(1) 기존의 동시성 제어 기법
여러 트랜잭션이 동시에 수행되는 경우 데이터베이스의 일관성을 해치는 경우가 생길 수 있다. 이를 방지하기 위해서는 수행의 동시성을 제어해야 한다. 수행의 동시 성을 제어하기 위하여 잠금 기법을 사용한다.
Oracle, DB2, Informix 등의 대부분의 상용 데이터베이스 시스템에서 사용하는 동 시성 제어 기법은 데이터의 로크(lock)를 이용하는 두 단계 잠금(2 phase locking) 기법을 기반으로 하고 있다. 2단계 로킹 규약은 직렬 가능성을 보장할 수 있는 규약 으로 가장 많이 알려진 것으로 모든 트랜잭션들이 잠금과 잠금 해제 연산을 트랜잭 션은 잠금만 수행할 수 있고 잠금 해제는 수행할 수 없는 확장단계와 트랜잭션이 잠 금 해제만 수행할 수 있고 잠금은 수행할 수 없는 축소단계로 구분된다. 그러나, 2단 계 잠금 규약은 직렬 가능성을 보장하지만 반면에 교착 상태 문제를 내포하고 있어 이에 대한 해결 방법이 필요하다.
2단계 잠금 규약을 기반으로 Oracle과 같은 상용 제품에서는 여러 사용자들의 잠 금의 기다림 시간을 최소화하면서 동시에 소요되는 로크의 수를 최소화하기 위하여 고안된 다단위 잠금(Multi-granularity locking) 기법이 사용된다. 기존의 데이터베이 스 시스템에서 다단위 잠금 기법을 위해 선택되는 단위들은 필드, 레코드, 블록, 데 이터베이스 등의 일반적이다. 단위를 너무 좁게 설정하면 작업의 동시성은 향상되나 잠금 처리에 소요되는 비용이 많으며, 단위를 너무 넓게 설정하면 잠금 처리에 소요 되는 비용은 적게 되나 작업의 동시성이 떨어지게 되므로 응용분야의 특성에 맞는 단위를 설정하는 것이 필요하다.

(2) 분산 잠금 관리
인터넷 웹서버와 같이 다수의 사용자가 이용하는 데이터베이스 시스템에서는 고성 능의 시스템이 요구된다. 이러한 고성능의 요구를 만족하기 위해서 여러 대의 시스 템이 데이터베이스 서비스를 제공하는 병렬 서버와 클러스터 서버가 등장하게 되었 고 이러한 병렬서버와 클러스터 서버에서는 분산 서버간의 잠금의 관리를 위해서 분 산 잠금 관리자(Distributed Lock Manager, DLM)를 이용한다. Oracle의 병렬서버에 서는 DLM을 이용하여 병렬 서버가 모든 플랫폼에 걸쳐 다양한 기능을 제공할 수 있 게 되어 있으며, 서버의 성능 향상을 위해 여러 특징이 추가되었다. DLM은 데이터 잠금 정보가 노드를 통해 분산되는 것을 막기 위해 잠금 정보를 캐시에 저장하고, 충돌 블록에 대한 액세스를 통제할 수 있는 알고리즘이 제공되어 시스템 부하의 균 형을 이룰 수 있다.
분산 잠금 관리자의 중요 기능으로는 병렬 서버의 한 개 노드에 장애가 발생했을 때, 장애가 발생한 노드에서 수행되던 사용자 접속이 정상인 다른 노드의 세션으로 옮겨지며 접속이 자동으로 재확립되는 장애 복구(fail-over)기능이 있으며, 애플리케 이션 장애 복구는 시스템의 가용성을 높일 뿐 아니라 수동적인 부하 조절이나 강제 적인 시스템의 정지에도 효과적으로 사용될 수 있다.

다. 회복 기법

기존의 상용 데이터베이스 시스템에서 대부분이 로그 기반의 회복기법을 사용하고 있으며, 트랜잭션의 수행시간의 지연을 최소화하기 위해 로그를 위한 디스크 입출력 횟수의 최소화와 고장이 발생한 경우 신속한 시스템 회복을 목표로 하고 있다. 이를 위해 데이터베이스 시스템에서는 검사점(Checkpoint) 기법을 이용하여 로그의 양을 줄임으로서 회복의 시간을 빠르게 하고 있다. 대용량 멀티미디어 데이터베이스 시스 템 등에서는 자료의 효율적인 회복을 위하여 기본정보의 변화만을 수행기록으로 남 기고, 자료의 내용은 그림자 페이징 기법(Shadow-paging) 기법을 이용하여 이전 자 료의 내용을 디스크 내에 남아있게 한 후에 회복 시 그를 이용하고, 회복의 필요가 없을 경우 검사점이 수행되는 시기에 그를 삭제하는 방식 등의 별도의 처리과정이 행해지게 된다.
그림자 페이징 기법은 기본적으로 로그를 이용하지 않는다. 데이터베이스는 페이 지라는 일정한 크기의 블록으로 나뉘어 디스크에 저장된다. 페이지라는 용어는 운영 체제의 메모리 관리 기법에서 사용된 용어이다. 그림자 페이징 기법은 트랜잭션이 실행되는 동안 현재 페이지 테이블과 그림자 페이지 테이블의 두 페이지 테이블을 이용한다. 트랜잭션이 시작될 때에는 이 두 페이지 테이블은 동일하다. 트랜잭션이 실행되는 동안 현재 페이지 테이블만 사용하고 그림자 페이지 테이블은 사용하지 않 는다. 트랜잭션이 쓰기 연산을 수행할 때 현재 페이지 테이블만 변경한다. 판독과 기 록 연산을 위해 디스크 상에 존재하는 데이터베이스 페이지 블록을 찾을 때에도 현 재 페이지 테이블만 사용한다. 따라서, 그림자 페이지는 전혀 변함없이 트랜잭션 실 행 이전의 상태를 유지한다.

2. 최신 데이터 저장기술 및 현황

가. 비정형 대용량 데이터의 저장

멀티미디어 데이터는 기존의 문자와 수치 데이터와는 비교가 안 될 정도로 큰 용량 의 기억장소를 요구한다. 따라서 멀티미디어 데이터베이스는 데이터를 저장할 때 압 축 및 복원 기법을 필수적으로 사용해야 하며, CD-ROM과 같은 대용량의 저장 장치 와 다양한 저장 장치의 관리가 필요하다. 데이터의 압축 및 복원 기법으로서 널리 사 용되고 있는 기법은 이미지 데이터를 압축하기 위한 JPEG기법과 비디오 데이터를 압축하기 위한 MPEG기법으로, 국제적으로 널리 사용되고 있으며 많은 연구가 진행 중에 있다.
데이터베이스 내에 멀티미디어 데이터를 저장하고 관리하는 방법으로 우선 레코드 형태의 정형화된 데이터는 관계형 데이터베이스에 저장하고 이미지, 그래픽스 등 비 정형 데이터는 파일에 저장하는 방법과 이미지, 오디오, 텍스트 등 크기가 크고 가변 적인 데이터를 긴 자료 항목으로 저장할 수 있는 저장 기능을 제공하는 방법이 있다. 이러한 시스템들은 기존의 관계형 데이터 모델로 멀티미디어 응용을 지원하기 어려 운 점들을 해소하기 위하여 BLOB(Binary Large OBject)과 같은 기능을 가진 확장된 모델을 제공한다.
현재 관계형 DBMS 회사들이 자신의 제품에 멀티미디어 기능을 갖도록 확장한 제 품들을 여러 개 발표하였는데 그 예로는 Informix-OnLine, Oracle 9, Sybase 등이 있다. 국내에서는 관계형 DBMS 자체에 대한 상품화가 제대로 안된 실정에 있지만, 삼성전자에서 관계형 DBMS인 CODA를 개발하면서 BLOB을 이용하여 멀티미디어 데이터베이스를 지원하는 시제품을 1994년에 개발한 바 있으며, ETRI에서는 "바다" DBMS에도 BLOB 기능을 추가하였다.
특히, Oracle에서는 이미지, 사운드, 비디오텍스트와 같은 비정형 데이터를 저장하 기 위한 기반 타입으로 CLOB(Character LOB), BLOB (Binary LOB), 그리고 BFILES(데이터베이스 외부에 저장되는 LOB) 등이 있다. BLOB, CLOB 타입의 데이 터는 데이터베이스 내의 지정된 테이블 공간에 저장된다. 반면 BFILE 데이터는 데이 터베이스 밖의 운영체제가 관리하는 파일 시스템 내의 특정 디렉토리에 저장할 수 있다.
또한, Oracle9i R2에서는 Oracle Internet File System을 제공하여 인터넷을 위주로 한 기업의 데이터를 하나의 저장소에 병합할 수 있도록 해준다. Oracle Internet File System에서는 저장소에 저장된 문서를 사용자들이 Windows, Web, FTP 등의 인터 페이스를 이용하여 접근할 수 있도록 파일과 폴더의 형태로 제공함으로써, 데이터베 이스 관리시스템의 파일 관리자의 기능을 운영체제의 파일 시스템의 기능을 포함하 도록 확장하였다.

나. 백업 기술

최근 들어 백업은 컴퓨터산업에서 정보의 중요성이 인식되면서 가장 각광을 받는 분야로 부각되고 있으며, 그 시장 규모도 크게 확장이 되었다. 기업에 전산과 관련된 비용 중에서 30~50%가 기업에서 발생하는 정보의 백업에 소요되는 비용으로 조사 되고 있으며, 특히, 미국의 9.11 테러의 발생 이후 백업기술은 재해복구 기술과 결합 하여 데이터베이스뿐만 아니라 볼륨, 파일, 그리고 응용프로그램 등에 발생되는 엄 청난 양의 데이터를 효과적으로 백업하고 복구하는 기능을 수행해야 한다.

(1) 백업의 유형
백업의 유형으로는 모든 데이터베이스나 파일시스템의 내용을 백업 받아 두는 방 법으로 내용의 변화의 유무에 관계없이 복사를 하는 완전(full) 백업, 선택된 파일이 나 폴더들의 변경된 부분만을 백업하여 복원을 할 때에 증분 백업을 한 모든 백업 데 이터파일 또는 모든 백업 테이프를 이용하여 복원하는 증분(incremental) 백업, 변경 된 파일의 전부를 저장하여 복원을 할 때에 맨 마지막날 차등 백업을 한 백업 데이터 파일 또는 백업 테이프만 있으면 복원을 할 수 있는 차등(differential) 백업, 그리고 백업 간격별로 단계를 정한 후 단계별로 다단계로 점진적인 백업을 수행하는 다중레 벨 증분(Multilevel incremental) 백업이 있다.
Oracle에서는 베리타스 소프트웨어사의 Net- Bakcup과 결합하여 제공하는 백업 기능 중의 하나로 이전의 특정 시점을 기준으로 현재 백업하고자 하는 시점까지의 작업 내용 중에서 단지 변화된 블록의 내용만을 백업하므로 백업되는 데이터의 크기 를 상당히 줄일 수 있다. 이로 인해 데이터 파일의 백업 시간을 대폭 줄일 수 있으며, 백업 간격별로 단계를 정한 후 단계별로 다단계로 점진적인 백업을 수행할 수 있다. 복구해야 할 경우에는 데이터베이스의 상태를 분석해 수행에 필요한 연산을 결정 한다. 이러한 조작을 자동으로 수행하므로 관리자가 작업에 들이는 수고를 덜어주고 복구 작업 시의 에러 발생 가능성을 최소한으로 줄여준다.

(2) 백업의 기법
(가) 서버리스 백업
SAN 백업 구성 시에 활용 가능한 방법으로 만일 백업서버가 동시에 웹 서버나 데 이터베이스 서버로 활용되고 있다고 가정해 보자. 백업을 수행하면 백업서버의 CPU 에 부하가 걸리게 된다. CPU 사용률이 적게는 30%에서 많게는 100%까지도 올라간 다. 이렇게 되면 웹 서버나 데이터베이스 서버로의 성능을 내기란 여간 힘든 일이 아 닐 수 없다. 그렇지만 서버리스 백업을 사용하는 경우에는 백업서버에서는 백업을 위한 명령만을 백업장치에 전달하고, 백업장치는 디스크 스토리지와 직접 백업 데이 터를 전송 받게 되고, 백업서버는 지정한 시간에 한번씩 백업 이상 유무를 확인하는 작업만을 수행하게 된다.
CPU의 사용률은 10% 전후가 되고, 서버의 또 다른 기능을 원활하게 사용하게 될 수 있게 된다. 물론, 서버리스 백업은 ISV에서 제공하는 백업 어플리케이션의 옵션으 로 구성되는 것이다.
(나) snapshot
온라인 백업은 일상의 업무 수행에 가장 영향을 주지 않기 때문에 24시간 가용성을 필요로 하는 데이터베이스에 알맞다. 그러나, DBMS는 백업 도중에 트랜잭션을 로깅 해야 하므로, 백업과 백업 후에 쌓인 트랜잭션을 실제 데이터에 적용해야 하기 때문 에 성능이 약간 저하된다. 볼륨 백업 시간을 최소로 하기 위해서, 고객들은 현재 한 볼륨을 snapshot으로 상용하여 그 snapshot 볼륨으로 백업을 받는 기능을 사용하 고 있다. 이때, 실제 볼륨은 신속하게 실제 운영에서 사용할 수 있게 된다.
(다) LAN-Free 백업
데이터베이스 시스템의 하부 인프라가 SAN과 같은 네트워크 기반의 시스템으로 구성이 된 경우는 파이버 채널로 구성된 별도의 SAN에 각 서버의 스토리지가 직접 연결되어 있기 때문에 백업을 위한 데이터의 이동을 파이버 채널을 이용하고 스토리 지간의 데이터 트래픽은 기존의 LAN을 사용하지 않는다. 따라서 시스템의 성능은 급격히 향상되는데, 이것은 데이터와 통신 트래픽이 더 이상 제한된 표준 LAN의 대 역폭에 대해 경쟁하지 않기 때문이다. SAN 환경에서는 스토리지의 리소스는 통합 관리되며, 다수의 서버에 의해 공유되어 사용될 수 있다. 또한 파이버 채널 스위치의 추가를 통해 SAN 솔루션은 쉽게 확장 가능하다.
SAN 환경에서 데이터가 지능적인 백업 애플리케이션을 통해 관리되도록 다양한 소프트웨어를 개발하고 있다. 기존의 백업 방식에 비해 LAN-Free 방식은 광채널 구 성요소를 설치하는데 많은 초기 투자비용이 들어가는 단점을 가지고 있다. 그러나 스토리지의 통합 및 중앙 관리는 전체소요비용을 크게 줄일 수 있어 궁극적으로는 기업에게 더 많은 이점을 안겨준다.

3. 저장 인프라의 발전 및 기술

인터넷의 폭발적인 성장, 온라인 상에서의 정보유지 필요성, 의사결정 지원 정보의 수집/추적에 대한 필요성, 서버 통합, 비즈니스 중심 어플리케이션으로 의 PC 서버 움직임, 그리고 어플리케이션의 복잡성 증가 등 다양한 요인들로 인해 현재 기업 규모의 시스템에서는 대용량 데이터베이스 시스템의 구축, 데 이터웨어하우스(Data Warehouse)의 구축, 그리고 ERP(Enterprise Resource Planning) 시스템 등의 도입으로 대용량 스토리지 시스템에 대한 요구가 계속 높아지고 있다. 이러한 높은 신뢰성과 성능, 장애 복구성(fault tolerance), 그리고 통합된 관리와 고속 백업이라는 요구에 대한 솔루션으로 등장한 인프라 가 바로 SAN(Storage Area Network)과 NAS(Network Attached Storage)로 대변 되는 네트워크 자료 저장 시스템이다. SAN과 NAS는 분산 네트워킹에서 주류가 되고 있으며 조만간 데이터베이스 시스템의 위한 스토리지 부착 및 공유에 대 한 일반적인 방법이 될 것으로 전망되고 있다.

가. NAS

DAS는 서버와 외장형 스토리지 사이를 전용의 케이블로 직접 연결하는 것으 로 기존의 서버와 스토리지를 직접 연결하는 전통적인 방식이다. 만약 서버가 UNIX나 Linux서버와 같은 오픈 시스템이면 SCSI 케이블을 이용하여 연결하는 방법이다. 이러한 DAS는 저장된 데이터에 대한 서비스를 스토리지에 접속된 서 버가 처리해야 함으로 서버에 큰 부하가 발생한다.
NAS는 네트워크 접속용 스토리지로서 Ethernet과 같은 LAN 인터페이스를 통 해 네트워크에 직접 연결되는 새로운 개념의 데이터 저장장치로 네트워크 상에 서 서로 다른 이기종 플랫폼간의 효율적인 데이터 통합 사용과 기존의 서버-중 심형 스토리지와 같이 일반용 서버의 상위구조나 그 복잡함 없이 오직 데이터- 펌프(Pump Data : 스토리지 시스템 자체와 클라이언트간에 신속하게 바로 데이 터 전송이 이루어지는 것) 라는 데이터 처리의 목적만을 위해 최적화 된 데이 터-중심형의 데이터 전용 스토리지 시스템이다.
기존의 서버-중심형 방식과는 달리 NAS는 데이터 저장장치가 서버에 종속되 지 않고 독립적으로 네트워크에 직접 연결된다. 그 결과 사용자는 파일서버를 거치지 않고 필요한 데이터를 직접 NAS 저장장치를 통해 훨씬 빠른 속도로 접 근할 수 있다. 즉, 클라이언트에서 요구된 데이터의 저장/전송에 따른 네트워 크 로드(Load)는 서버로부터 분리되어 NAS에서 분담함으로써 상대적으로 네트 워크 상에서 서버의 성능은 향상되는 효과를 가져온다. NAS의 장점은 파일의 공유 기능이다. NAS의 파일서버가 NFS나 CIFS 프로토콜을 통해 여러 어플리케 이션 서버들 사이에 파일을 공유 할 수 있게 해준다. 현재 존재하는 파일 공유 솔루션으로는 NAS가 가장 안정적이라는 장점을 지닌다. 그러나, NAS는 데이터 의 전송에 LAN을 사용하므로 LAN이 불안정하거나 과부하가 발생한 경우에 성능 이 떨어진다는 단점을 지니고 있다.

나. SAN

SAN은 다양한 업무 프로세스로 분산되어 있는 저장장치를 통합 운영하여 업무의 효율성 증대, 인프라에대한 중복투자 방지 및 이기종간 데이터 공유를 목적으로 만들어진 서버와 저장장치간의 네트워크를 의미한다. 개별적으로 연결되어 있는 저장 시스템을 화이버 채널을 이용하여 별도의 전용 네트워크에 연결하여 집중 적으로 관리함으로써 데이터의 고속전송, 고 가용성, 확장성 및 공유 기능을 제공하 기 위한 시스템이다. [그림 4-9-2]는 SAN의 구조를 보여 준다.
SAN은 데이터베이스 관리시스템 및 트랜잭션 프로세싱 시스템처럼 일반적으로 자 체 대규모 데이터를 관리하는 고성능 애플리케이션에 적합하다. 모든 물리적 위치와 관련된 유연성과 특정 레코드나 작은 레코드 집합에 대한 빠른 접근에 초점을 맞추 고 있다. 이러한 어플리케이션은 파일수준의 공통 접근을 요구하지 않고 블록 수준 의 성능 및 제어를 요구한다. 데이터베이스 [그림 4-9-2] SAN의 구조 관리시스템에서는 블록 수준의 읽기와 쓰기를 요구하며 SAN은 이러한 요구를 충족시킬 수 있으며, 다양한 확장성을 제공함으로 급증하는 데이터의 용량과 관리를 충족시킬 수 있다.

SAN은 다음과 같은 장점을 지닌다.
- 고속의 전송속도(200MB / Full- duplex이상)
- 장거리 전송(100Km이상)
- 뛰어난 연결성과 확장성이 뛰어나다.(Over 16 Million)
- 용이한 Data 관리 - 용이한 통합 및 관리
- 저렴한 비용
- Multi-protocol Flexibility(SCSI, ESCON, IP)
- One active SAN another Standby(Fail Over)
- Hi-availability SAN(Clustering)

 

다. iSCXI

SAN은 DAS와 같이 서버에 직접적으로 스토리지를 연결하는 게 아니라 스위치 를 통해서 전체 스토리지 영역을 구성해 DAS의 한계인 확장의 어려움을 해결했 다. 그러나, SAN은 많은 장점에도 불구하고 시스템의 구축비용이 비싼데다 벤 더들간의 호환성 등이 문제로 지적됐다.
이러한 SAN의 문제점을 극복하고자 고안된 게 iSCSI라는 기술이다. 스토리지 시장의 새로운 화두로 떠오른 iSCSI는 "internet SCSI’의 약자로 스토리지 연 결에 사용됐던 물리적 SCSI연결 방식 대신 물리적으로는 이더넷을 사용하며 내 부적으로는 SCSI 프로토콜을 사용하려는 기술 표준으로 IBM과 시스코가 2000년 2월 IETF(Internet Engineering Task Force)에 제출한 스토리지 네트워크 기술 로써 현재 표준 안이 완성단계에 있다.

[그림 4-9-3]

[그림 4-9-3] DAFS에서의 파일 접근 방법


iSCSI의 핵심은 TCP/IP상에서 캡슐화 된 SCSI 정보를 이동시키는 것으로 로 컬 혹은 원격지에서 서버와 스토리지를 연결하여 스토리지가 여러 지역에 분산 돼 있고 IP 네트워크의 관리가 쉬운 고성능의 네트워크 스토리지 상에서 사용 된다. iSCSI 이전에 SAN을 구축하기 위한 유일한 스토리지 네트워크 방법은 사 용자가 각각의 분리된 SAN 인프라스트럭처에 투자해야 하는 파이버 채널뿐이었 다. 왜냐하면 이것은 10M, 100Mbps 이더넷에 비해 빠른 기가비트의 속도를 제 공하기 때문이다. 하지만 파이버 채널은 표준이 설정돼 있지 않아 벤더들 간에 호환이 어려웠으며 비용도 고가였다.
iSCSI에 관심을 갖는 이유는 스토리지 시장의 규모가 연간 4백억 달러에 달 하며 지속적으로 성장하고 있기 때문이다. 즉 이러한 스토리지들의 연결이 가 능하게 되면 사용자에게 더 높은 가치를 제공할 수 있다. 기존 스토리지는 DAS 형태로 전체 네트워크와 독립돼 있었다. 하지만 iSCSI의 도입으로 사용자는 원 격에서도 데이터베이스에 접근할 수 있다. 즉 고객에게 미치는 가장 큰 영향도 스토리지에 IP 네트워크를 이용해 접근, 자원의 사용이 가능하다는 것이다. 이 것은 스토리지 네트워킹의 혁명이라 할 수 있다.

라. DAFS

10GB 네트워크 기술의 등장은 스토리지 업계에도 상당한 파급력을 전해주고 있다. RAID 기술이 기존 스토리지의 물리적인 한계를 극복한 반면 iSCSI는 기존 SCSI 기술 을 10GB 네트워크 상에서 사용할 수 있도록 개발이 진행 중이다. 하지만 본격적인 10GB 시대가 도래하면 iSCSI는 도태할 것이라는 전망도 조심스럽게 개진되고 있다. 이러한 상황에 DAFS(Direct Access File System)의 등장은 현재의 스토리지 네트워 크를 한 단계 올릴 수 있을 것으로 기대되고 있다. [그림 4-9-3]은 DAFS에서의 파일 접근 방법을 보여 준다.
DAFS는 DAFS Collaborators라는 기관을 중심으로 IBM, HP, SUN, ORACLE 등 모 두 85개 이상의 업체들이 참여하여 서로 역할을 분담하여 성능, 확장성, 안정성 개선 이라는 목표를 가지고 노력해 왔다. 이들은 이미 노력의 결실을 일정 수준 이상까지 완성하여, 2001년 9월 DAFS Specification Version 1.0이 이미 완성되어 IETF에 제출 되었으며 DAFS API Specification Version 1.0은 2001년 11월 완성되었다. DAFS Collaborators는 크게 두 가지 분야에 초점을 두고 진행되고 있는데 그 중 하 나는 DAFS라는 프로토콜 자체를 만드는 분야이며, 나머지 하나는 RDMA(Remote Direct Memory Access) 기술을 구현하고 그 기술을 DAFS에 접목시키고자 하는 분 야이다.
현재 DAFS 프로토콜을 만드는 분야는SNIA (Storage Networking Industry Association)의 한부문으로써 DAFS Implementers Forum이라는 그룹을 중심으로 그 노력이 진행되고 있다. 초창기부터 이 포럼에 참가하여 초기 개발자로서 그 중심 적인 역할을 수행하고 있는 업체들로는 네트워크 어플라이언스를 중심으로 브로드 밴드 스토리지, 에뮬렉스, 인텔, 그리고 베리타스 소프트웨어와 같은 회사들이 있다. 이 업체들이 초창기부터 구현하고자 했던 것은 dDAFS(driver DAFS)였다. 그러나 진 정한 DAFS의 실현은 uDAFS(user DAFS)의 완성이라고 보았을 때 이들만의 노력으 로 이룩할 수 있는 것은 DAFS의 최종적인 목표는 될 수 없는 것이었다. 이러한 뜻에 동참하여 uDAFS의 최종 완성을 목표로 이들에 다시 합류하는 애플리케이션 업체들 이 있는데 이들이 바로 오라클, 사이베이스, DB2 등 있다.



제공 : DB포탈사이트 DBguide.net

출처명 : (재)한국데이터베이스진흥센터

Posted by ukmie
,
다양한 기기에서 활용가능한 Rich Internet 기술이고, JavaFX Script 와 JavaFX Mobile 로 구성되어있다고 합니다. 말대로만 된다면야 대단한 뭔가가 될것도 같은데,,
아직 초기단계이고 늘그렇듯 삐딱한 시각도 많이 보이는군요.

JavaFX, Sun의 RIA 시장용 무기?
http://desktop.tistory.com/entry/JavaFX-Sun#

JavaFX 스크립트 학습
http://www.sdnkorea.com/blog/422


JavaFX Technology

* Sun is introducing JavaFX, a new family of products based on Java technology designed to enable consistent user experiences, from desktop to mobile device to set-top box to Blu-ray Disc.

* At A Glance

  • The JavaFX product family leverages the Java platform's write-once-run-anywhere portability, application security model, ubiquitous distribution and enterprise connectivity
  • JavaFX initially is comprised of JavaFX Script and JavaFX Mobile
  • JavaFX Script is a highly productive scripting language for content developers to create rich media and interactive content
  • JavaFX Mobile, Sun's software system for mobile devices, is available via OEM license to carriers, handset manufacturers and others seeking a branded relationship with consumers
사용자 삽입 이미지








Posted by ukmie
,

1. Go to Help -> Software Updates -> Find and Install.
2. Select the “Search for new features to install” option.
3. Press the “New Remote Site…” button
4. and enter “Technoetic” for the name
5. and “http://www.technoetic.com/eclipse/update” for the URL.
6. Press OK, and install the Jode plugin from the subsequent list of features.

한번 깔면 이후로 source attachment 가 안된다.(정확히 말하자면 어떻게 하는지 모르겠다)
이클립스 플러그인을 임의로 추가할때는 따로 폴더를 두고 관리하는것이 좋다.
jode 관련 폴더를 잠깐 지우고 재기동해서
source attachment 를 하고
지웠던 폴더를 다시 복원하면 O.K

추가)
navigator 창에서
해당 jar에서 오른 마우스 클릭 후 Properties >> Java Source Attachment 에 Location Path에 소스의 위치를 입력함.
간단하군.
navigator 창을 잘 안쓰다 보니,,쩝


Posted by ukmie
,
2007년 6월 7일 하버드 대학 졸업식 연설문입니다. 
당연한 것일수도 있겠지만 참 빌게이츠스럽다(?)는 느낌이네요.
복잡성의 제거와 접목시켜서 불평등에 대한 이야기를하는군요. 그럴듯합니다.

원문해석 : http://extended.tistory.com/306

Remarks of Bill Gates

Harvard Commencement


President Bok, former President Rudenstine, incoming President Faust, members of the Harvard Corporation and the Board of Overseers, members of the faculty, parents, and especially, the graduates:

I’ve been waiting more than 30 years to say this: “Dad, I always told you I’d come back and get my degree.”

I want to thank Harvard for this timely honor. I’ll be changing my job next year … and it will be nice to finally have a college degree on my resume.

I applaud the graduates today for taking a much more direct route to your degrees. For my part, I’m just happy that the Crimson has called me “Harvard’s most successful dropout.” I guess that makes me valedictorian of my own special class … I did the best of everyone who failed.

But I also want to be recognized as the guy who got Steve Ballmer to drop out of business school. I’m a bad influence. That’s why I was invited to speak at your graduation. If I had spoken at your orientation, fewer of you might be here today.

Harvard was just a phenomenal experience for me. Academic life was fascinating. I used to sit in on lots of classes I hadn’t even signed up for. And dorm life was terrific. I lived up at Radcliffe, in Currier House. There were always lots of people in my dorm room late at night discussing things, because everyone knew I didn’t worry about getting up in the morning. That’s how I came to be the leader of the anti-social group. We clung to each other as a way of validating our rejection of all those social people.

Radcliffe was a great place to live. There were more women up there, and most of the guys were science-math types. That combination offered me the best odds, if you know what I mean. This is where I learned the sad lesson that improving your odds doesn’t guarantee success.

One of my biggest memories of Harvard came in January 1975, when I made a call from Currier House to a company in Albuquerque that had begun making the world’s first personal computers. I offered to sell them software.

I worried that they would realize I was just a student in a dorm and hang up on me. Instead they said: “We’re not quite ready, come see us in a month,” which was a good thing, because we hadn’t written the software yet. From that moment, I worked day and night on this little extra credit project that marked the end of my college education and the beginning of a remarkable journey with Microsoft.

What I remember above all about Harvard was being in the midst of so much energy and intelligence. It could be exhilarating, intimidating, sometimes even discouraging, but always challenging. It was an amazing privilege – and though I left early, I was transformed by my years at Harvard, the friendships I made, and the ideas I worked on.

But taking a serious look back … I do have one big regret.

I left Harvard with no real awareness of the awful inequities in the world – the appalling disparities of health, and wealth, and opportunity that condemn millions of people to lives of despair.

I learned a lot here at Harvard about new ideas in economics and politics. I got great exposure to the advances being made in the sciences.

But humanity’s greatest advances are not in its discoveries – but in how those discoveries are applied to reduce inequity. Whether through democracy, strong public education, quality health care, or broad economic opportunity – reducing inequity is the highest human achievement.

I left campus knowing little about the millions of young people cheated out of educational opportunities here in this country. And I knew nothing about the millions of people living in unspeakable poverty and disease in developing countries.

It took me decades to find out.

You graduates came to Harvard at a different time. You know more about the world’s inequities than the classes that came before. In your years here, I hope you’ve had a chance to think about how – in this age of accelerating technology – we can finally take on these inequities, and we can solve them.

Imagine, just for the sake of discussion, that you had a few hours a week and a few dollars a month to donate to a cause – and you wanted to spend that time and money where it would have the greatest impact in saving and improving lives. Where would you spend it?

For Melinda and for me, the challenge is the same: how can we do the most good for the greatest number with the resources we have.

During our discussions on this question, Melinda and I read an article about the millions of children who were dying every year in poor countries from diseases that we had long ago made harmless in this country. Measles, malaria, pneumonia, hepatitis B, yellow fever. One disease I had never even heard of, rotavirus, was killing half a million kids each year – none of them in the United States.

We were shocked. We had just assumed that if millions of children were dying and they could be saved, the world would make it a priority to discover and deliver the medicines to save them. But it did not. For under a dollar, there were interventions that could save lives that just weren’t being delivered.

If you believe that every life has equal value, it’s revolting to learn that some lives are seen as worth saving and others are not. We said to ourselves: “This can’t be true. But if it is true, it deserves to be the priority of our giving.”

So we began our work in the same way anyone here would begin it. We asked: “How could the world let these children die?”

The answer is simple, and harsh. The market did not reward saving the lives of these children, and governments did not subsidize it. So the children died because their mothers and their fathers had no power in the market and no voice in the system.

But you and I have both.

We can make market forces work better for the poor if we can develop a more creative capitalism – if we can stretch the reach of market forces so that more people can make a profit, or at least make a living, serving people who are suffering from the worst inequities. We also can press governments around the world to spend taxpayer money in ways that better reflect the values of the people who pay the taxes.

If we can find approaches that meet the needs of the poor in ways that generate profits for business and votes for politicians, we will have found a sustainable way to reduce inequity in the world. This task is open-ended. It can never be finished. But a conscious effort to answer this challenge will change the world.

I am optimistic that we can do this, but I talk to skeptics who claim there is no hope. They say: “Inequity has been with us since the beginning, and will be with us till the end – because people just … don’t … care.” I completely disagree.

I believe we have more caring than we know what to do with.

All of us here in this Yard, at one time or another, have seen human tragedies that broke our hearts, and yet we did nothing – not because we didn’t care, but because we didn’t know what to do. If we had known how to help, we would have acted.

The barrier to change is not too little caring; it is too much complexity.

To turn caring into action, we need to see a problem, see a solution, and see the impact. But complexity blocks all three steps.

Even with the advent of the Internet and 24-hour news, it is still a complex enterprise to get people to truly see the problems. When an airplane crashes, officials immediately call a press conference. They promise to investigate, determine the cause, and prevent similar crashes in the future.

But if the officials were brutally honest, they would say: “Of all the people in the world who died today from preventable causes, one half of one percent of them were on this plane. We’re determined to do everything possible to solve the problem that took the lives of the one half of one percent.”

The bigger problem is not the plane crash, but the millions of preventable deaths.

We don’t read much about these deaths. The media covers what’s new – and millions of people dying is nothing new. So it stays in the background, where it’s easier to ignore. But even when we do see it or read about it, it’s difficult to keep our eyes on the problem. It’s hard to look at suffering if the situation is so complex that we don’t know how to help. And so we look away.

If we can really see a problem, which is the first step, we come to the second step: cutting through the complexity to find a solution.

Finding solutions is essential if we want to make the most of our caring. If we have clear and proven answers anytime an organization or individual asks “How can I help?,” then we can get action – and we can make sure that none of the caring in the world is wasted. But complexity makes it hard to mark a path of action for everyone who cares — and that makes it hard for their caring to matter.

Cutting through complexity to find a solution runs through four predictable stages: determine a goal, find the highest-leverage approach, discover the ideal technology for that approach, and in the meantime, make the smartest application of the technology that you already have — whether it’s something sophisticated, like a drug, or something simpler, like a bednet.

The AIDS epidemic offers an example. The broad goal, of course, is to end the disease. The highest-leverage approach is prevention. The ideal technology would be a vaccine that gives lifetime immunity with a single dose. So governments, drug companies, and foundations fund vaccine research. But their work is likely to take more than a decade, so in the meantime, we have to work with what we have in hand – and the best prevention approach we have now is getting people to avoid risky behavior.

Pursuing that goal starts the four-step cycle again. This is the pattern. The crucial thing is to never stop thinking and working – and never do what we did with malaria and tuberculosis in the 20th century – which is to surrender to complexity and quit.

The final step – after seeing the problem and finding an approach – is to measure the impact of your work and share your successes and failures so that others learn from your efforts.

You have to have the statistics, of course. You have to be able to show that a program is vaccinating millions more children. You have to be able to show a decline in the number of children dying from these diseases. This is essential not just to improve the program, but also to help draw more investment from business and government.

But if you want to inspire people to participate, you have to show more than numbers; you have to convey the human impact of the work – so people can feel what saving a life means to the families affected.

I remember going to Davos some years back and sitting on a global health panel that was discussing ways to save millions of lives. Millions! Think of the thrill of saving just one person’s life – then multiply that by millions. … Yet this was the most boring panel I’ve ever been on – ever. So boring even I couldn’t bear it.

What made that experience especially striking was that I had just come from an event where we were introducing version 13 of some piece of software, and we had people jumping and shouting with excitement. I love getting people excited about software – but why can’t we generate even more excitement for saving lives?

You can’t get people excited unless you can help them see and feel the impact. And how you do that – is a complex question.

Still, I’m optimistic. Yes, inequity has been with us forever, but the new tools we have to cut through complexity have not been with us forever. They are new – they can help us make the most of our caring – and that’s why the future can be different from the past.

The defining and ongoing innovations of this age – biotechnology, the computer, the Internet – give us a chance we’ve never had before to end extreme poverty and end death from preventable disease.

Sixty years ago, George Marshall came to this commencement and announced a plan to assist the nations of post-war Europe. He said: “I think one difficulty is that the problem is one of such enormous complexity that the very mass of facts presented to the public by press and radio make it exceedingly difficult for the man in the street to reach a clear appraisement of the situation. It is virtually impossible at this distance to grasp at all the real significance of the situation.”

Thirty years after Marshall made his address, as my class graduated without me, technology was emerging that would make the world smaller, more open, more visible, less distant.

The emergence of low-cost personal computers gave rise to a powerful network that has transformed opportunities for learning and communicating.

The magical thing about this network is not just that it collapses distance and makes everyone your neighbor. It also dramatically increases the number of brilliant minds we can have working together on the same problem – and that scales up the rate of innovation to a staggering degree.

At the same time, for every person in the world who has access to this technology, five people don’t. That means many creative minds are left out of this discussion -- smart people with practical intelligence and relevant experience who don’t have the technology to hone their talents or contribute their ideas to the world.

We need as many people as possible to have access to this technology, because these advances are triggering a revolution in what human beings can do for one another. They are making it possible not just for national governments, but for universities, corporations, smaller organizations, and even individuals to see problems, see approaches, and measure the impact of their efforts to address the hunger, poverty, and desperation George Marshall spoke of 60 years ago.

Members of the Harvard Family: Here in the Yard is one of the great collections of intellectual talent in the world.

What for?

There is no question that the faculty, the alumni, the students, and the benefactors of Harvard have used their power to improve the lives of people here and around the world. But can we do more? Can Harvard dedicate its intellect to improving the lives of people who will never even hear its name?

Let me make a request of the deans and the professors – the intellectual leaders here at Harvard: As you hire new faculty, award tenure, review curriculum, and determine degree requirements, please ask yourselves:

Should our best minds be dedicated to solving our biggest problems?

Should Harvard encourage its faculty to take on the world’s worst inequities? Should Harvard students learn about the depth of global poverty … the prevalence of world hunger … the scarcity of clean water …the girls kept out of school … the children who die from diseases we can cure?

Should the world’s most privileged people learn about the lives of the world’s least privileged?

These are not rhetorical questions – you will answer with your policies.

My mother, who was filled with pride the day I was admitted here – never stopped pressing me to do more for others. A few days before my wedding, she hosted a bridal event, at which she read aloud a letter about marriage that she had written to Melinda. My mother was very ill with cancer at the time, but she saw one more opportunity to deliver her message, and at the close of the letter she said: “From those to whom much is given, much is expected.”

When you consider what those of us here in this Yard have been given – in talent, privilege, and opportunity – there is almost no limit to what the world has a right to expect from us.

In line with the promise of this age, I want to exhort each of the graduates here to take on an issue – a complex problem, a deep inequity, and become a specialist on it. If you make it the focus of your career, that would be phenomenal. But you don’t have to do that to make an impact. For a few hours every week, you can use the growing power of the Internet to get informed, find others with the same interests, see the barriers, and find ways to cut through them.

Don’t let complexity stop you. Be activists. Take on the big inequities. It will be one of the great experiences of your lives.

You graduates are coming of age in an amazing time. As you leave Harvard, you have technology that members of my class never had. You have awareness of global inequity, which we did not have. And with that awareness, you likely also have an informed conscience that will torment you if you abandon these people whose lives you could change with very little effort. You have more than we had; you must start sooner, and carry on longer.

Knowing what you know, how could you not?

And I hope you will come back here to Harvard 30 years from now and reflect on what you have done with your talent and your energy. I hope you will judge yourselves not on your professional accomplishments alone, but also on how well you have addressed the world’s deepest inequities … on how well you treated people a world away who have nothing in common with you but their humanity.

Good luck.

원문 http://www.commencement.harvard.edu/



Posted by ukmie
,