Windows Azure™ is a cloud services operating system that serves as the development, service hosting and service management environment for the Windows Azure platform. Windows Azure provides developers with on-demand compute and storage to host, scale, and manage web applications on the internet through Microsoft® datacenters.
Windows Azure is a flexible platform that supports multiple languages and integrates with your existing on-premises environment. To build applications and services on Windows Azure, developers can use their existing Microsoft Visual Studio® expertise. In addition, Windows Azure supports popular standards, protocols and languages including SOAP, REST, XML, Java, PHP and Ruby. Windows Azure is now commercially available in 40 countries.
MongoDB 및 CouchDB와 같은 문서 지향적 데이터베이스는 데이터를 테이블에 저장하지 않고 문서 형식으로
저장한다는 점에서 관계형 데이터베이스와 큰 차이가 있다. 개발자의 관점에서 문서 지향적(또는 스키마리스)
데이터는 관계형 데이터에 비해 단순해서 관리 유연성이 훨씬 높다. 관계를 통해 결합된 테이블, 행 및 열로
구성된 엄격한 스키마에 데이터를 저장하기 보다는 필요한 데이터가 포함된 문서를 개별적으로 작성한다.
개발사에서 소개하는 MongoDB
10gen의 CTO인 Eliot Horowitz가 시기 적절한 기술 팟캐스트를 통해 이 오픈 소스 문서 데이터베이스에 대해
자세히 설명한다. 지금 들어보자.
오픈 소스 문서 지향적 데이터베이스 중에서 MongoDB는 RDBMS 기능을 갖춘 NoSQL 데이터베이스라고
언급되기도 한다. 예를 들어, MongoDB에서는 미리 정의된 MapReduce 함수가 없어도 동적 쿼리가 지원된다. 또한
MongoDB에는 손쉽게 데이터 저장소에 액세스하는 기능을 제공하는 대화식 쉘이 있으며 기본적으로 지원되는 샤드(shard)
기능을 사용하면 여러 노드로 확장할 수 있다.
MongoDB의 API는 JSON 오브젝트와 JavaScript 함수의 혼합체이다. 개발자는 명령행 인수를 사용할 수 있는 쉘
프로그램이나 언어 드라이버를 통해 MongoDB와 상호 작용하여 데이터 저장소 인스턴스에 액세스할 수 있다. 그렇지만
JDBC와 같은 드라이버는 없다. 이는 ResultSet 또는 PreparedStatement를
다루지 않아도 된다는 의미이다.
MongoDB는 빠르다는 장점도 가지고 있다. 이는 주로 데이터를 쓰는 방법 즉, 데이터를 메모리에 저장한 후 나중에
백그라운드 스레드를 통해 디스크에 기록하는 방법이 속도 향상 효과를 제공하기 때문이다.
이 시리즈의 정보
처음 Java 기술이 발표된 이후로 Java를 개발하는 과정은 급속도로 변화되었다. 오픈 소스 프레임워크와 신뢰할 수 있는 임대용 전개 인프라 덕택에
Java 애플리케이션을 신속하고 저렴하게 어셈블하고 테스트하고 유지할 수 있게 되었다. 이 시리즈에서 Andrew Glover는 이러한 새로운 Java 개발 패러다임을
가능하게 하는 다양한 기술과 도구를 탐구한다.
MongoDB에 대해 설명하는 이 기사는 CouchDB에 대해 소개하는 필자의 기사(참고자료
참조)를 바탕으로 하며 다시 한번 주차 티켓 예제를 사용하여 스키마리스 데이터 저장소의 유연성을 보여 준다. MongoDB의
API 및 동적 쿼리 지원이 MongoDB의 두 가지 주요 차별 요소이므로 이러한 차별 요소에 중점을 두고 MongoDB의 쉘 및 Java
언어 드라이버의 사용법을 보여 주는 예제를 살펴본다. 기사 후반부에서는 MongoDB의 MapReduce 구현에서 제공하는 일부 정보를
사용하는 Groovy 랩퍼인 GMongo에 대해서도 소개한다. 이 기능도 이 특별한 NoSQL 옵션의 주요 특징 중 하나이다.
스키마리스 저장소가 모든 분야에 적합한 것은 아니기 때문에 문서 지향적 방법과 관계형 방법의 선택 기준을
이해해야 한다. 데이터를 다양한 양식으로 참조할 수 있지만 기본 모델이 동일한 분야에서는 문서의 유연성이
중요하다. 명함이 전형적인 예이다. 수많은 명함을 보면 다양한 데이터가 있다는 것을 알 수 있다. 일부 명함에는
팩스 번호나 회사 URL이 적혀 있기도 하지만 우편 주소, 두 개의 전화번호 또는 Twitter 핸들이 적혀 있는 명함도
있다. 데이터는 다양하지만 모델이나 기능은 동일하다. 즉, 명함에는 연락처 정보가 있다.
명함을 관계형 용어로 모델링할 수는 있지만 꽤 복잡하다. 관계형 데이터베이스를 보면 예를 들어, 팩스 번호를
사용하는 하나 또는 두 개의 레코드마다 팩스 열의 값이 널값인 레코드를 많이 볼 수 있다. 또한 관계형 시스템에서는
열 유형을 지정해야 하기 때문에 주소 필드 길이 등으로 인한 제약이 발생할 수 있다. (아마도 Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch에
사는 사람의 주소를 저장해야 하는 경우를 생각해 본 적이 없을 것이다. 하지만 이 마을이 실제로 존재한다.)
문서 지향적 데이터 저장소로 명함을 모델링하는 작업은 매우 쉽다. 스키마를 사용하지 않는다는 것은 길이에
상관 없이 필요한 모든 데이터를 문서에 담을 수 있다는 것을 의미한다. 명함의 특성을 고려하면 다양한 특성을
지닌 문서로 모델링하는 것이 적합하다.
스키마리스 데이터 저장소는 대부분 ACID(Atomicity, Consistency, Isolation, and Durability)를 완벽하게
지원하지는 않기 때문에 안정성 및 일관성이 중요한 분야에서는 문제가 발생할 수 있다. NoSQL 방법의 지지자는
확장하기 위해 다중 노드를 도입하는 순간부터 불가피하게 발생하는 중단 시간을 고려하지 않는 경우에만 ACID가
작동한다고 주장한다. 핵심은 스키마리스 데이터 저장소가 관계형 데이터 저장소보다 쉽게 확장할 수 있으므로 문서
지향적 저장소가 웹 기반 애플리케이션에 적합하다는 것이다.
서비스는 무조건 빨리 출시해야 할까? IT쪽의 서비스는 무엇보다 선점이 중요하고 어떤 시기에 누가 먼저 자리르 ㄹ잡느냐에 따라 사업의 성패가 좌우되는 것은 사실이다. 그렇기 때문에 모든 서비스를 빨리 출시한다기 보다는 핵심만 각춘 안정적인 서비스를 최대한 빨리 출시하는 것이 최선이라 할 수 있다. 이 부분에 대한 의견은 엔지니어와 경영자 사이에서 빈번하게 부딪치게 되는 문제이다. 이 문제를 예방하기 위해서는 기획단계에서 기능에 대한 욕심을 과감히 버려야 하고 개발자 또한 완벽한 설계와 구조에 대해서 어느 정도 포기할 필요가 있다.
Dim szChar, WideChar, nLength, i, result nLength = Len(szSource)
'szSource = Replace(szSource," ","+")
For i = 1 To nLength szChar = Mid(szSource, i, 1)
If Asc(szChar) < 0 Then WideChar = CLng(AscB(MidB(szChar, 2, 1))) * 256 + AscB(MidB(szChar, 1, 1))
If (WideChar And &HFF80) = 0 Then result = result & "%" & Hex(WideChar) ElseIf (WideChar And &HF000) = 0 Then result = result & _ "%" & Hex(CInt((WideChar And &HFFC0) / 64) Or &HC0) & _ "%" & Hex(WideChar And &H3F Or &H80) Else result = result & _ "%" & Hex(CInt((WideChar And &HF000) / 4096) Or &HE0) & _ "%" & Hex(CInt((WideChar And &HFFC0) / 64) And &H3F Or &H80) & _ "%" & Hex(WideChar And &H3F Or &H80) End If Else result = result + szChar End If Next URLEncodeUTF8 = result End Function
Public Function URLDecodeUTF8(byVal pURL) Dim i, s1, s2, s3, u1, u2, result pURL = Replace(pURL,"+"," ")
For i = 1 to Len(pURL)
if Mid(pURL, i, 1) = "%" then
s1 = CLng("&H" & Mid(pURL, i + 1, 2))
'2바이트일 경우 if ((s1 AND &HC0) = &HC0) AND ((s1 AND &HE0) <> &HE0) then s2 = CLng("&H" & Mid(pURL, i + 4, 2))
u1 = (s1 AND &H1C) / &H04 u2 = ((s1 AND &H03) * &H04 + ((s2 AND &H30) / &H10)) * &H10 u2 = u2 + (s2 AND &H0F) result = result & ChrW((u1 * &H100) + u2) i = i + 5
'3바이트일 경우 elseif (s1 AND &HE0 = &HE0) then s2 = CLng("&H" & Mid(pURL, i + 4, 2)) s3 = CLng("&H" & Mid(pURL, i + 7, 2))
u1 = ((s1 AND &H0F) * &H10) u1 = u1 + ((s2 AND &H3C) / &H04) u2 = ((s2 AND &H03) * &H04 + (s3 AND &H30) / &H10) * &H10 u2 = u2 + (s3 AND &H0F) result = result & ChrW((u1 * &H100) + u2) i = i + 8 end if else result = result & Mid(pURL, i, 1) end if Next URLDecodeUTF8 = result End Function
Internet Explorer 9(인터넷 익스플로러 9) 베타는 다양한 언어로 제공됩니다. Internet Explorer 9(인터넷 익스플로러 9) 베타를 사용 중인 버전의 Windows (윈도우)에 일치하는 언어로 설치할 수도 있고 모든 버전의 Windows Vista(윈도우 비스타) 및 Windows 7(윈도우 7)에서 작동하는 영어 버전을 선택할 수도 있습니다. 자세한 내용은 다음을 참조하십시오. Internet Explorer 9 설치 또는 제거 방법
Page 1: 『2010년도 IT서비스산업 시장 및 기술전망 세미나』 2010년도 IT서비스산업 세미나』
IT컨설팅 트랜드 및 전망
발표자 : 이 석 상무
Page 2: 『2010년도 IT서비스산업 시장 및 기술 전망 세미나』
Contents Map
I. 시작하면서… 2009 & 2010 IT News
1. 비즈니스 관점 2. 데이터 관점 3. 어플리케이션 관점 4. 기술 인프라 관점 5. IT 거버넌스 관점
II. 2010 IT 컨설팅 트렌드
III. 마치면서… 미래에 대한 준비
Page 3: CIO 화두로 돌아 본 2009년 IT 시장의 특징
l BPM, SOA 시장 기대에 못 미쳐… l 가상화 기술 도입 확대. 서버 가상화 이어 데스크톱 가상화 관심 고조 l 통합커뮤니케이션 시장 전 산업에 걸쳐 확산 조짐 l 통합보안관리 투자 중요성 인식 확대 l 클라우드 컴퓨팅, 소셜 소프트웨어는 ‘컨퍼런스용 화두’ l 모바일 오피스, 비즈니스인텔리전스(BI) 투자 본격화
2009년 주목할 신기술 1. 2. 3. 4. 5. 6. 7. 8. 9. … 비즈니스프로세스관리(BPM) 비즈니스프로세스관리(BPM) 통합보안관리 통합커뮤..
SQL> SELECT empno, sal, deptno FROM emp WHERE sal IN ( SELECT sal FROM emp WHERE deptno = 30 AND comm is NOT NULL ) AND deptno IN ( SELECT deptno FROM emp WHERE deptno = 30 AND comm is NOT NULL );