Что такое лучшая гибкость и почему? Использование представлений БД, таблиц БД, сохраненных процедур и объекты в таблицах - PullRequest
4 голосов
/ 12 апреля 2010

Я хочу знать, как лучше всего использовать представления базы данных, таблицы базы данных, хранимые процедуры. и объекты в таблицах ... Что из этого является более гибким и почему, вы можете объяснить?

Ответы [ 2 ]

1 голос
/ 12 апреля 2010

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

В настоящее время многие программисты используют слои доступа к данным ( DAL ) для такого рода вещей. Многие DAL позволяют указывать представления и хранимые процедуры для вызова. Но вы также можете выполнять запросы к таблицам напрямую, без необходимости хранимых процедур или представлений.

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

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

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

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

0 голосов
/ 12 апреля 2010

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

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

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

То же самое для представлений и триггеров.

Например, в среде Java JPA работает намного лучше 90 +% времени:

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

... и список можно продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...