클라우드 데이터에 대한 SQL 데이터베이스
이 튜토리얼에서는 비용이 발생할 수 있습니다. Cost Estimator를 사용하여 예상 사용량을 기반으로 비용 추정값을 생성하십시오.
이 학습서에서는 SQL (관계형) 데이터베이스 서비스를 프로비저닝하는 방법을 보여줍니다. 관리자로서 테이블을 작성하고 대형 데이터 세트 (구/군/시 정보) 를 데이터베이스에 로드합니다. 그런 다음 웹 앱 "worldcities" 를 IBM Cloud® Code Engine에 배치합니다. 이 앱을 사용하면 일반 사용자가 클라우드 데이터베이스에서 레코드를 검색할 수 있습니다. 이 앱은 Flask 프레임워크를 사용하여 Python 작성되었습니다.
목표
- SQL 데이터베이스 프로비저닝
- 데이터베이스 스키마 (테이블) 작성 및 데이터 로드
- 사전 빌드된 컨테이너화된 앱을 Code Engine 에 배치
- 앱 및 데이터베이스 서비스 연결(인증 정보 공유)
- 클라우드 데이터베이스의 모니터링, 보안, 백업 및 복구
시작하기 전에
이 튜토리얼에는 다음 항목이 필요합니다.
- Code Engine 플러그인이 있는 IBM Cloud CLI
git소스 코드 저장소를 복제합니다.
이러한 도구의 설치를 피하려면 Cloud Shell IBM Cloud 사용할 수 있습니다.
튜토리얼 시작하기 안내서에는 사용자 운영 체제에 맞게 이 도구를 다운로드하고 설치하기 위한 지시사항이 있습니다.
- 이 학습서의 Github 저장소 를 복제하고 해당 디렉토리로 변경하십시오. 터미널에서 다음 행을 실행하십시오.
git clone https://github.com/IBM-Cloud/cloud-sql-database.git cd cloud-sql-database - GeoNames 로 이동하여 cities1000.zip파일을 다운로드하고 추출하십시오. 이 파일은 인구가 1000명 이상인 도시에 대한 정보를 보유합니다. 이를 데이터 세트로 사용합니다.
SQL 데이터베이스 프로비저닝
IBM Db2 Warehouse SaaS 인스턴스를 생성하는 것으로 시작합니다.
- IBM Cloud® 방문하십시오. 상단 탐색줄에서 카탈로그를 클릭하십시오.
- 왼쪽 분할창의 데이터베이스를 클릭하고 Db2 Warehouse를 선택하십시오.
- Flex One 플랜을 선택하고 제안된 서비스 이름을 sqldatabase로 변경하십시오(나중에 이 이름을 사용함). 리소스 그룹 및 데이터베이스 배치 위치를 선택하십시오.
- 작성을 클릭하십시오. 프로비저닝이 시작됩니다.
- 리소스 목록에서 데이터베이스 아래에 있는 새로운 인스턴스를 찾아서 사용할 수 있게 될 때까지 기다리십시오(때로는 페이지를 새로 고침해야 할 수도 있습니다). IBM Db2 Warehouse SaaS 서비스에 대한 항목을 클릭하십시오.
- 콘솔 열기를 클릭하여 데이터베이스 콘솔을 실행하십시오.
테이블 작성
샘플 데이터를 보유할 테이블이 필요합니다. 콘솔을 사용하여 테이블을 작성하십시오.
- IBM Db2 Warehouse SaaS 콘솔에서 왼쪽 상단의 메뉴 아이콘을 클릭한 다음, 탐색 모음에서 SQL 실행을 클릭합니다.
- 제목 없음-1 탭 옆에 있는 + 기호 (새 스크립트 추가) 를 클릭하십시오.
- 파일에서 를 클릭하고 이전에 로컬 디렉토리에 복제된 GitHub 저장소에서
cityschema.txt파일을 선택하고 여십시오. - 모두 실행을 클릭하여 명령문을 실행하십시오. 성공 메시지가 표시됩니다.
데이터 로드
"cities" 테이블이 작성되었으므로 이 테이블에 데이터를 로드합니다. 이 작업은 로컬 컴퓨터나 클라우드 객체 스토리지(COS) 또는 Amazon S3 인터페이스 등 다양한 방법으로 수행할 수 있습니다. 이 튜토리얼의 경우 사용자의 시스템에서 데이터를 업로드합니다. 이 프로세스 동안 파일 컨텐츠와 완전히 일치하도록 테이블 구조 및 데이터를 조정합니다.
-
IBM Db2 Warehouse SaaS 의 콘솔에서 왼쪽 상단 메뉴 아이콘을 클릭한 후 탐색줄에서 데이터 를 클릭하십시오.
-
소스 로 내 컴퓨터에서 선택사항을 유지하십시오.
-
파일 선택 에서 파일을 여기로 드래그하거나 파일을 찾아봅니다 를 클릭하여 이 가이드의 첫 번째 섹션에서 다운로드한 " cities1000.txt " 파일을 찾아 선택합니다.
-
다음 을 클릭하여 스키마 선택사항과 함께 대상 개요로 이동하십시오. BLUADMIN 스키마를 선택한 다음 CITIES 테이블을 선택합니다. 다시 다음을 클릭하십시오.
테이블이 비어 있으므로 기존 데이터에 추가하거나 기존 데이터를 겹쳐쓸 차이점이 작성되지 않습니다.
-
이제 로드 프로세스 중에 "cities1000.txt" 파일의 데이터를 해석하는 방법을 사용자 정의하십시오. 먼저, 이 파일에는 데이터만 포함되어 있으므로 첫 번째 행에 헤더를 사용 안함으로 설정하십시오.
-
그 다음 0x09를 구분자로 입력하십시오. 이는 파일에 있는 값이 탭(도표 작성자)으로 구분됨을 의미합니다.
-
마지막으로 "YYYY-MM-DD"를 날짜 형식으로 선택하십시오. 이제 모든 것이 이 화면 캡처에 표시된 것과 비슷하게 보일 것입니다.
샘플링된 데이터를 표시하는 화면 캡처 -
다음을 클릭하면 로드 설정을 검토하도록 제안됩니다. 동의한 후 로드 시작을 클릭하여 CITIES 테이블에 데이터 로드를 시작하십시오. 진행상태가 표시됩니다. 데이터가 업로드되고 나면 몇 초 후에 로드가 완료되고 일부 통계가 제공됩니다.
-
테이블 보기를 클릭하여 데이터를 탐색하십시오. 아래로 스크롤하거나, 열 이름을 클릭하여 정렬 순서를 변경할 수 있습니다.
SQL을 사용하여 로드된 데이터 확인
데이터가 관계형 데이터베이스에 로드되었습니다. 오류는 없었지만 어쨌든 몇 가지 빠른 테스트를 실행해야 합니다. 기본 제공 SQL 편집기를 사용하여 일부 SQL문을 입력하고 실행하십시오.
-
왼쪽 탐색 메뉴에서 SQL 실행을 클릭하여 SQL 편집기로 돌아갑니다. + 기호(새 스크립트 추가)를 클릭하고 새로 작성을 클릭하여 새 편집기 탭을 작성하십시오.
기본 제공 SQL 편집기 대신 IBM Db2 Warehouse SaaS가 있는 서버 시스템 또는 데스크탑에서 전통적인 클라우드 기반 SQL 도구를 사용할 수 있습니다. 연결 정보는 왼쪽 탐색의 관리 메뉴에서 찾을 수 있습니다.
-
편집기에서 다음 조회를 입력하거나 복사하십시오.
select count(*) from cities;조회의 텍스트를 선택한 후 모두 실행옆에 있는 드롭 다운에서 선택 실행을 선택하십시오. 결과가 있는 섹션에는 로드 프로세스에서 보고한 것과 같은 수의 행이 표시되어야 합니다.
-
"SQL 편집기"에서 새 행에 다음 명령문을 입력하십시오.
select countrycode, count(name) from cities group by countrycode order by 2 desc;위 명령문의 텍스트를 표시하고 선택 실행 단추를 클릭하십시오. 이 문장만 실행되어 결과 섹션에 국가별 통계를 반환합니다.
-
마지막으로 다음 명령문을 실행하여 캘리포니아의 San Francisco에 대한 세부사항을 검색하십시오.
select * from cities where name='San Francisco' and countrycode='US';
애플리케이션 코드 배치
터미널로 다시 변경하십시오. 이제 사전 빌드된 컨테이너 이미지를 사용하여 애플리케이션 코드를 배치하려고 합니다. 애플리케이션 코드를 수정하고 자체적으로 컨테이너 이미지를 빌드할 수 있습니다. 세부사항은 GitHub 저장소의 지시사항 을 참조하십시오.
-
로그인하지 않은 경우,
ibmcloud login또는ibmcloud login --sso을 사용하여 대화형으로 로그인하십시오. 데이터베이스가 프로비저닝된 지역 및 리소스 그룹을 설정하십시오. RESOURCE_GROUP 및 REGION 을 적절하게 대체하십시오.ibmcloud target -g RESOURCE_GROUP -r REGION -
sqldatabase 라는 새 Code Engine 프로젝트를 작성하십시오.
ibmcloud ce project create --name sqldatabase새 프로젝트를 활성 프로젝트로 선택하십시오.
ibmcloud ce project select --name sqldatabase -
그런 다음, worldcities라는 앱을 배포합니다.
ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1 -
마지막으로 기존 IBM Db2 Warehouse SaaS 데이터베이스와 앱 간에 서비스 바인딩을 작성하십시오.
ibmcloud ce application bind --name worldcities --service-instance sqldatabase바인딩이 작성되면 새 앱 개정이 시작됩니다.
-
이제 앱의 상태와 URL 확인할 수 있습니다
ibmcloud ce app get --name worldcities출력물에서 URL 시작하는 줄을 찾으십시오. 표시된 URL
https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud와 같은 패턴을 가져야 합니다. 앱에 액세스하려면 링크를 클릭하십시오. 앱 세부 정보를 검색하는 또 다른 방법은 Code Engine 방문하는 것입니다.
보안, 백업 및 복구, 모니터링
IBM Db2 Warehouse SaaS는 관리 서비스입니다. IBM은 환경 보안, 일일 백업 및 시스템 모니터링을 처리합니다. 엔터프라이즈 플랜 중 하나를 사용하는 경우 액세스를 관리하기 위한 여러 옵션 이 있으며 향상된 데이터 암호화 를 구성할 수 있습니다.
일반적인 관리 옵션 외에도 IBM Db2 Warehouse SaaS 서비스는 모니터링, 사용자 관리, 유틸리티, 로드, 스토리지 액세스 등을 위한 REST API를 제공합니다.
앱 테스트
로드된 데이터 세트를 기반으로 도시 정보를 표시하는 앱이 최소값으로 감소합니다. 이는 도시 이름(이름은 대소문자를 구분함)을 지정하기 위한 검색 양식과 몇 개의 사전 구성된 도시를 제공합니다. 이들은 /search?name=cityname(검색 양식) 또는 /city/cityname(직접 지정된 도시)으로 변환됩니다. 두 요청 모두 백그라운드의 동일한 코드 행에서 제공됩니다. cityname 는 보안상의 이유로 파라미터 마커를 사용하여 준비된 SQL 문에 값으로 전달됩니다. 행은 데이터베이스에서 페치되고 렌더링을 위해 HTML 템플리트에 전달됩니다.
정리
튜토리얼에서 사용하는 리소스를 정리하려면 다음과 같은 단계를 수행하십시오.
- IBM Cloud® 리소스 목록을 방문하십시오.
- Code Engine 섹션에서 sqldatabase 프로젝트를 찾으십시오. 세 개의 점을 클릭하고 삭제 를 선택하여 프로젝트 및 해당 앱을 삭제하십시오.
- 데이터베이스아래에서
sqldatabase데이터베이스를 찾으십시오. 다시 세 개의 점을 클릭하고 삭제 를 선택하여 데이터베이스를 삭제하십시오.
리소스에 따라 즉시 삭제되지 않고 보유될 수 있습니다(기본 7일 동안). 리소스를 영구적으로 삭제하여 재확보하거나 보유 기간 내에 리소스를 복원할 수 있습니다. 리소스 재확보 사용 방법은 이 문서를 참조하십시오.
튜토리얼 확장
이 앱을 확장하시겠습니까? 몇 가지 방법은 다음과 같습니다.
- 대체 이름에 대한 와일드카드 검색을 제공하십시오.
- 특정 인구 값 내에서만 특정 국가의 도시를 검색하십시오.
- CSS 스타일을 대체하고 템플리트를 확장하여 페이지 레이아웃을 변경하십시오.
- 새로운 도시 정보의 양식 기반 생성을 허용하거나 인구와 같은 기존 데이터의 업데이트를 허용합니다.