이글의 의도가 뭐든 간에 재밌는 사진들이군.. 신기하긴 하다.

출처 :
http://www.creation.or.kr/library/itemview.asp?no=216&orderby_1=editdate%20desc



Fossilized Human Finger

이 놀라운 화석은 공룡과 인간의 발자국으로 유명한 Paluxy 강뚝을 따라 발견되었다. 이 입체적인  모양은 너무나도 선명하다.(많은 입체 화석들이 근처에서 발견된다.) 이 화석은 조심스럽게  X-선, CT-스캔으로 분석되었고 인간의 손가락과 와벽하게 일치함을 밝혔다. (참조 :  http://www.kacr.or.kr/library/itemview.asp?no=770



  

Fossilized Hand Print

 

인간의 손금과 완벽하게 일치하는 이 화석은 놀라운 섬세함을 보여준다. 특히 엄지손톱의 지문이 보일 정도이다. 이것은 중기 백악기로 보이는 Glen Rose limestone지역에서 1억 1천만년 전 공룡과 함께 발견되었다.

*참조 ;

.한국창조과학회 자료실/화석/잘못된 위치의 화석에 있는 많은 자료들을 참조하세요.

    http://www.kacr.or.kr/library/listview.asp?category=H03

Posted by ukmie
,
"이더넷 개발, 유비쿼터스 개념 창시 등 세계 컴퓨팅 업계 흐름을 주도해 온 제록스연구소가 이번에는 시맨틱 웹을 기반으로 한 차세대 검색엔진 ‘팩트스포터(FactSpotter)’ 개발에 성공했다."

구글보다 낫다는 극찬을 받은 검색엔진이란다. 왜냐?!

"
예를 들어 구글에서 ‘링컨’과 ‘부통령’이라는 단어를 검색하면 링컨대통령의 약력이나 네브라스카주 링컨시에 위치한 대학 소개가 먼저 나오지만 ‘팩트스포터’에서는 링컨대통령 시절의 부통령이 한니발 햄린이 검색된다. 또 ‘링컨대통령 시절 부통령은 누구일까요?’라는 문장 형식으로 검색해도 같은 결과가 나타난다."


그렇군. 문서관리 시스템용이기에 검색의 품질 향상에 중점을 둘 수 있지 않았나 싶나. 아무래도,
웹서비스의 경우에는 이것저것 걸리는것이 많을테니까. 그런데 http://www.xerox.com 사이트에 분명히 FactSpotter 관련 기사가 있는데 사이트내의 검색기능을 이용해서는 찾아지지가 않는다. 웹사이트에도 신경 좀 쓰지 --. 아무튼,
써보진 않았지만 쓸만한 녀석이길 기대해본다. 우리나라에도 문서검색 솔루션들 많던데 어느정도
수준일까. 그건그렇고,
내 컴의 문서들은 언제나 정리가 되려나. --

*** 참고사이트
Surpassing Search: New Xerox Text Mining Software Goes Beyond "Keywords"
To Deliver More Relevant Information


http://www.zdnet.co.kr/news/enterprise/etc/0,39031164,39158849,00.htm

http://www.etnews.co.kr/news/detail.html?id=200706210047

Posted by ukmie
,

RDF의 잘쓰이는 몇가지 포맷에 대한 비교. 용도에 맞게 골라쓰자.

출처: http://www.w3.org/2000/10/swap/doc/formats


English (Very Informal)

There is person, Pat, known as "Pat Smith" and "Patrick Smith".
Pat has a pet dog named "Rover".

English Hypertext (Informal)

Here the ambiguity of terms is addressed by making the words be hypertext links.
The links may or may not work, depending on the servers involved.

Pat is a human with the names "Pat Smith" and "Patrick Smith".
Pat has a pet, a dog, with the name "Rover".

N3

@prefix : <http://www.w3.org/2000/10/swap/test/demo1/about-pat#> .
@prefix bio: <http://www.w3.org/2000/10/swap/test/demo1/biology#> .
@prefix per: <http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#> .
    
:pat     a bio:Human;
     per:name "Pat Smith",
              "Patrick Smith";
     per:pet  [
         a bio:Dog;
         per:name "Rover" ] .

Directed Labeled Graph

RDF/XML

<rdf:RDF xmlns="http://www.w3.org/2000/10/swap/test/demo1/about-pat#"
    xmlns:bio="http://www.w3.org/2000/10/swap/test/demo1/biology#"
    xmlns:per="http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

    <bio:Human rdf:about="#pat">
        <per:name>Pat Smith</per:name>
        <per:name>Patrick Smith</per:name>
        <per:pet>
            <bio:Dog>
                <per:name>Rover</per:name>
            </bio:Dog>
        </per:pet>
    </bio:Human>
</rdf:RDF>

N-Triples

With @prefix:

@prefix : <http://www.w3.org/2000/10/swap/test/demo1/about-pat#> .
@prefix bio: <http://www.w3.org/2000/10/swap/test/demo1/biology#> .
@prefix per: <http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

:pat rdf:type bio:Human.
:pat per:name "Pat Smith".
:pat per:name "Patrick Smith".
:pat per:pat _:genid1.
_:genid1 rdf:type bio:Dog.
_:genid1 per:name "Rover".

In standard form:

<http://www.w3.org/2000/10/swap/test/demo1/about-pat#pat> 
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.w3.org/2000/10/swap/test/demo1/biology#Human> . <http://www.w3.org/2000/10/swap/test/demo1/about-pat#pat>
<http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#name> "Pat Smith" . <http://www.w3.org/2000/10/swap/test/demo1/about-pat#pat>
<http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#name> "Patrick Smith" . <http://www.w3.org/2000/10/swap/test/demo1/about-pat#pat>
<http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#pet> _:genid1 . _:genid1
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.w3.org/2000/10/swap/test/demo1/biology#Dog> . _:genid1 <http://www.w3.org/2000/10/swap/test/demo1/friends-vocab#name> "Rover" .
Posted by ukmie
,
마음을 다스리는 일만큼 중요하고 힘든일도 없을것이다. 그런데,
우린 혼자 생각할때도 언어를 사용한다. 따라서, 이때 어떤 언어습관을 갖느냐가
마음을 다스리고 생각의 태도를 결정하는데 많은 영향을 준다.
마케팅을 위해 우수해지기 위한, 성공하기 위한 기술이라는 점을 부각시키고 있으나
생활에 기본적이고 필수적인 기술(?) 이 아닐까 하는 생각이 든다.
이런걸 어렸을때 학교에서 배웠으면 어땠을까.,음음

"...
NLP(Neuro Linguistic Programming) 는 신경언어 프로그래밍이란 말의 약자로서 사람의 뇌는 신경세포로 구성되어 있으며 뇌세포 덩어리인 뇌신경은 언어로서 외부적 조작을 받거나 남과 의사소통을 하며 스스로 하는 내면적 대화도 모두 언어적인 도구를 써서 자신의 뇌 기능을 조작한다.  이때 어떤 언어를 쓰는가에 따라 뇌 기능의 반응유형을 알 수 있고 앞으로 만들어질 행동도 유추할 수 있는 것이다. 예를 들어 부정적인 언어를 많이 쓰는 사람의 뇌 반응유형과 긍정적인 언어를 많이 쓰는 사람의 뇌 반응 유형은 상당히 다르다.   특히 우수한 사람들이 쓰는 말은 보통사람들이 쓰는 말과 그 지향점이 다르고 의미하는 내용도 다르다. NLP는 이처럼 우수한 사람들이  어떻게 우수성을 창출하는지에 대한 연구로서 시작된 심리 기술적이면서도 경험적인 마음을 다루는 기술이다
..."

NLP란 무엇인가 : http://www.mindnlp.com/nlp/nlp02.html

마음을 다스리고 치유하는 가장 강력한 도구 NLP와 최면요법 :
http://www.inewspeople.co.kr/news/print.php?idxno=2066

위키피디아 : http://en.wikipedia.org/wiki/Neuro-linguistic_programming
Posted by ukmie
,
ResultSet 클래스에는 row의 갯수를 리턴해주는 메소드가 없다.
물론 만들면 된다.
resultSet.last() 를 호출하므로
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY
을 미리 설정해줘야 한다. (필요없는 경우도 있긴하다.)
PreparedStatement stmt = conn.prepareStatement(
query,
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
or
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

public static int getResultSetSize(ResultSet resultSet) {
    int size = -1;

    try {
        resultSet.last();
        size = resultSet.getRow();
        resultSet.beforeFirst();
    } catch(SQLException e) {
        return size;
    }

    return size;
}

Posted by ukmie
,
소시적 이 책을 붙들고 투덜거리면서 씨름하던 기억이 난다.
언젠가 꼭 다시 읽어보고 싶은 책이기도 하다.
좀 어렵긴 하지만 정적이고 도식화되고 뭐랄까 가시적인 가치관에서 잠깐 탈피하는
기분을 맛볼 수 있다. 나름의 카타르시스와 정서적 풍만감을 준다고 할 수 있다.

책소개(동아닷컴)
저자(더글러스 리처드 호프스태터) 소개

반가운 기사를 봤다. 참 잘썼다. 필자가 프로그래머여서 더 공감도 가고,,,그렇다.

 해커 문화의 뿌리를 찾아서 Part 6: ‘괴델, 에셔, 바흐’ 그리고 해커리즘의 쇠락

" ... 실용적이지도 않으며 결론은 없지만 암시적인 임무는 충실히 하는 책들이다. 컴퓨터에 관련된 책 중에는 마빈 민스키의 [[The Society of Mind]]와 더글러스 호프스태터의 [[Gödel, Escher, Bach]](이하 GEB)가 있다. 몽상가 기질이 있는 필자는 가끔 책에 나오는 구절들을 생각하며 묘한 상상을 하곤 한다. 책의 제목들은 화두라고 볼 수 있으며 상식적으로 생각하는 내용에 도전하기도 한다. 우리가 무엇을 안다는 것이 무엇인가에 도전하기도 하고 지능이라는 것이 무엇인가에 대한 화두도 던진다. "



Posted by ukmie
,

GPLv3 가 얼마전에 OSS 의 승인을 받았다
특허권 , 배포 관련해서 명시적인 조항을 넣는 업데이트가 있을 예정이라고 했었는데,
이런저런 말들이 많은것 같다.

- GPLv3 : http://www.gnu.org/licenses/gpl-3.0.html
- GPLv3 를 둘러싼 공방 :
   http://www.zdnet.co.kr/news/enterprise/os/0,39031185,39151564,00.htm
- GPLv3 의 위험과 문제 :
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Development/Forum/etc/GPLv3
- FSF 의 GPLv3 소개 :
http://gplv3.fsf.org/


" The Apache Software Foundation believes that you should always try to obey the constraints expressed by the copyright holder when redistributing their work. "
  -
from ASF

"The only way to make software development safe is to abolish software patents, and we aim to achieve this some day. But we cannot do this through a software license. Any program, free or not, can be killed by a software patent in the hands of an unrelated party, and the program's license cannot prevent that. Only court decisions or changes in patent law can make software development safe from patents. If we tried to do this with GPLv3, it would fail. "
  - from Why Upgrade to GPLv3

오픈소스 라이센스의 세계도 자유소프트웨어 vs 오픈소스 진영으로 의견이 나뉜다.
논의의 핵심은 이 부분일것이다.
"GPL을 지지하는 측에서는 BSD라이센스를 선택하는 것은 기업들이 소스를 변형하여 2차 저작물을 작성하여 이에 대해 독점적인 라이센스 정책을 취할 것이며, 일반인들의 자유사용이 제한되므로 진정한 자유소프트웨어는 될 수 없을 것이라고 비판한다."

뭐가 좋은지 나도 모르겠다. 그냥 이런걸 어떨까.
" 이 소프트웨어는 이렇게 말할때 적용되는 법에 적용받는다. "

주요 오픈소스 라이센스
(출처 : http://wiki.kldp.org/wiki.php/OpenSourceLicenseGuide )

GPL 2.0
GPL은 현재 가장 많은 OpenSource 소프트웨어가 채택하고 있는 라이센스이다. OpenSource 라이센스들 중에서 가장 많이 알려져 있고 의무사항들도 타 라이센스에 비해 엄격한 편이다. GPL의 주요 내용은 다음과 같다.

  • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 GPL에 의해 배포된다는 사실 명시
  • 소프트웨어를 수정하거나 새로운 소프트웨어를 링크(Static과 Dynamic linking 모두)시키는 경우 GPL에 의해 소스 코드 제공해야 함.
  • Object Code 또는 Executable Form으로 GPL 소프트웨어를 배포하는 경우, 소스 코드 그 자체를 함께 배포하거나 또는 소스코드를 제공받을 수 있는 방법에 대한 정보 함께 제공해야 함
  • 자신의 특허를 구현한 프로그램을 GPL로 배포할 때는 GPL 조건을 준수하는 이용자에게는 로열티를 받을 수 없으며, 제3자의 특허인 경우에도 특허권자가 Royalty-Free 형태의 라이센스를 제공해야만 해당 특허 기술을 구현한 프로그램을 GPL로 배포하는 것이 가능

    LGPL 2.1
    FSF가 일부 Library에 GPL보다 다소 완화된 형태인 GNU Lesser General Public License (LGPL)를 만들어 사용하고 있는 이유는 오픈 소스 소프트웨어의 사용을 장려하기 위한 전략적인 차원에서이다. LGPL은 링크하는 소프트웨어의 소스코드를 공개할 필요가 없다는 점이 GPL과 가장 큰 차이점이다.

  • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 LGPL에 의해 배포된다는 사실 명시
  • LGPL Library의 일부를 수정하는 경우 수정한 Library를 LGPL에 의해 소스 코드 공개
  • LGPL Library에 응용프로그램을 링크시킬(Static과 Dynamic Linking 모두) 경우 해당 응용프로그램의 소스를 공개할 필요 없음. 다만 사용자가 Library 수정 후 동일한 실행 파일을 생성할 수 있도록 Static Linking시에는 응용프로그램의 Object Code를 제공해야 함
  • 특허의 경우 GPL과 동일함

    BSD License
    BSD(Berkeley Software Distribution) 라이센스는 GPL/LGPL보다 덜 제한적이기 때문에 허용범위가 넓다. 이는 BSD 라이센스로 배포되는 프로젝트가 미국 정부에서 제공한 재원으로 운영되었기 때문이다. GPL과의 차이점 중 가장 중요한 사항은 BSD 라이센스는는 소스코드 공개의 의무가 없다는 점이다. 따라서 BSD 라이센스의 소스 코드를 이용하여 새로운 프로그램을 개발하여도 새로운 프로그램의 소스 코드를 공개하지 않고 BSD가 아닌 다른 라이센스를 적용하여 판매할 수 있다. 주요 내용을 요약하면 다음과 같다.

  • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시
  • 수정 프로그램에 대한 소스 코드의 공개를 요구하지 않기 때문에 상용 소프트웨어에 무제한 사용가능

    Apache License
    아파치 라이센스는 아파치 웹서버를 포함한 아파치 재단(ASF: Apache Software Foundation)의 모든 소프트웨어에 적용되며 BSD 라이센스와 비슷하여 소스코드 공개 등의 의무가 발생하지 않는다. 다만 "Apache"라는 이름에 대한 상표권을 침해하지 않아야 한다는 조항이 명시적으로 들어가 있고, 특허권에 관한 내용이 포함되어 BSD 라이센스보다는 좀더 법적으로 완결된 내용을 담고 있다. 특히 Apache License 2.0에서 특허에 관한 조항이 삽입되어 GPL 2.0으로 배포되는 코드와 결합되는 것이 어렵다는 문제가 었었는데, GPL 3.0(안)에서는 이 문제를 해결하여 아파치 라이센스로 배포되는 코드가 GPL 3.0으로 배포되는 코드와 결합하는 것이 가능해졌다.
  • http://www.apache.org/licenses/

    MPL(Mozilla Public License)

    MPL은 Netscape 브라우저의 소스코드를 공개하기 위해 개발된 라이센스이다. MPL은 공개하여야할 소스코드의 범위를 좀더 명확하게 정의하였다. GPL에서는 링크되는 소프트웨어의 소스코드를 포함하여 공개하여야 할 소스코드의 범위가 모호하게 정의되어 있지만 MPL에서는 링크 등의 여부에 상관없이 원래의 소스코드가 아닌 새로운 파일에 작성된 소스코드에 대해서는 공개의 의무가 발생하지 않는다. 따라서 MPL 소프트웨어 그 자체는 어떻게 하든 공개를 해야 하지만 원래 소스코드에 없던 새로운 파일들은 공개하여야 할 의무가 발생하지 않으므로 GPL에 비해 훨씬 명확하다. 주요 내용을 요약하면 다음과 같다.
  • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 MPL에 의해 배포된다는 사실을 명시
  • MPL 코드를 수정한 부분은 다시 MPL에 의해 배포
  • MPL 코드와 다른 코드를 결합하여 프로그램을 만들 경우 MPL 코드를 제외한 결합 프로그램에 대한 소스코드는 공개할 필요가 없음
  • 소스코드를 적절한 형태로 제공하는 경우, 실행파일에 대한 라이센스는 MPL이 아닌 다른 것으로 선택가능
  • 특허기술이 구현된 프로그램의 경우 관련 사실을 ‘LEGAL’파일에 기록하여 배포


    참고 사이트

    KLDPWiki: 오픈소스 소프트웨어 라이센스 가이드
    Open Source Definition (10가지 조건이 있슴)
    Open Source License Category (OSS 에 승인된 라이센스 종류..많다--)
    공개소프트웨어 라이센스에 대하여 (첨부된 pdf 파일 있슴.)


  • Posted by ukmie
    ,

    LinkedHashMap 를 이용하여 간단하게 LRU(leat-recently-used) 캐쉬를 구현할 수 있다.
    여러가지 캐쉬 알고리즘과 솔루션들을 상황에 따라 고를 수 있지만, 간단한 캐쉬 기능이 필요한 경우
    유용하게 쓸수 있다.

    import java.util.LinkedHashMap;
    import java.util.Collection;
    import java.util.Map;
    import java.util.ArrayList;
    public class LRUCache<K,V> {
    private static final float   hashTableLoadFactor = 0.75f;
    private LinkedHashMap<K,V>   map;
    private int                  cacheSize;

    public LRUCache (int cacheSize) {
       this.cacheSize = cacheSize;
       int hashTableCapacity = (int)Math.ceil(cacheSize / hashTableLoadFactor) + 1;
       map = new LinkedHashMap<K,V>(hashTableCapacity, hashTableLoadFactor, true) {
          // (an anonymous inner class)
          private static final long serialVersionUID = 1;
          @Override protected boolean removeEldestEntry (Map.Entry<K,V> eldest) {
             return size() > LRUCache.this.cacheSize; }}; }
    /**
    * The retrieved entry becomes the MRU (most recently used) entry.
    */

    public synchronized V get (K key) {
       return map.get(key); }
    /**
    * If the cache is full, the LRU (least recently used) entry is dropped.
    */

    public synchronized void put (K key, V value) {
       map.put (key,value); }
    public synchronized void clear() {
       map.clear(); }
    public synchronized int usedEntries() {
       return map.size(); }
    public synchronized Collection<Map.Entry<K,V>> getAll() {
       return new ArrayList<Map.Entry<K,V>>(map.entrySet());
    }


    // 4test..!



    public static void main (String[] args) {
        LRUCache<String,String> c = new LRUCache<String,String>(3);
        c.put ("1","one");                            // 1
        c.put ("2","two");                            // 2 1
        c.put ("3","three");                          // 3 2 1
        c.put ("4","four");                           // 4 3 2
        if (c.get("2")==null) throw new Error();      // 2 4 3
        c.put ("5","five");                           // 5 2 4
        c.put ("4","second four");                    // 4 5 2
        // Verify cache content.
        if (c.usedEntries() != 3)              throw new Error();
        if (!c.get("4").equals("second four")) throw new Error();
        if (!c.get("5").equals("five"))        throw new Error();
        if (!c.get("2").equals("two"))         throw new Error();
        // List cache content.
        for (Map.Entry<String,String> e : c.getAll())
           System.out.println (e.getKey() + " : " + e.getValue());
    }

    } 
     
    참고: http://www.source-code.biz/snippets/java/6.htm
    http://dojeun.egloos.com/317868
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/LinkedHashMap.html

     
    Posted by ukmie
    ,

    장윤석/SAS코리아 차장

    EDW(Enterprise Data Warehouse)는 기존 DW(Data Warehouse)를 전사적으로 확장한 모델인 동시에 BPR과 CRM, BSC 같은 다양한 분석 애플리케이션들을 위한 원천이 된다. 따라서 EDW를 구축하는 것은 단순히 정보를 빠르게 전달하는 대형 시스템을 도입한다는 의미가 아니라 기업 리소스의 유기적 통합, 다원화된 관리 체계 정비, 데이터의 중복 방지 등을 위해 시스템을 재설계 하는 것으로 이해해야 한다.
    데이터 웨어하우징(Data Ware-housing)의 개념은 기간계의 주요 데이터를 주제별로 통합하여 현업 부서의 정보분석 요구를 신속히 충족시키는 시스템을 의미한다. 이를 위해 기업의 정보기반이 되는 인프라를 구축하고 이를 IT부서의 도움 없이 액세스하는 방법을 제공하게 된다. EDW는 이 개념을 기업의 전사적인 영역으로 확장시킨 개념이라고 볼 수 있다.
    그렇다면 EDW의 범주를 어디까지 보아야 할까? 기업에서 최근 일반적으로 구성되는 표준 모델의 형태는 <그림>과 같다.

    <그림>에서 보면 이전과 같이 전면에 포지셔닝 되는 그림이 아닌 BI(Business Intelligence) 애플리케이션을 위한 데이터 인프라로서의 역할이 강조되는 것을 확인할 수 있다. 이와 같이 EDW란 것은 이전의 DW를 전사적으로 확장하려고 하는 부분에서 생긴 다양한 시스템간의 인터페이스와 데이터 통합, 표준화 등을 중요시한 DW의 확장 모델인 동시에 기업 정보에 관한 프로세스의 표준화와 개선, 즉 BPR적 영역을 포함한다. 또한 CRM, BSC 같은 다양한 분석적 애플리케이션들을 위한 데이터의 원천이 된다.

    EDW의 출현 배경

    IT시장에 DW의 개념이 나오고 일반화된지 거의 10년이 되어가고 있지만 초기의 정의와 역할과는 다르게 최근 DW의 의미는 거의 분석계 플랫폼의 전체를 지칭하는 명사로 인식되고 있다. 단순히 데이터를 주제별로 통합해 OLAP 시스템을 통한 다차원의 분석을 가능케 하는 초기 정의와는 달리 2000년대 들어서는 정제되고 통합된 데이터를 거의 모든 BI 애플리케이션(ABM, BSC, CRM 등)에게 제공해 주는 데이터 인프라 측면이 강조되었다.
    이에 따라 ABM, BSC, 혹은 CRM 프로젝트란 이름 하에 각 시스템의 분석 마트를 설계하는 프로젝트들이 진행되어 왔다. 또한 근래에 들어서는 RTE(Real Time Enterprise), EAI와의 연동을 통한 좀더 기술적, 비즈니스적으로 진보된 플랫폼으로 구축하려는 시도를 보이고 있다.
    사실 처음 EDW란 용어가 시장에 나왔을 때 당혹해 하는 사람들도 많았을 것이다. DW 시장 도입 초기단계에서는 시스템 발전에 따른 비용부담의 감소로 인해 이전에 할 수 없었던 대용량의 데이터 분석이 가능해졌고, 이로 인해 기업 내 데이터의 전사적인 인프라 구축과 정보 조회가 가능하다고 소개를 했다.
    하지만 이후 단순한 데이터만으로는 사용자의 다양한 구미에 맞는 모든 경우의 주제 모델링이 불가능해지자 각각의 목적에 맞게 데이터 마트를 구축하는 것이 흐름으로 이어져 새로운 DW 구축 프로젝트를 만들어 나가기 시작했다. 그러나 데이터 마트도 기본적으로는 DW를 잘 설계했다면 불필요한 모델이었을 것이다.
    그 러나 중요한 것은 각 벤더의 이해가 달린 새로운 개념의 출현이 아니다. 새로운 개념이 출현했다고 해서 꼭 그것을 반영하고 도입해야 할 이유도 없고, 그것이 정답이 될 수도 없기 때문이다. 중요한 것은 각 기업의 상황에 맞는 가장 적절하고 유용한 시스템을 구축하는 것이다. 이는 DW 도입의 초기 단계에서부터 줄곧 주장되어 온 것으로 현재의 상황에서도 적합한 말이다. 단지 그것이 확장되고 진보되었을 뿐이다.
    DW가 한 순간의 유행으로 끝나지 이유는 기업의 정보 데이터 인프라를 구축하는 최적의 개념이고 필수적인 요소이기 때문이다.

    EDW의 이슈와 과제

    각 컨설팅업체와 벤더들 사이에서 EDW에 대한 나름의 이론을 내놓고 있다. 기업 운영 과정에서 생산되는 전체 데이터를 한 통에 남김없이 모두 적재해 데이터의 중복을 방지하고 동기화를 보장해야 한다거나, 여러 종류의 마트 중심으로 데이터를 구축하는 것이 차후의 여러 BI 시스템의 확장에 유연하게 대처할 수 있다는 등 벤더 위주의 정의들을 내리고 있다.
    그러나 실제 이상주의적인 개념들과는 달리 현실 세계에서의 EDW 구축에서는 정답이 없다는 것이 필자의 생각이다. 실제로 많은 회사에서 DW를 구축했고, 부서 단위의 분석 마트를 운영하며, 업무의 효율을 높이기 위해 노력하고 있다,
    이들 또한 데이터들의 전사적인 관리와 통합이라는 측면에서 EDW 프로젝트를 준비하고 있는 것이 사실이다. 그러나 실제 EDW 프로젝트가 수행된 결과물을 보면, 단지 지금까지 있었던 DW를 크게 만들어 놓은 것과 크게 다르지 않아 보인다. I/O를 확장하고, 모델이 전사 영역으로 확장되고, CRM 등의 프론트 오피스를 하나 얹어 놓는 등의 형태로 구축되는 것이 현재 거의 모든 사이트에서 진행되는 EDW의 형태인 것이다.
    물론 전사영역으로 확장하는 것만으로도 충분히 많은 경비와 인력과 노력을 요하는 것은 사실이다. 그러나 과연 이것이 EDW의 전부일까? 물리적으로 데이터를 모아놓는다는 측면에서만 생각하면 이같은 형태를 EDW라고 할 수도 있지만 진정한 기업의 인프라로서의 EDW란 데이터 측면만으로 부족하다.
    기업 데이터를 하나의 분석플랫폼에 모아놓으려는 의도는 무엇인가? 모든 데이터의 접근성을 용이하게 하고, 각 데이터의 주제적 연관성을 보장하여 기업이 가진 정보의 가치를 높이는 것이 EDW라 하면 이 작업은 데이터의 수집만이 아닌 프로세스 개선과 POS에서 백오피스, 분석계까지의 모든 데이터 표준화와 동기화를 말하는 것이다.
    이를 위해 필요한 것은 몹시 크고 빠른 공룡 같은 새로운 시스템을 도입하는 것이 아니다. 기업들이 모든 리소스들의 아키텍처 개선을 통한 유기적인 통합과 다원화된 관리 체계를 재정비하여 불필요하게 낭비되는 관리비용을 줄이고, 데이터의 중복을 방지할 수 있는 방향으로 시스템을 재설계 하는 것이 EDW의 중요한 초석일 것이다.
    EDW의 기술적 문제점 시스템이 빨라지고 가격이 낮아져 대용량의 데이터를 처리할 수 있게 됐다고 하지만 그 속도에 맞추어 분석에 대한 요구도 복잡해지고, 데이터의 수도 크게 늘어난 것이 사실이다. 이에 따라 DW의 초기부터 논의되고 시간이 지나면 해결될 것으로 봤지만 여전히 해결되지 않고 있는 부분이 몇 가지 있다.
    우선 추출에서의 Real Time, 즉 실시간 데이터 처리 문제와 인덱스의 발전에도 불구하고 수GB 이상의 테이블 간 결합을 통한 대량의 데이터 분석 문제, DRS 등으로 표현되는 백업과 복구에 관한 문제 등이 그것이다. 특히 EDW에서는 이와 같은 처리의 중요성이 더욱 부각되고 있지만 현재 시장에 나와 있는 기술로는 완벽한 해결책을 제시하지 못하고 있다.
    실시간 처리의 대안으로 EAI 또는 DB의 로그를 처리하는 기술이 부각되고 있지만, 이 역시 많은 코딩을 필요로 하고 실시간으로 요약 데이터에 반영해줄 수는 없다. 실제 OLTP를 사용하는 것과 같은 EDW에 변경 분을 반영하는 것은 적어도 향후 5년 정도 뒤에나 가능할 것으로 보인다.
    또한 대량의 트랜잭션을 처리하는 기업과 통신사의 콜 데이터나 은행의 트랜잭션들은 발전된 하드웨어의 속도가 무색할 정도로 증가하고 있다. 하루에도 수십 GB씩 쌓이는 이들 데이터를 처리하고 분석하기 위해 파티션 기법, 비트맵 인덱싱들의 기술들이 사용되고 있으나 근본적인 문제의 해법을 제시해 주지 못하고 있다.
    한편 백업의 경우에는 각 DB 벤더들이 솔루션을 보유하고 있고, 나름의 복구 방안을 제시하고 있지만 사용이 어렵고 신뢰성도 부족하기 때문에 전체 파일 시스템의 백업 방법을 쓰고 있는 회사가 대부분이다.
    EDW 는 그 기술의 근간을 RDBMS에 두고 있다. 이는 분석의 한계 역시 SQL의 영역에 국한됨을 의미한다. 이러한 약점에 따라 이전의 OLTP용 DB를 사용할 경우는 MOLAP을 DW의 부가적인 분석을 제공하는 시스템으로 구축하고 마트를 만들어 왔다.
    그 러나 분석 전용 DB의 등장과 ROLAP 툴의 발달로 MOLAP은 서서히 그 효용가치를 잃어가고 있는 상황이다. 그러나 이와 같은 관계형 DB기술의 발달에도 불구하고, 여전히 관계형 DBMS는 사용자의 고차원적인 분석 욕구를 해결해 주지 못하고 있는 것 또한 현실이다.

    EDW 시장 동향

    근래 들어 전 산업에 걸쳐 고르게 EDW의 수요가 증가하고 있다. 작년 한해 동안 금융권에서는 조흥은행, 우리은행, 국민은행 등이 구축을 완료하거나 현재 진행 중이고 현대카드, 신용보증기금, 대한생명, 농협, 교보생명, 우리증권 등이 올해 신규로 EDW를 준비중이다. 또 제조·유통 쪽에서는 롯데백화점, 신세계 이마트, 제일모직, LG패션 등이 지난해 구축을 완료했거나 현재 진행 중이다.
    통신산업에서는 KT가 현재 전사적인 EDW를 진행 중이고, 정보통신부도 각각의 업무 부서별로 여러 건의 DW 프로젝트가 진행 중이거나 신규도입을 준비하고 있다. 이외에도 연세의료원, 건국대 병원 등 많은 종합 병원들이 올해 DW의 도입을 계획하고 있는 상황이다.
    근래에 와서 BI 애플리케이션의 수요가 증가하고 있다. 이는 기존의 모델링 방법론의 실패 요인을 줄이는 한편 각 인더스트리의 선진 기술에 프로세스를 맞추어 개발 기간을 단축하고, 많은 부분이 표준화되어 있는 리포지토리를 도입해 업무의 효율을 높이려는 시도라고 볼 수 있다.
    그렇다면 높은 비용에도 불구하고 OLAP 툴을 쓰는 이유는 무엇일까? 이는 기존의 OLTP 시스템 개발과 같이 충분히 개발을 할 수 있는 기술이 있음에도 미리 개발되어 있는 컴포넌트들을 사용함으로써 빠른 시간에 프로젝트를 완료하고, 완성도 높은 분석을 제공하기 위함이다.
    이러한 BI 애플리케이션들이 아무리 좋은 선진 프로세스와 첨단 기능을 제공한다할 지라도 기존 분석의 근간이 되는 데이터가 부족하고 데이터의 신뢰성이 없다면 또 하나의 유행에 의한 시스템이 될 뿐이다.
    이러한 문제의식은 기반 데이터의 통합과 정제라는 기본에서 출발해야 하는 공통의 인식을 가지게 하였고, 거의 모든 기업에서 EDW는 필수적인 정보인프라로 자리매김하게 된 것이다.
    또한 기존에 EDW를 구축한 기업에서는 고도화를 통해 새로운 활용처를 모색하게 되었고, 보다 고급화되고 정밀한 분석을 위해 즉시성의 데이터 요구가 생기게 되었다.
    이 를 위해 기존의 일 배치나 월 배치의 형태에서 벗어나 데이터의 업데이트 주기를 최소화하는 Near Real Time 처리 방법에 대한 논의가 활발하게 이루어지고 있으며 기존의 DW, OLAP의 분석으로 만족할 수 없었던 집단(마케팅이나 정보분석실과 같은 부서)을 위해 IT의 주도 하에 이루어지던 주제 영역의 모델링, 데이터 조작 등의 작업 주도권과 사용권한을 사용자에게 줄 수 있는 고급분석 시스템에 대한 요구가 증가하고 있다.

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

    Posted by ukmie
    ,
    몇가지 방법이 있지만 이게 젤 편한것 같다. 근데도 맨날 까먹는다.--
    또다른방법:http://radiocom.kunsan.ac.kr/lecture/mysql/user_add.html
    MySQL매뉴얼: http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&lang=k

    mysql> create database ontowiki;
    Query OK, 1 row affected (0.01 sec)

    mysql> grant all on ontowiki.* to ontowiki@localhost identified by 'xxx'
        -> with grant option;
    Query OK, 0 rows affected (0.01 sec)

    Posted by ukmie
    ,