분산 데이터 구조

Fluid Framework는 개발자에게 연결된 각 클라이언트가 동일한 상태에 액세스할 수 있도록 자동으로 보장하는 DDS(분산 데이터 구조)를 제공합니다. DDS에서 제공하는 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 및 DDS를 사용하는 방법에 대한 자세한 내용은 fluidframework.com의 다음 섹션을 참조하세요.