Kashif Ahmad Khan Ответов: 3

Является ли хранимая процедура лучшим способом использования в большой базе данных?


Является ли хранимая процедура лучшим способом использования в большой базе данных или простой процедурой, используемой в приложении/кодировании (запросы в кодировании)?

Какая процедура лучше всего подходит для вставки, извлечения, удаления, обновления записей (операций творога) для большой базы данных с использованием C# (настольного приложения).

Извините за глупый вопрос, я новичок и учусь именно поэтому растерянно.

Что я уже пробовал:

Я использую простую процедуру (запросы в кодировании)

3 Ответов

Рейтинг:
7

RickZeeland

Это хороший вопрос и повод для жарких дискуссий.
Лично я предпочитаю держать весь код вместе (C# и код базы данных), но в больших базах данных могут быть (perfomance) причины выбрать хранимые процедуры.
У нас были проблемы с SQL Server производительность при росте размера базы данных и количества запросов росла, но мы решили эту проблему, переключившись на PostgreSQL и не использовал хранимые процедуры.
Здесь проявилось преимущество нашего DAL (Data Access Layer): было относительно легко преобразовать код из SQL Server в PostgreSQL, так как весь код был в одном месте.
Если вы заинтересованы в преобразовании базы данных в PostgreSQL, см.: Преобразование базы данных SQL Server в PostgreSQL[^]

Для людей, которые отрицают это, не оставляя никаких комментариев, мой вопрос таков: я действительно хотел бы знать, почему это происходит только потому, что вы убеждены, что SQL Server является лучшим ?
Вы когда-нибудь пробовали PostgreSQL ? если да, то каковы ваши аргументы против этого ?


CHill60

Я дал вам 4 ... не только для того, чтобы противостоять нисходящим-без-комментариев, но и потому, что вы неоднократно подчеркивали, что в жизни есть нечто большее, чем MS Sql Server. Ты заставляешь людей думать!
Было бы 5* ...но я наркоман sql server; -)

RickZeeland

Это дух ;) и теперь дух вышел из бутылки, я тоже был наркоманом SQL Server в прошлом, признаюсь !

Рейтинг:
23

OriginalGriff

Это не обязательно "просто" большие базы данных, хранимые процедуры имеют преимущества и в небольших.
Вы можете посмотреть здесь: Преимущества и недостатки использования хранимых процедур для обработки данных[^]- это будет зависеть от того, что делает процедура, как часто она это делает, и от множества других факторов!

Лично я ими пользуюсь когда это уместно - что означает, когда я делаю что - то сложное, а не простой оператор SELECT или INSERT-потому что они делают код более читаемым и обслуживаемым, а также иногда дают вам гибкость для изменения схемы без изменения приложений, обращающихся к БД.


Рейтинг:
18

Wendelius

Я бы не сказал, что размер базы данных должен быть движущей силой для использования или не использования процедур. В конце концов, база данных, которую кто-то считает большой, может быть маленькой для другого.

К факторам, влияющим на использование процедур, относятся:


  • Исключите поездки туда и обратно, с помощью процедур вы сможете устранить необходимость передачи данных туда и обратно из базы данных. Это означает, что одна единица работы может работать лучше, если вся операция выполняется на стороне базы данных
  • Безопасность, с помощью процедур вы можете запретить пользователю (или приложению) видеть или изменять базовые таблицы, разрешающие только контролируемый маршрут доступа, процедура
  • Ремонтопригодность, думайте о процедуре как об интерфейсе. Например вы можете изменить базовую структуру данных и при этом предоставить вызывающей стороне тот же результат
  • Динамические запросы, создание и обработка динамических запросов, как правило, более неудобны и сложны внутри процедур
  • Разговор пользователя, разговор пользователя не допускается внутри транзакции, поэтому это необходимо учитывать при проектировании архитектуры
  • Несколько вызывающих абонентов, если ваша среда имеет несколько приложений, может быть проще реализовать логику внутри процедуры и вызвать ее из нескольких мест, чем реализовать логику в нескольких местах на стороне вызывающего абонента. Это может произойти, например, в средах разработки, использующих несколько языков

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