https://www.ibm.com/developerworks/kr/


developerWorks 소개



한국 developerWorks 소개

개발자를 위한 정보포탈인 developerWorks 웹사이트에 방문해 주신 여러분을 환영합니다.

developerWorks는 IBM이 제공하는 다양한 개발자 지원 프로그램들을 통칭하는 명칭으로, 본 developerWorks 웹사이트는 국내 개발자에게 도움이 될 수 있는 최신 IT 정보와 전세계 전문가의 기술문서를 제공합니다. 아울러 관련된 분야에 함께 일하는 다양한 개발자간의 의사소통을 통한 정보공유의 장으로서 역할도 제공하고자 합니다.

왼쪽 메뉴체계에서 알 수 있듯이, developerWorks 웹사이트에서는 그리드 컴퓨팅, 리눅스 등의 최신 기술영역과 IBM이 제공하는 미들웨어와 하드웨어를 포함하는 제품영역으로 구성되어 있습니다.

각 영역에는 영문으로 작성되는 전세계 개발자들의 기술문서를 번역하여, 매주 각 분야의 메인 페이지에 게시하고 있습니다. 아울러, 개발자에게 유용한 샘플코드, 튜토리얼, 뉴스, 신기술정보 등을 함께 게시하고 있으며, 국내 개발자들이 관심을 가지고 있는 주제의 기사들도 함께 게재할 예정입니다. (본 웹사이트 각 분야에 대한 설명은 사이트맵을 참조하여 주세요.)


웹사이트 방문자를 위한 프로그램

developerWorks 번역기사를 추천해주세요! 
디벨로퍼웍스 영문사이트에서 한글로 번역했으면 좋겠다고 생각한 기사가 있었나요? 꼭 필요한 디벨로퍼웍스 기사가 한글로 번역이 안되어있어 답답했던 경험이 있으세요?지금 디벨로퍼웍스 기사중 번역되었으면 하는 기사를 추천해주세요! developerWorks 영문사이트에서 보신 좋은 기사의 한글 번역을 요청하고 싶으신 분은 해당 기사의 URL과 추천 이유를 간략히 정리하여 dWkorea@kr.ibm.com 메일로 요청해주십시오.

developer CoD(Contents on Demand) - 원하는 주제를 알려주세요!
developerWorks에 소개되었으면 하고 애타게 바라던 주제가 있으신가요?
관심 있는 기술에 대한 전문가의 지식과 견해가 궁금하세요? 
그렇다면, developer CoD 코너에 컨텐츠로 제작되길 원하는 주제를 신청해주세요! 해당 분야의 국내 전문가를 필자로 섭외해, 여러분이 원하는 주제에 대한 맞춤형 컨텐츠를 제작해드립니다.

developer CoD 신청양식 다운로드  Word document   HWP file

Open developerWorks - 디벨로퍼웍스의 필자가 되어주세요!
전문가의 글을 단순히 ‘보는 것’ 뿐만 아니라, 직접 여러분이 developerWorks의 필자가 될 수 있습니다. IBM developerWorks를 통해 공유하고 싶은 지식이 있으신 분들은 원고 기획안을 접수해주세요. 원고 기획안이 채택되면, developerWorks에서 직접을 연락을 드려 원고 작성을 도와드릴 것입니다. 원고가 실제 게재된 분에게는 소정의 원고료(원고지 장당 3000원, A4 5p 기준 15만원 상당)를 지급합니다. Open developerWorks를 통해 당신의 지식을 공유하시기 바랍니다! 
필자 지원하기

웹사이트 글작성
본 웹사이트에 게시된 모든 문서는 별도의 로그인 과정없이 검색하실 수 있습니다. 그러나, 개인의 정보를 필요로 하는 일부 서비스(포럼 기고, 글작성 등)는 사용자 등록후에 이용이 가능함을 양해해 주시기 바랍니다.

포럼 참여
웹사이트내에는 각 분야별로 포럼페이지가 운영되고 있습니다. 포럼페이지는 기술주제별로 관심사항에 대해 글을 올리고 개발자간에 의견을 나누는 공간입니다. 궁금하신 점이 있다면 포럼페이지를 통해 해결하세요.

영문기사 번역 요청
영문 developerWorks 웹사이트에서 국내 개발자에게 도움이 될만한 좋은 글을 보셨다면 담당자(dwkorea@kr.ibm.com)에게 알려주세요. 다른 개발자들과 함께 공유할 수 있도록 우리말로 번역하여 웹사이트에 게시하겠습니다.

웹사이트 오역 정정
developerWorks 운영팀은 외국에서 작성된 유익한 기술문서를 골라, 경험이 풍부한 전문번역가를 통해 번역하여 검수를 마친 후 웹사이트에 게시하고 있습니다. 그러나, 이 과정에서 일부 부자연스러운 표현이 있을 수 있습니다. 웹사이트에 게시된 글중 오역이나 잘못된 부분을 보시게 되면 담당자(dwkorea@kr.ibm.com)에게 알려주세요.


기타 제안

IBM 운영진은 developerWorks 웹사이트를 통해 국내 개발자 여러분의 기술력 향상에 작은 도움이 되고자 합니다. 보다 나은 서비스를 위해 좋은 제안이 있다면 담당자(dwkorea@kr.ibm.com)에게 알려주세요.

Posted by Gwoong
,

dW Live! 세미나 ‘웹 개발 다반사’



technical briefings


날로 다양하고 흥미로운 웹 개발 기술과 방법들이 소개되고 있습니다. 복잡 다단한 웹 개발 방식과 노하우를 공유할 수 있는 자리가 마련됩니다. 개발자 정보 포탈, IBM developerWorks에서 ‘웹 개발 다반사’라는 주제로 오는 12월 5일(토)에 dW Live! 세미나를 개최합니다. 새로운 형식의 발표 세션(Pecha Kucha)과 토론 세션(개발자들의 수다)을 곁들인 dW Live! 세미나에서 웹 개발에 대한 다양한 경험과 고민을 공유하시기 바랍니다.

 

진행 방식
Pecha Kucha 형식으로 발표 세션을 진행합니다. ‘웹 개발’ 범주 안의 주제라면, 누구나 발표를 신청할 수 있습니다. 단, 발표 형식은 Pecha Kucha 형식을 지향합니다. 15장의 슬라이드를 장당 30초씩 발표합니다.

* Pecha Kucha란?
‘재잘재잘 이야기하다’라는 뜻의 일본어로, 일본의 건축가들이 처음 채용한 발표 형식.
원래 형식은 20장의 슬라이드를 장당 20초씩 총 400초(약 6.7분) 동안 발표.
참고: http://en.wikipedia.org/wiki/Pecha_Kucha


행사 일정

  • 일시: 12월 5일 (토) 오후 1:30 ~ 6:00
  • 장소: 도곡동 군인공제회관 23층 온디맨드홀[약도]
  • 아젠다
  • 시 간 세 션
    13:00 ~ 13:30     등 록
    13:30 ~ 14:30     웹 2.0과 클라우드 컴퓨팅을 위한 플랫폼, sMash | 한국IBM 최진호
    14:30 ~ 14:40     휴식
    14:40 ~ 16:00     Pecha Kucha 형식의 발표 세션
    16:00 ~ 16:20     휴식 & 수다 주제 선정
    16:20 ~ 17:30     개발자들의 수다
    17:30 ~ 17:50     공유 & 정리

발표 신청

  • 발표하고 싶은 주제와 간략한 내용을 연락처와 함께 메일(dwkorea@kr.ibm.com)로 보내주세요. (발표 신청 마감: 11월 27일 금요일 저녁 6시)
  • 발표 신청은 선착순으로 접수되며, 신청자에게는 개별 연락을 드릴 예정입니다.
  • 최종 선정된 발표 주제와 발표자는 행사 페이지에 지속적으로 업데이트될 예정입니다.
  • Pecha Kucha 최종 선정 결과

    * 괜찮은 오픈 API 제공하기 + VLAAH API 소개 - 홍민희
    * 봄싹 싸이트(http://springsprout.org) 개발 협업 방법 및 사용 기술 - 백기선
    * 코드 품질 포탈 SONAR 적용기 - 고경철
    * 흑백무성영화한편! (HTTP) - 이동욱
    * 자바스크립트 삽질(실수?) 베스트 10 - 장동수
    * (Startup기업 CEO의 관점에서 본) 기술의 경제학 - 정지웅
    * Realtime Web 간보기 - 김석준
    * Spring Framework with JavaFX - 이승철
    * 추상 계층의 딜레마 - 황대산
    * timelog 업무 적용 실험기 - 송승렬

참가 신청
     참가 신청하기

문의

  • 주차 지원이 되지 않으니, 대중교통을 이용해주시기 바랍니다.
  • 문의: dwkorea@kr.ibm.com
Posted by Gwoong
,

서버 가상화 환경에서 구동 최적화

IBM WebSphere® Application Server Hypervisor Edition은 개발자들과 IT 아키텍트들에게 혁신적이고 성능에 기반한 토대를 제공하여 가상 환경 내에서 SOA (Service Oriented Architecture) 애플리케이션 및 서비스를 빌드, 재사용, 가동, 통합 및 관리함으로써 비즈니스 민첩성을 강화하도록 지원합니다.


IBM WebSphere Software 는 업계에서 가장 광범위하고 가장 완벽하게 비즈니스 통합을 지원하는 미들웨어 제품군으로 사람, 프로세스 그리고 정보의 협업과 업무 유연성을 지원합니다.

WebSphere 는 광범위한 비즈니스 리더쉽을 제공하며, 어려운 비즈니스 환경(예: 운영 효율성의 증가, 고객 충성도 강화, 이기종 시스템의 통합)에 직면한 기업들의 필요에 맞게 전개될 수 있습니다.

온 디맨드 비즈니스를 위한 업계를 선도하는 소프트웨어 플렛폼으로 이미 그 성능이 입증되어 신뢰할 수 있는 소프트웨어 포트폴리오를 갖추고 있습니다.

특징
  • 주요 애플리케이션 웹으로 확장 가능
  • 내부와 외부의 프로세스 통합
  • 고객, 공급업체, 파트너, 직원 등의 협업을 통해 일의 효율성 향상
  • 업계 선두적인 SOA 기술력 토대
Express 제품 리스트
WebSphere Software
WebSphere Application Server Express 기본 메시징 플로우 및 응용프로그램을 위한 비용 효과적인 통합 기반 플랫폼을 제공
WebSphere MQ 모든 주요 네트워킹 시스템의 전반에 걸쳐 35개 이상의 플랫폼상에서 간단하고 일관성 있는 프로그래밍 인터페이스 또는 비간섭 어댑터를 통하여 애플리케이션을 연결



Posted by Gwoong
,
JDBC를 통한 오라클 접속

1. 드라이버 유형
유형 1. JDBC-ODBC 브리지
  JDBC와 ODBC를 연결해서 데이터베이스에 접근할 수 있는 기능을 제공
유형2. Native API-부분 자바 드라이버
  자바에서 C/C++ 과 같은 다른 언어들에 내장된 DB에 접근하기 위한 네이티브 API를 호출 할 수 있도록 해준다.
유형 3. JDBC-Net 순수 자바 드라이버
  JDBC호출을 DBMS 에 독립적인 네트워크 프로토콜로 변환시킨다.
유형 4. 네이티브 프롴토콜 - 순수 자바 드라이버
  100%순수 자바 드라이버.


2. 간단한 JDBC 애플리케이션
DBConnection 클래스의 논리적인 흐름
JDBC클래스 import -> JDBC드라이버 등록 -> 접속 생성 -> 생성 문장 -> 문장 실행 -> 결과 처리 -> 리소스 달기


다음은 JDBC를 이용하여 orcle db에 연결하는 간단한 소스.

import java.sql.*;

public class DBConn{
    public static void main(String args[]){
        if(args.length<3){
            System.out.println("Syntax Error : DBConn [url] [user] [pass]");
            System.exit(-1);
        }
       
        String url=args[0];
        String username=args[1];
        String password=args[2];
       
        String sql="select object_name, object_type from user_objects";
        String objName, objType;
       
       
        try{
            System.out.println("Step01. Registering JDBC Driver");
            DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
           
            System.out.println("Step02. Establishing conn to :"+url);
            Connection con=DriverManager.getConnection(url,username,password);
            System.out.println("---->> Connected to oracle");
           
            System.out.println("Step03. Creating SQL statement");
            Statement st=con.createStatement();
           
            System.out.println("Step04. executing SQL");
            ResultSet rs=st.executeQuery(sql);
           
            System.out.println("Step05. Printing results");
            while(rs.next()){
                objName=rs.getString("object_name");
                objType=rs.getString("object_type");
               
                System.out.println("     *"+objType+" " +objName);
            }
           
            System.out.println("Step06. Closing JDBC objects");
            rs.close();
            st.close();
            con.close();
        }catch(SQLException e){
            System.out.println("The folowing error : "+e);
        }
       
       
    }


소스는 주석을 달지 않아도 될 정도로 간단하다.

그러나, 실행하는데 있어서 대여섯개의 에러를 만났다 -_-;;

오류 유형 1. Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver

CLASSPATH에 jdbc의 library를 미추가 한 경우이다.

$ORACLE_HOME/jdbc/lib/ 에는 4개의 jar 파일이 있는데, (11g 기준)
이들을 CLASSPATH에 설정해주어야 한다.

자신의 계정의 dir에 보면 .profile이 있다.
이를 열어서,
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/ojdbc5.jar:$ORACLE_HOME/jdbc/lib/ojdbc6.jar를 써주고, 또,
export LD_LIBRARY_PATH=$ORACLE_HOME/jdbc/lib 라고 추가로 써준다.
($ORACLE_HOME 이라는 변수가 이미 설정되어 있어야 함은 물론이다. 또한 이보다 더 자세한 정보는
$ORACLE_HOME/jdbc/ 안에 Readme.txt 파일이 친절하게 들어있다.)

위에 .profile에 설정을 했다면, 당장 바로 그 설정이 적용되는 것이 아니다. (재부팅 시 적용)
그러므로 source .profile 이라는 명령어로 당장 설정 파일을 적용한다. (.profile 이 있는 경로에 있다 치자)

이렇게 설정을 하고선 다시 javac DBConn.java 를 하면.. 컴파일이 깔끔하게 된다!!
(아니면 임시방편으로 컴파일할때만 lib 를 추가할 수도 있다. ==> javac -classpath $ORACLE_HOME/jdbc/lib/ojdbc5.jar DBConn.java )

오류 유형2. java.sql.SQLException: No suitable driver found for jdbc
위처럼 컴파일을 끝내고 나서 DBConn 을 실행하는데, 다음과 같이 실행한다.

$> java DBConn jdbc:oracle:thin:@localhost:1521:orcl username password

여기서 jdbc:oracle 부분은 같고, thin 이라는 것은 jdbc 의 타입인데, 자세한것은 검색하자. (oci 유형이 있다고 나와있다)
@localhost 부분은 db 서버의 이름을 써주고, 1521은 포트 번호이다. (설치시 건드리지 않았다면 디폴트로 1521이므로 그대로 적는다)
orcl은 SID라고 해서 오라클 인스턴스의 이름이다. 이 역시 설치시 기본으로 orcl이라는 인스턴스가 생성이 되니 적는다. (orcl 말고 다른 인스턴스가 있다면 그 인스턴스를 적는다)

(만약 내가 어떤것인지 정확히 모르겠다면,
$ORACLE_HOME/network/admin/tnsnames.ora 파일을 보면,
HOST =  이부분이 localhost 와 매치되고,
PORT = 이부분이 1521과 매치되고,
SERVICE_NAME= 이부분이 orcl 과 매치된다. )

자 이제 username과 password를 넣고 (sysdba계정도 되고, 자신이 직접 추가한 게정도 된다. )
수행을 한다...

java DBConn jdbc:orcale:thin:@localhost:1521:orcl jiwoong jiwoong
Step01. Registering JDBC Driver
Step02. Establishing conn to :jdbc:orcale:thin:@localhost:1521:orcl
The folowing error : java.sql.SQLException: No suitable driver found for jdbc:orcale:thin:@localhost:1521:orcl

다음과 같은 오류가 나왔다....쉽게 되는법이 없어 -_-;;
이 오류는 역시 위와 비슷하게 jdbc를 위한 적절한 드라이버가 없다는 내용인데.. 검색을 해보면
classpath 이야기 뿐이다.. 뭐지??

jiwoong@easy-pc:/oracle/11g/network/admin$ source ~/.profile

jiwoong@easy-pc:/oracle/11g/network/admin$ env|grep PATH
LD_LIBRARY_PATH=/oracle/11g/jdbc/lib
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jiwoong/java/bin:/oracle/11g/bin:/home/jiwoong/java/bin:/oracle/11g/bin:/home/jiwoong/java/bin:/oracle/11g/bin:/home/jiwoong/java/bin:/oracle/11g/bin
CLASSPATH=.:/home/jiwoong/java/jre/lib/ext:/home/jiwoong/java/lib/tools.jar:/oracle/11g/jdbc/lib/ojdbc5.jar:/oracle/11g/jdbc/lib/ojdbc6.jar

이것은 내 환경 설정인데, classpath에 보면 ojdbc5와 ojdbc6가 잘 등록 되어있다... 그런데도 왜 안되지??
한참 생각하다가 문득 떠오르는게 있었다.

아까전에 $ORACLE_HOME/jdbc/에 Readme.txt 를 읽었었는데, jdk 1.5를 쓴다면 ojdbc5를 등록하고, jdk1.6을 쓴다면 ojdbc6을 등록하라 했던거 같은데.. 내가 현재 jdk1.6을 설치했으니.. javac 로 컴파일을 아무옵션 주지 않고 했다면.. 분명 1.6 버전으로 컴파일이 되었을 건데,
위의 classpath에는 1.5버전을 위한 jdbc가 먼저 등록이 되어있기 때문에 충돌이 난게 아닐까.. 라는생각..

부랴부랴 javac -source 1.5 DBConn.java 로 컴파일을 하고,
다시 , java DBConn ~~~ 를 해주었다...


오류 유형 3. The Network Adapter could not establish the connection

jiwoong@easy-pc:~/workspace/DBConn/src$ javac -source 1.5 DBConn.java
jiwoong@easy-pc:~/workspace/DBConn/src$ java DBConn jdbc:oracle:thin:@localhost:1521 jiwoong jiwoong
Step01. Registering JDBC Driver
Step02. Establishing conn to :jdbc:oracle:thin:@localhost:1521
The folowing error : java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection

아 역시... 해결은 되었지만 또다른 문제 -_-;;
역시 일단 검색을 했더니, 다양한 해결책들이 있었다..
책에는 jdbc 드라이버가 host나 리스너 포트를 인식하지 못해서 나온다고 한다..
ping localhost 를 하면 정상 확인이 되고,
리스너 포트를 확인하라길래, telnet localhost 1521로 했다가 안열려서 포트를 열어야 하나 했다..

그러다가 tnsping 이라는 리스너를 확인하는 oracle 프로그램을 알게 되었고,

jiwoong@easy-pc:~/workspace/DBConn/src$ tnsping localhost

TNS Ping Utility for Linux: Version 11.1.0.6.0 - Production on 03-NOV-2009 23:08:20

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

Used parameter files:
/oracle/11g/network/admin/sqlnet.ora

Used EZCONNECT adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
TNS-12541: TNS:no listener

마지막 라인에 보면 TNS : no listener 이라고 나와있다.. 이게 문제였던듯..

이제 리스너를 실행하기 위해서,

jiwoong@easy-pc:~/workspace/DBConn/src$ lsnrctl start

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 03-NOV-2009 23:09:20

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Starting /oracle/11g/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.1.0.6.0 - Production
System parameter file is /oracle/11g/network/admin/listener.ora
Log messages written to /oracle/diag/tnslsnr/easy-pc/listener/alert/log.xml
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12555: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
  TNS-00525: Insufficient privilege for operation
   Linux Error: 1: Operation not permitted

이런.. 퍼미션 에러다..

오라클 접속 유저인 oracle로 접속해서 다시 리스너를 실행시켰다.

oracle@easy-pc:/home/jiwoong/workspace/DBConn/src$ lsnrctl start

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 03-NOV-2009 23:10:36

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Starting /oracle/11g/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.1.0.6.0 - Production
System parameter file is /oracle/11g/network/admin/listener.ora
Log messages written to /oracle/diag/tnslsnr/easy-pc/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easy-pc)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.1.0.6.0 - Production
Start Date                03-NOV-2009 23:10:38
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/11g/network/admin/listener.ora
Listener Log File         /oracle/diag/tnslsnr/easy-pc/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easy-pc)(PORT=1521)))
The listener supports no services
The command completed successfully


위에 보면 리스너가 성공적으로 수행된것을 확인할수 있다.

이제 다시 tnsping ..


oracle@easy-pc:/home/jiwoong/workspace/DBConn/src$ tnsping localhost

TNS Ping Utility for Linux: Version 11.1.0.6.0 - Production on 03-NOV-2009 23:10:47

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

Used parameter files:
/oracle/11g/network/admin/sqlnet.ora

Used EZCONNECT adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
OK (10 msec)

오우... 드디어 리스너가 먹혔다...

에러유형 4. Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

jiwoong@easy-pc:~/workspace/DBConn/src$ java DBConn jdbc:oracle:thin:@localhost:1521:orcl jiwoong jiwoong
Step01. Registering JDBC Driver
Step02. Establishing conn to :jdbc:oracle:thin:@localhost:1521:orcl
The folowing error : java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl

아후.. 또 오류...
중간에 보면 SID라는 말이 나오자마자, 조금 본게 있어가지고 export SID=orcl을 해주고,
수행을 다시 했다..

jiwoong@easy-pc:~/workspace/DBConn/src$ export SID=orcl
jiwoong@easy-pc:~/workspace/DBConn/src$ java DBConn jdbc:oracle:thin:@localhost:1521:orcl jiwoong jiwoong
Step01. Registering JDBC Driver
Step02. Establishing conn to :jdbc:oracle:thin:@localhost:1521:orcl
---->> Connected to oracle
Step03. Creating SQL statement
Step04. executing SQL
Step05. Printing results
     *INDEX SYS_C009648
     *TABLE CREATE$JAVA$LOB$TABLE
     *LOB SYS_LOB0000070938C00002$$
     *JAVA CLASS test
     *PROCEDURE RUN_HELLO
     *PROCEDURE RUN_HELLO2
Step06. Closing JDBC objects


성공............ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

간단한 접속을 하기 위해서 -_-;두시간 이나 삽질했당...


으흐흐.. 참고책은 Oracle 9i Java Programming (정보문화사)
Posted by Gwoong
,
1. Oracle 기본적으로 설치시, (관리자) 로그인 방법 - sqlplus

$> su oracle
passwd :

oracle@easy-pc:/$ sqlplus "/as sysdba"

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  238530560 bytes
Fixed Size            1299116 bytes
Variable Size          155192660 bytes
Database Buffers       75497472 bytes
Redo Buffers            6541312 bytes
Database mounted.

Database opened.


위에서 보듯이, idle instance에 접속했다고 나오는데, 이는 oracle instance가 시작을 안햇다는 표시이므로, startup으로 실행시켜준다.

2. 오라클과 자바를 같이 배우기 위해서, 오라클에 자바 서버 플랫폼을 설치한다.
(아마 기본적으로 다 설치되리라 생각됨)

SQL> select count(*), status from user_objects
  2  where object_type=
  3  'JAVA CLASS'
  4  group by status
  5  /

  COUNT(*) STATUS
---------- -------
     20137 VALID


라고 했을시, 결과가 다음과 같이 valid 이면 설치가 된 것이고, 만약 아니라면,
%ORACLE_HOME%/javavm/install 에서 스크립트를 수행해주면 된다.

보이듯이, 2만개가 넘는 자바 클래스 객체들이 생성되어있고, 우린 이것을 사용할 수 있다.


3. 데이터베이스 외부로부터 자바 클래스 파일이나 소스 파일을 로드 하려면 loadjava를 사용하면된다.
이는 %ORACLE_HOME%/bin에 있는 스크립트이다.

jiwoong@easy-pc:~/oj$ loadjava
loadjava: Usage: loadjava [-definer] [-encoding encoding] [-force] [-genmissing] [-genmissingjar jar] [-grant grants] [-help] [-nousage] [-noverify] [-oci8] [-order] [-resolve] [-nativecompile] [-resolver resolver] [-schema schema] [-synonym] [-thin] [-tableschema schema] [-user user/password@database] [-verbose] classes..jars..resources..properties... 


이제 클래스 파일을 DB로 로드 해보자.

jiwoong@easy-pc:~/oj$ cat test.java
public class test{
    public static void main(String[] args){
        System.out.println("hello");
    }
    public static void db_run(){
        System.out.println("db_run");
    }

}


$> javac test.java
$> java test
hello
$>


4. 잠시,

1. 오라클 유저는 DBA만이 생성할 수 있다.

    DBA로 접속한다 

manager login
- sqlplus system/manager
- sqlplus "/as sysdba"

2. create tablespace
- CREATE TABLESPACE test_ts DATAFILE '/export/oracle10/oradata/ORA10g/test_ts.dbf' SIZE 10M

3. create user
- CREATE USER test IDENTIFIED BY password DEFAULT TABLESPACE test_ts TEMPORARY TABLESPACE TEMP QUOTA 500K ON test_ts

4. user permission
- GRANT CONNECT TO test
- GRANT CONNECT, RESOURCE TO test
- GRANT CONNECT, DBA TO test
---------------------------------------------------------------------------
비밀번호 변경

ALTER USER SYS
IDENTIFIED BY "password";


- CREATE USER : 뒤에 사용자 이름

 - IDENTIFIED  BY password : 사용자가 데이터베이스에 의해 인증되도록 지정하며, 데이터베이스

                                            유저 로그온시 사용하는 비밀번호

 - DEFAULT TABLESPACE:  사용자 스키마를 위한 기본 테이블 스페이스를 지정

 - TEMPORARY TABLESPACE: 사용자의 임시 테이블 스페이스를 지정

 - QUOTA절을 사용하여 사용자가 사용할 테이블 스페이스의 영역을 할당


5. jiwoong@easy-pc:~/oj$ loadjava -user jiwoong/jiwoong -resolve -verbose test.class
arguments: '-user' 'jiwoong/***' '-resolve' '-verbose' 'test.class'
creating : class test
loading  : class test
created  : CREATE$JAVA$LOB$TABLE
resolving: class test
errors   : class test
    ORA-29552: ¿¿ ¿¿: java.lang.UnsupportedClassVersionError: test (Unsupported major.minor version 50.0)

Classes Loaded: 1
Resources Loaded: 0
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0
jiwoong@easy-pc:~/oj$


중간 에러는 언어땜시??

여튼 클래스를 로딩 완료한듯.



SQL>
  1  select dbms_java.longname(object_name), object_type, status
  2  from user_objects
  3 where object_type like 'JAVA%'

DBMS_JAVA.LONGNAME(OBJECT_NAME)     OBJECT_TYPE        STATUS
------------------- -------
test JAVA CLASS        VALID


보면 test라는 object가 생겼다.

SQL> create or replace procedure run_hello
  2  as language java
  3  name 'test.db_run()';
  4  /

Procedure created.

프로시저를 만들고,


SQL> set serveroutput on size 5000
SQL> call dbms_java.set_output(5000);

Call completed.

dbms_java.set_output을 사용하여 system.out을 SQL*Plus세션으로 출력 방향을 바꾼다... 고 한다.


SQL> execute run_hello;
BEGIN run_hello; END;

*
ERROR at line 1:
ORA-29516: Aurora assertion failure: Assertion failure at eox.c:332
Uncaught exception System error:   java/lang/UnsupportedClassVersionError
ORA-06512: at "JIWOONG.RUN_HELLO", line 1
ORA-06512: at line 1


SQL>

이제 실행을 한 것인데.. 이런 오류가 난다.. 찾아본 결과, java 1.4 로 컴파일을 하란다... 제길..

$> javac -source 1.4 test.java

후 , 위에 등록했던 자바 객체를 drop 시키고 다시 등록 한다.
jiwoong@easy-pc:~/oj$ dropjava -user jiwoong/jiwoong -verbose test.class
dropping: class test

jiwoong@easy-pc:~/oj$ loadjava -user jiwoong/jiwoong -verbose test.class
arguments: '-user' 'jiwoong/***' '-verbose' 'test.class'
creating : class test
loading  : class test
Classes Loaded: 1
Resources Loaded: 0
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0


이제 다시, 프로시저를 생성.
SQL> create or replace procedure run_hello2
  2  as language java
  3  name 'test.db_run()';
  4  /

Procedure created.


그리고 실행..

SQL> execute run_hello2
db_run

PL/SQL procedure successfully completed.


오우.. 드디어 db_run을 보다.!!!


이외에도 자바 소스를 로딩하는 법과, 여러개의 자바소스/클래스 파일을 로딩하는 법, DB내에서 자바소스를 작성하는 법이 있으나, 시간 관계상 생략..


참고문헌 ; Oracle 9i Java programming

Posted by Gwoong
,

오토마타

카테고리 없음 2009. 9. 29. 00:58



Regular Expression 에서 NFA로,
NFA에서 DFA로
DFA에서 Minimal DFA로 변환 할 때 사용하는 알고리즘과 상세한 예제가 들어있다.


형식언어와 오토마타라는 교재(Peter Linz)로 수업을 듣는데, 이것만 읽어서는 도저히

변환방법이나 이유, 알고리즘을 정확히파악하기가 힘들어서 구글형께 빌었더니

아름다운 자료를 주셨다 ㅠㅠ


출처는 http://web.cecs.pdx.edu/~harry/ 인데,


Portland State University 교수라고 한다.. 그래서 pdf는 영어이긴 한데, 그림밖에 없으므로(!!!) 이해가기 쉽다 ㅠㅠ

Posted by Gwoong
,

DB2에 대해 알아보기에 앞서 데이터베이스에 대한 전반적인 이해를 돕고자 용어정리부터 start!!

내가 DB를 처음 접하였을 때 DB, DBMS 등의 용어가 참 헷갈렸지...

 

데이터베이스 [DB(DataBase)]

쉽게 설명하자면 한 기업에서 여러 가지 시스템들이 공유할 수 있도록 구조적으로 통합해 놓은 운영 데이터를 말한다. 데이터의 양은 폭발적으로 증가하고 있고, 한 조직의 자산으로서 가치가 점점 중요해지고 있기 때문에 데이터베이스가 중요하게 인식되고 있다.

 

그렇다면 이 데이터베이스가 파일과는 어떤 점이 다른 것일까? 파일은 물리적으로 우리가 직접 접근하여 사용하지만, 데이터베이스는 DBMS를 통해서 데이터에 접근이 가능하다.

 

데이터베이스의 특징을 살펴보면..

1. 데이터의 대규모 저장소로서, 여러 사용자가 동시에 공유할 수 있다.

2. 모든 데이터의 중복을 최소화하면서 통합되어있다.

3. 데이터에 관한 설명까지 포함한다.

4. 데이터가 프로그램과 분리되어 저장되므로 독립성을 가진다.

 

데이터베이스 관리 시스템 [DBMS(DataBase Management System)]

데이터베이스 관리 시스템은 사용자가 새로운 데이터베이스를 생성하고, 데이터베이스의 구조를 명시할 수 있게 하고, 데이터를 효율적으로 질의하고 수정할 수 있도록 하며, 시스템에 권한이 없는 사용자로부터 데이터를 안전하게 보호하며, 동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어하는 소프트웨어 패키지이다.

 

사용자와 응용 프로그램에게 편리하고 효율적인 데이터베이스 사용 환경을 제공하여서, 사용자가 데이터를 저장하고 갱신하고 검색하기 위한 상세 알고리즘을 명시할 필요 없이 편리하게 데이터에 접근 할 수 있도록 해준다.

 

DBMS에서 제공되는 사실상의 표준 데이터베이스 언어를 SQL이라고 한다.

 

DBMS의 종류 :  오라클, mysql, mssql, db2, 사이베이스, 알티베이스, 큐브리드 등

------------------------------------------------------------------------------------------

 

본격적으로 DB2에 대해 알아봅시다.

 

What?

2009년 6월 IBM에서 새롭게 DB2 9.7(코드명 "Cobra")을 출시하였다. 획기적으로 IT 비용을 줄여주며 기존의 DBMS를 손쉽게 DB2로 전환이 가능하다.

Why?

▶ 관리 비용 절감

다양한 관리업무를 자동화하여, 시스템 성능을 자동으로 최적화하고 특정 문제 발생시 자동으로 문제를 해결한다. 또한 시스템을 자동으로 설정하고 구성 설정을 관리한다.

 

▶ 스토리지 비용 절감

탁월한 압축 기술을 통해서 최대 83%에 달하는 데이터 압축률을 보고하고 있어서 데이터 저장에 필요한 스토리지의 양을 줄일 수 있다.

 

▶ 서버 비용 절감

저렴한 하드웨어에서 실행하면서 동시에 더 나은 성능을 얻을 수 있다. 또한 소프트웨어 라이센스 비용, 소프트웨어 유지 보수 비용 및 소프트웨어 지원 비용도 잠재적으로 절감할 수 있다.

 

▶ 개발 비용 절감

개발자들이 사용하려는 동시성 모델을 직접 선택하도록 하여, 가장 유연한 개발 옵션을 제공하고, 다양한 기능을 추가하여 기존의 개발자 기술을 그대로 활용할 수 있게 한다.

 

DB2의 경쟁력!

DB2 HADR은 업계에서 가장 빠른 고가용성 솔루션

- 디스크 복제를 수행하므로 디스크 장애 발생시 별도의 복제 솔루션이나 스토리지 복제 솔루션 필요없이 대처 가능, 신뢰할 수 있는 데이터 복구

국내 최대 규모의 DW 인프라를 지원

- DB 솔루션, IBM 서버군, IBM 스토리지가 일체형되어 이미 설치 및 구성, 튜닝이 완료된 형태의 DW 통합 어플라이언스로 마치 가전제품처럼 전원만 꽂으면 바로 사용 가능

XML 데이터 관리 및 분석에서의 비용 및 성능 장벽 제거

- XML 데이터베이스 관리 강화, XML 데이터 압축 강화

InfoSphere Warehouse 9.7(DW용 DB2) 분석 기능 강화

- 뛰어난 규모 가변성과 워크로드 관리 제공

 

[참고자료]

http://www.kdug.kr/

http://www-01.ibm.com/software/kr/data/db2/lowerdatabasecosts/index.html

데이터베이스 배움터 - 생능출판사

IBM Campus Wizard 5기 최현지

http://www.ibm.com/developerworks/kr

[출처] DB2가 궁금해?|작성자 bluehj8282

Posted by Gwoong
,

 

첫 번째, DB에 대해 이해하기

  http://blog.naver.com/bluehj8282/89634193

두 번째, DB2 리눅스에 설치하기

  http://jiwoongs.tistory.com/entry/Ubuntu-에서-DB2-V97-설치하기

세 번째, DB2 윈도우에 설치하기

  http://blog.naver.com/ggoma7/110070201013

네 번째, DB2 클라이언트SW, DB2 Express-C 활용하기

  http://blog.naver.com/rookieangel/140091201086

다섯 번째, DB2의 특장점과 기업사례 살펴보기

  http://blog.naver.com/pieuler/60091439068

 

IBM DB2 ( DB2 특장점 및 기업사례 )

 

요즘엔 정말 많은 DBMS 가 존재하죠. Oracle, MS, Cubrid 등 국내외를 막론하고 정말 많은 벤더에서 DBMS를 만들고 있답니다.

 

여기서 잠깐! 이 DB들의 공통된 특징이 무엇인지 알고 있으신가요?

 

그것은 바로 모두 RDB 라고 말하는 '관계형 데이터베이스 관리 시스템' 입니다. 관계형 데이터베이스는 70년대에 E.F. Codd에 의해 처음 제안되었고,

 

요즘 대부분의 데이터베이스 시스템은 관계형 데이터베이스 모델에 기반하고 있습니다.

 

여기서 두번째 질문!! Codd는 관계형DB 에 대한 이론적 토대를 제시해 주었죠. 그렇다면 이를 구현한, 그러니까 최초의 관계형 DBMS는 무엇일까요?

 

그렇습니다. 바로 지금 이 블로그에서 살펴볼 DB2 가 그 주인공입니다. 1983년 IBM에서 관계형 DB 모델을 구현한 최초의 DBMS를 IBM 자사의

 

메인프레임 기반으로 만들었습니다. 추가로 하나더 말씀드리자면, 여러분들이 현재 배우고 있는 SQL 이라는 것도 사실 IBM 에서 처음 만들어진 것이랍니다.

 

( 뭐... 요즘에야 표준을 정하고 어쩌고 저쩌고 하니깐. SQL 학습에 있어서 IBM을 의식할 필요는 없겠죠.ㅋ )

 

이렇듯 IBM의 DB2는 관계형 데이터베이스 의 시작부터 지금까지 최고의 데이터베이스 시스템으로 꾸준히 성장해 오고 있습니다.

 

그래서 이번에 이글을 통해 DB2 제품의 특장점 그리고 현재 어떤 기업에서 사용하고 있는 지 차근차근 살펴보겠습니다.

 

 

IBM DB2 과연 무엇이 그것을 특별하게 만들었을까?

(DB2 특장점 및 성능)

 

공식적으로 IBM 에서 말하는 DB2의 장점을 위주로 한번 살펴볼까요? 하하하

 

         

 

자가 최적화 , 자가 치유, 자가 구성 , 워크로드 관리, 확장된 자동화 기능 등 다른 여타 DBMS에서는 볼 수 없는 최신기술들이 들어있군요.

 

자가 최적화에 대해서 살펴보자면, 일단 다른 DBMS 들과는 달리 DB2는 각 워크로드(업무)의 특성에 맞게 시스템이 최적화될 수 있군요.

 

하긴 연산이 많은 프로그램을 이용할 때와, 웹과 같이 데이터 보여 주기에만 전념하는 프로그램은 다르니까요.

 

이는 마치 다른 DB들이 포크 숟가락 하나로 밥을 먹는다면, DB2는 젓가락과 숟가락으로 밥을 먹는 것 같다는 생각이 드네요.

 

그외에 가만 보니, self-healing 이 눈에 띄네요. 오라클은 디스크 장애등에 대처하기 위해 별도의 고가 솔루션을 구현해야 하지만,

 

DB2는 기본적으로 제공되는 self-healing 시스템으로 비용을 많이 줄일 수 있겠네요.

 

하지만, 이렇게 다양한 장점이 있다고는 해도 아직 저같은 학생들에게는 피부에 와닿지는 않네요.... 그럼 계속해서 다른 특장점을 살펴볼까요.

 

 

 

         

 

두번째.... 스토리지 비용 절감!!  데이터 압축 기술이 좋기 때문에 스토리지 규모를 줄인다는 이야기 같은데요. 오호~ 이 이야기는 솔깃하네요.

 

게다가 비교적 시간이 많이 드는 디스크 입출력을 최소화 할 수도 있구요. 속도는 빨라지고, 용량은 줄어들고... 이건 좀 좋군요.

 

이렇게하면서 연산이 줄어드니 에너지 낭비도 줄어들것이고, 자연스럽게 환경에도 좋게 되겠군요.

 

이 이야기가 좀 오버라는 생각도 들긴하지만, 실제로 많은 기업에서 이렇게 사소한 것들 하나하나에 신경쓰면서 그린IT를 실현하고 있다고 하니

 

뭐... 괜찮네요.. 좋아요.ㅋㅋㅋ

 

 

 

         

 

오호... TPC 자료를 보니 성능도 타 DBMS에 뒤지지 않네요.

 

TPC 같은 DB 제품 성능을 측정하는 공신력있는 기관의 자료이니 믿을 만하네요.

 

이제 드디어 오라클도 한물가는 판국인가요? ㅋㅋㅋㅋ

 

 

 

         

 

와우 혹하는 이야기들. 저 같이 미래의 개발자를 꿈구는 이에게는 확 와닿는 이야기.

 

동기화 문제에 있어 예전 방식도 가능하다는 것. 흔히 말하는 약타입 언어에도 통한다는 것. 맘에 드는 군요.

 

그리고 덧붙이면, 오라클의 PL/SQL 도 98% 이상 지원이 되기 때문에 얼마든지 오라클에서 마이그레이션도 가능하다고 합니다.

 

 

 

항상 오라클만 봤다가 이렇게 DB2를 알아보니... 생각보다 똘똘한 녀석이었네요.

 

이외에도 하드웨어 서버와 함께 운용하여 하나의 솔루션을 제공하면서 훨씬 씨너지 효과도 낼 수 있고. 굳!

 

 

 

 

그럼 이렇게 많은 장점을 가지고 있는 DB2, 어떤 기업에서 사용하고 있을까요?

( 기업 사례 )

 

인터넷 등을 통해 확인할 수 있는 기업들의 DB2 활용 사례들을 찾아 봤어요. ㅎㅎ

 

 

                             

 

와우 꿈의 기업 삼성 SDS에서도 DB2를 이용했군요. SDS 자체적으로 차세대 지식정보 시스템(KIS)을 구축하면서 SAP ERP 에 DB2를 이용했었군요.

 

기존에 업무별, 인프라 별로 나눠진 모듈 단위의 시스템 구성을 프로세스 단위의 맵핑 형태로 재매치하는 게 프로젝트의 목표였다고 합니다.

 

이때 ERP로 유명한 SAP의 솔루션을 도입하였고, SAP과 함께 30년 이상 지속적인 파트너십을 유지하고 있던 DB2가 최고의 궁합이었다고 하네요.

 

아무래도 지속적인 관계를 유지하면서 DB2가 SAP에 많은 부분에 있어서 최적화가 가능했었겠네요. 그렇다면 당연히 SAP on DB2 !!!

 

최고의 ERP 솔루션 SAP 과 최고의 DBMS DB2 ... 나름 환상 궁합이라눙~ㅋㅋ

 

 

 

                             

 

KTF 역시 IBM의 DB2를 이용하였는데요. 코그노스(cognos) 라는 유명한 비즈니스 인텔리전스(BI) 제품을 활용하여 KTF는 기존의 CRM 시스템에

 

활력을 불어 넣을 수 있었습니다.

 

아이구. 여기저기서 갑자기 당황해 하시는 분들이 많으시네요. 코그노스니 비즈니스 인텔리전스니 CRM 이니 하는 이야기에 많이 들 당황하시는 것

 

같으네요.ㅋㅋㅋ  간단하게 설명하자면, CRM은 고객과 관련한 정보와 자료를 수집하여, 통합 및 분석하여 고객 특성에 맞게 마케팅을 계획하고 지원

 

및 평가하는 것을 의미합니다. 비즈니스 인텔리전스 제품이라는 것은 기업이 효율적으로 그리고 정확하게 자료를 분석 및 처리하여 합리적인 비즈니스를

 

가능하게 하는 제품군 이구요. 그리고 코그노스는 BI의 간판 기업 중 하나입니다.

 

다시 이야기로 돌아가자면, IBM은 BI 분야에 진출하기 위해 코그노스를 인수하였고, 국내에서는 합병 이후 첫번째 고객이 되었던 IBM에서는 기념비적인

 

프로젝트였습니다. 그리고 이때 DB2를 적극 활용할 수 있었구요. 아무래도 타 회사 제품보다 같은 회사 제품을 이용하면 훨씬 성능도 좋고, 벤더의

 

지원과 교육에 있어서도 탁월했을 것이라 판단하네요.

 

다시 한번 느끼는 것이지만, DB2 자체만으로도 충분히 최고의 제품일 수도 있지만, 그와함께 IBM에서 보유하고 있는 다양한 제품군 및 솔루션을 동반하여

 

시너지를 내면서 성장하고 있음을 확인할 수 있었습니다.

 

 

 

                             

 

이번엔 LG전자!! 아... 여의도의 쌍둥이 빌딩... 한번 구경이라도 해 봤으면 하는 기업이네요.

(취업 준비생이라... ㅡ.ㅡ;;;;)

 

LG전자. 세계적인 글로벌 기업이죠. 말해 무엇하겠습니까만은 LG전자에게도 고민이 있었으니. 다름 아닌 전세계에 산재되어 있는 지역별,

 

법인별, 사업별 자료들이 얽히고 섥혀있어서 하나로 통합되어 있지 않았다는 것입니다. 이를 잘 관리하여야 좋은 의사결정과 업무 효율성을

 

기대할 수 있었을 텐데 말이죠. 그래서 LG전자는 IBM의 MDM 솔루션을 이용하기로 결정을 했었습니다. 그러면서 동시에 DB2를 이용하게

 

된거죠.

 

아... 역시나 다시 시작되는 IBM의 끼워팔기 수법... 이거이거 좀 심하다 싶을 정도군요.ㅋㅋ SAP ERP 에 끼워 팔고. 코그노스 BI 에

 

끼워팔고, IBM MDM에 끼워 팔고. 이건 뭐... ㅋㅋㅋㅋ; 우연히 선택한 3개 사례 모두가 끼워팔기라니. ^^;;;

 

하지만, 이게 맞는 것일 수도 있다는 생각을 하게 되는군요. 어차피 DB는 혼자 존재해서는 의미를 갖기 힘든 분야이니까요. 이렇게 세계적

 

기업과 파트너십을 유지하거나, 자사의 최고 솔루션과 결합하여 그들을 최고가 될 수 있도록 서포트 하는 모습...

 

생각해 보니 나쁘지 않네요.ㅋㅋ

 

 

 

#. 출처 및 참고자료

http://www.kdug.kr/  한국 DB2 유저 그룹

http://www.DBguide.net  DB 구축.운영 종합정보 사이트  ( http://www.dbguide.net/know/know102001.jsp?idx=3280&mode=view )

http://www-01.ibm.com/software/kr/data/db2/lowerdatabasecosts/index.html IBM DB2 공식 사이트

http://cafe.naver.com/sojw.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=2053 Digit Open Forum (성능 항목별 DBMS 3종 비교 분석)

http://www.tpc.org/tpch/results/tpch_results.asp  Transaction Processing Performance Council

 

 

 

 

 

 

 

IBM developerWorks CampusWizard 5th

 아 이 비 엠      디 벨 로 퍼 웍 스      캠 퍼 스 위 자 드      5

 

http://www.ibm.com/developerworks/kr

Posted by Gwoong
,
http://www.neonesoft.com/blog/blogs/cmullins/archive/2009/05/27/The-Many-Different-Types-of-DBAs.aspx

원문은 위에서 참고.

아래는 간단하게 위의 내용을 요약한 것을 쓴다.

System DBA

A system DBA focuses on technical rather than business issues, primarily in the system administration area. Typical tasks center on the physical installation and performance of the DBMS software and can include the following:

    * Installing new DBMS versions and applying maintenance fixes supplied by the DBMS vendor
    * Setting and tuning system parameters
    * Tuning the operating system, network, and transaction processors to work with the DBMS
    * Ensuring appropriate storage for the DBMS
    * Enabling the DBMS to work with storage devices and storage management software
    * Interfacing with any other technologies required by database applications
    * Installing third-party DBA tools

System DBAs are rarely involved with actual implementation of databases and applications. They might get involved in application tuning when operating system parameters or complex DBMS parameters need to be altered.

Indeed, the job of system DBA usually exists only if the organization does not have an official system administration or systems programming department.

1. System DBA
system DBA는 비지니스 이슈보단 테크니컬한 부분에 포커스가 있는데 특히 시스템 관리 부문쪽이다.
물리적인 설치와 DBMS의 성능향상을 위한 업무 이외에도 다음을 포함한다.

- DBMS의 설치와 DBMS의 벤더에서 제공하는 패치나 fix들을 설치하여 유지한다.
- 시스템 파라미터 들을 설정하고 조절한다.
- DBMS와 더불어 OS, network, transaction 프로세서들과의 진행을 위한 튜닝을 한다.
- DBMS를 위한 적절한 스토리지를 구성한다.
- DBMS가 스토리지 디바이스와 관리 소프트웨어들과 같이 협력할 수 있게 설정한다.
- DB의 app들에 의한 다른 기술들과 접목시킨다.
- 3rd party DBA 툴을 설치한다.



Database Architect

Some organizations create a separate position, database architect, for design and implementation of new databases. The database architect is involved in new design and development work only; he is not involved in maintenance, administration, or tuning of established databases and applications. The database architect designs new databases for new or existing applications.

The rationale for creating a separate position is that the skills required for designing new databases are different from the skills required to keep an existing database implementation up and running. A database architect is more likely than a general-purpose DBA to have data administration and modeling expertise.

Typical tasks performed by the database architect include:

  • Creating a logical data model (if no DA or data modeler position exists)
  • Translating logical data models into physical database designs
  • Implementing efficient databases, including specifying physical characteristics, designing efficient indexes, and mapping database objects to physical storage devices
  • Analyzing data access and modification requirements to ensure efficient SQL and optimal database design
  • Creating backup and recovery strategies for new databases
Many organizations do not staff a separate database architect position, instead requiring DBAs to work on both new and established database projects.

2. Database Architect
어떤 조직들은 DB architect 라는 위치를 따로 만드는데, 이는 새로운 db를 디자인하거나 구현하기 위함이다.
db 아키텍트는 유지보수, 관리, 튜닝, db/app 생성 등의 업무가 아닌,
오직 db의 새로운 디자인과 개발에만 매달린다.

- 논리적인 data 모델을 만든다. (DA나 모델러 직업이 없을때)
- 논리적인 data 모델을 물리적인 디자인으로 변경
- 특정적인 물리 특징, 효율적인 인덱스 구조, db의 objects를 물리적인 스토리지 device에 사상하는 등의 기술등을 포함한 효율적인 db를 구현한다.
- data의 접근을 분석하고, 효과적인 SQL과 최적화된 DB의 디자인을 확실시 하게 하기 위한 요구에 대한 분석
- 새로운 db를 위해 백업과 복구 전략을 만든다.



Database Analyst

Another common staff position is the database analyst. There is really no set definition for this position. Sometimes junior DBAs are referred to as database analysts. Sometimes a database analyst performs a role similar to that of the database architect. Sometimes the data administrator is referred to as the database analyst or perhaps as the data analyst. And sometimes a database analyst is just another term used by some companies instead of database administrator.


3. DB Analyst
정확한 정의는 없다. 때때로 신입 DBA를 ,  또는 db 아키텍트와 같은 롤을 하는 애들을 이렇게 부르기도 한다.
그리고, data 관리자를 db analyst 혹은 data analyst 라고 부른다. 다른 회사에서는 db 관리자를 이 용어로 부르기도 한다.


Data Modeler

A data modeler is usually responsible for a subset of the DA’s responsibilities. Data modeling tasks include the following:

  • Collecting data requirements for development projects
  • Analyzing the data requirements
  • Designing project-based conceptual and logical data models
  • Creating and updating a corporate data model
  • Ensuring that the DBAs have a sound understanding of the data models
4. data modeler
모델러는 DA가 하는일의 작은 부분이라 생각하면 된다.
- 프로젝트를 하기 위하여 데이터의 요구사항을 모은다.
- 데이터 요구사항을 분석한다.
- 프로젝트 기반의 개념과 논리적인 데이터 모델을 디자인한다.
- 통합된 데이터 모델을 만들고 업뎃 한다.
- DBA가 데이터모델에 대해서 이해할 만하게 한다.


Application DBA

In direct contrast to the system DBA is the application DBA. The application DBA focuses on database design and the ongoing support and administration of databases for a specific application or applications. The application DBA is likely to be an expert at writing and debugging complex SQL and understands the best ways to incorporate database requests into application programs. The application DBA must also be capable of performing database change management, performance tuning, and most of the other roles of the DBA. The difference is the focus of the application DBA—it is on a specific subset of applications rather than the overall DBMS implementation and database environment.
 
Not every organization staffs application DBAs. However, when application DBAs exist, general-purpose DBAs are still required to support the overall database environment and infrastructure. When application DBAs do not exist within an organization, general-purpose DBAs are likely to be assigned to support specific applications while also maintaining the organization’s database environment.

There are pros and cons to staffing application DBAs. The arguments in favor of application DBAs include the following:

  • An application DBA can better focus on an individual application, which can result in better service to the developers of that application.
  • The application DBA is more often viewed as an integral component of the development team and therefore is better informed about new development plans and changes.
  • Because the application DBA works consistently on a specific set of applications, he can acquire a better overall understanding of how each application works, enabling him to better support the needs of the application developers.
  • With a more comprehensive understanding of the application, an application DBA will have a better understanding of how the application impacts the overall business. This knowledge will likely result in the execution of DBA tasks to better support the organization.

But all is not favorable for application DBAs. There are cons to implementing an application DBA role:

  • An application DBA can lose sight of the overall data needs of the organization because of his narrow focus on a single application.
  • The application DBA can become isolated. Lack of communication with a centralized DBA group (if one exists) can result in diminished sharing of skills.
  • When an application DBA implements useful procedures, it takes more effort to share these procedures with the other DBAs.
  • Due to the application-centric nature of the position, an application DBA can lose sight of new features and functionality delivered by the DBMS group.
In general, when staffing application DBAs, be sure to also staff a centralized DBA group. The application DBAs should have primary responsibility for specific applications, but should also be viewed as part of the centralized DBA group.


Task-oriented DBA

Larger organizations sometimes create very specialized DBAs that focus on a specific DBA task. However, task-oriented DBAs are quite rare outside of very large IT shops. One example of a task-oriented DBA is a backup-and-recovery DBA who devotes his entire day to ensuring the recoverability of the organization’s databases. Security, compliance and data protection are other subjects that could be the focus of a task-oriented DBA.

Most organizations cannot afford this level of specialization, but when possible, task-oriented DBAs can ensure that very knowledgeable specialists tackle very important DBA tasks.

Performance Analyst

Performance analysts are a specific type of task-oriented DBA. The performance analyst, more common than other task-oriented DBAs, focuses solely on the performance of database applications.

A performance analyst must understand the details and nuances of SQL coding for performance and be able to design databases for performance. A performance analyst will have very detailed technical knowledge of the DBMS so that he can make appropriate changes to DBMS and system parameters when required.

However, the performance analyst should not be a system DBA. The performance analyst must be able to speak to application developers in their language in order to help them facilitate appropriate program changes for performance.

The performance analyst is usually one of the most skilled, senior members of the DBA staff, a role that s/he has grown into due to experience and the respect s/he has gained in past tuning endeavors.

Data Warehouse Administrator

Organizations that implement data warehouses for performing in-depth data analysis often staff DBAs specifically to monitor and support the data warehouse environment. Data warehouse administrators must be capable DBAs, but with a thorough understanding of the differences between a database that supports OLTP and a data warehouse. Data warehouse administration requires experience with the following:

  • Business intelligence, query, and reporting tools
  • Database design for read-only access
  • Data warehousing design issues such as star schema
  • Data warehousing technologies such as OLAP (including ROLAP, MOLAP, and HOLAP)
  • Data transformation and conversion
  • Data quality issues
  • Data formats for loading and unloading of data
  • Middleware


Posted by Gwoong
,

DBA 연봉

카테고리 없음 2009. 9. 20. 01:25
http://www.neonesoft.com/blog/blogs/cmullins/archive/2007/12/19/DBA-Salary-Update.aspx


비록 07년 12월 기사이긴 하지만, 그리고 미국의 기사이긴 하지만.

DBA 에 대한 연봉이 적혀 있는 기사라 관심있게 읽어보았다.


다른 것보다 흥미있었던것은, DB2 관련 직종자가 Oracle의 직종자들보다 연봉을 더 받는다는 것이었는데,

그 이유를 기사에서 설명하길,

DB2와 관련있는 시스템인 Mainframe이 전세계적으로

Oracle과 관련 있는 Unix 시스템이나 MS-sql과 관련있는 windows 시스템보다 더 많은

사용량을 보이기 때문이란다. (물론 일반 사용자용이 아닌 기업용으로 따지는 거겠지)


아이러니 하게도, 얼마전에 IBM코리아에서는 Unix로 마이그레이션 하려는 많은 기업체들의

전산실을 IBM이 Mainframe으로 돌리려 애쓴다는 - 그럼에도 여전히 Unix로의  미래 선호도가 높다고 -

기사를 보게 되었는데.

외국들과 우리나라에 대한 시스템의 상황이 정반대로 흘러가는 것인지, (우리나라의 IT 시스템이 정반대로 가는것인지)

아니면 문화적 차이인 것인지, 이도 아니면

내가 잘못 알고 있는것인지 모르겠다.


그리고 또 한가지, 이 기사에서는 Oracle OCM의 연봉은 말하지 않았는데

아마 이들의 연봉은 DB2관련자들보다 높지 않을까 생각한다.

(물론 DB2쪽에도 Advanced DB2 유저임을 걸러내는 자격증이 있긴 하지만)


난 아직 학생이기에 정확한 DB업계쪽의 연봉은 잘 모르겠으나,

수요면으로만 따졌을때, 다시 두가지로 생각해볼 수 있는데,

한가지는, 전세계 점유율이 거의 50%에 육박하여 1위를 계속 고수하는 오라클의

여러기관에서의 설치로 인한 orcale dbms를 관리/유지/보수 하기 위하여 구인의

공급이 수요보다 달린다면 높아질 수 있을 것이다.

다른 면에서는, DB2가 높을 것이라고 생각되는것이,

DB2에 대한 '전문가'가 그다지 없으니 (상대적으로 오라클에 비해선 그렇다고 생각한다)

일정 수준에 오른 DB2 관계자의 연봉은 높아질 것이라 생각한다.


이제 앞으로 oracle에서 oracle dbms+sun의 h/w 패키지(?) 로

공략을 펼칠 것인데, 과연 고객사들은 누구 편을 들어줄 것인지 궁금하다.


Posted by Gwoong
,