惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
月光博客
月光博客
腾讯CDC
Engineering at Meta
Engineering at Meta
博客园 - Franky
Vercel News
Vercel News
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
GbyAI
GbyAI
B
Blog
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Поиск решений управляемый данными. Клиент-серверная архит...
SKaminskij · 2026-04-27 · via Все публикации подряд на Хабре

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

В статье не рассматриваются вопросы технической реализации типа: REST/SPA‑подход или long polling / WebSocket / server‑side session / event sourcing.

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

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

1.      Локально. База знаний клонируется (реплицируется) и каждый пользователь работает обособленно со своей копией.

2.      В локальной сети. Толстый клиент. База знаний находится на сервере, а на рабочих станциях установлены клиенты, которые постоянно взаимодействуют с базой знаний для  получения доступа к информационным блокам и словарю. Механизм поиска решений работает на локальных рабочих местах.

3.      На локальных рабочих местах работают тонкие клиенты. Вся обработка данных выполняется на сервере.

Преимуществом варианта 1 является автономность. Но возникает необходимость постоянно поддерживать базу знаний в актуальном состоянии. Если вносятся изменения, они должны оперативно распространяться на все копии базы знаний, что неизбежно приведёт к разного рода коллизиям. Этот вариант удобен для разработки и отладки. Или для приложения созданного исключительно для себя и тогда необходимость делиться базой знаний не возникает.

Вариант 2 снимает необходимость актуализировать базу знаний между клиентами. К проблемам может приводить, как и в варианте 1, необходимость разрешать коллизии при внесении изменений в информационное наполнение от разных клиентов.

Вариант 3 не требователен к ресурсам локальных рабочих мест. С возможным возникновением коллизий аналогичная ситуация, как и в вариантах 1 и 2.

Взаимодействие с базой знаний в интернете возможно через браузер или через WEB-клиента. И чисто браузер и WEB-клиент теоретически могут эмулировать все три варианта, но с существенными оговорками.

Наиболее целесообразным для работы через интернет представляется чисто браузерное взаимодействие с поддержкой только эксплуатационного режима работы пользователей - поиск и документирование решений. Трудность заключается в том, что WEB-технологии не поддерживают постоянное соединение с обратной связью. Запрос-ответ подходит для задач, когда цикл обработки запроса каждый раз полностью завершается. Даже если это диалог с вводом уточнений – данные на стороне сервера сохраняют (накапливаются), но, как правило, не сохраняется само состояние процесса обработки данных на стороне сервера. При поиске решений управляемом данными необходимо сохранять всю накопленную информацию поиска между запросами (получением данных от браузера). Данных достаточно много и формат их различен. В свою очередь браузер должен ждать, когда очередная порция данных для взаимодействия с серверной задачей будет готова.

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

1.      Браузер передаёт данные и запускает серверный процесс.

2.      Браузер периодически проверяет готовность ответа от сервера.

3.      Серверный процесс выполняется до момента, когда потребуются дополнительные данные или решение будет найдено.

4.      Если решение найдено, формируется итоговый отчёт для браузера.

5.      Если поиск продолжается. Состояние процесса замораживается: сохраняется состояние репозиториев информационных блоков, очереди параметров, текущие флаги событий, состояние отчётов и тому подобная информация, накопившаяся в процессе поиска решений.

6.      Серверный процесс завершается и устанавливается флаг ожидания ответа от браузера.

7.      Браузер обнаруживает готовность данных и забирает информацию с сервера.

8.      Браузер анализирует информацию, поступившую от сервера. В том числе управляющие сигналы. Возможны варианты: 1 - процесс завершен; 2 - требуется дополнительная информация.

9.      Если запрашивается дополнительная информация, браузер передаёт данные и перезапускает серверный процесс.

10.   Серверный процесс анализирует информацию, поступившую от браузера. В том числе управляющие сигналы (например, требование прекращения поиска). Данные размораживаются (восстанавливаются). Серверный процесс возобновляется с точки остановки.

11.   Если ожидается продолжение процесса, всё повторяется с пункта 3.

12.   Если  от браузера поступило требование прекращения поиска, процесс завершается с формированием итоговой информации для браузера.

13.   Браузер завершает сеанс работы с сервером.

ПРИМЕЧАНИЕ. Во время прерывания процесса на сессию браузера пользователь может запросить дополнительную справочную информацию. Тогда взаимодействие через область обмена данными продолжится, но цикл поиска запущен не будет.

Предотвращение и разрешение коллизий

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

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

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

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

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

Правило 1. Не вносить изменения в один и тот же информационный блок с разных мест доступа. На время внесения изменений возможность внесения изменений со всех возможных мест доступа кроме одной блокируется. Или изменения не сохраняются (с соответствующим уведомлением). Или изменения удаляются (с соответствующим уведомлением). Или создаются конфликтные документы для последующего анализа и разрешения конфликтов. Ситуация с не сохранением, удалением, порождение конфликтных документов, как правило, имеет место, когда информационное наполнение находится в распределённой сети и используется механизм синхронизации (реплицирования).

Правило 2. Внесение любых изменений в одном информационном блоке должно запускать механизм проверки других информационных блоков и становиться сигналом к восстановлению целостности информационного наполнения. До полной синхронизации информационного наполнения внесение, каких бы то ни было других изменений, будет только усугублять ситуацию неопределённости. Что имеется ввиду. Например, в блоке А изменён диапазон допустимых значений входного параметра необходима проверка на пересечение диапазонов для этого параметра во всех других блоках, где этот параметр так же используется для получения аналогичных результатов (определения одного и того же параметра). Другими словами, во избежание неопределённости, всегда необходимо проверять пересечение диапазонов допустимых значений для информационных блоков использующихся для определения одного и того же параметра.

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

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

Заключение

Автономная работа с экспертной системой удобна при создании информационного наполнения, отладки и тестирования приложений.

Так же автономное использование экспертной системы удобно, если не требуется коллективная работа.

Во всех остальных случаях предпочтение следует отдавать клиент-серверным архитектурам. Будь то доступ через интернет или коллективная работа в локальной сети.

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