Nano Hash - криптовалюты, майнинг, программирование

Моделирование сборочной линии в SQL Server

Я хочу смоделировать сборочную линию в SQL Server. Этот объект будет продвигаться через линейный набор шагов. Каждый шаг будет иметь линейный набор статусов: Ожидание, В процессе и Завершено. Какой подход лучше всего подходит для сбора данных об изменении шага и/или состояния? Вставить одну запись для объекта и обновить поле шага и поле состояния при изменении этих свойств? Или я должен вставлять новую запись каждый раз, когда объект переходит на новый шаг или меняет статус на этом шаге? Я попробовал последнее и обнаружил, что SQL-запросы должны быть сложными.


  • Думаю, об этом лучше спросить на stackoverflow.com. 20.07.2009

Ответы:


1

Это принадлежит Stackoverflow, и я проголосовал за его закрытие. Сказав это, я скажу, что я разработал и внедрил подобные системы (система инвентаризации для производителя запчастей для мотоциклов является самой последней) и гибкость, которую обеспечивает «транзакционная» модель (т. е. выбор «вставить новую запись» ) прекрасен, и его полезность намного перевешивает любую «сложность» в запросах. Использование агрегатных функций "MAX" и "MIN" для полей даты и времени, определяющих время выполнения операции, вместе с квалификаторами "TOP..." в операторах SELECT может значительно упростить сложные запросы.

20.07.2009

2

Если у одного объекта есть только один статус, я предлагаю подход с полем статуса: проще управлять, быстрее запрашивать. Я использовал это решение в некоторых приложениях, и я не видел никаких проблем.

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

  • 3

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

    20.07.2009

    4

    Вы можете сделать и то, и другое: поддерживать «текущее» состояние для каждого объекта и историю продвижения на случай, если вам нужно увидеть, какой путь объект прошел через очередь и сколько времени это заняло в каждом из них. Если для каждого состояния требуется дополнительная информация о состоянии (которая отличается для каждого состояния), вам потребуется создать отдельные таблицы для каждой группы сведений о состоянии или, если вы можете представить ее в виде набора пар ключ-значение, создать простую таблицу свойств. .

    Вот грубый пример оформления таблицы:

    Object Table:
    Id, Name, Description, State
    
    ObjectHistory Table:
    Id, ObjectId, Timestamp, State
    
    Properties Table:
    Id, ObjectId, Name, Value
    
    --or--
    
    State1Info Table
    Id, ObjectId, ...
    
    State2Info Table
    Id, ObjectId, ...
    
    21.07.2009
  • Каждый раз, когда вы ведете итоги (путем дублирования данных, что, по сути, и есть то, о чем вы говорите), вы рискуете, что итоги не будут синхронизированы с реальностью. Вы должны сначала нормализовать, а затем нарушать правила нормализации, когда у вас есть очень, очень веские причины для этого. Если вам нужно текущее состояние объекта 1 в вашей гипотетической схеме выше, вам нужно будет только сделать SELECT TOP 1 State FROM ObjectHistory WHERE ObjectId = 1 ORDER BY Timestamp DESC. Нет причин поддерживать дубликат состояния в другом месте. 22.07.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

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