Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Разработка информационных систем Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7   вперед  Ctrl      все
 Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
Интересуюсь мнением коллег об организации работы с большими (много полей) сущностями.
В сопровождающей нами инфосистеме реализованы два способа хранения сущности в базе данных:
1. поля сущности в виде широкой записи в одной таблице,
2. разбиение полей сущности на две строки в разных таблицах с одним значением суррогатного ключа.
Например:
1. сущность Сотрудник имеет примерно 30 полей и хранится в виде одной записи
2. сущность Персона также имеет примерно 30 полей но разбита на две записи в таблице Персоны и в таблице ПерсоныД
Обе сущности имеют идентификационные поля - ФИО, Дата рождения и т.п.
Работа с сущностями почти идентичная - показываем в гриде идентификационные поля + поле вызова формы (UserControl) для работы с полной информацией сущности.
Как работать с данными?
2 июн 19, 13:26    [21899769]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
irbis_al
Member

Откуда: Симферополь
Сообщений: 1534
ВМоисеев
Интересуюсь мнением коллег об организации работы с большими (много полей) сущностями.
В сопровождающей нами инфосистеме реализованы два способа хранения сущности в базе данных:
1. поля сущности в виде широкой записи в одной таблице,
2. разбиение полей сущности на две строки в разных таблицах с одним значением суррогатного ключа.
Например:
1. сущность Сотрудник имеет примерно 30 полей и хранится в виде одной записи
2. сущность Персона также имеет примерно 30 полей но разбита на две записи в таблице Персоны и в таблице ПерсоныД
Обе сущности имеют идентификационные поля - ФИО, Дата рождения и т.п.
Работа с сущностями почти идентичная - показываем в гриде идентификационные поля + поле вызова формы (UserControl) для работы с полной информацией сущности.
Как работать с данными?


Многие Субд поддерживают XML и JSON (Поддерживают это означает могут выдернуть информацию по xmlpath ..Преобразовать в реляционную таблицу и т.д)..Незначительные поля,которые редко нужны в отчетах или всяких статистиках...можно хранить в clob поле,внутри которого xml или json ,контекст которых будет соответствовать соответствующей строке и раскрывать её "более подробно".
2 июн 19, 14:07    [21899790]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
Ares_ekb
Member

Откуда: Екатеринбург
Сообщений: 1300
Считайте, что это две сущности со связью один-к-одному. Если у вас используется какой-то ORM фреймвок, то большинство из них должны это поддерживать. Если ПерсоныД должны создаваться/удаляться одновременно с Персоны, то на уровне ORM это настраивается.
2 июн 19, 16:21    [21899827]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>irbis_al, сегодня, 14:07 [21899790]
>...можно хранить в clob поле…
<В этом есть нужное зерно. Не знаю пока всех подводных камней, но испытать идею нужно обязательно. Также же, есть и другие сущности, куда большего размера, к тому же в реальности имеющих много (очень) пустых полей.
2 июн 19, 17:20    [21899855]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
ВМоисеев,
Не надо ничего разбивать.
Проблема высосана из пальца.
30 полей разве это много?
2 июн 19, 18:53    [21899886]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ViPRos
Member

Откуда:
Сообщений: 9568
PetroNotC Sharp,

они из альфы центавра, у них все по другому
2 июн 19, 19:32    [21899897]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
ViPRos,
Я не в курсе.
Если мне нужна сущность со 100 полями, то я не боюсь что ПЭВМ не справится).
Удачи автору. И не боятся этой персональной электронной машины.
2 июн 19, 19:41    [21899902]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>PetroNotC Sharp, сегодня, 18:53 [21899886]
>...30 полей разве это много?...
<Это почти реальный пример 2-х подходов хранения сущности.
Хотелось понять как аккуратно работать с множествами подобных сущностей.
Делаю запрос, что в выборке? Полная сущность или только определенные её поля? В гриде показываю строки со всеми полями сущности? Какой объем выборки?
2 июн 19, 21:22    [21899935]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>PetroNotC Sharp, сегодня, 18:53 [21899886]
>...30 полей разве это много?...
<Это почти реальный пример 2-х подходов хранения сущности.
Хотелось понять как аккуратно работать с множествами подобных сущностей.
Делаю запрос, что в выборке? Полная сущность или только определенные её поля? В гриде показываю строки со всеми полями сущности? Какой объем выборки?
2 июн 19, 21:23    [21899936]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
ВМоисеев,
Когда к врачу приходишь, то первый вопрос его - что вас беспокоит?
Не разговоры что 30 это много, а 5 мало, а именно что болит? Или симптомы какие.
Прзнакомься с ОРМ. Там ленивые поля которые загрузятся по доп.запросу.
2 июн 19, 22:13    [21899961]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 732
не надо ORM
3 июн 19, 00:14    [21900029]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
hVostt
Member

Откуда:
Сообщений: 15822
ВМоисеев
Как работать с данными?


Задачу какую решаем? Кто будет работать с данными? Каким образом он/они это будут делать? Какие сценарии использования ПО?
3 июн 19, 00:43    [21900043]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
полудух
не надо ORM
согласен. Оно не тормозит что с ОРМ что без него.
Пусть лучше напишет что у него переменных в приложении много и как с нии бороться.
3 июн 19, 07:13    [21900065]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>irbis_al, вчера, 14:07 [21899790]
>...можно хранить в clob поле…
<Попытался в лоб - сериализовал параметры детализации и сбросил в clob. Достал и развернул в переменные. ок. Работаю на C#. Но имею мечту - хочу сохранить возможность писать приложения для инфосистемы и на других языках, интересует Delphi.
3 июн 19, 08:22    [21900084]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>hVostt, сегодня, 00:43 [21900043]
>Задачу какую решаем?...
<Для начала - стандартную, добавить и удалить сущность, выбрать сущность и скорректировать её параметры, использовать параметры сущности для подстановки в другую сущность.
Вариант работы на слайде

К сообщению приложен файл. Размер - 41Kb
3 июн 19, 08:57    [21900098]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
L_argo
Member

Откуда:
Сообщений: 890
па сабжу: классическая проблема - хранение разнородной информации у сущности.

ИМХО, лучший выбор - EAV.
Почему:
1. можно на лету добавить/удалить произвольный параметр у любой сущности в системе не меняя схему данных.
2. Унифицированный механизм получения и записи значений параметров для любой сущности в системе. Один код на всю систему.
3. Унифицированное управление правами на все параметры.
4. Не нужны админские права. Достаточно права на запись в справочник параметров и таблицу фактов.
5. Удобно хранить сильно разреженную матрицу свойств.
6. Не влияет на существующую схему данных, т.е. можно наложить на уже готовую систему.
7. Совместимо с любой СУБД.
8. Не требует правок кода приложения.
9. Решение может быть произвольно усложнено под специфику задачи.

Недостатки:
1. производительность может быть критичной. Но это на многих млн.записей.
2. Не все умеют создать качественную схему для EAV.
3. Все первичные ключи в системе должны быть однотипны и атомарны. Разнородные ключи (целое, строка, бинари) очень усложнят решение.

Совокупность "+" и "-" указывают в пользу данного решения.

зы: ща наползут многочисленные хейтеры EAV.
Но, как всегда ничего путнего взамен не предложат. Одни эмоции и желчь. :)
3 июн 19, 09:06    [21900107]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
L_argo,
ЕАV каким боком к сабжу?
3 июн 19, 09:13    [21900114]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
L_argo
Member

Откуда:
Сообщений: 890
PetroNotC Sharp
L_argo,
ЕАV каким боком к сабжу?
Проходи мимо. Топик не для тебя, т.к. не понимаешь озвученной проблемы.

ТС озвучивает кривую полумеру: две таблицы. Такое решение имеет право на жизнь, но имеет ряд ограничений.
3 июн 19, 10:12    [21900162]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
L_argo,
Разумеется. Я из тех самых кто делал EAV и больше не хочу.
Из програгммистов. А ты как наверно из постановщиков.
Отправь его в EAV. И мы его года 3 не увидим.
3 июн 19, 10:19    [21900165]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
Ares_ekb
Member

Откуда: Екатеринбург
Сообщений: 1300
ВМоисеев,

возьмите DevExpress XAF и не мучайтесь, там уже всё сделано.
3 июн 19, 10:27    [21900171]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
L_argo
Member

Откуда:
Сообщений: 890
PetroNotC Sharp
L_argo,
Разумеется. Я из тех самых кто делал EAV и больше не хочу.
Из програгммистов. А ты как наверно из постановщиков.
Отправь его в EAV. И мы его года 3 не увидим.
Полное соответствие тезису из моего первого поста (в конце).

Никогда не поздно уйти в продавцы пылесосов. :)
3 июн 19, 10:44    [21900186]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
L_argo,
А желчь то из тебя полилась))) lol
3 июн 19, 11:10    [21900211]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>Ares_ekb, сегодня, 10:27 [21900171]
>...там уже всё сделано…
<Что конкретно там сделано?
Если я строю выборку по идентификационным полям сущностям Сотрудники, то все поля сущности переносятся в объект коллекции ObservableCollection или строится новый класс для сущности c урезанным числом полей?.
Если строю конкретную сущность детализации, то она должна иметь все текущие поля хранимой в базе сущности?
3 июн 19, 11:31    [21900233]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
ВМоисеев,
Есть 100 вариантов выбоки. Они все разные.
Вам надо в ЯП к программистам.
3 июн 19, 11:42    [21900243]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими сущностями  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1418
ВМоисеев,
В общем случае в VIEW вы уже знаете конкретное окошко для показа юзверю. Вот там вы и подкачиваете все поля 30 или 10 которые вам нужны.
Но это не те числа чтобы заморачиваться.
3 июн 19, 11:45    [21900252]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7   вперед  Ctrl      все
Все форумы / Разработка информационных систем Ответить