Vercy · воспроизводимое исследование

Где лежит управление, оказалось не важно. Есть ли оно - очень важно.

Цель
Когда в одну общую память пишут несколько команд, важно ли, лежат ли владение, правило конфликтов и список доступа внутри записи или в соседнем слое управления?
Схема исследования
Одна вымышленная организация, шесть команд пишут в одну память: 30 записей, 8 спорных деловых понятий, 6 конкурирующих определений от команд, которые ими не владеют, 3 замещённые версии и 5 записей, ограниченных названными командами. Шесть представлений, все порождаются из одной таблицы записей. 35 заданий в семи семействах, плюс трек межкомандного раскрытия и трек переопределения. 510 вызовов модели. Единица анализа - задание.
Основной результат
Специфичная для Vercy претензия не подтвердилась. Управляющие поля внутри записи дали 95,2% против 93,5% у того же графа с отдельным каталогом управления рядом, по два задания в каждую сторону, p = 1,00. Обычная командная вики с теми же фактами дала 96,8%, тоже p = 1,00.
Что подтвердилось
Наличие этих сведений стоит очень многого. Добавление каталога управления к би-темпоральному графу подняло его с 77,4% до 93,5%, десять заданий лучше и два хуже, p = 0,039. Удаление управляющих полей из измерения стоило 21 пункта, p = 0,016, и обрушило разрешение конфликтов со 100% до 33%.
Результат по утечкам
Все представления с правилами доступа приняли все 60 межкомандных решений о раскрытии верно, без переотдач. Би-темпоральный граф без них выдал лишь 59,1% того, на что команда имела право, и допустил две критические переотдачи.
Вывод
Для общей организационной памяти исход решает один класс полей: владение, правило конфликтов и список доступа. Упаковка взаимозаменяема: вики, каталог рядом с графом и поля внутри записи работают одинаково. Не работает та форма, которую реально поставляют несколько продуктов памяти, - она несёт время и провенанс, но ничего из перечисленного.
94%граф с каталогом рядом
95%управление внутри записи
77%граф без того и другого

Термины, используемые на этой странице

ТерминЗначение в этом исследовании
Общая памятьОдин набор записей, в который пишут несколько команд и который читает каждый агент.
Владелец понятияЕдинственная команда, отвечающая за то, что означает деловой термин. Пишут шесть команд; по каждому понятию решает ровно одна.
CP-ORGИспользованное здесь правило конфликтов: если две записи покрывают одну дату и расходятся, побеждает запись владеющей команды; внутри одной команды побеждает более поздняя дата вступления в силу. Запись невладеющей команды сохраняется как её точка зрения и никогда не затирается молча.
Управляющие поляВладелец понятия, ответственная роль, политика конфликтов и список доступа, лежащие внутри каждой записи, а не в отдельном каталоге.
Значение чужой командыОтвет, в котором приводится цифра, записанная командой, не владеющей понятием.
Критическая переотдачаВыдача зарплатных вилок, судебного спора или переговоров о поглощении команде, не имеющей права их читать.

Что сравнивалось и что нет

Три из шести представлений - реимплементации задокументированных продуктовых форм. Ни один продукт не запускался. Ничего не выполнялось против сервиса вендора, а извлечение, ранжирование, приём данных и хранение целиком вне рамок. Сравнивается форма записи, которую агент получает для чтения; это одна составляющая системы памяти, а не система. Вендор вправе возразить, что его извлечение изменило бы то, что видит агент. Это возражение справедливо и является главным ограничением здесь.

Рука B следует вектор-первому хранилищу, которое хранит метки времени записи, но не поддерживает запрос на дату. Рука C следует би-темпоральному графу знаний, чьи рёбра-факты несут valid-at и invalid-at рядом с эпизодом, из которого извлечены. Рука D добавляет отдельно управляемый глоссарий, который вендоры каталогов ставят рядом с таким графом; это архитектура, которую отрасль сейчас рекомендует, и сильнейший соперник в этой схеме. Руки A, D и E несут всё и проверяются кодом на полноту перед каждым прогоном; B, C и F намеренно лишены класса полей.

Основная сетка

ПредставлениеПолноеТочность ответа95% ДИНазвало владельцаСослалось на правилоСослалось на записьВзяло значение чужой командыКонтекст
A общая викида96,8%92-100100,0%100,0%100,0%0,0%6 618
B вектор-память с метками времениабляция56,5%40-7377,1%0,0%0,0%3,2%2 694
C би-темпоральный граф знанийабляция77,4%66-8979,2%0,0%100,0%4,8%8 932
D граф плюс каталог управленияда93,5%86-100100,0%100,0%100,0%0,0%10 621
E измерениеда95,2%88-100100,0%100,0%100,0%0,0%11 191
F измерение без управляющих полейабляция74,2%59-8968,8%0,0%100,0%6,5%6 474

Три представления собираются наверху и статистически неразличимы между собой: командная вики 96,8%, измерение 95,2% и граф с отдельным каталогом 93,5%. Любое попарное сравнение между ними даёт не больше двух заданий в каждую сторону, p от 0,62 до 1,00. Общее у них одно: каждое заявляет, кто владеет понятием, как разрешаются конкурирующие записи и кому что можно читать. Где именно лежат эти сведения, судя по данным, не важно.

СравнениеОтДоЗаданий лучшеЗаданий хужеp
A общая вики против E измерение96,8%95,2%221,0
D граф плюс каталог управления против E измерение93,5%95,2%221,0
F измерение без управляющих полей против E измерение74,2%95,2%700,01562
C би-темпоральный граф знаний против E измерение77,4%95,2%1120,02246
B вектор-память с метками времени против E измерение56,5%95,2%1400,00012
C би-темпоральный граф знаний против D граф плюс каталог управления77,4%93,5%1020,03857
A общая вики против D граф плюс каталог управления96,8%93,5%130,625
B вектор-память с метками времени против C би-темпоральный граф знаний56,5%77,4%1130,05737

Три представления без них стоят на двадцать-сорок пунктов ниже. Разрыв распределён неравномерно: на вопросы о настоящем и о незаписанном они отвечают не хуже прочих, а проваливаются на тех вопросах, которые возникают только потому, что в одно место пишут несколько команд.

По семействам вопросов

Представлениеполномочияконфликтисториязамещённоемаршрутизацияпровенансне записано
A общая вики100,0%91,7%100,0%100,0%100,0%87,5%100,0%
B вектор-память с метками времени66,7%33,3%70,0%70,0%90,0%0,0%100,0%
C би-темпоральный граф знаний75,0%41,7%90,0%80,0%90,0%100,0%100,0%
D граф плюс каталог управления100,0%91,7%100,0%90,0%100,0%75,0%100,0%
E измерение100,0%100,0%100,0%70,0%100,0%100,0%100,0%
F измерение без управляющих полей83,3%33,3%100,0%60,0%80,0%100,0%100,0%

Различие концентрируется на конфликтах. На вопрос, какая из двух живых записей действует, когда две команды расходятся, представления с правилом владения отвечают верно в 92-100% случаев; представления без него - в 33-42%, причём проваливаются они не отказом. Они берут цифру другой команды и выдают её за корпоративную.

Удаление управляющих полей, с контролем

Рука F - это измерение без владельца понятия, ответственной роли, политики конфликтов и списка доступа. Историческое семейство служит контролем: эти поля не имеют отношения к тому, что действовало на дату, поэтому их удаление там не должно менять ничего.

СемействоРольУправляющие поля удаленыПолное измерениеp
полномочияцель83,3%100,0%1,0
конфликтцель33,3%100,0%0,125
маршрутизацияцель80,0%100,0%1,0
историяконтроль100,0%100,0%1,0

Контроль держится точно: историческая точность равна 100% и с управляющими полями, и без них. Все три целевых семейства падают, резче всего конфликты - со 100% до 33%. При шести заданиях в этом семействе контраст сам по себе не достигает общепринятого порога, но сравнение по всей сетке достигает, при p = 0,016.

Проверка, что из соперника не сделали чучело

Руки C и F убирают одни и те же классы полей двумя разными путями: C - реимплементацией формы соперника, F - удалением полей из измерения. Если бы реимплементация была нечестной, C оказалась бы заметно ниже F. Этого нет: 77,4% против 74,2%, пять заданий лучше и шесть хуже, p = 1,00. Они сходятся, и это доступное здесь свидетельство того, что форма соперника воспроизведена добросовестно.

Что может пересечь границу команды

Пять ограниченных записей, шесть запрашивающих команд, 30 решений о раскрытии на представление на повтор. Зарплатные вилки, судебный спор и переговоры о поглощении считаются критическими, если выданы команде, не имеющей права их читать.

ПредставлениеТочность раскрытияПолнота раскрытияВерность решенийКритические переотдачи
A общая вики100,0%100,0%100,0%0 из 60
B вектор-память с метками времени95,2%90,9%95,0%1 из 60
C би-темпоральный граф знаний86,7%59,1%81,7%2 из 60
D граф плюс каталог управления100,0%100,0%100,0%0 из 60
E измерение100,0%100,0%100,0%0 из 60

Это самый резкий результат исследования. Каждое представление с правилами доступа отработало безупречно: 100% точности, 100% полноты, ни одной переотдачи на 60 решениях, лежали ли правила на странице вики, в каталоге или в поле. Би-темпоральный граф, несущий время и провенанс, но не список доступа, допустил две критические переотдачи и отказал в 41% того, что команда имела право видеть. Он ошибается сразу в обе стороны, а это характерный признак угадывания.

Одна команда переопределяет запись другой

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

ПредставлениеНовое значение верноДата вступления вернаЗаписано на нужную командуЗакрыта нужная записьИстория сохраненаЗапись другой команды сохранена
A общая вики100,0%80,0%100,0%0,0%100,0%100,0%
C би-темпоральный граф знаний100,0%80,0%100,0%100,0%100,0%100,0%
E измерение100,0%80,0%100,0%100,0%100,0%100,0%

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

Вывод

Проверявшаяся претензия состояла в том, что управление принадлежит внутрь записи памяти, а не слою рядом. Данные её не подтверждают: два устройства неразличимы, как неразличима и хорошо ведённая вики. Данные подтверждают другое, и это про категорию, а не про нас. Память, несущая интервалы действия и провенанс, но не несущая владения, правила конфликтов и списка доступа, лишена того класса полей, который решает большинство вопросов, реально задаваемых общей памяти; его добавление стоит шестнадцати пунктов и двух предотвращённых утечек. Это вывод для тех, кто это стандартизует, а не довод в пользу одной реализации.

Два дефекта: один пойман до прогона, другой во время

Метрика провенанса изначально принимала только идентификатор документа, из-за чего штрафовала бы руки, несущие ещё и идентификаторы записей, за ссылку на запись. Это тот же дефект, что был найден в прошлом исследовании, и здесь он исправлен до первого вызова. По ходу прогона обнаружилось, что три из пяти исторических заданий спрашивают номер версии - поле, которое есть не у всех представлений: семейство мерило, у каких рук есть счётчик версий, а не какие могут сказать, что действовало на дату. Задания переформулированы на содержание, добавлено правило сопоставления, отвергающее ответ с более поздней формулировкой, и семейство перепрогнано по всем шести рукам. Оба прогона опубликованы, анализ использует исправленный.

Чего это не показывает

Одна авторская организация на 30 записей, одна модель, инструменты отключены, извлечение исключено - а это та составляющая, которую несколько смоделированных продуктов считают своим главным вкладом. Формы соперников воспроизведены по публичной документации и могут не соответствовать текущему релизу. Эталонные ответы берутся из той же таблицы записей, которую показывают руки, поэтому измеряется верное применение выданных записей, а не поиск того, что в организации истинно. Правило конфликтов - наше. Тридцать одно отвечаемое задание в семействах по четыре-шесть - малая выборка, поправка на множественные сравнения не применяется.

Открыть result.jsonЧитать методику (EN)ОрганизацияШесть рендереровСырой прогон сетки

Материалы

Инструмент опубликован целиком. org.py содержит организацию, каждую запись с интервалом действия, записавшей командой и источником, а также эталонный движок. views.py порождает все шесть представлений из этой одной таблицы и содержит проверку полноты. items.py содержит 35 заданий и оба трека, run.py - раннер и скоринг, analyze.py - статистику на уровне заданий. Каждый сырой прогон опубликован без правок, включая снятый первый прогон исторического семейства: сетка, исправленное историческое семейство, трек раскрытия и трек переопределения.