|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Здравствуйте. Подскажите как лучше организовать запросы клиента (на C#) к бд (postgresql): написать хранимые процедуры и вызывать их из клиента или зашивать sql запросы в сам клиент(этого делать не хочется) или есть ещё какие-то способы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2012, 13:02 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Использовать ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2012, 13:31 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
А производительность сильно падает по сравнению с хп? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2012, 18:45 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
KorbanzА производительность сильно падает по сравнению с хп? Очень сильно падает производительность. ХП выполняются по 1 сек., а уже через ORM время увеличивается до 10 сек. Ну подумаешь, в 10 раз медленнее. Ничего страшного, зато тренд. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2012, 19:16 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Не все можно сделать с клиента хорошо. Например, транзакции. Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса. С хранимыми процедурами проще сделать разграничение прав пользователей ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 00:00 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Не все можно сделать с клиента хорошо. Например, транзакции."Волков бояться - в лес не ходить" (с) Cat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.Планы динамических запросов больше не кэшируются? На свалку такую СУБД... Cat2С хранимыми процедурами проще сделать разграничение прав пользователейС веб-сервисами проще сделать разграничение прав пользователей? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 07:29 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУИспользовать ORM.LINQ2SQL! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 07:31 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К"Волков бояться - в лес не ходить" (с) Но все желательно иметь при себе ружье. Других аргументов нет? Алексей КПланы динамических запросов больше не кэшируются? На свалку такую СУБД... Кэшируются, но гарантии нет Алексей КС веб-сервисами проще сделать разграничение прав пользователей? На веб-сервисах свет клином сошелся? Да и с ними проще. Даются права на одну хранимую процедуру, а не на 10 таблиц в соединении. Гарантия, что клиент может сделать только то, что разрешено для пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 07:59 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КМСУИспользовать ORM.LINQ2SQL! Чем это отличается от написания текстов запросов в теле программы? На сервер все равно уходит текст запроса, а не сама конструкция. Еще и время тратится на преобразование LINQ2SQL в текст ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 08:01 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Korbanz, wcf + хранимые процедуры. почему wcf: 1. Можешь прикрутить SSL для клиент/серверного обмена 2. Можно разворачивать на IIS и юзать кэширование для сложных/долгих запросов. 3. Не нужно никого клиента баз данных на самом клиенте. 3. Ну и стандартные плюсы трехзвенки. почему хранимые процедуры: 1. В опу запуск SQL с клиента рассадник sql-инъекций. 2. Статичный SQL запрос проще/лучше оптимизировать. 3. При обновлении структуры базы ты сразу же обновляешь запросы, а не выискиваешь эти запросы в коде клиента - причём некоторые запросы вылазят не сразу, а со временем. 4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 08:03 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Алексей Кпропущено... LINQ2SQL! Чем это отличается от написания текстов запросов в теле программы?Строгая типизация + LINQ удобнее чем SQL. Например: 1. Ассоциации удобнее join-ов. 2. let удобнее вложенных запросов. Cat2На сервер все равно уходит текст запроса, а не сама конструкция.Да. Cat2Еще и время тратится на преобразование LINQ2SQL в текстВ нормальном LINQ-провайдере должно быть кэширование. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 08:10 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Алексей К"Волков бояться - в лес не ходить" (с) Но все желательно иметь при себе ружье. Других аргументов нет?Есть. Удобство TransactionScope (или самописного аналога, если боимся распределённых транзакций). Cat2Алексей КПланы динамических запросов больше не кэшируются? На свалку такую СУБД... Кэшируются, но гарантии нетКаких гарантий нет? Cat2Алексей КС веб-сервисами проще сделать разграничение прав пользователей? На веб-сервисах свет клином сошелся?Да. Cat2Да и с ними проще. Даются права на одну хранимую процедуру, а не на 10 таблиц в соединении. Гарантия, что клиент может сделать только то, что разрешено для пользователей.Даются права на метод сервиса, "а не на 10 таблиц в соединении"? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 08:19 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычwcf + хранимые процедуры. ... 4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.Вроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 08:25 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КВроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности... среднее звено оно к базе ходит под пользователем - и именно безопасность от и для данного пользователя я имел ввиду. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 09:55 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычАлексей КВроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности...среднее звено оно к базе ходит под пользователем - и именно безопасность от и для данного пользователя я имел ввиду.Ну я понимаю. Тем самым приносится в жертву общий пул соединений к БД для разных пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 10:05 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К, нет - пул есть, просто все пользователи работают под одним пользователем БД - не требуется создавать каждого нового пользователя как пользователя в БД, назначать ему права и прочее, однако требуется создание внутренней организации доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 10:33 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычАлексей К, нет - пул есть, просто все пользователи работают под одним пользователем БД - не требуется создавать каждого нового пользователя как пользователя в БД, назначать ему права и прочее, однако требуется создание внутренней организации доступа.Как-то это противоречит предыдущему высказыванию. :-) фиганыч4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 10:40 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К, я, в первую очередь, рассматриваю защиту БД от клиентов, а здесь проще как раз вот так - один пользователь для разработчика/ов с ограниченными правами, другой для пользователей с ещё больше ограниченными правами - т.е. в идеале права на запуск процедур. Вместо создания пользователя БД для каждого пользователя системы и назначением ему соответствующих прав. Это накладывает некоторые усложнения для организации внутренней системы доступа, однако надёжно отгораживает системы друг от друга, к тому же собственную систему доступа так или иначе рисует каждый разработчик, да и в некоторых БД лицензирование идёт по количеству пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:37 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Самая вменяемая масштабируемая архитектура безопасности - роли с правами хранятся в таблицах. Пользователи - либо так же табличные, либо виндовые. Виндовые - проще, они уже есть в AD, остается прицепить к ним роли с правами. Как частный вариант - роли выражаются в группах AD, но имеем головную боль в виде сисадминов, прибитых к конкретному апп, а это не совсем правильно. Мухи отдельно, котлеты отдельно. Сисадмины отдельно, апп админы отдельно. Все потуги реализовать апп секурити средствами конкретной БД - дикое немасштабируемое зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:45 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КМСУИспользовать ORM.LINQ2SQL! Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:47 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычАлексей К, я, в первую очередь, рассматриваю защиту БД от клиентов, а здесь проще как раз вот так - один пользователь для разработчика/ов с ограниченными правами, другой для пользователей с ещё больше ограниченными правами - т.е. в идеале права на запуск процедур.В идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:50 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... LINQ2SQL! Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.Нука тиха там! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:51 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КВ идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры. В идеале пользователи системы вообще не должны знать ничего о БД - тем более где она находится - они максимум должны знать о определённом порте на среднем звене, к которому ходят с виндовой аутентификацией и через SSL ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:53 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.Нука тиха там! Вот только не нужно опять зудеть про чистый контролируемый гавнокод :) Все занимаются своими делами - архитектор спланировал хранилище с конкретной схемой, дб девелопер наклепал табличек с вьюхами и хп (если сильно надо), кодирующая шарповая monkey подтянула схему в контекст и команда начала пилить морду с логикой. Всё епта. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:56 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычАлексей КВ идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры. В идеале пользователи системы вообще не должны знать ничего о БД - тем более где она находится - они максимум должны знать о определённом порте на среднем звене, к которому ходят с виндовой аутентификацией и через SSL Правильно, только так и никак иначе. Вырисовываются явные плюсы веба - он по дефолту трехзвенен. А толстый юай трехзвенить дорого и долго. Но надо, если на то пошло. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 11:58 |
|
|
start [/forum/search_topic.php?author=sergey_gavrilov&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
203ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 1797ms |
total: | 2124ms |
0 / 0 |