LINUX.ORG.RU

Perl, Class::DBI


0

0

Class::DBI - маппинг классов на базу данных в Perl.
Хотелось бы пообщаться кто его использует.

Нужно написать WEB-приложение работы с базой.
Сейчас все хранится в dbf, будет в Postgresql.

Class::DBI подходит для сложных баз?
Все примеры из документации максимум на 2 таблицы.
Можно ли заменить БД на другую без изменения программы
(MSSQL, Oracle, PgSQL, MySQL, Sybase)?



DBI - это что-то типа ODBC для perl К нему насколько мне помнится требуется драйвер конкретной БД DBI унифицирует доступ к различным источникам данных(будь то просто текстовый файл или какой либо SQL сервер). Некоторые вещи при переходе от одного источника данных к другому могут не работать но стандартные select * from table и т п должны работать без проблем Что значит - "подходит для сложных баз"?

anonymous
()

Баловался (наколенный биллинг для локалки, ~15 таблиц, MySQL 4.1).

Довольно удобно, хотя и с некоторыми заворотами (Ima::DBI suxx, либо я чего-то не понял; M-N связь через link table не совсем очевидным способом работает - но при этом таки работает). Если ограничиваться только ORM - то полностью переносимо между базами (там очень узкое подмножество SQL нужно), если добавлять свои конструкторы/аггрегирующие методы - то, соотвественно, зависит от написанного в них SQL-я. Плюс есть плагины для разных баз, которые умеют использовать их особенности (скажем, создавать структуру базы по перловым структурам и т.п.).

Категорически не рекомендуется строить отчеты в духе

foreach my $obj (My::DB::Table->fetch_all()) {print $obj->foo(), $obj->child()->bar(), "\n"}

ибо будет очень медленно.

Но для "бизнес-логики" - нормально вполне. И отлично написано "внутри".

anonymous
()
Ответ на: комментарий от anonymous

Не рекомендуется получать все объекты и считать,
например суммы у каждого объекта (записи)?
Нужно делать select sum(sum_v)?

Программа у меня выдача денег населению (отчет всяких навалом).
Как быть в таких случаях?

WinLin
() автор топика
Ответ на: комментарий от WinLin

Делать отчеты через ORM - неправильно в любом случае, ибо вы выполняете работу базы (аггрегация) на стороне приложения.

По опыту писания биллинга - большая часть отчетов может быть построена один-двумя SQL запросами. Если _очень_ хочется, то на постргесе можно строить представления (view) и потом объекты типа "строка отчета" на них - но непонятно, зачем бы.

anonymous
()
Ответ на: комментарий от braindef

Не совсем понятно, зачем на Perl исаользовать что-либо, кроме DBI, для работы с базой...

pgsql_perl5 - это древность какая-то, судя по датам. А DBI - рулит, один из лучших универсальных интерфейсов БД среди всех языков.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.