|
|
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
При разработке нового проекта возникла дилема между двумя концепциями проектирования: проект строится на oracle+apache+php Концепции: 1. Данные и логика в базе, php только для вывода html. Переменные авторизыции при этом в контексте. В представлениях на основе контекста определям кому из пользователей что показывать. PHP работает только с представлениями. плюсы: + админу БД легче живется, вся логика под рукой, можно исправить любой запрос, подправив представление. + экономим время на построении плана запроса за счет использования представлений минусы: - разработчику надо парится с переносом всей логики в БД, никакие "костыли" и "заплатки" практически не возможны - на каждый запрос придется писать представление и легко запутаться в их большом количестве - возможное не правильно использование представлений: когда нужна только одна таблица, а берется представление из нескольких таблиц. 2. В БД данные (нормализованные, со всеми возможными FK) и часть логики, основная логика в PHP плюсы: + разработка логики проще + для исправлении логики часто нужно исправить только код в php + не используются лишние соединения таблиц минусы: - возможна куча заплаток и из-за этого трудность разбора логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 15:32 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyleПри разработке нового проекта возникла дилема между двумя концепциями проектирования: проект строится на oracle+apache+php Концепции: 1) разработчику надо парится с переносом всей логики в БД, никакие "костыли" и "заплатки" практически не возможны 2) - на каждый запрос придется писать представление и легко запутаться в их большом количестве 3) - возможное не правильно использование представлений: когда нужна только одна таблица, а берется представление из нескольких таблиц. 1) попарится один раз, ниче с ним не случится. 2) В реальном мире как-то чаще оперируют большим кол-вом ХП,а не View, не знаю, чем обусловлен ваш выбор. Большое кол-во - это сколько для вас? 3) Этот пункт вообще не понятен... Неправильно можно что-то использовать, только если руки кривые! Совет: как можно больше логики на сервер. Централизация рулит, даже если это веба. Другое дело, что не стоит делать на сервере то, для чего он не предназначен(прим.:сложные мат. вычисления)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 16:28 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
2 Megabyte : 1) париться придется всегда, т.к. проект модульный и постоянно будет дорабатываться. 2) будет около 400 таблиц, представлений думаю будет не менее 1000. 3) не правильно это когда лень заглядывать в код вьюшки, чтоб проверить на наличие не нужных таблиц. например во вьюшке соединение 4 таблиц - например выгребается инфо клиента фио, адрес, место работы, телефон. в конкретном случае нужно только фио и телефон, в итоге если пользоваться вьюшкой, то идет лишнее соединение 2-х таблиц. по совету: ну ведь логика все равно будет на сервере, либо в PHP (как мне кажется легче), либо в БД. Ну сложные мат вычисления врядли понадобятся, а вот работа со строками - форматирование регулярками, поиск подстрок и т.п. часто. Вообще интересует опыт использования 1-го метода, когда вся-вся логика в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2010, 15:54 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
>> будет около 400 таблиц, представлений думаю будет не менее 1000 Странная пропорция. Какая предметная область ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2010, 15:59 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyle2 Megabyte : 1) париться придется всегда, т.к. проект модульный и постоянно будет дорабатываться. 2) будет около 400 таблиц, представлений думаю будет не менее 1000. 3) не правильно это когда лень заглядывать в код вьюшки, чтоб проверить на наличие не нужных таблиц. например во вьюшке соединение 4 таблиц - например выгребается инфо клиента фио, адрес, место работы, телефон. в конкретном случае нужно только фио и телефон, в итоге если пользоваться вьюшкой, то идет лишнее соединение 2-х таблиц. по совету: ну ведь логика все равно будет на сервере, либо в PHP (как мне кажется легче), либо в БД. Ну сложные мат вычисления врядли понадобятся, а вот работа со строками - форматирование регулярками, поиск подстрок и т.п. часто. 4) Вообще интересует опыт использования 1-го метода, когда вся-вся логика в БД. 1) Заранее проектируйте так, чтобы можно было развивать структуру БД. От нее все приложение будет плясать. 2) П-Л>> будет около 400 таблиц, представлений думаю будет не менее 1000 Странная пропорция. Какая предметная область ? Согласен. Не проще ли будет ХП с параметрами, ну или даже View с разным условием WHERE... 3) Конечно важно не тащить лишнюю инфу на клиента, но не надо делать из этого идеологию. Проектируйте правильно, разбивайте на сущности. 4) Так делают все нормальные люди. Ибо одна и та же БД, в идеале, может использоваться для разных приложений и по разному назначению. з.ы. главное, если плохо в этом разбираетесь, почитайте про грамотное проектирование БД, нормализацию и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2010, 18:13 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
Предметная область - Банк. Приложение - глобальный CRM. Ну с нормализацией-то все понятно - она должна быть 100%, и сущьности тоже должны быть. Вопрос в вследующем, стоит ли всю-всю логику перетаскивать в БД. Т.е. стоит ли вводить идеологию: все работы в БД и жесткие правила на запрет прямого доступа к таблицам, а только через представления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 15:39 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyleПредметная область - Банк. Приложение - глобальный CRM. Ну с нормализацией-то все понятно - она должна быть 100%, и сущьности тоже должны быть. Вопрос в вследующем, стоит ли всю-всю логику перетаскивать в БД. Т.е. стоит ли вводить идеологию: все работы в БД и жесткие правила на запрет прямого доступа к таблицам, а только через представления? Думаю что стоит не забудьте что с 01.01.2011 вступает в силу федеральный закон о защите персональных данных, придется писать в базу кто когда к каким данным получал доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 07:58 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
sorry за офтоп Dinamo, Можете подсказать в какой статье в законе это прописано, а то прочитал этот закон и почти ничего не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 09:11 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyleПредметная область - Банк. Приложение - глобальный CRM. Ну с нормализацией-то все понятно - она должна быть 100%, и сущьности тоже должны быть. Вопрос в вследующем, стоит ли всю-всю логику перетаскивать в БД. Т.е. стоит ли вводить идеологию: все работы в БД и жесткие правила на запрет прямого доступа к таблицам, а только через представления? К представлениям тоже закрыть доступ. Все только через ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 10:45 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
Cat2К представлениям тоже закрыть доступ. Все только через ХП +1 золотые слова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 10:50 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
arvtsorry за офтоп Dinamo, Можете подсказать в какой статье в законе это прописано, а то прочитал этот закон и почти ничего не понял Конечно в явном виде в законе этого нет. Но это логика развития системы в которой обеспечивается должный уровень контроля за персональными данным. Например обнаружится что произошла утечка персональных данных некого лица. Он пишет жалобу в контролирующий орган, что мол вот я этим давал свои данные, а они их не сохранили. К вам приходит проверка. Вы проводите разбирательство, анализируете Ваши логи и выясняете кто имел доступ к этой информации и принимаете меры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 12:57 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
По поводу закана я думаю, что контролеры не будут разбираться кто именно из сотрудников имел доступ, а накажут всю организацию. А сотрудниками будет заниматься внутренняя служба безопасности, и на её головняки мне пофигю. Но в люом случае я с вероятностью в 70% могу сказать кто месяц назад какие данные получил по логам апача и набору атрибутов у пользователя в базе. Если срок больше месяца, то могут быть проблемы с этим. В тему. Что такое ХП? Процедуры? А зачем? Представлений вполне достаточно что даже разным пользователям выдавать разные данные на основе, например, содержимого контекста (если говорить об Oracle). И чем все же обосновано не работать с таблицами напрямую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 17:36 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyle, обосновано как минимум разграничением прав доступа, реализацией логики в БД (против чего, я так понял, вы сильно выступаете) и прочими прелестями. почитайте форум. а по поводу сабжа - моё ИМХО - обязательно логика на БД. Обязательно. банк и ЦРМ. не только Ваше php будет работать с этой системой. скорее всего, если это внедрят, то понадобиться "отдавать" данные другим внутренним приложениям. и как вы это будете делать? через php? БД не есть только хранилище. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 23:44 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
наутилус, Спасибо, убедительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 17:21 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
1. Более 3 000 процедур/функций, порядка 1000 триггеров ни одного представления. 2. Все пользователи (включая администраторов) работают под "общим пользователем" обладающим правами на выполнение минимально необходимого набора процедур/функций. 3. Собственная система контроля доступа (пользователи, группы, наследование... Novell + Win), с возможностью контролировать доступ к пересечениям строка - столбец. И т.д. Вся логика на сервере, в основном все клиенты - тонкие. В промышленной эксплуатации несколько лет. Все довольны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 10:30 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
А насколько сложная логика-то? Есть ли опасность упереться в ограничения одного сервера БД: количество одновременных сессий со свими сессионными кэшами, перерасход памяти сложными обработками данных и т.п. и т.д.? Если есть, стоит подумать о выносе логики на аппсервер (этот самый апач+пхп) и подумать о возможном будущем развертывании второго, третьего и далее. Иначе разницы почти никакой нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 20:35 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
Kew, я тоже думаю, что апач+php логику разруливает быстрее... а вот ораклисты со мной не согласны, да и кластеры тоже и для БД можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 09:09 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyle, это всё сильно зависит от того какая логика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 09:48 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
раз Оракал - первый вариант =) думаю ясно почему =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 09:56 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyleKew, я тоже думаю, что апач+php логику разруливает быстрее... а вот ораклисты со мной не согласны, да и кластеры тоже и для БД можно сделать. Если задача (алгоритм, план запроса/транзакции) принципиально не параллелится, то и кластер этот будет как собаке пятая нога -- только пустатя трата времени на согласование работы нод. И сколько будет стоить рак, эти ораклисты упоминали? :) Хотя, выразительные средства языков оракла и возможности интеграции с внешним кодом позволяют сделать (в практическом смысле) все, так что ораклисты в части возможности реализации логики не сильно ошибаются. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 22:58 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
Мои выводы: 100% ответа нет, но большинство доводов в пользу того, что б реализовывать все в БД, а веб серевер только для выдачи данных. К тому же привели положительные примеры. Так и буду делать... хотя думаю все равно появятся "костыли/заплатки" на PHP, если будет что-то проблематично реализовывать по логике в БД :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2010, 16:08 |
|
||
|
Сравнение концепций проектирования
|
|||
|---|---|---|---|
|
#18+
MaxiStyle Так и буду делать... хотя думаю все равно появятся "костыли/заплатки" на PHP, если будет что-то проблематично реализовывать по логике в БД :) Я полагаю, что они могут появиться только от недостаточных знаний разработчика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 11:15 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36602082&tid=1542702]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
177ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 484ms |

| 0 / 0 |
