Распределенные структуры данных

Fluid Framework предоставляет разработчикам распределенные структуры данных (DDSes), которые автоматически гарантируют, что каждый подключенный клиент имеет доступ к одному состоянию. API, предоставляемые DDSes, предназначены для знакомых программистам, которые использовали общие структуры данных раньше.

Примечание.

В этой статье предполагается, что вы знакомы с введением распределенных структур данных на fluidframework.com.

Распределенная структура данных ведет себя как локальная структура данных. Код может добавлять в него данные, удалять данные, обновлять их и т. д. Однако DDS не является локальным объектом. DDS также можно изменить другими клиентами, предоставляющими тот же родительский контейнер DDS. Так как пользователи могут одновременно изменять те же DDS, необходимо учитывать, какие DDS следует использовать для моделирования данных.

Примечание.

Значение "одновременно"

Говорят, что два или более клиентов вносят изменения одновременно, если каждый из них вносит изменения, прежде чем они получили изменения других от сервера.

Выбор правильной структуры данных для вашего сценария может повысить производительность и структуру кода приложения.

DDSes отличаются друг от друга тремя характеристиками:

  • Базовая структура данных: например, пара "ключ-значение", последовательность или очередь.
  • Автономия клиента: оптимистичный DDS позволяет любому клиенту в одностороннем порядке изменять значение, а новое значение передается всем другим клиентам. Но консенсус DDS позволяет измениться только в том случае, если он принимается другими клиентами консенсусным процессом.
  • Политика слияния: политика, которая определяет, как разрешаются конфликтующие изменения от клиентов.

Ниже мы перечислили структуры данных и описали, когда они могут быть наиболее полезными.

Данные пары "ключ-значение"

Эти DDSes используются для хранения данных с ключом-значением. Они оптимистичны и используют политику слияния с последней записью записи. Хотя значение пары может быть сложным объектом, значение любой заданной пары невозможно изменить напрямую; Все значение должно быть заменено новым значением, содержащим нужные изменения, целое для всего.

  • SharedMap: базовая структура данных "ключ-значение".

Сценарии с ключом и значением

Структуры данных "ключ-значение" являются наиболее распространенным выбором для многих сценариев.

  • Данные предпочтения пользователя.
  • Текущее состояние опроса.
  • Конфигурация представления.

Распространенные проблемы и рекомендации по DDSes с ключом

  • Хранение счетчика в SharedMap будет иметь непредвиденное поведение. Вместо этого используйте SharedCounter.
  • Хранение массивов, списков или журналов в записи "ключ-значение" может привести к неожиданному поведению, так как пользователи не могут совместно изменять части одной записи. Попробуйте сохранить данные массива или списка в SharedSequence или SharedInk.
  • Хранение большого количества данных в одной записи с ключом может привести к проблемам с производительностью или слиянием. Каждое обновление обновляет все значение, а не объединение двух обновлений. Попробуйте разделить данные по нескольким ключам.

Последовательности

Эти DDS используются для хранения последовательных данных. Они оптимистичны. Структуры данных последовательности полезны, если необходимо добавить или удалить данные по указанному индексу в списке или массиве. В отличие от структур данных "ключ-значение", последовательности имеют последовательный порядок и могут обрабатывать одновременные вставки от нескольких пользователей.

  • SharedNumberSequence: последовательность чисел.
  • SharedObjectSequence: последовательность простых объектов.

Сценарии последовательности

  • Списки
  • Временная шкала

Распространенные проблемы и рекомендации по DDS последовательности

  • Храните только неизменяемые данные в виде элемента в последовательности. Единственный способ изменить значение элемента — сначала удалить его из последовательности, а затем вставить новое значение в положение, где было старое значение. Но так как другие клиенты могут вставлять и удалять, нет надежного способа получения нового значения в нужное положение.

Строки

DDS SharedString используется для неструктурированных текстовых данных, которые можно совместно редактировать. Оптимистично.

  • SharedString - структура данных для обработки текста совместной работы.

Строковые сценарии

  • Текстовые редакторы

См. также

Дополнительные сведения о DDS и их использовании см. в следующих разделах fluidframework.com: