아마 제 포스팅을 기억하실 겁니다. 카우치DB에서 카우치베이스로 데이터 이동하기. CouchDB가 아닌 MongoDB를 사용 중이시라면 실망감을 느끼셨을 것입니다. 죄송합니다. 이 문제를 해결해 보겠습니다. MongoDB에서 Couchbase로 데이터를 이동하는 방법은 다음과 같습니다.

사용의 좋은 점 중 하나는 RxJava 이 API가 점점 더 널리 보급되고 있다는 점입니다. 저희는 오래 전에 이러한 선택을 했고, 최근 몽고처럼 더 많은 사람들이 이 대열에 합류하는 것을 보게 되어 기쁩니다.

스트림 API를 공유한다는 사실은 일을 정말 쉽게 만들어줄 것입니다. 제 목표는 다음과 같은 옵저버블을 확보하는 것입니다. 몽고 문서를 생성하고 이를 Couchbase 문서에 매핑한 다음 Couchbase에 작성합니다. 보시다시피 이 프로세스는 RxJava로 모델링하기가 정말 쉽습니다. 의사 코드로는 다음과 같이 보일 것입니다:

getMongoCollectionStream().fromMongoDocumentToCouchbaseDocuments().writeCBdocToCouchbase()

다시 말하지만 이것은 RxJava와 매우 잘 맞습니다.

MongoDB를 사용하면 컬렉션을 열고 이를 문서의 Observable로 반환할 수 있습니다. 이것이 바로 우리에게 필요한 기능이며 몇 줄이면 가능합니다:

그런 다음 들어오는 문서를 카우치베이스 문서로 변환해야 합니다. 이를 위해 Rx 맵 연산자를 쉽게 사용할 수 있습니다. 카우치베이스에서 문서를 작성할 때는 키 또는 ID가 필요합니다. Mongo 문서에서는 ObjectID 추상화를 사용하여 _id 필드에 저장됩니다. 이는 몇 가지 기준에 따라 Mongo에서 생성됩니다. 일단 ID를 얻으면 문서를 JSON 문자열로 가져와서 그 문자열과 ID를 기반으로 RawJsonDocument를 생성하기만 하면 됩니다.

이 map.operation이 끝나면 관찰 가능한 카우치베이스 문서가 남습니다. 마지막 단계는 이를 Couchbase에 작성하는 것입니다.

이 코드를 모두 포함했으며 couchbase-java-importer에서 구성할 수 있도록 만들었습니다. Github에서 사용할 수 있습니다. 여기.

컬렉션에서 Couchbase로 바로 JSON 문서를 가져오는 것 외에 다른 작업이 필요하지 않다면 이것으로 충분합니다. 그냥 바이너리 를 실행하여 XML 구성 파일이 클래스 경로에 있고 올바른 정보를 포함하고 있는지 확인합니다.

이것은 MongoDB에서 Couchbase로 데이터를 이동하는 한 가지 특별한 방법입니다. 다른 방법도 있습니다. 예를 들어 두 데이터베이스 모두 CSV 가져오기를 지원하며, Mongo에는 CSV 내보내기가 있습니다. 따라서 CSV 파일이 있으면 다음을 사용할 수 있습니다. cbtransfer 또는 couchbase-java-importer를 사용하여 콘텐츠를 CouchBase로 가져올 수 있습니다.

이 모든 예제는 데이터를 가져오기 전에 데이터를 변환하지 않는다고 가정하고 있습니다. 변환 단계는 RxJava 임포터에 플러그인하면 정말 쉽게 할 수 있습니다. 코드는 매우 간단하므로 자유롭게 포크하거나 풀 리퀘스트를 보내주세요! 해당 프로젝트에 임포터를 더 추가하는 것도 CB 커뮤니티에 참여하는 좋은 방법이 될 수 있습니다 :)

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 남기기