NoSQL 시스템, 특히 쓰기 시 스키마를 적용하지 않는 Couchbase와 같은 문서 계열 데이터베이스의 아키텍처와 설계를 고려할 때, 관계형 시스템에서 NoSQL로 마이그레이션하거나 NoSQL을 사용하여 처음부터 애플리케이션을 구축할 때 NoSQL용 데이터 모델링은 종종 어려울 수 있습니다. 실제로 데이터 모델링은 Couchbase 배포의 중요한 성공 요인인 경우가 많으며, 빠르게 진화하는 빅 데이터 애플리케이션의 특성을 고려할 때 데이터 모델을 점진적으로 최적화하는 것은 애플리케이션 성능을 크게 향상시킬 수 있습니다.
전통적으로 관계형 시스템의 데이터 모델링은 데이터 객체와 객체 간의 관계, 정확한 표현을 식별하는 과학으로, 좋은 데이터베이스 설계의 토대를 마련하는 작업이었습니다. 반면에 NoSQL용 모델링은 애플리케이션별 액세스 패턴(예: "사용자가 이 데이터로 어떤 유형의 질문에 답하고자 하는가?")을 탐색합니다. 이를 통해 지원해야 할 쿼리의 종류를 결정하고 성능 최적화를 위해 데이터를 가장 잘 배치하는 방법에 초점을 맞춥니다. 이러한 고려 사항으로 인해 데이터 모델링 접근 방식이 RDBMS의 전통적인 제약(쓰기 스키마)에서 특정 애플리케이션을 위한 데이터 모델링(읽기 스키마)으로 바뀌게 됩니다.
모델링 패러다임에 영향을 미치는 RDBMS와 NoSQL 시스템의 또 다른 차별점은 데이터의 정규화 및 비정규화 개념입니다. 과거에는 엄격한 관계를 이해하고 엄격한 스토리지 제한을 충족하기 위해 데이터 정규화를 강조했던 반면, 유연한 NoSQL 시스템은 데이터가 클러스터에 분산되고 중복성이 데이터 읽기 확장을 용이하게 하기 때문에 데이터의 비정규화에 더 중점을 둡니다. 사용 사례에 따라 이상적인 데이터 모델은 종종 두 가지 접근 방식을 조합한 것입니다.
따라서 정확한 데이터 모델링은 NoSQL 데이터베이스의 성공을 위한 핵심 분야로 계속 남아 있습니다.
이제 erwin DM NoSQL을 사용한 모델링에 대해 자세히 알아보겠습니다. erwin DM NoSQL은 세 가지 주요 기능을 제공합니다:
포워드 엔지니어링
관계형 모델을 Couchbase 호환 JSON 모델로 변환하는 프로세스입니다.
변환
모델에 대해 원하는 변환 형태(정규화, 비정규화, 사용자 지정)를 선택할 수 있습니다.
리버스 엔지니어링
카우치베이스의 프로덕션 데이터에서 에르윈 환경으로 스키마를 가져올 수 있습니다.
다음은 erwin DM NoSQL을 사용하여 카우치베이스 데이터 플랫폼의 데이터를 모델링하는 단계별 가이드입니다:
설정:
1단계:
계정 요청하기 여기 를 클릭하고 자격 증명을 사용하여 erwin DM NoSQL에 로그인합니다.
2단계:
가져오기 옵션을 사용하여 erwin DM 또는 기타 관계형 모델링 도구에서 생성된 엔티티-관계 모델을 "XML" 형식으로 erwin DM NoSQL로 푸시합니다.
3단계:
에르윈 환경에서 응급실 다이어그램을 시각화하세요.
변환
1단계:
정규화, 비정규화 또는 사용자 지정 변환을 사용하여 모델을 변환하도록 선택합니다.
2단계:
a. 정규화된 변환:
정규화는 일반적으로 별도의 테이블을 만들고 관계를 설정하여 중복을 제거함으로써 데이터베이스의 데이터를 정리하는 프로세스입니다. 이 프로세스의 객체 또는 엔티티는 일반적으로 참조됩니다. JSON 모델을 만들 때 참조된 테이블은 일반적으로 별도의 문서가 됩니다.
b. 정규화되지 않은 변환:
이 과정에서 데이터 객체는 일반적으로 임베드됩니다. 유사한 개체가 많은 문서에 포함되어 있기 때문에 이 조직은 중복성을 나타냅니다. 비정규화를 사용하면 필요한 데이터를 가져오는 데 조인이 필요하지 않기 때문에 성능이 크게 향상되는 경우가 많습니다. 이는 종종 NoSQL 시스템에서 채택됩니다. 이 도구에서 비정규화를 사용하여 생성된 변환된 모델은 임베디드 객체와 참조된 객체의 조합입니다.
위 그림에서 구매 주문, 주문 항목은 임베디드 개체인 반면 게시자, 스토어 이름 및 BookReturn은 참조 개체입니다.
c.사용자 지정 변환:
erwin DM NoSQL은 일반적으로 E-R 다이어그램을 사용하여 데이터 조직을 분석하고 특정 규칙에 따라 모델을 Couchbase 호환 JSON 모델로 변환합니다. 그러나 앱 개발자 또는 애플리케이션 소유자는 애플리케이션을 가장 잘 알고 있으므로 모델을 사용자 지정할 수 있는 기능을 제공합니다. 특정 임베디드 객체를 참조할 수 있는 옵션이 있으며, 올바른 선택을 할 수 있도록 도구 내에서 몇 가지 가이드라인을 제공합니다.
참고: 이러한 모델을 복제하고 속성, 속성 등을 추가하거나 제거하여 조정할 수 있습니다,
포워드 엔지니어링:
1단계:
로컬 시스템에서 생성된 모델을 다운로드합니다.
2단계:
AWS에서 Couchbase 클러스터를 설정하고 포트 8091을 사용하여 웹 콘솔에 액세스하세요.
3단계:
보안 복사를 사용하여 다운로드한 파일을 로컬 컴퓨터에서 Couchbase EC2 인스턴스로 복사합니다.
구문(OSX): scp -i 키 경로 -r 디렉터리 경로 ec2-user@hostname:~로 이동합니다.
예: scp -i /Users/chaitra.ramarao/Downloads/US_East.pem -r /Users/chaitra.ramarao/Downloads/Cl_De_EMOVIES\ r9.64_20180329185059 ec2-user@ec2-54-152-108-80.compute-1.amazonaws.com:~
4단계:
ssh를 사용하여 AWS 인스턴스에 로그인
구문(OSX):ssh -i key.pair의 경로 ec2-user@remote IP
예: ssh -i /Users/chaitra.ramarao/Downloads/US_East.pem ec2-user@ec2-34-203-230-73.compute-1.amazonaws.com
5단계:
"ls"를 사용하여 파일을 나열하여 파일이 복사되었는지 확인합니다.
6단계:
bulkInsert.sh 파일로 이동합니다.
예: Cd /De_movies../scripts/5.x를 실행하여 bulkInsert.sh를 찾습니다.
7단계:
bulkInsert 파일을 실행 파일로 만들고 경로를 설정합니다.
Chmod +x bulkInsert.sh
PATH=/opt/couchbase/bin:$PATH
8단계:
다음 구문을 사용하여 bulkInsert 스크립트를 실행합니다.
./bulkInsert.sh
예 : ./bulkInsert.sh localhost 8091 관리자 비밀번호 샘플
사용자가 지정한 버킷 이름으로 모델링된 샘플 데이터가 Couchbase에 로드된 것을 볼 수 있습니다.
이 스크립트는 일반적으로 정크 데이터에 대한 모델을 생성하며, 애플리케이션 개발자가 수정하여 실제 데이터 샘플에 대한 모델을 생성하고 제공된 배포 스크립트를 사용하여 Couchbase에 배포하는 데 사용할 수 있습니다.
또한 N1QL(JSON용 SQL)을 사용하여 Couchbase에 로드된 데이터를 쿼리하고 쿼리 워크벤치 및 쿼리 플래너를 사용하여 모델의 정확성과 효율성을 테스트할 수 있습니다.
리버스 엔지니어링:
1단계:
아래 그림과 같이 연결 관리자를 사용하여 Couchbase에 대한 연결을 설정합니다:
2단계:
리버스 엔지니어링 Couchbase 선택
3단계:
Couchbase 프로덕션 데이터의 스키마 가져오기
4단계:
에르윈 환경에서 리버스 엔지니어링된 카우치베이스 모델 시각화하기
모델이 최상의 성능을 제공하도록 최적화되도록 주기적으로 모델을 계속 조정하세요.
erwin을 사용한 데이터 모델링은 시장 출시 기간을 단축하고, 모델링 프로세스를 시각화할 수 있는 인터페이스를 제공하며, 모델의 정확성을 크게 개선하는 데 도움이 됩니다. 더 나은 데이터 모델은 더 나은 성능과 더 큰 성공을 보장합니다.
여기에서 의견을 공유하거나 forums.couchbase.com으로 문의해 주세요.