CSV(쉼표로 구분된 값)는 관계형 데이터베이스(예: Oracle 또는 SQL Server)에서 내보낼 수 있는 파일 형식입니다. 그런 다음 Couchbase Server에서 cbimport 유틸리티.

참고: cbimport는 카우치베이스 엔터프라이즈 에디션과 함께 제공됩니다. Couchbase 커뮤니티 에디션의 경우 보다 제한적인 cbtransfer 도구를 사용하거나 도심형 로더 를 입력합니다.

데이터 마이그레이션을 위한 완벽한 솔루션은 관계형→CSV→카우치베이스 ETL이 아닐 수도 있습니다. 다음 게시물에서 고려해야 할 데이터 모델링 결정에 대해 설명하겠습니다. 하지만 우선 이 데이터를 '단계적'으로 고려하는 것이 출발점입니다.

참고: 이 글에서는 로컬에 설치된 SQL Server와 Couchbase Server 클러스터를 사용하고 있습니다. SQL Server, Oracle, MySQL, PostgreSQL 등의 경우에도 단계는 비슷합니다.

CSV로 내보내기

가장 먼저 해야 할 일은 CSV로 내보내는 것입니다. 두 개의 테이블이 있는 관계형 데이터베이스가 있습니다: Invoices 및 InvoiceItems.

Relational tables example

이 두 테이블의 데이터를 두 개의 CSV 파일로 내보내려고 합니다. SQL Server 관리 스튜디오를 사용하면 여러 가지 방법으로 이 작업을 수행할 수 있습니다. 다음을 사용할 수 있습니다. sqlcmd 또는 bcp 을 입력합니다. 또는 Powershell의 Invoke-Sqlcmd 를 클릭하고 Export-Csv. SQL Server 관리 스튜디오 UI를 사용할 수도 있습니다.

Export CSV from SQL Server Management Studio

다른 관계형 데이터베이스에는 CSV 내보내기를 위한 명령줄 유틸리티, UI 도구 등이 있습니다.

다음은 'Invoices'라는 테이블에서 CSV 내보내기의 예입니다:

다음은 "InvoiceItems"라는 관련 테이블에서 내보내는 내용입니다:

Couchbase에 CSV 로드

이를 Couchbase 버킷으로 가져와 보겠습니다. 이미 "staging"이라는 이름의 빈 버킷을 만들었다고 가정하겠습니다.

먼저 invoices.csv를 가져옵니다.

송장 로드

참고: Linux/Mac의 경우 C:\프로그램 파일\Couchbase\서버\bin로 설정하면 경로가 달라집니다.

자세히 살펴보겠습니다:

  • cbimport: 사용 중인 명령줄 유틸리티입니다.

  • csv: CSV 파일에서 가져오기 중입니다. JSON 파일에서 가져올 수도 있습니다.

  • -c localhost: 카우치베이스 서버 클러스터의 위치입니다.

  • -u 관리자 -p 비밀번호: 클러스터의 자격 증명. 이 예시보다 더 안전한 자격 증명을 사용하시길 바랍니다!

  • -b 스테이징: 데이터를 저장할 Couchbase 버킷의 이름입니다.

  • -생성-키 인보이스::%Id% Couchbase에서 고유 키를 만드는 데 사용되는 템플릿입니다. CSV의 각 줄은 하나의 문서에 해당합니다. 각 문서에는 고유한 키가 필요합니다. 저는 송장 문서임을 나타내는 접두사와 함께 기본 키(정수)를 사용하기로 결정했습니다.

3줄짜리 파일을 가져오면 최종 결과는 3개의 문서가 됩니다:

CSV documents imported into Couchbase

이 시점에서 스테이징 버킷 에는 송장 문서가 포함되어 있으므로 지금 변환을 수행해야 할 수 있습니다. 나중에 모델링 예제에서 이 작업을 수행할 수도 있지만 지금은 다음 파일로 넘어가겠습니다.

인보이스 항목 로드

이것은 지난번 가져오기와 거의 동일합니다. 한 가지 차이점은 새 파일(invoice_items.csv)이라는 점입니다. 하지만 가장 중요한 차이점은 -생성-키. 이러한 레코드에는 외래 키만 포함되지만 Couchbase의 각 문서에는 고유 키가 있어야 합니다. 궁극적으로 다음과 같이 결정할 수 있습니다. embed 이러한 레코드를 상위 송장 문서에 추가할 수 있습니다. 하지만 지금은 UUID를 사용하여 레코드에 대한 고유 키를 생성하기로 결정했습니다.

이 10줄짜리 파일을 가져오면 최종적으로 10개의 문서가 더 생깁니다:

More CSV documents imported into Couchbase

다음 단계는 무엇인가요?

CSV 파일이 있으면 데이터를 Couchbase로 가져오는 것은 매우 쉽습니다. 하지만 이런 종류의 직접 번역은 그 자체만으로는 충분하지 않은 경우가 많습니다. 저는 데이터 모델링의 몇 가지 측면을 살펴봤습니다. SQL Server에서 마이그레이션에 대한 이전 블로그 게시물을 참조하세요.이 송장 예제는 곧 블로그 게시물에서 다시 살펴보도록 하겠습니다.

그 동안 다음 사항을 꼭 확인하세요. 카우치베이스가 오라클을 이기는 방법 에서 기업들이 특정 사용 사례에서 오라클을 대체하는 이유에 대해 자세히 알아보세요. 또한 관계형에서 NoSQL로 전환하기: 시작하는 방법 백서.

질문이나 의견이 있으시면 언제든지 여기에 남겨주시고 다음 주소로 문의해 주세요. 트위터 @mgroves를 클릭하거나 카우치베이스 포럼.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기