데이터 모델링

관계형에서 컬렉션으로의 마이그레이션 실습

이 블로그의 핵심은 관계형 데이터를 Couchbase로 쉽게 마이그레이션하여 TCO를 낮추고 데이터 플랫폼이 빠른 속도로 진행되는 릴리즈 주기에 대응할 수 있도록 하는 방법을 알려드리는 것입니다! 마이그레이션하는 동안 범위와 컬렉션을 사용해 이미 구성한 개별 이름/키스페이스를 그대로 유지할 수도 있습니다. 이 블로그는 다른 블로그에서 설명한 새로 출시된 기능과 최근 업데이트 내용을 다소 통합한 것이지만, 다른 블로그와 달리 관계형 데이터를 Couchbase로 마이그레이션하는 방법을 몇 가지 예시를 들어 설명합니다.

Couchbase의 훌륭한 점 중 하나는 커뮤니티의 요구에 진정으로 귀를 기울이고 고객에게 최상의 경험을 제공하기 위해 제품을 지속적으로 개발한다는 점입니다. 이 블로그는 따라 해보고 싶으신 분들을 위해 '실습'으로 작성했지만, 추출 단계를 건너뛰고 제가 제공한 TSV로 작업하실 수도 있습니다!

이 과정을 따라가려면 데이터를 추출할 RDBMS, 파이썬 인터프리터, Couchbase 서버(Docker, VM, 물리적 등)가 전제 조건이 필요합니다.

데모 데이터베이스에 온라인 예제를 사용하겠습니다. Linked 여기 는 고객, 상담원, 주문이라는 세 개의 테이블이 있는 샘플 데이터베이스입니다.

새로운 범위 및 컬렉션 기능을 사용하여 테이블 구조를 모방하여 데이터를 Couchbase로 마이그레이션하는 것은 정말 쉽습니다. 먼저 논리적 저장 공간이 필요한데, 이 예에서는 데이터베이스당 하나의 버킷을 사용하므로 버킷을 하나만 만들면 됩니다. 스키마는 스코프에 매핑되므로 하나의 스코프만 만들면 됩니다. 마지막으로, 테이블은 각각 같은 이름의 컬렉션에 매핑되므로 총 3개의 컬렉션이 생성됩니다.

버킷, 범위 및 컬렉션 만들기:

여기에는 다양한 옵션이 있습니다. SDK, REST API, Couchbase CLI(Couchbase 셸도 잊지 마세요), 웹 GUI가 있습니다. 저는 REST API를 사용하려고 하는데, 명령줄에서 액세스할 수 있고 아무것도 설치할 필요가 없다는 것이 장점입니다! REST 인터페이스에 익숙하지 않은 분들을 위해 문서 여기 에서 다른 대체 방법을 설명합니다.

아래 단계에서는 버킷, 범위 및 컬렉션을 설정하는 데 필요한 명령을 지정합니다:

다음 두 명령을 실행하여 데이터 버킷과 범위를 만드세요:

이제 테이블 데이터를 매핑할 세 개의 컬렉션을 만듭니다:

필요에 따라 $TABLE_NAME 변수를 변경하여 상담원, 주문 및 고객 컬렉션을 각각 생성하기만 하면 됩니다.

(부록에 이러한 API에 대한 문서 페이지 링크가 있습니다).

모든 것이 생성되면 버킷 섹션으로 이동하여 생성한 버킷의 이름 옆에 있는 "범위 및 컬렉션" 링크를 클릭합니다(제 버킷의 이름은 마이그레이션입니다). 그런 다음 생성한 범위를 확장하면 생성한 세 개의 컬렉션을 볼 수 있습니다.

 

RDBMS에서 데이터 추출

이제 버킷, 범위 및 컬렉션이 준비되었으므로 관계형 데이터를 내보낼 준비가 되었습니다. 저는 짧은 스크립트 를 실행하여 샘플 MySQL 데이터베이스에 저장된 데이터를 가져오기 도구에서 지원하는 TSV로 추출하거나 직접 데이터를 내보낼 수 있습니다. 데이터베이스 설정이 완료되면 스크립트를 실행하고 구성한 사용자 아이디와 비밀번호를 사용하도록 변수를 변경하기만 하면 됩니다. 스크립트를 실행하면 샘플 데이터베이스의 각 테이블에 있는 데이터가 포함된 3개의 .tsv 파일이 생성됩니다.

가져오기 부분만 작업하는 경우에는 이 예제를 사용하세요:

 

Couchbase로 데이터 가져오기

다양한 기능을 갖춘 가져오기 도구인 cbimport를 사용하면 다양한 형식의 데이터를 정말 쉽게 가져올 수 있습니다. 최근에는 일부 가져오기 기능을 웹 GUI에 구현하여 프로세스에 더욱 쉽게 접근할 수 있도록 했습니다. 아래는 웹 가이드 가져오기 도구의 스크린샷입니다. 여기로 이동하려면 Couchbase 웹 GUI에 로그인한 다음 "문서" -> "가져오기"로 이동합니다.

여기서는 '가져올 파일 선택' 버튼을 사용하여 TSV를 가져오려고 하는데, 파일을 업로드할 때 실제로 많은 필드가 자동으로 채워지는 것을 확인할 수 있습니다. 가져온 데이터를 살펴보고 이전 관계형 구조를 고려하여 예상한 것과 일치하는지 확인합니다. 데이터를 가져오기 위해 완료해야 할 몇 가지 간단한 단계만 남았습니다.

먼저, 데이터를 가져올 컬렉션을 지정합니다(예: agents_out.tsv는 'agents' 컬렉션에 매핑). 또한 이전 관계형 데이터베이스의 개별 행을 Couchbase의 문서 ID에 대응시킬 것입니다. 이 작업은 '문서 ID로 가져오기' 섹션을 사용하여 가져오기 도구로 쉽게 수행할 수 있습니다. 저는 데이터를 가져올 때마다 관계형 데이터의 기본 키를 Couchbase의 문서 ID로 사용했는데, 이는 컬렉션의 각 키가 고유해야 하므로 매우 유용합니다. 예를 들어 에이전트_out.tsv에서는 기본 키 "AGENT_CODE"를 사용했습니다. 상담원, 주문, 고객 등 각 .tsv에 대해 이 단계를 수행합니다.

 

요약하자면 다음과 같은 작업을 수행했습니다:

  1. 레거시 데이터베이스에서 TSV로 데이터 내보내기
  2. 가져오려는 테이블을 기반으로 범위 및 컬렉션을 만들었습니다.
  3. 데이터 마이그레이션 도구를 사용하여 범위 내에서 특정 컬렉션으로 데이터를 가져옵니다.

이제 Couchbase에 데이터를 가져왔으니 데이터를 쿼리하는 새로운 방법을 배워야 하나요? 그와는 정반대로, Couchbase 웹 GUI로 이동하여 새로 가져온 데이터 중 일부를 N1QL을 사용하여 쿼리해 보는 것은 어떨까요? SQL++와 호환되며 이전에 SQL 쿼리를 작성해 본 적이 있는 사용자라면 누구나 쉽게 사용할 수 있습니다.문이 열렸으니 들어오세요! 쿼리를 쉽게 작성할 수 있도록 도와드릴 뿐만 아니라, 저희의 인덱스 어드바이저 서비스를 클릭하고 수행하려는 쿼리를 입력하기만 하면 어드바이저가 인덱스를 제안합니다. JOIN도 지원합니다:

Couchbase를 최대한 활용하기 위해 데이터를 모델링하는 방법에 대해 자세히 알아보려면 관계형에서 NoSQL로 전환하는 올바른 방향으로 나아가는 좋은 출발점이 될 것입니다, 데이터 모델링 가이드 확인.

범위와 컬렉션에 대해 자세히 알아보고 싶으신가요? Shivani의 블로그를 추천합니다.

 

부록:

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 샘 레드먼, 솔루션 엔지니어

샘 레드먼은 카우치베이스의 솔루션 엔지니어입니다. Sam은 Couchbase에 입사하기 전에는 개발 및 SRE 환경에서 근무했습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.