메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

DB2에서 HTTP 및 RESTful 서비스 액세스하기: DB2용 REST 사용자 정의 함수 소개

웹을 관계형 데이터베이스 시스템으로 가져오기

Michael Schenker, 자문 소프트웨어 기술자, IBM
Michael Schenker
Michael Schenker는 2003년 말에 정규 직원으로 IBM에 입사하여 7년 이상 작업을 수행했다. IBM에서 근무하는 동안 Michael은 인턴으로 비관계형 데이터 소스에 초점을 맞추어 DB2 Information Integration 관련 업무를 수행하는 것을 시작으로 여러 데이터베이스 관련 제품에 대한 업무를 수행했다.2006년에는 데이터베이스 도구 조직에 참여하여 IBM Data Studio Developer의 DB2 웹 서비스 공급자 기능에 대한 업무를 수행했다. 이때 SOA와 웹 기술에 대한 전문지식을 많이 얻었다. 2008년 이후에는 DB2 for z/OS 최적화 프로그램 팀에 소속되어 액세스 계획 선택 및 최적화 프로그램 테스트 도구 관련 업무를 수행했다.
Susan Malaika , 선임 기술스탭멤버, IBM
Susan Malaika
Susan Malaika는 IBM Software Group의 일부인 IBM Information Management Group의 선임 기술 담당자이다. XML, 웹 및 데이터베이스와 관련된 전문성을 갖추고 있다. 그녀는 Global Grid Forum에서 그리드 환경 데이터를 지원하는 표준을 개발했다. IBM 제품 소프트웨어 개발자, 인터넷 전문가, 데이터 분석가 및 애플리케이션 설계자 및 개발자로 활동해 온 그녀는 웹에 대한 책을 공동 집필했으며 트랜잭션 처리 및 XML에 관한 기사를 출판했다. IBM Academy of Technology의 멤버이기도 하다.

요약:  오늘날의 서비스 지향 아키텍처 환경에서 점차 REST(Representational State Transfer)가 중요한 통신 수단으로 자리잡고 있습니다. URL을 통해 처리할 수 있고 HTTP를 사용하여 액세스할 수 있는 서비스와 정보 소스가 많이 있습니다. 그 반면에 여전히 상당히 많은 정보가 DB2®와 같은 관계형 데이터베이스(RDBMS)에 저장되어 있습니다. 최신 RDBMS에는 SQL을 통해 관계형 데이터를 처리하고 SQL/XML이나 XQuery를 통해 XML 데이터를 처리하는 강력한 기능이 있습니다.

기사 게재일:  2011 년 8 월 02 일
난이도: 중급 원문:  보기 PDF:  A4 and Letter (196KB | 19 pages)Get Adobe® Reader®
페이지뷰:  1597 회
의견:  


개요

이 기사에서는 애플리케이션에서 SQL을 통해 REST 기반 서비스를 사용할 수 있게 해주는 DB2용 사용자 정의 함수(UDF) 세트를 정의한다. 다음과 같은 주제를 다루게 된다.

  • 소개
  • 기본 스칼라 REST UDF
    • 사용자 정의된 HTTP 헤더 값 전송
    • BBC 뉴스 피드를 검색하는 과정을 통해 XML 함수와 REST UDF를 결합
    • REST UDF 결과를 관계형 테이블과 결합
    • 보안 — 인증 및 암호화
  • 헬퍼 함수
    • URL 인코딩/디코딩
    • Base64 인코딩/디코딩

소개

적용되는 DB2

이 기사에 있는 정보는 DB2 for Linux®, UNIX® and Windows®와 DB2 for z/OS®에 적용된다.

HTTP는 약 20년 전에 정의되었으며 주요 부분이 마지막으로 변경된 HTTP 1.1은 1999년에 구현되었다(RFC2616 참조). HTTP가 이렇게 오랫동안 사용될 수 있었던 이유는 이 프로토콜이 안정된 상태에 있었기 때문이다. HTTP는 웹에서 가장 널리 사용되는 프로토콜이다. 시간이 지나면서 REST 또는 WebDAV와 같은 추가 프로토콜과 사용 패턴이 HTTP를 기반으로 빌드되었다. 많은 웹 사이트와 애플리케이션은 HTTP 기반 인터페이스를 통해 정보를 액세스한다.

웹에서 사용되는 다른 형식: JSON

오늘날에는 웹에서 사용되는 다른 텍스트 기반 형식이 많이 있다. 최근에는 JSON이 많이 사용되고 있다. "Build a pureXML and JSON application, Part 1: Store and query JSON with DB2 pureXML" 기사에는 JSONx를 사용하여 JSON을 XML로 변환하거나 그 반대로 변환하여 DB2에서 JSON을 처리하는 방법이 기술되어 있다.

시간이 지나면서 여러 가지 메시지 형식(대부분 XML을 기반으로 함)이 발전되어 왔으며 전송 계층(예: SOAP, RSS, 또는 Atom)인 HTTP와 결합하여 데이터를 교환하는 데 사용되었다.

관계형 데이터베이스 관리 시스템(RDBMS)도 발전되어 관계형 데이터와 SQL을 능가하는 처리 및 저장 기능(예: 기본적인 XML 지원)이 RDBMS에 도입되었다.


그림 1. REST 함수를 통해 DB2에서 웹 액세스
DB2용 HTTP 컨슈머 함수에서 DB2의 관계형 및 XML 컨텐츠에 이르기까지 웹 컨텐츠가 연결되는 과정이 표시된 다이어그램

이 기사에서는 SQL문을 사용하여 HTTP를 통해 직접 URL 주소지정 가능 자원을 액세스하는 사용자 정의 함수(UDF)의 형태로 SQL을 확장하는 과정을 소개한다. UDF는 REST UDF 또는 REST 함수라고 한다. 이 새 함수를 사용하면 RDBMS에서 이미 사용 가능한 추가 기능(예: SQL 수집 또는 XPath 액세스)을 사용하여, 웹에서 검색한 데이터를 조작하고 저장할 수 있다. REST 함수를 사용하여 간단한 HTTP GET 또는 POST 요청을 실행할 수 있다.

REST 함수의 더 복잡한(상세한) 시그너처도 사용할 수 있으며, 이 시그너처를 이용하여 HTTP 응답 코드와 헤더 값을 조사할 수 있다. 이러한 기능은 디버깅에 유용하다. 이 기사에서는 이 REST 함수를 더 설명하지 않지만, 이 함수를 어떻게 사용하는지 확인하려면 sample_tableUDF_Queries.txt에 있는 샘플을 살펴보도록 한다.

REST 함수는 HTTP를 통해 2진 데이터나 텍스트 데이터로 제출된 정보를 처리할 수 있다. 2진 버전은 이미지, 소리 및 기타 2진 데이터 형식과 같은 2진 형식의 정보를 액세스하는 반면에 텍스트 버전은 사용된 데이터베이스 코드 페이지 간에 데이터를 변환하여 HTML 페이지 및 기타 텍스트 기반 정보를 처리한다. 인터넷의 텍스트 데이터는 일반적으로 유니코드인 반면에 관계형 데이터베이스의 데이터는 다르게 인코딩되어 있는 경우가 많다.

이 기사에 있는 단계와 다운로드를 수행하면 웹에서 데이터를 검색하여 로컬에 저장된 관계형 데이터와 결합할 수 있다. 또한, DB2의 기본 XML 저장 기능을 적용하여 XML 기반 데이터를 처리하고, 저장 및 변환할 수 있다. 예를 들면, XMLTABLE 함수를 사용하여 XML 문서에서 관계형 데이터 세트를 생성할 수 있다.

이 기사에서는 먼저, REST UDF를 소개한다. 그런 다음, 웹에서 텍스트 정보와 2진 정보를 조작하는 예제를 살펴본다. HTTP 헤더 옵션을 설정하여 REST 요청을 사용자 정의하는 과정을 설명한다. RSS 피드를 기초로 하는 예제에서는 웹과 데이터베이스 데이터의 통합을 설명한다. 또한, HTTP 인증 및 암호화 처리를 다룬다. 이 기사의 마지막 부분에서는 URL 인코딩과 Base64 인코딩을 수행하는 헬퍼 함수 예제를 설명한다. 이 기사에는 완전한 REST 함수 매개변수 세트가 있는 부록이 포함되어 있다.

또한, DB2 for LUW용 REST UDF와 DB2 for z/OS 및 다양한 샘플이 포함된 다운로드 링크가 있다. 다운로드 패키지에는 기본 스칼라 세트와 몇 가지 헬퍼 함수가 들어 있다.


기본 REST 스칼라 함수

기본 스칼라 함수는 웹 컨텐츠에 액세스할 수 있는 기능을 제공한다. REST 함수는 가장 일반적인 네 가지 HTTP 명령인, GET, POST, PUT 및 DELETE에서 사용할 수 있다. 사용 가능한 메소드는 두 가지가 있다. 하나는 2진 컨텐츠를 처리하는 메소드이고 다른 하나는 텍스트 기반 컨텐츠를 처리하는 메소드이다. 이 함수를 위한 DB2 스키마는 DB2XML이다.

기본 REST 함수는 모두 HTTP 응답 메시지의 컨텐츠를 BLOB(2진) 또는 CLOB(텍스트)으로 리턴하는 스칼라 함수이다. 함수 시그너처는 다음과 같은 패턴을 따른다.

DB2XML.HTTP<method><type>(url, httpHeader <,
input>)


표 1. 메소드 이름
메소드GET, POST, PUT, DELETE
유형BLOB(2진 컨텐츠) 또는 CLOB(텍스트 컨텐츠)은 <입력> 문서의 유형과 리턴 유형을 정의한다.


표 2. 입력 매개변수
url액세스할 자원의 URL(필수)
httpHeader요청과 함께 사용된 추가 헤더 값(선택사항)
input요청과 함께 BLOB이나 CLOB으로 전송되는 데이터(POST, PUT 전용)

HTTP HEAD 요청을 수행할 때 사용 가능한 추가 메소드가 있다. 이 메소드는 데이터를 전송하거나 검색하지 않는다. 다음과 같이 HTTP GET을 통해 IBM 웹 사이트를 검색한다.

SELECT 
   DB2XML.HTTPGETCLOB('http://www.ibm.com','') 
FROM SYSIBM.SYSDUMMY1

결과는 CLOB 텍스트 데이터로 된 IBM 웹 페이지 HTML 텍스트이다.

사용자 정의된 HTTP 헤더 값 전송

위에서는 HTTP 헤더 값에 비어 있는 문자열을 사용했기 때문에 요청 메시지를 실행할 때 기본값이 사용되었다. 요청과 함께 사용자 정의 헤더 정보를 제공해야 할 수도 있다(예: SOAP 웹 서비스를 호출할 때 추가 "SOAPAction" 헤더 필드를 설정하거나 컨텐츠 유형을 변경하는 경우).

각 메소드에서 HTTP 헤더 XML 문서를 지정할 수 있으며 이렇게 하면 추가 HTTP 헤더 값을 설정할 수 있다. XML 헤더 문서는 다음과 같은 형식을 따라야 한다.


목록 1. XML HTTP 헤더 형식
			
<httpHeader connectionTimeout="10" follwRedirects="true">
	<header name="Accept" value="text/plain,application/xml,*/*;q=0.8" />
	<header name="Accept-Language" value="en-us,en;q=0.5" />
</httpHeader>

각 사용자 정의 헤더 필드는 namevalue 속성이 있는 <header> 요소로 표현된다. <httpHeader> 루트 요소에서는 속성을 통해 몇 가지 추가 요청 옵션을 지정할 수 있다.


표 3. <httpHeader>를 사용하여 지정할 수 있는 옵션
속성 이름유형 기본값설명
connectionTimeout정수시스템 기본값제한시간(밀리초)
readTimeout정수시스템 기본값제한시간(밀리초)
followRedirects부울True경로 재지정이 수행되는 경우에 정의
useCaches부울True캐시가 사용되는 경우에 정의

XML 헤더 문서는 CLOB 또는 원시 XML(DB2 LUW만 해당) 값으로 제공될 수 있다.


목록 2. HTTP POST를 통해 SOAP 1.1 웹 서비스 호출
			
SELECT DB2XML.HTTPPOSTCLOB('http://www.webservicex.net//stockquote.asmx',
CAST ('<httpHeader>
       <header name="Content-Type" value="text/xml;charset=utf-8"/>
       <header name="SOAPAction" value="&quot;http://www.webserviceX.NET/GetQuote&quot;"/>
       </httpHeader>' AS CLOB(1K)),
 CAST('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
          <soap:Body>
             <GetQuote xmlns="http://www.webserviceX.NET/">
                <symbol>IBM</symbol>
             </GetQuote>
          </soap:Body>
       </soap:Envelope>' AS CLOB(10K))
) FROM SYSIBM.SYSDUMMY1;

결과는 CLOB 텍스트 데이터로 된 웹 서비스 SOAP 응답 메시지이다.

BBC 뉴스 피드를 검색하는 과정을 통해 XML 함수와 REST UDF를 결합

이 예제에서는 BBC 뉴스 피드를 손쉽게 검색한 후, DB2의 XMLTABLE 함수를 사용하여 이 뉴스 피드를 관계형 데이터 세트로 변환하는 방법을 설명한다.


그림 2. REST UDF와 DB2 pureXML을 사용하여 뉴스 피드 처리
DB2용 HTTP 컨슈머 함수와 XMLTABLE 함수(여기서 RSS 형식이 결과 세트로 분리되어 DB2에 저장됨)를 통해 통신하는 BBC 뉴스 피드가 표시된 다이어그램

먼저, 다음 명령문을 사용하여 BBC RSS 피드를 살펴보도록 하자.

SELECT DB2XML.HTTPGETCLOB('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk','') 
       FROM SYSIBM.SYSDUMMY1;

이제 XMLTABLE 함수 호출을 둘러싸서 리턴된 XML RSS 형식을 관계형 결과 세트로 변환한다.


목록 3. BBC 뉴스 피드를 관계형 데이터 세트로 분리
				
SELECT *
   FROM XMLTABLE('$result/rss/channel/item' 
      PASSING XMLPARSE(
         DOCUMENT 
           DB2XML.HTTPGETBLOB('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk','')
      ) as "result"
         COLUMNS 
            title VARCHAR(128) PATH 'title',
            description VARCHAR(1024) PATH 'description',
            link VARCHAR(255) PATH 'link',
			pubDate VARCHAR(20) PATH 'substring(pubDate, 1, 16)'
   ) AS RESULT;

결과 세트에는 필드 항목의 제목이 있는 TITLE과 필드 설명이 있는 DESCRIPTION, 실제 뉴스 문서의 URL이 있는 LINKPUBDATE 이렇게 네 개의 열이 있다.

이 기사에 있는 다운로드 패키지에서 더 자세한 예제를 확인할 수 있다.

REST UDF 결과를 관계형 테이블과 결합

이전 섹션에서는 REST UDF에서 리턴한 XML 데이터를 분리하기 위해 XMLTABLE 함수를 사용했다. 이 섹션에서는 예제를 더 확장한다. 뉴스 제목과 일치하는 네 개의 열을 사용하여 분리된 결과 세트를 기존 뉴스 테이블과 결합한다.


그림 3. REST UDF 결과를 관계형 테이블과 결합
XMLTABLE 함수를 로컬 테이블과 결합하여 결과 세트를 생성하는 것을 제외하면 그림 2와 마찬가지임


목록 4. REST UDF 결과를 관계형 테이블과 결합
			
   SELECT DB2XML.NEWS.*
   FROM XMLTABLE('$result/rss/channel/item' 
      PASSING XMLPARSE(
         DOCUMENT 
           DB2XML.HTTPGETBLOB('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk','')
      ) as "result"
         COLUMNS 
            title VARCHAR(128) PATH 'title'
   ) AS RESULT, DB2XML.NEWS
   WHERE RESULT.TITLE = DB2XML.NEWS.TITLE;

보안 — 인증 및 암호화

REST UDF와 함께 인증서 사용

REST UDF는 SSL(Secure Socket Layer) 통신을 위해 JSSE(Java Secure Socket Extension)를 이용한다. SSL 통신을 하려면 서버 인증서를 저장할 클라이언트에 인증서를 저장해야 한다. 이러한 저장소를 관리하는 방법은 JSSE를 구현하는 방식에 따라 달라진다. IBM JDK에는 z/OS용 특수 확장이 자체적으로 구현되어 있다(IBM JSSE implementation on z/OS 참조).

REST 함수는 HTTPS를 사용하여 HTTP 기본 인증과 SSL 암호화를 지원한다.

다음 예제에서는 Google 메일 계정에서 읽지 않은 메시지를 검색하여 구문 분석한 후 XMLTABLE을 사용하여 관계형 결과 세트로 저장하는 방법을 살펴본다.


그림 4. REST UDF를 사용하여 DB2에서 Gmail 액세스
Gmail이 Atom 피드를 거쳐 HTTPS를 이용한 보안 액세스를 통해 DB2용 HTTP 컨슈머 함수로 전달되면, XMLTABLE 함수가 Atom 형식을 결과 세트로 분리하여 피드를 DB2에 저장되는 과정이 표시된 다이어그램

Gmail에 액세스하는 과정은 SSL로 암호화되고 HTTP 기본 인증($quot;https"가 URL에서 사용됨)을 통해 보호된다. Gmail은 읽지 않은 메시지의 헤드라인을 Atom 피드로 리턴하므로 이 예제에서는 XMLTABLE 함수를 사용하여 결과를 관계형 데이터 세트로 리턴한다.


목록 5. SSL과 HTTP 인증을 사용하여 읽지 않은 메시지를 Gmail에서 검색

SELECT *
  FROM XMLTABLE('$result/*[local-name()=''feed'']/*[local-name()=''entry'']' 
    PASSING  
       XMLPARSE(DOCUMENT 
 DB2XML.HTTPGETBLOB('https://<username>:<password>@mail.google.com/mail/feed/atom/','')) 
AS "result"
  COLUMNS 
    title VARCHAR(128) PATH '*[local-name()=''title'']',
    summary VARCHAR(1024) PATH '*[local-name()=''summary'']',
    author_name VARCHAR(255) PATH '*[local-name()=''author'']/*[local-name()=''name'']',
    author_email VARCHAR(255) PATH '*[local-name()=''author'']/*[local-name()=''email'']'
) AS RESULT;

결과 세트는 TITLE, SUMMARY, AUTHOR_NAME 및 AUTHOR_EMAIL로 구성된다.


헬퍼 함수

REST 함수 이외에도 URL 인코딩/디코딩뿐만 아니라 Base64 인코딩 및 디코딩을 수행할 헬퍼 함수를 찾을 수 있다.

URL 인코딩/디코딩

URL 스펙(RFC1738)에는 이스케이프 시퀀스로 바꾸어야 하는 특수 문자 세트가 정의되어 있다(예: URL을 쿼리 문자열로 사용하는 경우). 다운로드 패키지에는 URL 인코딩과 디코딩을 수행할 함수가 포함되어 있다. urlEncode 함수의 첫 번째 매개변수는 일반 문자열이고 urlDecode 함수의 첫 번째 매개변수는 URL 인코딩 문자열이다. 두 함수의 두 번째 선택적 매개변수는 사용할 문자 세트의 인코딩 유형이다. NULL을 입력하면 RFC3986에서 권장하는 대로 UTF-8이 사용된다.


목록 6. URL 인코딩 예제

SELECT DB2XML.URLENCODE(
     'Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com'
	 , NULL) 
       FROM SYSIBM.SYSDUMMY1

Result:	   
--------------------------------------------------------------------
Please+send+and+email+to+report+our+%25+earnings+to+Mark+%26+Lisa+at+marklisa%40xyz.com


목록 7. URL 디코딩 예제

SELECT DB2XML.URLDECODE(
'Please+send+and+email+to+report+our+%25+earnings+to+Mark+%26+Lisa+at+marklisa%40xyz.com'
, NULL) 
FROM SYSIBM.SYSDUMMY1

Result:	   
----------------------------------------------------------------------
Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com

Base64 인코딩/디코딩

Base64 인코딩은 웹에서 2진 데이터를 문자열로 표현할 때 널리 사용된다(예: 해시 키를 전송할 때). 다운로드 패키지에는 Base64 인코딩 및 디코딩을 수행하는 함수가 두 개 포함되어 있다.


목록 8. Base64 인코딩 예제

SELECT DB2XML.BASE64ENCODE(
 CAST(
 'Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com' 
 AS VARCHAR(100) FOR BIT DATA)) 
 FROM SYSIBM.SYSDUMMY1

Result:
-----------------------------------------------------------------------
UGxlYXNlIHNlbmQgYW5kIGVtYWlsIHRvIHJlcG9ydCBvdXIgJSBlYXJuaW5ncyB0byBNYXJrICYgTGlzYSBhdCBtY
XJrbGlzYUB4eXouY29t


목록 9. Base64 디코딩 예제

SELECT 
CAST(
   DB2XML.BASE64DECODE(
'UGxlYXNlIHNlbmQgYW5kIGVtYWlsIHRvIHJlcG9ydCBvdXIgJSBlYXJuaW5ncyB0byBNYXJrICYgTGlzYSBhdCBtY
XJrbGlzYUB4eXouY29t') AS VARCHAR(100) FOR MIXED DATA) 
FROM SYSIBM.SYSDUMMY1

Result:
-----------------------------------------------------------------------
Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com


결론

DB2 REST 함수를 이용하면 SQL문 내에서 웹에 있는 자원을 간단하고 쉽게 액세스할 수 있다. 이 함수는 단순하지만 다양한 소스에 있는 데이터를 액세스하고 사용할 수 있을 정도로 다양한 기능을 갖추고 있다. XML은 웹에서 메시지 형식으로 널리 사용되고 있으므로 여기서 살펴본 REST 함수는 DB2 pureXML 기능과 원활하게 결합된다. 이 기사에서는 REST 함수의 기본적 사용법과 웹 데이터를 데이터베이스 데이터와 통합하는 방법을 설명했다. 또한, 인증과 암호화를 사용하는 방법을 살펴보았다. 더불어 URL 인코딩과 Base64 인코딩을 처리하는 헬퍼 함수를 설명했다.


감사의 인사

이 기사를 검토하고 이 기사의 구조를 테스트한 Ling Ling에게 감사한다.

부록


표 4. REST UDF 시그너처
이름리턴 유형시그너처HTTP 명령설명
httpGetBlobBLOBhttpGetBlob(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS BLOB(5M)GETHTTP GET을 통해 주어진 URL에서 자원을 검색한다. 자원은 2진 LOB(BLOB)으로 리턴된다.
httpGetClobCLOBhttpGetClob(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS CLOB(5M)GETHTTP GET을 통해 주어진 URL에서 텍스트 기반 자원을 검색한다. 자원은 문자 LOB(CLOB)로 리턴된다. 필요한 경우에는 문자 세트가 데이터베이스 코드 페이지로 변환된다.
httpPutBlobBLOBhttpPutBlob(url VARCHAR(2048), httpHeader CLOB (10K), data BLOB(5M)) RETURNS BLOBPUTHTTP PUT을 사용하여 주어진 URL 아래에 2진 자원을 작성(업로드)한다. 서버에서 실행되는 경우에는 응답 메시지가 2진 LOB(BLOB)으로 리턴된다.
httpPutClobCLOBhttpPutClob(url VARCHAR(2048), httpHeader CLOB (10K), data CLOB(5M)) RETURNS CLOBPUTHTTP PUT를 사용하여 주어진 URL 아래에 텍스트 자원을 작성(업로드)한다. 서버에서 실행되는 경우에는 응답 메시지가 문자 LOB(CLOB)로 리턴된다. 필요한 경우에는 문자 세트 변환이 수행된다.
httpPostBlobBLOBhttpPostBlob(url VARCHAR(2048), httpHeader CLOB (10K), data BLOB(5M)) RETURNS BLOB(5M)POSTHTTP POST를 사용하여 주어진 URL 아래에 있는 2진 자원을 업데이트한다. 응답 메시지는 2진 LOB(BLOB)으로 리턴된다.
httpPostClobCLOBhttpPostClob(url VARCHAR(2048), httpHeader CLOB (10K), data CLOB(5M)) RETURNS CLOB(5M)POSTHTTP POST를 사용하여 주어진 URL 아래에 있는 텍스트 자원을 업데이트한다. 응답 메시지는 2진 문자 LOB(CLOB)로 리턴된다. 필요한 경우에는 문자 세트 변환이 수행된다.
httpDeleteBlobBLOBhttpDeleteBlob(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS BLOBDELETEHTTP DELETE를 사용하여 주어진 URL 아래에 있는 2진 자원을 삭제한다. 2진 자원이 있는 경우에는 응답 메시지가 2진 LOB(BLOB)으로 리턴된다.
httpDeleteClobCLOBhttpDelete(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS CLOBDELETEHTTP DELETE를 사용하여 주어진 URL 아래에 있는 텍스트 자원을 삭제한다. 텍스트 자원이 있는 경우에는 응답 메시지가 문자 LOB(CLOB)로 리턴된다. 필요한 경우에는 문자 세트 변환이 수행된다.
httpBlobBLOBhttpBlob(url VARCHAR(2048), httpMethod VARCHAR(128), httpHeader CLOB (10K), data BLOB(5M)) RETURNS BLOB모든 HTTP 명령입력된 명령을 사용하여 HTTP 요청을 수행한다. 요청 메시지는 2진 LOB(BLOB)으로 제공된다. 서버에서 실행되는 경우에는 응답 메시지가 2진 LOB(BLOB)으로 리턴된다.
httpClobCLOBhttpClob(url VARCHAR(2048), httpMethod VARCHAR(128), httpHeader CLOB (10K), data CLOB(5M)) RETURNS CLOB모든 HTTP 명령입력된 명령을 사용하여 HTTP 요청을 수행한다. 요청 메시지는 문자 LOB(CLOB)로 제공된다. 서버에서 실행되는 경우에는 응답 메시지가 문자 LOB(CLOB)로 리턴된다. 필요한 경우에는 문자 세트 변환이 수행된다.
httpHeadCLOB/XMLhttpHead(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS CLOB (10K)HEADHTTP HEAD를 사용하여 요청된 자원의 HTTP 헤더를 검증한다. HTTP 헤더만 CLOB/XML로 리턴된다.

DB2 for LUW 전용: CLOB을 사용하는 대신 원시 XML로 httpHeader XML 문서를 제공할 수도 있다.


표 5. 헬퍼 함수의 시그너처
이름리턴 유형시그너처설명
urlEncodeVARCHARurlEncode(text VARCHAR(2048), encoding VARCHAR(20)) RETURNS VARCHAR(4096)제공된 텍스트의 URL 인코딩을 수행하는 헬퍼 함수이다. encoding 값은 사용할 문자 세트를 정의한다. 이 값을 NULL로 설정하면 UTF-8이 기본값으로 사용된다.
urlDecodeVARCHARurlDecode(text VARCHAR(2048), encoding VARCHAR(20)) RETURNS VARCHAR(4096)제공된 텍스트의 URL 디코딩을 수행하는 헬퍼 함수이다. encoding 값은 사용할 문자 세트를 정의한다. 이 값을 NULL로 설정하면 UTF-8이 기본값으로 사용된다.
base64EncodeVARCHARbase64Encode(text VARCHAR(2732) FOR BIT DATA) RETURNS VARCHAR(4096)제공된 2진 데이터의 Base64 인코딩을 수행하여 데이터를 Base64 인코딩 문자열로 리턴하는 헬퍼 함수이다.
base64DecodeVARCHAR FOR BIT DATAbase64Decode(text VARCHAR(4096)) RETURNS VARCHAR(2732) FOR BIT DATA제공된 Base64 인코딩 데이터를 대상으로 Base64 디코딩을 수행하여 데이터를 2진 값으로 리턴하는 헬퍼 함수이다.


다운로드 하십시오

설명이름크기다운로드 방식
REST UDF download packagedownload.zip169KBHTTP

다운로드 방식에 대한 정보


참고자료

교육

제품 및 기술 얻기

  • DB2 for Linux, UNIX, and Windows의 무료 평가판을 다운로드하자.

  • 현재는 DB2를 무료로 사용할 수 있다. 커뮤니티용 DB2 Express Edition의 무료 버전인 DB2 Express-C를 다운로드하자. 이 제품은 DB2 Express Edition과 동일한 핵심 데이터 기능과 애플리케이션 빌드 및 전개를 위한 안정적인 환경을 제공한다.

  • developerWorks에서 직접 다운로드할 수 있는 IBM 시험판 소프트웨어를 사용하여 후속 개발 프로젝트를 구현해 보자.

토론

필자소개

Michael Schenker

Michael Schenker는 2003년 말에 정규 직원으로 IBM에 입사하여 7년 이상 작업을 수행했다. IBM에서 근무하는 동안 Michael은 인턴으로 비관계형 데이터 소스에 초점을 맞추어 DB2 Information Integration 관련 업무를 수행하는 것을 시작으로 여러 데이터베이스 관련 제품에 대한 업무를 수행했다.2006년에는 데이터베이스 도구 조직에 참여하여 IBM Data Studio Developer의 DB2 웹 서비스 공급자 기능에 대한 업무를 수행했다. 이때 SOA와 웹 기술에 대한 전문지식을 많이 얻었다. 2008년 이후에는 DB2 for z/OS 최적화 프로그램 팀에 소속되어 액세스 계획 선택 및 최적화 프로그램 테스트 도구 관련 업무를 수행했다.

Susan Malaika

Susan Malaika는 IBM Software Group의 일부인 IBM Information Management Group의 선임 기술 담당자이다. XML, 웹 및 데이터베이스와 관련된 전문성을 갖추고 있다. 그녀는 Global Grid Forum에서 그리드 환경 데이터를 지원하는 표준을 개발했다. IBM 제품 소프트웨어 개발자, 인터넷 전문가, 데이터 분석가 및 애플리케이션 설계자 및 개발자로 활동해 온 그녀는 웹에 대한 책을 공동 집필했으며 트랜잭션 처리 및 XML에 관한 기사를 출판했다. IBM Academy of Technology의 멤버이기도 하다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=Information Management, 웹 개발, SOA와 웹서비스, XML
ArticleID=750175
ArticleTitle=DB2에서 HTTP 및 RESTful 서비스 액세스하기: DB2용 REST 사용자 정의 함수 소개
publish-date=08022011
author1-email=mschenk@us.ibm.com
author1-email-cc=
author2-email=malaika@us.ibm.com
author2-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.