|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
З.З.Ы. Кстати, про XML речи вообще не идет. Согласен с предыдущем оратором (Petro123) - это не есть лучшая среда для хранения данных. На мой взгляд - это наиболее универсальная среда для их передачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2008, 17:16 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
lightspeed1. Не будет миллионов записей. Только не в пилотнике. Максимально - будут тысячи, ну может десятки тысяч. Все остальное - уже в рабочей версии.Вы думаете, что если система загнется после того как вы ее доделаете - будет лучше? Мне казалось, что проектируют для того, чтобы система НЕ загнулась. Ни до начала использования, ни в процессе эксплуатации. По поводу количества - один из критических показателей системы - сколько она может держать в себе данных и обрабатывать. Вам (или бизнесаналитикам) надо понимать сколько данных в систему будет загружено при старте + сколько ориентировочно будет создаваться в течении года. Для разных объемов данных - разные решения допустимы. lightspeed2. При изменениях объектов и аттрибутов в законченной версии, будет производиться версионнинг, (как написал Bely: в рамках усовершенствования проекта). Тем более, что в дальнейшем, кол-во изменений по объектам и аттрибутам будет уменьшаться. Т.е., система в будет стабилизироваться.Сам бог велел сделать стабильное ядро со статическими атрибутами + дополнительные атрибуты в EAV (те, которые появились новые). При появлении критических атрибутов - добавление полей в таблицу + переделка форм. lightspeedК сожалению, общее с бизнес-аналитиками проходит довольно сложно, поэтому, дизайн на данный момент - EAV. Хотя я понимаю, что не смотря на свою универсальность и гибкость, это довольно медленный инструмент. Буду строить индексы.. (Как только встанет задача "Загрузить пару миллионов объектов из старой системы" - придется строить не индексы, а планы по смене работы... Так что, возможно, вам проще будет сделать EAV структуру, внести в нее пару миллионов записей (тестовых), подготовить отчет по этой структуре и показать бизнес-аналитикам как он быстро будет работать. Вдруг, они тоже окажутся заинтересованы в том, чтобы система не закончилась на пилотном проекте :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2008, 18:17 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
аффтар! Вы не поняли, что у EAV низкая скорость - не самый главный минус? EAV будет дороже в разы! А если захотите вернуться, то придётся переписать всё на клиенте и всё на сервере. Спросите хотя бы у программистов (у меня был не пилотный проект на нём, а реальный). Bely +1 Удачи Вам! ЗЫ. Кажется мне, что из за плохого контакта с бизнес-аналитиками, в угоду кажущейся простоте (добавления нового атрибута в БД), архитектор Системы может принять неверное решение. По крайней мере, доводов от бизнеса в том что атрибуты меняются каждый день - я не увидел. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2008, 19:27 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Ну я б не сказал что это ТАК уж дорого. Мы это делали еще когда слова такого не было EAV. И даже с наследованием атрибутов. И тоже не в пилоте, а в промышленной системе, причем тиражируемой. Работает у клиентов годами уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2008, 19:39 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Petro123разделение атрибутов на часто изменяемые и редко... будет искуственным, т.к. с точки зрения бизнеса этого разделения нет. Соответственно все запросы и представление данных должно это искусственное разделение обратно объединять. 1) Сударь мой разделение атрибутов "на часто изменяемые и редко" действительно искуственно 2) А вот на "значимые и незначимые" давно и успешно применяются (см ПрАце.Ру, Яндекс-Маркет и т.д. - хАчу вот такой теливизор только желтый") 3) Разделение атрибутов на "значимые и незначимые" возможно только после анализа - какой объем записей мы должны будем обработать после поиска по "значимым" атрибутам и хороше выполненной методики по вводу в базу всех данных 4) То что сказано выше достаточно сильно упирается в предметную область в которой реализуется проект ______________________________________________________ Давайте считать обступившее нас со всех строн коричневое море шоколадным ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2008, 21:08 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБНу я б не сказал что это ТАК уж дорого.... Не дорого, потому что в ИТ индустрии нет чётких расценок на те или иные виды работ. В общей куче договора что EAV, что ORM, что "работаем с любой БД" - всё едино. ну, можно зайти с друго бока, с низу... - время разработки бизнес формы по ВИ в Delphi, на одну форму уходит 1 человеко день. - при разработке используются связка: ПровайдерДанных от MS MDAC -----> библиотека Delphi ПоставщикДанных (ADO) ----> визуализация данных и редактирование(DevExpress) Все они (в том числе сам сервер), не понимают EAV. Все они оперируют объектом TField у которого есть тип данных. Если тип данных текст, то будет курсор. Если числовой то вызовется калькулятор и т.д. Скока будет делать программист данную форму, если из БД идёт: field1 field21 232 1.43 02.02.2008 если расшифровать: field1 field2рост 23 (это из другой таблицы значит "высокий")ширина 1.4аудит 2 фер.2008 в одном поле сразу все типы данных. Программист может всё, только кому это надо... (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2008, 22:43 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Petro123Скока будет делать программист данную форму, если из БД идёт... Мы сделали одну форму, на которую дополнительные атрибуты выводятся столбиком: атрибут-значение. С этой формой пришлось повозиться, но после этого прошлись по имеющимся формам и просто в каждой добавили переход на форму атрибутов. Это как вы понимаете минутное дело. Не самый лучший интерфейс? Согласен. Но достаточно хороший - пользователи претензий не предъявляют. Кроме этого понятно пришлось кое-что сделать в отчетности, но тоже - не смертельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 11:54 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБНе самый лучший интерфейс? Согласен.Вместо инструмента вы им дали конструктор. Выучили бы их языку SQL, может вобще интерфейс писать не пришлось... По поводу не жалуются - я видел организации, у которых стояла глюкавая система учета документов, поэтому им приходилось документ сперва регистрировать в тетрадке (записывали на бумаге), потом в отдельном экселевом файле, а потом уже в учетной системе. И ничего - тоже люди не жаловались... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 12:07 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Bely АБНе самый лучший интерфейс? Согласен.Вместо инструмента вы им дали конструктор. Выучили бы их языку SQL, может вобще интерфейс писать не пришлось... По поводу не жалуются - я видел организации, у которых стояла глюкавая система учета документов, поэтому им приходилось документ сперва регистрировать в тетрадке (записывали на бумаге), потом в отдельном экселевом файле, а потом уже в учетной системе. И ничего - тоже люди не жаловались... Не надо инсинуаций - конструкторы, SQL и тетрадки тут не при чем. Пользователь видит строго типизированные атрибуты, заданные для выбранного объекта на уровне метаданных. Просто расположены они на экране не в оптимаотном с точки зрения эстетики и эргономики порядке, а в столбик один под другим. Смысл использования EAV ведь не в том, чтобы избавиться от необходимости расширять схему БД. Что толку, если при добавлении атрибута придется переписывать все формы? Что схема, что формы в конечном итоге сводятся к трудозатратам. В нашей реализации можно свободно добавлять атрибуты, не трогая ни схему, ни формы. Спросите у пользователя, что он предпочтет - пожертвовать качеством интерфейса или избавиться от зависимости от программистов, от затрат на переделки и от задержек между возникновения необходимости в появлении нового атрибута и возможностью работы с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 12:25 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
2 АБ и Bely: С удовольствием читаю ваш диалог. И вы знаете Bely, я согласен с АБ. Пользователи выбирают динамическое изменение данных. И их не волнует что внутренняя архитектура страдает (в некотором смысле) от этого. Вот ответ от бизнеса: "..меня не волнует что у тебя и как там работает. Мне нужен интерфейс позволяющий динамически изменять необходимые параметры объектов в соответствие с заданными критериями.." В общем, я получил карт-бланш на flexible user-oriented interface.. Теперь осталось сделать архитектуру по-возможности, еще гибкой и дешевой в разработке.. Мда.. Кстати, с финансами проблем нет, в том смысле что бюджет на построение пилотника довольно большой. Т.е., если для ускорения работы системы понадобится кластер и распараллеливание запросов - это все будет.. И все же, как правильно заметил Bely, не хотелось бы выкинуть изделие на свалку после создания пилотика. Поэтому, опять возвращаюсь к архитектуре системы. И продолжаю следить за топиком.. Кстати, вариант однажды предложенный Bely: Bely ..Видел еще в некоторых системах такой подход: В таблице для хранения атрибутов заводятся поля: INT_FIELD_01, INT_FIELD_02, INT_FIELD_03, INT_FIELD_04 .... STR_FIELD_01, STR_FIELD_02, STR_FIELD_03, STR_FIELD_04 .... DATE_FIELD_01, DATE_FIELD_02, DATE_FIELD_03, DATE_FIELD_04 .... итп.. тоже имеет право на жизнь, и рассматривается в данное время.. Есть еще такой вариант как "EAV-наполовину": Т.е., создаются объекты, создаются аттрибуты, которые "привязываются" к этим объектам. А далее, по ним создается таблица. Имя которой - есть имя объекта, а названия полей - есть названия аттрибутов привязанных к данному объекту. Далее, при добавлении нового аттрибута - делаем alter table add.. Но, никогда не удаляем поля таблицы объекта. Просто удаляем соответствующую запись из матрицы объект-аттрибут. Соответственно, если аттрибут для данного объекта восстановлен, получаем обратно все данные по нему. В данном алгоритме, проблема возникает в получении данных из этих таблиц-объектов. Т.к., сначала мы должны получить имена полей из таблицы аттрибутов, для данного объекта(-ов), и лишь потом создавать sql для данной таблицы.. Если кто-то проследил за моей мыслью, буду рад пообщаться.. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 13:16 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
lightspeed...создаются объекты, создаются аттрибуты, которые "привязываются" к этим объектам. А далее, по ним создается таблица... Не это ли примерно реализовано в 1С? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 13:20 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБПользователь видит строго типизированные атрибуты, заданные для выбранного объекта на уровне метаданных. Просто расположены они на экране не в оптимаотном с точки зрения эстетики и эргономики порядке, а в столбик один под другим.Вот у нас в форме организации - 27 основных видимых полей + с десяток - системных, еще есть возможность добавлять признаки из классификатора (по типу EAV) - нормальная ситуация, если таких признаков - 5-6, еще телефоны... 3-4 телефона, причем телефоны тоже разбиты и структурированы (код, телефон, тип телефона, extention-примечание). Еще к организации пристыкованы люди - 3-4 человка в среднем (есть и по 20-30 человек ворганизации). У каждого человека: Фамилия, Имя, Отчество, Пол, Персональный телефон, Долджность (по классификатору - 3 поля), день рождения, Дата последнего контакта с человеком. Я насчитал (без детализации телефонов и персон) - на каждую организацию: около 45 строк атрибутов. И всю эту информацию человек должен увидеть, понять что к чему, сделать какие-то действия и обработать. Такие формы (как вы написали) применимы только для простых задач. А в 45 строках абсолютно разнородной информации - человек просто потеряется. Представлени EAV хорошо для описаний в интернет магазинах В обработке данных - это будет просто смерть. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 14:41 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБ lightspeed...создаются объекты, создаются аттрибуты, которые "привязываются" к этим объектам. А далее, по ним создается таблица... Не это ли примерно реализовано в 1С? +1 либо ORM - маппинг объектов-класов в РСУБД. 10 раз отмерь, а потом программируй. Ведь "пилотник"можно делать на каждом уровне. Я вот тут не увидел бизнес-логику при хранении данных. У ас просто учётная система? Учесть(сохранить) изменяющиеся атрибуты? Если атрибут добавить так легко, то откуда появится код обслуги данного атрибута? Тоже вручную будете городить в триггере на 1млн.записей атрибутов НА ОДНУ таблицу. Там подводных камней масса. Я бы внятного ТЗ от "бизнесменов" попросил. Или концепции на 3-х страницах. Потом они так-же и скажут: "а нам всё равно как вы это ТУДА засунете". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 14:52 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
BelyА в 45 строках абсолютно разнородной информации - человек просто потеряется. Вы бы еще сделки в эту кучу добавили и спецификации по ним - тогда не 45, а 450 строк получится. Организация - это один объект со своими атрибутами, контакты - другой, сделка - третий; мне бы в голову не пришло показывать их одним списком. Кстати, любой желающий может посмотреть как изменяемый набор полей реализован у salesforce. Судя по тому, что пользователь сам может добавить атрибут, подозреваю, что они использовали EAV. На форму атрибут пользователь добавляет тоже сам, мышкованием. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:03 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБКстати, любой желающий может посмотреть как изменяемый набор полей реализован у salesforce. Судя по тому, что пользователь сам может добавить атрибут, подозреваю, что они использовали EAV. На форму атрибут пользователь добавляет тоже сам, мышкованием.Не знаю, как это сделано в SalesForce, но в Support Wizard (система для HelpDesk) это реализовано через ALTER TABLE, TerrasoftCRM - ALTER TABLE, ITG Mercury - через список предопределенных полей + метаданные (как я писал ранее), в MS CRM - кажется тоже, через ALTER TABLE. И во всех этих системах пользовательские формы - настраиваемые и не представляют собой простой список атрибутов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:10 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБВы бы еще сделки в эту кучу добавили и спецификации по ним - тогда не 45, а 450 строк получится. Организация - это один объект со своими атрибутами, контакты - другой, сделка - третий; мне бы в голову не пришло показывать их одним списком.Тогда вопрос - где человек увидит связанную информацию (телефоны, персоны, адреса, сделки, историю итп.)? Или для того, чтобы получить общую информацию надо открыть 5-10-20 форм? Особенно интересен становится просмотр всех людей, которые числятся за организацией... как это у вас реализовано? или просто разворачиваете EAV в плоскую таблицу для представления в гриде? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:14 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
BelyИ во всех этих системах пользовательские формы - настраиваемые и не представляют собой простой список атрибутов. В отличие от перечисленных Вами систем, salesforce предоставляется по принципу SaaS, через Интернет. Я как-то с трудом могу себе представить, что в системе, в которой один инстанс обслуживает тысячи организаций, что-то может делаться через добавление новых таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:15 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Petro123Я вот тут не увидел бизнес-логику при хранении данных. У ас просто учётная система? Учесть(сохранить) изменяющиеся атрибуты? Если атрибут добавить так легко, то откуда появится код обслуги данного атрибута? Тоже вручную будете городить в триггере на 1млн.записей атрибутов НА ОДНУ таблицу. Там подводных камней масса. Я бы внятного ТЗ от "бизнесменов" попросил. Или концепции на 3-х страницах. Потом они так-же и скажут: "а нам всё равно как вы это ТУДА засунете".+1 Информации недостаточно. Расскажите больше о задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:16 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Belyгде человек увидит связанную информацию (телефоны, персоны, адреса, сделки, историю итп.)? Или для того, чтобы получить общую информацию надо открыть 5-10-20 форм? Не понял, Вы хотите увидеть все это на одной форме? Боюсь, разговор становится беспредметным... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:17 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБВ отличие от перечисленных Вами систем, salesforce предоставляется по принципу SaaS, через Интернет. Я как-то с трудом могу себе представить, что в системе, в которой один инстанс обслуживает тысячи организаций, что-то может делаться через добавление новых таблиц.В свое время лично занимался введением с трой в IBS (DataFort) в 2001 году системы SupportWizard в качестве ASP сервиса. Не знаю чем это закончилось, но SuportWizard - можно предоставить как сервис. По поводу ITG - Mercury: тоже таботает через WEB интерфес. Предоставляет ли кто-нибудь его в аренду - не знаю. МТС, с которым мы работали - просто купил несколько лицензий для себя. Но сдавать его в аренду - тоже можно. Да сдавать в аренду - можно все что угодно... в DataFort был проект по сдаче в аренду даже Navision (2001 год). Люди просто заходили через терминальный сервис и работали. Так что - не аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:24 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБНе понял, Вы хотите увидеть все это на одной форме? Боюсь, разговор становится беспредметным...Человеку для принятия решения надо увидеть: Общую информацию по организации, список телефонов организации, список сотрудников организации, пара адресов. Типичный набор полей в любой CRM. Как он в вашей системе все это увидит? Вот надо ему позвонить главным бухгалтерам с организациями с просрочкой платежей и выяснить - дошли ли счета, правильный адрес ли стоял в письме, которое отправили по почте. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:30 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Другой вариант я видел у Paul Nielsen'a - попытка создать объектную БД на основе реляционной. Если не изменяет память, со следующими возможностями: -наследовать классы и задавать ассоциации между ними -добавлять атрибуты, при этом на автомате создаются или изменяются просмотры для селектов и процедуры для update со всеми полями класса Ссылку посял, но есть исходники с тестовым примером. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:30 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
BelyЧеловеку для принятия решения надо увидеть: Общую информацию по организации, список телефонов организации, список сотрудников организации, пара адресов. Типичный набор полей в любой CRM. Как он в вашей системе все это увидит? Вот надо ему позвонить главным бухгалтерам с организациями с просрочкой платежей и выяснить - дошли ли счета, правильный адрес ли стоял в письме, которое отправили по почте. Пример никудышний - это все должно быть в статических полях. Но нормально он все видит, не переживайте. Не на одной форме, но и не на 20. Проходит по 2-3 формам и все что ему надо видит. Собственно, это экспериментальный факт - напоминаю, речь идет о промышленной системе, находящейся в эксплуатации годами в разных организациях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:37 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
BelyЧеловеку для принятия решения надо увидеть: Общую информацию по организации, список телефонов организации, список сотрудников организации, пара адресов. Типичный набор полей в любой CRM. Как он в вашей системе все это увидит? Вот надо ему позвонить главным бухгалтерам с организациями с просрочкой платежей и выяснить - дошли ли счета, правильный адрес ли стоял в письме, которое отправили по почте. В Net'e можно реализовать свой ITypedList, в компонентах DevEpress пользователь сам может добавлять поля в формы и гриды.Попутно на основе метаинформации не кто не запрещает реализовать специально обученные билдеры. Сам присматриваюсь к этой проблеме.Подход shelsoft с разделением на статическую и динамическую части, считаю наиболее оптимальным.Каким образом хранить последнюю еще в раздумьях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 16:02 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
lightspeedВот ответ от бизнеса: "..меня не волнует что у тебя и как там работает. Мне нужен интерфейс позволяющий динамически изменять необходимые параметры объектов в соответствие с заданными критериями.."А не могли бы вы расшифровать сию загадочную фразу? Что значит "динамически изменять в соответствие с критериями"? Кто и в какой форме эти критерии задавать будет? Кто и как будет программировать логику использования использования "динамически измененных параметров"? АБВ нашей реализации можно свободно добавлять атрибуты, не трогая ни схему, ни формы. Спросите у пользователя, что он предпочтет - пожертвовать качеством интерфейса или избавиться от зависимости от программистов, от затрат на переделки и от задержек между возникновения необходимости в появлении нового атрибута и возможностью работы с ним.А какие возможности работы с атрибутом кроме "сохранить/посмотреть" возникают у пользователя? И кто программирует эти возможности? И нужен ли для этого EAV? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 16:15 |
|
|
start [/forum/topic.php?fid=33&msg=35499047&tid=1548708]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 334ms |
total: | 489ms |
0 / 0 |