Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Fluid Framework предоставляет разработчикам распределенные структуры данных (DDSes), которые автоматически гарантируют, что каждый подключенный клиент имеет доступ к одному состоянию. API, предоставляемые DDSes, разработаны так, чтобы быть знакомыми программистам, ранее использовавшим распространённые структуры данных.
Замечание
В этой статье предполагается, что вы знакомы с введением распределенных структур данных на fluidframework.com.
Распределенная структура данных ведет себя как локальная структура данных. Код может добавлять в него данные, удалять данные, обновлять их и т. д. Однако DDS не является локальным объектом. DDS также можно изменить другими клиентами, которые взаимодействуют с тем же родительским контейнером DDS. Так как пользователи могут одновременно изменять те же DDS, необходимо учитывать, какие DDS следует использовать для моделирования данных.
Замечание
Значение "одновременно"
Говорят, что два или более клиентов вносят изменения одновременно , если каждый из них вносит изменения, прежде чем они получили изменения других от сервера.
Выбор правильной структуры данных для вашего сценария может повысить производительность и структуру кода приложения.
DDSes отличаются друг от друга тремя характеристиками:
- Базовая структура данных: например, пара "ключ-значение", последовательность или очередь.
- Автономия клиента: оптимистичный DDS позволяет любому клиенту в одностороннем порядке изменять значение, а новое значение передается всем другим клиентам. Но консенсусный DDS позволяет изменение только в том случае, если оно принимается другими клиентами через процесс консенсуса.
- Политика слияния: политика, которая определяет, как разрешаются конфликтующие изменения от клиентов.
Ниже мы перечислили структуры данных и описали, когда они могут быть наиболее полезными.
Данные "ключ-значение"
Эти системы учета данных (DDS) используются для хранения данных в формате ключ-значение. Они оптимистичны и используют политику слияния, в которой побеждает последняя запись. Хотя значение пары может быть сложным объектом, значение любой заданной пары невозможно изменить напрямую; все значение должно быть заменено новым значением, содержащим необходимые изменения.
- SharedMap: базовая структура данных "ключ-значение".
Сценарии с ключом и значением
Структуры данных "ключ-значение" являются наиболее распространенным выбором для многих сценариев.
- Данные предпочтения пользователя.
- Текущее состояние опроса.
- Конфигурация представления.
Распространенные проблемы и лучшие практики для DDS с ключом-значением
- Хранение счетчика в SharedMap может привести к неожиданному поведению. Вместо этого используйте SharedCounter.
- Хранение массивов, списков или журналов в записи "ключ-значение" может привести к неожиданному поведению, так как пользователи не могут совместно изменять части одной записи. Попробуйте сохранить данные массива или списка в SharedSequence или SharedInk.
- Хранение большого количества данных в одной записи с ключом может привести к проблемам с производительностью или слиянием. Каждое обновление будет обновлять значение полностью, вместо объединения двух обновлений. Попробуйте разделить данные по нескольким ключам.
Последовательности
Эти DDS используются для хранения последовательных данных. Они оптимистичны. Структуры данных последовательности полезны, если необходимо добавить или удалить данные по указанному индексу в списке или массиве. В отличие от структур данных "ключ-значение", последовательности имеют последовательный порядок и могут обрабатывать одновременные вставки от нескольких пользователей.
- SharedNumberSequence: последовательность чисел.
- SharedObjectSequence: последовательность простых объектов.
Сценарии последовательности
- Списки
- Временные шкалы
Распространенные проблемы и рекомендации по последовательностям DDS
- Храните только неизменяемые данные в виде элемента в последовательности. Единственный способ изменить значение элемента — сначала удалить его из последовательности, а затем вставить новое значение в положение, где было старое значение. Но поскольку другие клиенты могут вставлять и удалять, нет надежного способа поместить новое значение в нужное положение.
Строки
DDS SharedString используется для неструктурированных текстовых данных, которые можно совместно редактировать. Оптимистично.
-
SharedString
- структура данных для обработки текста совместной работы.
Строковые сценарии
- Текстовые редакторы
См. также
Дополнительные сведения о DDS и их использовании см. в следующих разделах fluidframework.com: