클라우드 데이터에 대한 SQL 데이터베이스

이 튜토리얼에서는 비용이 발생할 수 있습니다. Cost Estimator를 사용하여 예상 사용량을 기반으로 비용 추정값을 생성하십시오.

이 학습서에서는 SQL (관계형) 데이터베이스 서비스를 프로비저닝하는 방법을 보여줍니다. 관리자로서 테이블을 작성하고 대형 데이터 세트 (구/군/시 정보) 를 데이터베이스에 로드합니다. 그런 다음 웹 앱 "worldcities" 를 IBM Cloud® Code Engine에 배치합니다. 이 앱을 사용하면 일반 사용자가 클라우드 데이터베이스에서 레코드를 검색할 수 있습니다. 이 앱은 Flask 프레임워크를 사용하여 Python 작성되었습니다.

아키텍처 다이어그램 * 튜토리얼의
다이어그램

목표

  • SQL 데이터베이스 프로비저닝
  • 데이터베이스 스키마 (테이블) 작성 및 데이터 로드
  • 사전 빌드된 컨테이너화된 앱을 Code Engine 에 배치
  • 앱 및 데이터베이스 서비스 연결(인증 정보 공유)
  • 클라우드 데이터베이스의 모니터링, 보안, 백업 및 복구

시작하기 전에

이 튜토리얼에는 다음 항목이 필요합니다.

  • Code Engine 플러그인이 있는 IBM Cloud CLI
  • git 소스 코드 저장소를 복제합니다.

이러한 도구의 설치를 피하려면 Cloud Shell IBM Cloud 사용할 수 있습니다.

튜토리얼 시작하기 안내서에는 사용자 운영 체제에 맞게 이 도구를 다운로드하고 설치하기 위한 지시사항이 있습니다.

  1. 이 학습서의 Github 저장소 를 복제하고 해당 디렉토리로 변경하십시오. 터미널에서 다음 행을 실행하십시오.
    git clone https://github.com/IBM-Cloud/cloud-sql-database.git
    cd cloud-sql-database
    
  2. GeoNames 로 이동하여 cities1000.zip파일을 다운로드하고 추출하십시오. 이 파일은 인구가 1000명 이상인 도시에 대한 정보를 보유합니다. 이를 데이터 세트로 사용합니다.

SQL 데이터베이스 프로비저닝

IBM Db2 Warehouse SaaS 인스턴스를 생성하는 것으로 시작합니다.

  1. IBM Cloud® 방문하십시오. 상단 탐색줄에서 카탈로그를 클릭하십시오.
  2. 왼쪽 분할창의 데이터베이스를 클릭하고 Db2 Warehouse를 선택하십시오.
  3. Flex One 플랜을 선택하고 제안된 서비스 이름을 sqldatabase로 변경하십시오(나중에 이 이름을 사용함). 리소스 그룹 및 데이터베이스 배치 위치를 선택하십시오.
  4. 작성을 클릭하십시오. 프로비저닝이 시작됩니다.
  5. 리소스 목록에서 데이터베이스 아래에 있는 새로운 인스턴스를 찾아서 사용할 수 있게 될 때까지 기다리십시오(때로는 페이지를 새로 고침해야 할 수도 있습니다). IBM Db2 Warehouse SaaS 서비스에 대한 항목을 클릭하십시오.
  6. 콘솔 열기를 클릭하여 데이터베이스 콘솔을 실행하십시오.

테이블 작성

샘플 데이터를 보유할 테이블이 필요합니다. 콘솔을 사용하여 테이블을 작성하십시오.

  1. IBM Db2 Warehouse SaaS 콘솔에서 왼쪽 상단의 메뉴 아이콘을 클릭한 다음, 탐색 모음에서 SQL 실행을 클릭합니다.
  2. 제목 없음-1 탭 옆에 있는 + 기호 (새 스크립트 추가) 를 클릭하십시오.
  3. 파일에서 를 클릭하고 이전에 로컬 디렉토리에 복제된 GitHub 저장소에서 cityschema.txt 파일을 선택하고 여십시오.
  4. 모두 실행을 클릭하여 명령문을 실행하십시오. 성공 메시지가 표시됩니다.

데이터 로드

"cities" 테이블이 작성되었으므로 이 테이블에 데이터를 로드합니다. 이 작업은 로컬 컴퓨터나 클라우드 객체 스토리지(COS) 또는 Amazon S3 인터페이스 등 다양한 방법으로 수행할 수 있습니다. 이 튜토리얼의 경우 사용자의 시스템에서 데이터를 업로드합니다. 이 프로세스 동안 파일 컨텐츠와 완전히 일치하도록 테이블 구조 및 데이터를 조정합니다.

  1. IBM Db2 Warehouse SaaS 의 콘솔에서 왼쪽 상단 메뉴 아이콘을 클릭한 후 탐색줄에서 데이터 를 클릭하십시오.

  2. 소스내 컴퓨터에서 선택사항을 유지하십시오.

  3. 파일 선택 에서 파일을 여기로 드래그하거나 파일을 찾아봅니다 를 클릭하여 이 가이드의 첫 번째 섹션에서 다운로드한 " cities1000.txt " 파일을 찾아 선택합니다.

  4. 다음 을 클릭하여 스키마 선택사항과 함께 대상 개요로 이동하십시오. BLUADMIN 스키마를 선택한 다음 CITIES 테이블을 선택합니다. 다시 다음을 클릭하십시오.

    테이블이 비어 있으므로 기존 데이터에 추가하거나 기존 데이터를 겹쳐쓸 차이점이 작성되지 않습니다.

  5. 이제 로드 프로세스 중에 "cities1000.txt" 파일의 데이터를 해석하는 방법을 사용자 정의하십시오. 먼저, 이 파일에는 데이터만 포함되어 있으므로 첫 번째 행에 헤더를 사용 안함으로 설정하십시오.

  6. 그 다음 0x09를 구분자로 입력하십시오. 이는 파일에 있는 값이 탭(도표 작성자)으로 구분됨을 의미합니다.

  7. 마지막으로 "YYYY-MM-DD"를 날짜 형식으로 선택하십시오. 이제 모든 것이 이 화면 캡처에 표시된 것과 비슷하게 보일 것입니다.

    샘플링된 데이터를 표시하는 화면 캡처
    샘플링된 데이터를 표시하는 화면 캡처

  8. 다음을 클릭하면 로드 설정을 검토하도록 제안됩니다. 동의한 후 로드 시작을 클릭하여 CITIES 테이블에 데이터 로드를 시작하십시오. 진행상태가 표시됩니다. 데이터가 업로드되고 나면 몇 초 후에 로드가 완료되고 일부 통계가 제공됩니다.

  9. 테이블 보기를 클릭하여 데이터를 탐색하십시오. 아래로 스크롤하거나, 열 이름을 클릭하여 정렬 순서를 변경할 수 있습니다.

SQL을 사용하여 로드된 데이터 확인

데이터가 관계형 데이터베이스에 로드되었습니다. 오류는 없었지만 어쨌든 몇 가지 빠른 테스트를 실행해야 합니다. 기본 제공 SQL 편집기를 사용하여 일부 SQL문을 입력하고 실행하십시오.

  1. 왼쪽 탐색 메뉴에서 SQL 실행을 클릭하여 SQL 편집기로 돌아갑니다. + 기호(새 스크립트 추가)를 클릭하고 새로 작성을 클릭하여 새 편집기 탭을 작성하십시오.

    기본 제공 SQL 편집기 대신 IBM Db2 Warehouse SaaS가 있는 서버 시스템 또는 데스크탑에서 전통적인 클라우드 기반 SQL 도구를 사용할 수 있습니다. 연결 정보는 왼쪽 탐색의 관리 메뉴에서 찾을 수 있습니다.

  2. 편집기에서 다음 조회를 입력하거나 복사하십시오.

    select count(*) from cities;
    

    조회의 텍스트를 선택한 후 모두 실행옆에 있는 드롭 다운에서 선택 실행을 선택하십시오. 결과가 있는 섹션에는 로드 프로세스에서 보고한 것과 같은 수의 행이 표시되어야 합니다.

  3. "SQL 편집기"에서 새 행에 다음 명령문을 입력하십시오.

    select countrycode, count(name) from cities
    group by countrycode
    order by 2 desc;
    

    위 명령문의 텍스트를 표시하고 선택 실행 단추를 클릭하십시오. 이 문장만 실행되어 결과 섹션에 국가별 통계를 반환합니다.

  4. 마지막으로 다음 명령문을 실행하여 캘리포니아의 San Francisco에 대한 세부사항을 검색하십시오.

    select * from cities
    where name='San Francisco'
    and countrycode='US';
    

애플리케이션 코드 배치

터미널로 다시 변경하십시오. 이제 사전 빌드된 컨테이너 이미지를 사용하여 애플리케이션 코드를 배치하려고 합니다. 애플리케이션 코드를 수정하고 자체적으로 컨테이너 이미지를 빌드할 수 있습니다. 세부사항은 GitHub 저장소의 지시사항 을 참조하십시오.

  1. 로그인하지 않은 경우, ibmcloud login 또는 ibmcloud login --sso 을 사용하여 대화형으로 로그인하십시오. 데이터베이스가 프로비저닝된 지역 및 리소스 그룹을 설정하십시오. RESOURCE_GROUPREGION 을 적절하게 대체하십시오.

    ibmcloud target -g RESOURCE_GROUP -r REGION
    
  2. sqldatabase 라는 새 Code Engine 프로젝트를 작성하십시오.

    ibmcloud ce project create --name sqldatabase
    

    새 프로젝트를 활성 프로젝트로 선택하십시오.

    ibmcloud ce project select --name sqldatabase
    
  3. 그런 다음, worldcities라는 앱을 배포합니다.

    ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
    
  4. 마지막으로 기존 IBM Db2 Warehouse SaaS 데이터베이스와 앱 간에 서비스 바인딩을 작성하십시오.

    ibmcloud ce application bind --name worldcities --service-instance sqldatabase
    

    바인딩이 작성되면 새 앱 개정이 시작됩니다.

  5. 이제 앱의 상태와 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 템플리트에 전달됩니다.

정리

튜토리얼에서 사용하는 리소스를 정리하려면 다음과 같은 단계를 수행하십시오.

  1. IBM Cloud® 리소스 목록을 방문하십시오.
  2. Code Engine 섹션에서 sqldatabase 프로젝트를 찾으십시오. 세 개의 점을 클릭하고 삭제 를 선택하여 프로젝트 및 해당 앱을 삭제하십시오.
  3. 데이터베이스아래에서 sqldatabase 데이터베이스를 찾으십시오. 다시 세 개의 점을 클릭하고 삭제 를 선택하여 데이터베이스를 삭제하십시오.

리소스에 따라 즉시 삭제되지 않고 보유될 수 있습니다(기본 7일 동안). 리소스를 영구적으로 삭제하여 재확보하거나 보유 기간 내에 리소스를 복원할 수 있습니다. 리소스 재확보 사용 방법은 이 문서를 참조하십시오.

튜토리얼 확장

이 앱을 확장하시겠습니까? 몇 가지 방법은 다음과 같습니다.

  1. 대체 이름에 대한 와일드카드 검색을 제공하십시오.
  2. 특정 인구 값 내에서만 특정 국가의 도시를 검색하십시오.
  3. CSS 스타일을 대체하고 템플리트를 확장하여 페이지 레이아웃을 변경하십시오.
  4. 새로운 도시 정보의 양식 기반 생성을 허용하거나 인구와 같은 기존 데이터의 업데이트를 허용합니다.

관련 컨텐츠