powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Прошу совета. Одна голова хорошо - много голов лучше
25 сообщений из 38, страница 1 из 2
Прошу совета. Одна голова хорошо - много голов лучше
    #36971111
mrakk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть проекта :

- имеется БД в административном центре, в которую стекается
информация с подчиненных подразделений.

-Информация в подчиненных подразделениях так же хранится
в БД, расположенных локально на машинах пользователей.

- имеется клиентская программа, функционал которой заключается в поиске, отображении, редактировании, добавлении
информации в БД, как в центральную, так и в БД подчиненных подразделений

- выгрузка информации из БД подчиненных подразделений в центральную БД происходит в пакетном режиме, т.е. сетевое
соединение отсутствует

- среда реализации клиентской програмы C#, VS2008

Особенности и требования :

- Объем базы в центральной БД - миллионы записей, ежемесячно пополняется на 5-10 тысяч записей (это информация,
собранная со всех подчиненных подразделений)

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

- Уровень пользователей в подчиненных подразделениях оставляет желать много лучшего, поэтому при выборе СУБД для
подчиненных подразделениях необходимо учитывать следующие требования : простота установки, возможность запихать все
в инсталятор, неконфликтность с другим ПО, антивирусами и всем-всем, что может вызвать какие-то ненужные
вопросы у пользователя...

Вопросы, по которым хотелось бы услышать советы и комментарии :

1) по организации структуры БД. Есть мысль уйти от плоских таблиц, отражающих напрямую суть представления и
логической организации информации и реализовать гибкую структуру, которая позволит безболезненно
конфигурировать и добавлять поля хранения информации.

пример для лучшего понимания мысли :

плоская таблица :

(таблица ЧЕЛОВЕК)
-------------------------------------
Фамилия |Имя | Отчество | возраст
-------------------------------------
Иванов |Иван | Иванович | 25
Петров |Петр | Петрович | 15
Сидоров |Сидор | Сидорович | 29


Гибкая структура :

(таблица ПАРАМЕТР)
-----------------------------------
id | параметр | тип данных
-----------------------------------
1 | Фамилия | nvarchar
2 | Имя | nvarchar
3 | Отчество | nvarchar
4 | Возраст | int

(таблица ДАННЫЕ)
--------------------------------------------
id | id_param | nvarchar_value | int_value |
--------------------------------------------
25 | 1 | Иванов | |
26 | 2 | Иван | |
27 | 3 | иванович | |
28 | 4 | | 25 |
29 | 1 | Петров | |
30 | 2 | Петр | |
31 | 3 | Петрович | |
32 | 4 | | 15 |
33 | 1 | Сидоров | |
34 | 2 | Сидор | |
35 | 3 | Сидорович | |
36 | 4 | | 29 |


Вопрос - как такая организация БД отразится на быстродействии? Если отразиться, то насколько принципиально?

2) Какую СУБД выбрать для БД административного центра. Варианты MSSQL 2005 и Oracle
3) Какую СУБД выбрать для БД подчиненных подразделений. (XML, SQL Expres, Access, ваш вариант)
4) какой механизм выгрузки данных из подчиненных подразделений в административный центр посоветуете
(сериализованный DataSet, XML, сериализованная объектная модель, отражающая стуктуру БД, ваш вариант)
5) Какие механизмы посоветуете использовать при разработке клиентской части (Linq, ADO, ваш вариант)

Буду очень благодарен за высказанные мысли
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971145
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakk...
Вопрос - как такая организация БД отразится на быстродействии? Если отразиться, то насколько принципиально?
...


Есть у меня опыт работы с такими БД (Я надеюсь, что Вы упростили все-таки идею).
Смотря как будет использоваться БД. Если основное её назначение просто накапливать данные, то не очень сильно это на производительности скажется.
А вот доставать данные из такой БД это кошмар реальный. Т.е. если планируется, что кто-то в режиме реального времени будет эти данные просматривать, анализировать и т.п., то рассчитывайте на очень серьёзные, вплоть до полного провала, проблемы с производительностью.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971170
joker 79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысли вслух:

1. Так называемая "гибкая" будет иметь большой провал с внешними ключами

Кстати, а гибрида сделать не хочешь - т.е. все основа - в "плоских" таблицах, а редковстречающиеся (и новые) - в "гибких". Хотя опять же ключи нужно делать в "плоских" - тут никуда не денешься

Также может быть смысл отслеживать структуру и обновлять в автомате... но это череповато :)

2.)3.) Postgree ? (MSSQL) Толку разбрасываться на две субд ради низкого уровня пользователей не вижу... Гораздо проще сконфигурить установщик / написать свой / сделать скрипты которые сделают именно нужные действия.

4)5) Зависит от выбранной субд...
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971227
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joker 79Кстати, а гибрида сделать не хочешь - т.е. все основа - в "плоских" таблицах, а редковстречающиеся (и новые) - в "гибких". Хотя опять же ключи нужно делать в "плоских" - тут никуда не денешься


Гибрид сильно не поможет при селектах - все равно будет куча запросов к "аморфной" таблице. А если по этим дополнительным атрибутам еще и фильтры или что-то такое, то мы опять на том же месте в тот же час.
Хотя, конечно, можно организовать и как-то по-другому. Типа основные всегда выбираются, а остальное в индивидуальном порядке по требованию.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971250
mrakk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня опыт работы с такими БД (Я надеюсь, что Вы упростили все-таки идею).


Вы про таблицу в примере?

Смотря как будет использоваться БД. Если основное её назначение просто накапливать данные, то не очень сильно это на производительности скажется.


В том и дело, что с базой будут работать - доставать информацию, делать отчеты...

А вот доставать данные из такой БД это кошмар реальный. Т.е. если планируется, что кто-то в режиме реального времени будет эти данные просматривать, анализировать и т.п., то рассчитывайте на очень серьёзные, вплоть до полного провала, проблемы с производительностью.

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

PS опишу словами структуру базы - есть сущность как просто "поступившая информация" (одна таблица), она обладает своими постоянными реквизитами и уже к этой "поступевшей информации" привязано множество таблиц, уточняющих это информацию. И вот как раз это количество таблиц и их поля, могут меняться
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971278
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakk,

Причины... Так в двух словах и не опишу. Я, скорее, просто из опыта. Это увидеть надо.

Давайте так, шажками, - вот у Вас есть эта полиморфная таблица. Вам надо из неё сделать select ну пусть, например, людей, у которых возраст находится в каком-то диапазоне. Как SQL будет выглядеть примерно?
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971301
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополню на всякий случай. Результат этого селекта еще надо в каком-то приличном види, наверное, клиенту вернуть - в виде рекордсета что ли, например.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971307
ДжекНепотрошитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakkПо идее там будет одна здоровеннейшая таблица на миллионы записей (грубо говоря - одну информационную сущность умножить на количество полей в плоских таблицах при том что информационных сущностей уже миллион с лишним). Но с другой стороны в этой таблице будет всего 4 поля по которым будет осуществляться поиск (дата/время, строка, число, указатель на справочники). и если эти всего четыре поля будут индексироваться, то может не так все плохо? или я все-таки ошибаюсь?

Ошибаешься, это будет очень медленно. Но давай отставим в сторону производительность. Давай подумаем над целесообразностью.
1. Что ты этим хочешь добиться? Упростить себе автоматическую настройку БД? А чем это проще, скажем, вызова alter table, когда нужно?
2. А теперь подумай, как по этому строить запросы на выборку данных?
3. А сложные запросы, с объединением нескольких сущностей?
Ты изобретаешь велосипед, через такую идею многие проходили. И все уже убедились, что она нежизнеспособна.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971317
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекНепотрошитель2. А теперь подумай, как по этому строить запросы на выборку данных?
3. А сложные запросы, с объединением нескольких сущностей?

Я первый, я первый - телепатия, понимашь.

ДжекНепотрошительТы изобретаешь велосипед, через такую идею многие проходили. И все уже убедились, что она нежизнеспособна.

Ну я бы не сказал, что она совсем нежизнеспособна, но круг задач, для которых эта идея (хотя и не в таком брутальном виде) подходит, очень узок.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971444
mrakk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hauermrakk,

Причины... Так в двух словах и не опишу. Я, скорее, просто из опыта. Это увидеть надо.

Давайте так, шажками, - вот у Вас есть эта полиморфная таблица. Вам надо из неё сделать select ну пусть, например, людей, у которых возраст находится в каком-то диапазоне. Как SQL будет выглядеть примерно?

шаг 1:
SELECT id_info FROM data_table WHERE int_data ляля AND id_param = 99

где
id_info - идентификатор, по которому объеденена вся единица "поступившей информации"
99 - идентификатор параметра "возраст"

список id_info c в datatable или еще в чем-нибудь поступает в клиент

шаг 2:

в клиенте тыкаем по нужной информации и получаем уже все что по ней есть :

SELECT * from data_table WHERE id_info = ляляля

-----

очень грубо говоря - я так себе примерно представлял... пока вы меня не расстроили )))))
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971771
bananarama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекНепотрошитель
Ты изобретаешь велосипед, через такую идею многие проходили. И все уже убедились, что она нежизнеспособна.

вот ту не могу не согласиться с предыдущим оратором. Универсиализация она зачастую хороша в "лабораторных" условиях.

но если очень хочется иметь "атрибуты про запас", то на мой взгляд в лучше добавить в плоские таблицы 10..20 наборов из трех полей (char, int, double) и разбираться с ними логикой в бизнес-слое.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971818
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakkшаг 1:
SELECT id_info FROM data_table WHERE int_data ляля AND id_param = 99

где
id_info - идентификатор, по которому объеденена вся единица "поступившей информации"
99 - идентификатор параметра "возраст"

список id_info c в datatable или еще в чем-нибудь поступает в клиент

шаг 2:

в клиенте тыкаем по нужной информации и получаем уже все что по ней есть :

SELECT * from data_table WHERE id_info = ляляля

-----

очень грубо говоря - я так себе примерно представлял... пока вы меня не расстроили )))))

Не, давайте чуть поточнее - вот жирный текст, нужная информация это id? Я как-то представлял себе пользовательский интерфейс это как список с хотя бы минимальным набором полей типа "ФИО", "дата рождения",... Даже, возможно, с сортировкой по этим полям.

И давайте сразу дальше вопрос (следующий шажок) - у Вас (логически) ведь не одна сущность? И они, наверное, между собой связи имеют. Вот, например - адрес человека, ну или там место работы (отдел). Эти связи Вы как селектировать планируете?
И сразу еще один вопрос - а что мы планируем делать с ссылочной целостностью?
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971871
Фотография roden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakk Вопросы, по которым хотелось бы услышать советы и комментарии :

1) по организации структуры БД. Есть мысль уйти от плоских таблиц, отражающих напрямую суть представления и
логической организации информации и реализовать гибкую структуру, которая позволит безболезненно
конфигурировать и добавлять поля хранения информации.


Вопрос - как такая организация БД отразится на быстродействии? Если отразиться, то насколько принципиально?

2) Какую СУБД выбрать для БД административного центра. Варианты MSSQL 2005 и Oracle
3) Какую СУБД выбрать для БД подчиненных подразделений. (XML, SQL Expres, Access, ваш вариант)
4) какой механизм выгрузки данных из подчиненных подразделений в административный центр посоветуете
(сериализованный DataSet, XML, сериализованная объектная модель, отражающая стуктуру БД, ваш вариант)
5) Какие механизмы посоветуете использовать при разработке клиентской части (Linq, ADO, ваш вариант)

Буду очень благодарен за высказанные мысли
1. Смотря что Вы делать дальше планируете. На производительности-то оно конечно скажется, вот только насколько ...
2. ИМХО Oracle (чисто не очень я к MS отношусь, ни к чему себя искусствено ограничивать)
3. Если в подчиненных подразделениях вся работа будет производиться на одной машине - ИМХО и Firefox пойдет.
Если клиент серверная архитектура все-таки планируется - PostgreSQL, ЛИНТЕР
4. В первоначальном видении и XML замечательный вариант
5. Пожалуй это зависит исключительно от разработчиков.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971909
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rodenmrakk3) Какую СУБД выбрать для БД подчиненных подразделений. (XML, SQL Expres, Access, ваш вариант)

3. Если в подчиненных подразделениях вся работа будет производиться на одной машине - ИМХО и Firefox пойдет.

а какое отношение Firefox имеет к СУБД?
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971970
Фотография roden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmrodenпропущено...

3. Если в подчиненных подразделениях вся работа будет производиться на одной машине - ИМХО и Firefox пойдет.

а какое отношение Firefox имеет к СУБД?
Куда смотрю, то и пишу :D
Извиняюсь!
rodenFirefox

Читать: Firebird
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36971981
ДжекНепотрошитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmrodenпропущено...

3. Если в подчиненных подразделениях вся работа будет производиться на одной машине - ИМХО и Firefox пойдет.

а какое отношение Firefox имеет к СУБД?

Это СУБД такая есть. Открой броузер Mozilla Firebird и зайди на сайт firefoxsql.org, посмотри
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36972783
mrakk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HauerНе, давайте чуть поточнее - вот жирный текст, нужная информация это id? Я как-то представлял себе пользовательский интерфейс это как список с хотя бы минимальным набором полей типа "ФИО", "дата рождения",... Даже, возможно, с сортировкой по этим полям.


Ну да... как-то я сумбурно описал

Если допустить, что главная (объединяющая другие) сущность это "человек" с атрибутами типа ФИО, год рождения, а все остальные сущности к ней привязаны - сведения о месте работы, сведения о домашнем адресе и т.д, то :

1) по атрибутам, по которым осуществляется поиск (а осуществляться он должен по любым из них) селектируем список идентификаторов главной сущности

2) селектируем уже по этим идентификаторам список атрибутов, необходимых для отображения в клиенте (для каждого из полученных идентификаторов в п.1)

3) по запросу из клиента - селектируем все остальные атрибуты всех сущностей, имеющиеся в нашей большей таблице для одного, выбранного в клиенте, идентификатора

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

И давайте сразу дальше вопрос (следующий шажок) - у Вас (логически) ведь не одна сущность? И они, наверное, между собой связи имеют. Вот, например - адрес человека, ну или там место работы (отдел). Эти связи Вы как селектировать планируете?
И сразу еще один вопрос - а что мы планируем делать с ссылочной целостностью?[/quot]

наверное, все-таки убедили ))) и спасли от горькой ошибки ) спасибо
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36972851
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakkнаверное, все-таки убедили ))) и спасли от горькой ошибки ) спасибо


Не за что. Для меня радость, если Вам есть польза от моих постов:-)))
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36972952
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
undefinedпочему хоть это говно всплывает????

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

Во где есть разгуляться.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36972955
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrakkнаверное, все-таки убедили ))) и спасли от горькой ошибки ) спасибо
Во, блин опять из кеша что то грохнуло!!
Ошибки никакой нет, сложновато просто.И ссылочная целосность там есть и все остальное.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36973058
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Смотри задачу

Интересно. Знаете, как решать?
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36973060
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> И ссылочная целосность там есть и все остальное.

Поправка: может появиться ссылочная целостность. ;)

Сахават, с правилами хранения правил за выходные ничего не придумалось?
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36973061
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

Пытаемся, что то решаем, что то в планах.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36973068
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> И ссылочная целосность там есть и все остальное.

Поправка: может появиться ссылочная целостность. ;)

Сахават, с правилами хранения правил за выходные ничего не придумалось?

Делаю. Прямо счас.
Ну у меня получается просто. Пока что :)

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

При изменении совйств входящих в "Управляющего сбросом параметра" запускается нужный генератор и возвращается значение для свойства.

Схема такова.
Генератор( ИД, Наименование,Формула, Начальное значение, Шаг)
ЗначениеГенератора(ИД, ГенераторИД, Управляющий параметр, Счетчик, Значение)
По изменении "Управляющий параметр" "Счетчик" сбрасывается.
Из значений "Управляющий параметр" и "Счетчик" получаем по "Формуле" "Значение" и возвращаем.
...
Рейтинг: 0 / 0
Прошу совета. Одна голова хорошо - много голов лучше
    #36973070
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это если работать из ВИПРОС
А если снаружи то надо будеть сгенерировать такие же триггеры, ну счас меня это мало волнует
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Прошу совета. Одна голова хорошо - много голов лучше
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]