사용자 프로필 저장소: 고급 데이터 모델링 파트 1

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

작성자

게시자 커크 커크코넬, 수석 솔루션 엔지니어, Couchbase

커크 커크코넬은 카우치베이스의 선임 솔루션 엔지니어로 다양한 역량으로 고객과 협력하여 카우치베이스의 설계, 배포 및 관리를 지원했습니다. 그의 전문 분야는 대규모 애플리케이션 및 데이터베이스 인프라의 운영, 호스팅 및 지원입니다.

댓글 하나

  1. 아주 잘 작성된 Kirk....이 시리즈의 파트 2를 간절히 기다리고 있습니다.

  2. 안녕하세요 커크, 멋진 글입니다. 저는 이제 막 NoSQL에 입문하여 Couchbase를 사용하기 시작했는데, 이 글은 훌륭한 학습 자료입니다.

    기본적으로 문자열 키를 문서 간 조인으로 사용하는 방식이 마음에 듭니다. 좀 더 복잡한 시나리오에서 어떻게 해야 할지 고민 중입니다: 사용자가 트위터의 트윗과 관련된 추가 데이터(예: "이 트윗을 즐겨찾기로 저장"과 같은)를 저장할 수 있는 앱을 만들고 있다고 가정해 봅시다. 한 명의 사용자가 시간이 지남에 따라 수천 개의 즐겨찾기를 쉽게 쌓을 수 있습니다. 기본적으로 이것은 사용자와 트윗 간의 다대다 관계입니다. 이 작은 문서의 핵심은 다음과 같습니다: _

    제 시나리오에서 이러한 모든 관계는 관계를 생성한 사용자에게만 엄격하게 비공개로 유지됩니다. 그리고 이 모든 관계는 Couchbase Lite를 통해 사용자의 장치에 복제되어야 합니다. 이러한 이유로 해당 사용자를 위해 단일 문서에 모두 저장하는 것이 더 나을까요, 아니면 시간, 트위터 스트림 등을 기준으로 분할된 문서에 저장하는 것이 더 나을까요?

    고마워요!

    1. 두 가지 방법 모두 장단점이 있기 때문에 어려운 문제입니다. 하나의 문서에 모두 저장하면 사용자가 어느 시점에서 20MB 문서 제한을 초과하게 되거나 트윗 하나를 추가하기 위해 큰 JSON 문서를 드래그해야 하는 상황이 발생할 수 있습니다. 반대로 모든 트윗이 그 자체로 하나의 문서에 담겨 있다면, 수십억 개의 개체가 있고 데이터 개체당 최대 54바이트의 메타데이터를 저장하는 Couchbase에 많은 양의 메타데이터를 저장해야 하는 상황이 발생할 수 있습니다. 이 역시 삭제할 수 있지만 문서가 존재하는지 확인하기 위해 성능에 타격을 입게 됩니다.

      어쨌든 세 가지 가능성을 살펴볼 것을 권장합니다.

      1) 각 트윗을 객체로 저장하는 것이 효과가 있는지 확인하되, 다른 객체 모델링 블로그 게시물에서 설명하는 것이 핵심이 될 것입니다. http://bit.ly/1Hx3a74

      2) 제가 사용해 본 또 다른 옵션은 각 트윗을 별도의 문서에 저장한 다음 사용자별로 수동으로 색인 문서를 만드는 것입니다. 따라서 해당 사용자의 즐겨찾기를 가져오려면 해당 사용자의 '색인'이 있는 문서를 가져오고 그 문서에는 해당 사용자가 즐겨찾는 트윗의 개체 ID 목록이 있습니다. 모두 가져와야 하는 경우 이제 가져올 개체 목록이 있으므로 Couchbase SDK의 대량 작업을 사용하여 전체 또는 필요한 부분만 가져올 수 있습니다. 이해가 되시나요?

      3) 사용 사례와 필요한 성능 프로필에 따라 1과 2를 혼합하여 사용합니다.

  3. 좋은 기사입니다. 정보를 제공해 주셔서 감사합니다. 작성할 수 있는 "이메일 신청서 작성 방법" 공란을 어디서 찾을 수 있는지 아는 사람이 있나요?

    1. 안녕 지니, 나는
      이 링크에서 \"이메일 신청서\"를 보낼 수 있었습니다.
      http://goo.gl/yoGwr2. 또한 다운로드, 편집, 인쇄, 저장, 서명, 이메일 또는 팩스 전송도 가능했습니다.

    2. 누구에게 이메일을 보내는 방법은 무엇인가요?

  4. 프랑코 디 마시 3월 16, 2016에서 10:00 오후

    좋은 기사였습니다, 감사합니다! 2부를 기다리고 있습니다.

  5. 좋은 기사입니다.
    사용자 프로필 저장소의 데이터 모델링은 카우치베이스 서버만 사용하는 것을 고려하고 있는데, 카우치베이스 서버와 카우치베이스 모바일을 사용할 때 데이터 모델링에 대한 조언이 있으면 유용할 것 같습니다.
    예를 들어 CouchBase Mobile을 사용할 때, SG 라우팅/ACL의 제약, 맵/축소 등을 통한 CouchBaseLite의 쿼리 제약 등을 고려해야 합니다.

    1. 카우치베이스 모바일은 제 전문 분야가 아니기 때문에 이 주제를 제대로 다룰 수 있을지 의문입니다. 그래도 도움을 줄 수 있는 분들에게 이 내용을 전달하고 글을 작성하겠습니다. 다른 옵션은 아직 사용하지 않았다면 Couchbase 포럼을 사용하여 이에 대해 문의하는 것입니다.

    2. 알리 르클레르 8월 15, 2016에서 4:04 오후

      여기에서 시작하실 수도 있으며, 앞으로 몇 주 안에 더 많은 Couchbase Mobile 교육을 공개할 예정입니다. http://developer.couchbase.com

  6. 이보 페레이라 8월 31, 2016에서 2:15 오후

    훌륭한 기사 커크. 매우 상세한 정보입니다. 이 글의 2부에 대한 날짜를 염두에 두고 있나요?

    고마워요!

  7. [...] 애플리케이션에서 표준화된 개체 ID 패턴을 사용하는 방법에 대한 예시는 이 블로그 게시물과 제가 작성한 이 블로그 게시물을 참조하세요. 블로그의 특정 사용 사례가 [...]에 적용되지 않는 경우에도 [...

  8. 이 문제를 얼마나 아름답게 해결했는지 공유해 주셔서 감사합니다.
    포장 및 인쇄 공급업체

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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