데이터 모델링

해코레이드를 사용한 SQL에서 JSON 데이터 모델링

SQL에서 JSON으로의 데이터 모델링은 제가 첫 번째 파트에서 다룬 내용입니다. "SQL Server에서 Couchbase로 이동" 시리즈. 이 블로그 게시물 이후, 다음과 같은 새로운 도구가 제 관심을 끌었습니다. 해코레이드는 최근 도구에 최고 수준의 카우치베이스 지원을 추가했습니다.

이 글에서는 제가 직접 수행한 아주 간단한 모델링 연습을 검토하고 IntegrIT의 Hackolade가 어떻게 도움이 될 수 있는지 보여드리겠습니다.

이전 블로그 게시물 시리즈에서 사용한 것과 동일한 SQL 스키마를 사용하고 있으며, 다음에서 찾을 수 있습니다. GitHub(SQLServerDataAccess/Scripts 폴더 내).

검토하기: SQL에서 JSON으로 데이터 모델링

먼저 관계형 데이터베이스에서 관계를 표현하는 주요 방법은 테이블 간의 키/외래 키 관계를 사용하는 것입니다.

JSON에서 모델링을 살펴볼 때 관계를 표현하는 데는 크게 두 가지 방법이 있습니다:

  • 참조 - 개념에는 자체 문서가 주어지지만 문서 키를 사용하여 다른 문서를 참조합니다.
  • 비정규화 - 키를 사용하여 문서 간에 데이터를 분할하는 대신 개념을 하나의 문서로 그룹화하세요.

저는 장바구니와 소셜 미디어 사용자에 대한 관계형 모델로 시작했습니다.

Relational model of SQL before moving to JSON

제 예제에서 관계형 데이터베이스의 쇼핑 카트 - 대상 - 쇼핑 카트 항목 관계는 아마도 단일 쇼핑 카트 문서(항목 포함)로 JSON에 더 잘 표현될 것이라고 말씀드렸습니다. 이것이 바로 "비정규화" 경로입니다. 그런 다음 소셜 미디어 사용자 - 대상 - 소셜 미디어 사용자 업데이트 관계를 참조 관계로 JSON에 표현하는 것이 가장 좋다고 제안했습니다. 업데이트는 사용자와 별도로 자체 문서에 저장됩니다.

이 과정은 전적으로 수작업으로 이루어졌습니다. 간단한 예제에서는 어렵지 않았습니다. 하지만 규모가 큰 모델에서는 SQL을 JSON으로 변환하는 데이터 모델링을 지원하는 도구가 있으면 도움이 될 것입니다. 완전히 자동화된 것은 아니므로 여전히 약간의 수작업이 필요하지만 도구가 많은 작업을 대신해 줄 수 있습니다.

SQL Server DDL로 시작하기

다음 부분에서는 이미 SQL 스크립트를 실행하여 5개의 테이블을 생성했다고 가정합니다: 쇼핑카트항목, 쇼핑카트, 친구북사용자, 친구북업데이트, 친구북사용자친구. (물론 자체 데이터베이스에서도 자유롭게 시도해 보세요.)

첫 번째 단계는 스키마의 DDL 스크립트를 만드는 것입니다. SQL Server 관리 스튜디오를 사용하여 이 작업을 수행할 수 있습니다.

먼저 원하는 데이터베이스를 마우스 오른쪽 버튼으로 클릭합니다. 그런 다음 '작업'으로 이동한 다음 '스크립트 생성'으로 이동합니다. 그러면 마법사가 표시됩니다. 각 단계에서 "다음"을 클릭하기만 하면 되지만, 이 작업을 처음 해본다면 각 단계의 지침을 읽고 무슨 일이 일어나는지 이해하는 것이 좋습니다.

마지막으로 지정한 경로에 SQL 파일이 생성됩니다.

이 파일은 다음과 같은 일련의 만들기 그리고 ALTER 문을 포함해야 합니다(적어도). 다음은 제가 작성한 내용을 간략하게 발췌한 것입니다(아래에서 깃허브의 정식 버전).

참고로 이 기능은 SQL Azure 데이터베이스에서도 작동합니다.

참고: Hackolade는 SQL Server뿐만 아니라 Oracle, MySQL 등 다른 유형의 DDL에서도 작동합니다.

해코레이드 시작하기

다음 부분에서는 Hackolade를 다운로드하여 설치했다고 가정합니다. 이 기능은 Hackolade 프로페셔널 버전에서만 사용할 수 있지만 30일 무료 평가판을 사용할 수 있습니다.

DDL 파일이 생성되면 Hackolade를 열 수 있습니다.

해코레이드에서는 JSON 모델에 해당하는 모델을 생성/편집하게 됩니다: Couchbase(물론)와 DynamoDB 및 MongoDB입니다. 이 예제에서는 새로운 Couchbase 모델을 만들어 보겠습니다.

Create a new Couchbase model in Hackolade

이 시점에서 "새 버킷"이 포함된 새로운 모델이 생겼습니다. 해콜레이드를 디자인 도구로 사용하여 버킷에 넣을 문서의 종류, 다른 문서와의 관계 등을 시각적으로 표현할 수 있습니다.

이미 관계형 모델과 SQL Server DDL 파일을 가지고 있으므로 Hackolade가 이를 통해 무엇을 할 수 있는지 살펴보겠습니다.

SQL을 JSON 데이터 모델링으로 리버스 엔지니어링하기

Hackolade에서 도구 → 리버스 엔지니어 → 데이터 정의 언어 파일로 이동합니다. 데이터베이스 유형과 DDL 파일 위치를 선택하라는 메시지가 표시됩니다. 저는 "MS SQL Server"와 앞서 만든 "script.sql" 파일을 선택합니다. 마지막으로 "확인"을 눌러 Hackolade가 마법을 부리도록 합니다.

해콜레이드는 5개의 테이블을 5개의 서로 다른 종류의 문서로 처리합니다. 따라서 최종 결과물은 다음과 같습니다. 리터럴 번역.

SQL to JSON data modeling reverse engineering with Hackolade result

이 다이어그램은 모델에 대한 보기를 제공합니다. 하지만 이제 이 다이어그램은 궁극적인 JSON 모델을 구성하기 위한 캔버스라고 생각할 수 있습니다. 해콜레이드는 이를 도와주는 몇 가지 도구를 제공합니다.

비정규화

예를 들어, 해콜레이드는 SQL을 JSON 데이터로 모델링할 때 비정규화에 대한 제안을 할 수 있습니다. 도구→비정상화 제안으로 이동합니다. "테이블 선택"에 문서 종류 목록이 표시됩니다. "쇼핑 카트"와 "쇼핑 카트 항목"을 선택해 보세요. 그런 다음 '매개변수' 섹션에서 '부모에 배열'을 선택합니다.

Suggest denormalization in Hackolade

이렇게 하면 다이어그램이 다르게 보이는 것을 볼 수 있습니다. 이제 항목이 쇼핑카트의 배열에 포함되고 쇼핑카트 항목으로 가는 점선이 있습니다. 이 시점에서 모델에서 쇼핑카트 항목을 제거할 수 있습니다(경우에 따라 쇼핑카트 항목을 그대로 두고 싶을 수 있으므로 SQL에서 JSON 데이터 모델링을 수행할 때 Hackolade에서 자동으로 제거하지 않습니다).

Remove excess table in Hackolade

여기에도 다른 옵션이 있다는 것을 알아두세요:

  • 부모에 배열 포함하기 - 위에서 설명한 내용입니다.
  • 하위 문서에 하위 문서 포함하기 - 반대 방식으로 모델링하려는 경우(예: 쇼핑 카트를 쇼핑 카트 항목 내에 저장).
  • 둘 다 포함 - 상위 문서와 하위 문서의 배열 모두 접근 방식입니다.
  • 양방향 참조 - 다대다 관계를 나타냅니다. 관계형 테이블에서는 일반적으로 "정션 테이블" 또는 "매핑 테이블"을 사용하여 이 작업을 수행합니다.

참고 사항 캐스케이딩. 이는 부모, 자식, 손자 등이 있을 수 있는 순환 참조를 방지하기 위한 것입니다. 캐스케이드할 범위를 선택합니다.

추가 정리

이 모델을 정리하기 위해 할 수 있는 몇 가지 다른 작업이 있습니다.

  • '유형' 필드 추가. Couchbase에서는 장바구니 문서를 다른 문서와 구별해야 할 수도 있습니다. 이를 위한 한 가지 방법은 일반적으로 '유형'이라고 하는 "판별자" 필드를 추가하는 것입니다(하지만 원하는 대로 불러도 됩니다). 해콜라이드에서는 "쇼핑카트"를 "기본" 값으로 지정할 수 있습니다.
  • 임베디드 배열에서 'id' 필드를 제거합니다.. SQL 테이블에는 외래 키 관계를 위해 이 필드가 필요했습니다. 이제 모든 것이 단일 문서에 포함되었으므로 이 필드가 더 이상 필요하지 않습니다.
  • 배열 이름을 'items'로 변경합니다.. 다시 말하지만, 이제 장바구니가 단일 문서로 통합되었으므로 '쇼핑 카트 항목'이라고 부를 필요가 없습니다. 그냥 'items'이라고 불러도 괜찮습니다.

Clean up JSON data model in Hackolade

출력

이와 같은 모델은 팀이 작업하는 살아있는 문서가 될 수 있습니다. 해콜레이드 모델은 그 자체로 JSON 문서로 저장됩니다. 팀원들과 공유하고 소스 제어에서 확인하는 등의 작업을 할 수 있습니다.

또한 해콜레이드를 사용하여 모델에 대한 정적 문서를 생성할 수도 있습니다. 그런 다음 이 문서를 사용하여 애플리케이션의 개발 및 아키텍처를 안내할 수 있습니다.

파일 → 문서 생성 → HTML/PDF로 이동합니다. 문서에 포함할 구성 요소를 선택할 수 있습니다.

요약

Hackolade는 IntegrIT 회사에서 만든 NoSQL 모델링 도구입니다. 처음부터 모델을 구축할 때뿐만 아니라 SQL에서 JSON 데이터 모델링을 위한 리버스 엔지니어링에도 유용합니다. 이 글에서 다루지 않은 Hackolade의 다른 기능도 많이 있습니다. 다음 기능을 사용해 보시기 바랍니다. 지금 해코레이드 무료 체험판을 다운로드하세요.. 또한 다음을 찾을 수도 있습니다. 해코레이드 트위터 @hackolade.

카우치베이스 서버에 대해 궁금한 점이 있으시다면 카우치베이스 포럼. 또한 카우치베이스 개발자 포털 에서 개발자용 Couchbase에 대한 자세한 정보를 확인하세요. 언제든지 자유롭게 트위터 @mgroves로 문의하세요..

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

작성자

게시자 매튜 그로브스

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

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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