Модель данных для рабочего процесса / приложения бизнес-процесса

Какой должна быть модель данных для приложения рабочего потока? В настоящее время мы используем модель на основе значения атрибута сущности в SQL Server 2000 с пользователем, имеющим возможность создавать динамические формы (на asp.net), но по мере роста данных производительность падает, и создание отчета затрудняется, и, что еще хуже, если слишком много. пользователи одновременно запрашивают данные (EAV).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 448
3

Ответы 3

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

Ясно, что это шутка, призванная быть смешной. Хахаха.

Stephanie Page 21.06.2010 23:00

Попробуйте использовать реляционную модель данных. Оно работает.

Я уверен, что это было большим подспорьем для ОП.

Stephanie Page 21.06.2010 23:00

Как вы, вероятно, поняли, проблема модели EAV заключается в том, что таблицы очень быстро растут, а запросы - очень быстро. Например, запросы на основе EAV обычно требуют большого количества подзапросов, чтобы получить те же данные, которые было бы тривиально выбрать, если бы вы использовали более традиционно структурированные таблицы.

К сожалению, перейти к реляционной модели с традиционной структурой при этом оставляя старые формы открытыми для модификации. достаточно сложно.

Итак, мое предложение: учитывает изменения закрытие в устоявшихся формах и перенос их данных в стандартные, нормализованные таблицы. Например, если у вас есть набор форм доставки, которые вряд ли будут изменены (или изменениями которых вы можете управлять, изменив приложение, потому что это происходит так редко), вы можете создать фиксированную таблицу, а затем скопировать существующие данные из вашу таблицу (-ы) EAV. Это A) улучшит вашу способность составлять отчеты, B) уменьшит объем данных в ваших существующих таблицах (таблицах) EAV и C) улучшит вашу способность поддерживать одновременных пользователей / повысит производительность, потому что вы можете встроить более подходящие индексы в свои данные.

Короче говоря, думайте о динамической системе на основе EAV как о способе сбора потребностей пользователей (они сообщают вам, создавая свои формы), а НЕ как о постоянном хранилище. По мере того, как формы эволюционируют в свою окончательную форму, вы переходите к фиксированным таблицам, чтобы получить преимущества, описанные выше.

Последняя вещь. Если все это невозможно, рассматривали ли вы возможность сегментирования таблицы EAV на несколько таблиц по категориям? Например, поместите все формы отправки в одну таблицу, формы для персонала - во вторую и т. д. Это не решит проблему структуры запросов (требуются подзапросы), но поможет уменьшить ваши таблицы и повысить производительность.

Надеюсь, это поможет - я сочувствую вашему положению, поскольку сам был в подобной ситуации!

Другие вопросы по теме