다음을 통해 공유


분산 데이터 구조

Fluid Framework는 연결된 각 클라이언트가 동일한 상태에 액세스할 수 있도록 자동으로 보장하는 DDS(분산 데이터 구조)를 개발자에게 제공합니다. DDSe에서 제공하는 API는 이전에 공통 데이터 구조를 사용한 프로그래머에게 친숙하도록 설계되었습니다.

비고

이 문서에서는 fluidframework.com 분산 데이터 구조 소개 에 대해 잘 알고 있다고 가정합니다.

분산 데이터 구조는 로컬 데이터 구조처럼 동작합니다. 코드에서 데이터를 추가하고, 데이터를 제거하고, 업데이트하는 등의 작업을 수행할 수 있습니다. 그러나 DDS는 로컬 개체가 아닙니다. DDS의 동일한 부모 컨테이너를 노출하는 다른 클라이언트에서 DDS를 변경할 수도 있습니다. 사용자가 동일한 DDS를 동시에 변경할 수 있으므로 데이터 모델링에 사용할 DDS를 고려해야 합니다.

비고

'동시'의 의미

둘 이상의 클라이언트는 서버에서 다른 클라이언트의 변경 내용을 받기 전에 각각 변경하면 동시에 변경한다고 합니다.

시나리오에 맞는 데이터 구조를 선택하면 애플리케이션의 성능 및 코드 구조가 향상될 수 있습니다.

DDS는 다음과 같은 세 가지 특성에 따라 다릅니다.

  • 기본 데이터 구조: 예를 들어 키-값 쌍, 시퀀스 또는 큐입니다.
  • 클라이언트 자율성: 낙관적 DDS를 사용하면 모든 클라이언트가 일방적으로 값을 변경할 수 있으며 새 값은 다른 모든 클라이언트에 릴레이됩니다. 그러나 합의 DDS는 합의 프로세스에 의해 다른 클라이언트가 수락하는 경우에만 변경을 허용합니다.
  • 병합 정책: 클라이언트의 충돌하는 변경 내용을 해결하는 방법을 결정하는 정책입니다.

아래에서 데이터 구조를 열거하고 가장 유용할 수 있는 시기를 설명했습니다.

키 값 데이터

이러한 DDS는 키-값 데이터를 저장하는 데 사용됩니다. 그들은 낙관적이며 최종 작성자 우선 병합 정책을 사용합니다. 쌍의 값은 복합 개체일 수 있지만 지정된 쌍의 값은 직접 편집할 수 없습니다. 전체 값은 전체 편집을 포함하는 새 값으로 바꿔야 합니다.

  • SharedMap: 기본 키-값 데이터 구조입니다.

키-값 시나리오

키-값 데이터 구조는 많은 시나리오에서 가장 일반적인 선택입니다.

  • 사용자 기본 설정 데이터입니다.
  • 설문 조사의 현재 상태입니다.
  • 뷰의 구성입니다.

키-값 DDS에 대한 일반적인 문제 및 모범 사례

  • SharedMap에 카운터를 저장하면 예기치 않은 동작이 나타납니다. 대신 SharedCounter를 사용합니다.
  • 배열, 목록 또는 로그를 키-값 항목에 저장하면 사용자가 한 항목의 일부를 공동으로 수정할 수 없으므로 예기치 않은 동작이 발생할 수 있습니다. SharedSequence 또는 SharedInk에 배열 또는 목록 데이터를 저장해 봅니다.
  • 하나의 키-값 항목에 많은 데이터를 저장하면 성능 또는 병합 문제가 발생할 수 있습니다. 각 업데이트는 두 업데이트를 병합하는 대신 전체 값을 업데이트합니다. 여러 키로 데이터를 분할해 봅니다.

시퀀스

이러한 DDS는 순차 데이터를 저장하는 데 사용됩니다. 그들은 낙관적입니다. 시퀀스 데이터 구조는 목록 또는 배열의 지정된 인덱스에서 데이터를 추가하거나 제거해야 하는 경우에 유용합니다. 키-값 데이터 구조와 달리 시퀀스는 순차적 순서를 가지며 여러 사용자의 동시 삽입을 처리할 수 있습니다.

  • SharedNumberSequence: 숫자 시퀀스입니다.
  • SharedObjectSequence: 일반 개체의 시퀀스입니다.

시퀀스 시나리오

  • 목록
  • 타임라인

시퀀스 DDS에 대한 일반적인 문제 및 모범 사례

  • 변경할 수 없는 데이터만 시퀀스에 항목으로 저장합니다. 항목 값을 변경하는 유일한 방법은 먼저 시퀀스에서 제거한 다음 이전 값이 있던 위치에 새 값을 삽입하는 것입니다. 그러나 다른 클라이언트가 삽입하고 제거할 수 있으므로 새 값을 원하는 위치로 가져오는 신뢰할 수 있는 방법은 없습니다.

현악기들

SharedString DDS는 공동으로 편집할 수 있는 구조화되지 않은 텍스트 데이터에 사용됩니다. 낙관적입니다.

  • SharedString -- 공동 작업 텍스트를 처리하기 위한 데이터 구조입니다.

문자열 시나리오

  • 텍스트 편집기

참고하십시오

DDS 및 사용 방법에 대한 자세한 내용은 fluidframework.com의 다음 부분을 참조하세요.