Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бизнес логика в хранимых процедурах vs. бизнес логика через классы 
:(
    Опции темы
 
среднее бизнес-приложение, например crm
Лучше делать через хранимые процедуры [ 2 ]  [12.50%]
Лучше реализовать через классы [ 8 ]  [50.00%]
ХЗ [ 6 ]  [37.50%]
Всего проголосовавших: 16
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Vex
Дата 18.11.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 2
Всего: 88



итак, какой подход лучше?


--------------------
Слава Україні.
PM   Вверх
gcc
Дата 19.11.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17




на python и perl можно писать прямо в процедуре в PgSQL

я выбрал п.2

ЗЫ еще есть ORM и абстрации разные для ЯП

Это сообщение отредактировал(а) gcc - 19.11.2009, 10:37
PM WWW ICQ Skype GTalk Jabber   Вверх
unicuum
  Дата 19.11.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



fuck my brain smile какие вы тут все умные
Цитата
Бизнес-логика — в разработке информационных систем — совокупность правил, принципов, зависимостей поведения объектов предметной области системы. Иначе можно сказать, что Бизнес-логика — это реализация правил и ограничений автоматизируемых операций. Является синонимом термина «Логика предметной области» (Domain Logic).


Добавлено через 9 минут и 21 секунду
В общем, если возник такой вопрос, значит база держит хранимые процедуры. Ещё было бы хорошо, чтобы она триггеры держала и далее по списку. Если база клиент-серверная, типа постгреса и т.д, то лучше на неё спихивать обязанности, так как это обеспечит максимальное быстродействие за счёт оптимизации двига, который самим хpен сделаешь классами и минимальный объём данных между вашим клиентом и сервером базы. С другой стороны то что можно обработать клиентом в классах программы, им и должно быть обработано. Идея же проста, спихнуть обязанности какие только можно на базу, а какие выгоднее классами, делать ими.


--------------------
user posted image
обычный день на винграде
PM   Вверх
Bulat
Дата 19.11.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Есть такое мнение - что транзакция используемая в коде программы должна быть ровно такая(по времени, по количеству вмещаемого в себя кода и т.п.),  какая требуется бизнес-логикой. smile

Т.е. тут нет однозначного ответа. Разве что я отдаю предпочтение классам. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
unicuum
  Дата 19.11.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(Bulat @  19.11.2009,  13:10 Найти цитируемый пост)
Т.е. тут нет однозначного ответа. Разве что я отдаю предпочтение классам. 

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


--------------------
user posted image
обычный день на винграде
PM   Вверх
gcc
Дата 19.11.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



в одном проекте процедуры были и в PL/pgSQL и в PL/Perl (там свои классы можно вызывать)

но некоторые в PL/pgSQL были наверное для быстродействия 

без процедур было бы сложно наверное, в одних процедуре/триггере запросов было где-то 30-70 (я их не писал, они уже были написаные)

вот можно свои классы вызывать  smile 

Код


CREATE FUNCTION ca (bigint, character varying, character varying, character varying, bigint) RETURNS character varying
    AS $_X$

use strict;
use POSIX;
use Sys::Hostname;
use MIME::Lite;
use MIME::QuotedPrint;

my ($user,$from,$to,$subj,$tmpl)=@_;

my $key=join'',map $$_[rand@$_],([0..9,'a'..'f'])x32;

my $url="http://www..ru/с/$key/";

my $date = POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime);
my $hostname = hostname;

my $parts=spi_exec_query(<<SQL);
    select  template, subject, type
      from  email_templates
     where  id = $tmpl
SQL

my $_tmpl = $parts->{rows}[0]{template};
my $_subj = $parts->{rows}[0]{subject};

for($_tmpl,$_subj){
    s/__FROM__/$from/g;
    s/__TO__/$to/g;
    s/__KEY__/$key/g;
    s/__SUBJ__/$subj/g;
    s/__SUBJ~(\d+)__/substr($subj,0,$1)/ge;
    s/__DATE__/$date/g;
    s/__HOSTNAME__/$hostname/g;
    s/__URL__/$url/g;
}

utf8::encode $_ for $_tmpl,$_subj;

for($to){my$x;
  /</ ? s/<.*?\@/<mail.robot\@/
      : s/^.*?\@/mail.robot\@/;
  s/^(.*?)</utf8::encode $x=$1;'=?utf-8?Q?'.encode_qp($x,'').'?= <'/e;
}
my $mail = MIME::Lite->new(
    From     => $to,
    To       => $from,
    Subject  => '=?utf-8?Q?'.encode_qp($_subj,'').'?=',
    Encoding => 'base64',
    Type     => 'text/plain; charset=utf-8',
    Data     => $_tmpl,
);

$mail->send;

return $key;
$_X$
    LANGUAGE plperlu;




Цитата

pyPgSQL is a package of two modules that provide a Python DB-API 2.0 compliant interface to PostgreSQL databases. The first module, libpq, exports the PostgreSQL C API to Python. This module is written in C and can be compiled into Python or can be dynamically loaded on demand. The second module, PgSQL, provides the DB-API 2.0 compliant interface and support for various PostgreSQL data types, such as INT8, NUMERIC, MONEY, BOOL, ARRAYS, etc. This module is written in Python.


Это сообщение отредактировал(а) gcc - 19.11.2009, 23:28
PM WWW ICQ Skype GTalk Jabber   Вверх
Bulat
Дата 20.11.2009, 13:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(unicuum @  19.11.2009,  13:39 Найти цитируемый пост)
Вообще-то в некоторых книгах по базам данных дают однозначный ответ, в каком случае использовать то или другое. Все правила уже придумали и разложили по "полочкам".


Не согласен. Я бы даже сказал большее, есть такие проекты, которые называются "динамические", яркий пример. Это тот случай, когда нельзя однозначно сказать какой "случай"  smile Сегодня так, а завтра глядишь придется лезть и в самое сердце, и дорабатывать. Поэтому, если я умею использовать, действительно умею - некий инструмент, я лучше буду придерживаться его, так как я всегда смогу его малость доработать... А вот объять необъятное - нельзя, т.е. нельзя владеть всеми знаниями на все случаи. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.