Подтвердить что ты не робот

Какой интерфейс базы данных Perl я должен использовать?

Является CPAN DBI лучшим интерфейсом базы данных для использования в Perl для общего использования базы данных? Есть ли лучшие варианты?

4b9b3361

Ответ 1

Если вы просто ищете доступ к низкоуровневому доступу к базе данных, вы кормите его любой строкой SQL (необязательно с владельцами мест и значениями привязки), и она запускает ваш запрос и возвращает результаты &mdash, а затем да, DBI - ваш лучший выбор, безусловно.

Если вам нужен интерфейс более высокого уровня (т.е. тот, который требует мало или вообще не использует необработанный SQL в вашем коде), тогда существует несколько ORM (объектно-реляционные карты), доступные для Perl. Ознакомьтесь с ORM на странице Perl Foundation Perl 5 для получения дополнительной информации и ссылок. (Если вы хотите помочь выбрать один из них или задать конкретные вопросы, вы можете ограничить внимание этого вопроса или, возможно, опубликовать другое.)

Ответ 2

DBI - это "низкий уровень" интерфейса между Perl и СУБД. Это в значительной степени единственный реалистичный выбор для этого. Сравнение с JDBC в Java. Вы были бы сумасшедшими (или имели бы очень конкретный вариант использования), чтобы выбрать что-нибудь иное, кроме DBI, для вашего интерфейса низкого уровня между Perl и базой данных.

В дополнение к DBI существуют различные объектно-реляционные сопоставители, которые упрощают работу и работу с базой данных.

Некоторые из распространенных/более популярных -

Ответ 3

Если вы решили использовать plain DBI для задачи, для которой не требуется ORM, я настоятельно рекомендуем вам взглянуть на DBIx::Simple.

Это не замена, а очень хорошо разработанный API поверх DBI что упрощает простые и сложные вещи, без теряя любую гибкость DBI.

Вы когда-нибудь находили, что вам приходилось искать, по-видимому, простые вещи в DBI как получение результатов запроса как arrayref (rows) хэшей (столбцы и их значения)? С DBIx::Simple это просто:

# DBI
my $rows = $dbh->selectall_arrayref($sql, { Slice => {} });
                 # tell it we want "hashes" (yuck!) ^^^^

# DBIx::Simple
my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!

Взгляните на examples для получения дополнительной информации. Кроме того, интеграция с SQL::Abstract упрощает простые запросы. Он использует его во всем моем коде, где раньше я бы использовал DBI, и Я не оглядываюсь назад.

Ответ 4

Стоит отметить, что подавляющее большинство интерфейсов "более высокого уровня" (например, SQL:: Abstract) и (DBIx:: Simple) используют сам DBI при выполнении запросов. DBI в значительной степени является общепринятым стандартным методом подключения к базе данных в Perl.

Ответ 5

Если вы хотите работать с объектами (с интроспекцией!), взгляните на Fey:: ORM, который реализует ORM на основе Moose. Он также имеет синтаксис SQL как синтаксис, поэтому он подходит для моего мозга на основе RDBMS немного лучше, чем некоторые другие структуры ORM.

Ответ 7

По моему мнению, DBI - действительно хороший выбор. Я активно использовал DBD:: mysql и нашел, что это действительно хорошее решение.

Ответ 8

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

Ответ 9

DBI отлично, но качество модулей DBD может меняться. Я был укушен "функцией" в одной из версий DBD: pg. Он любил загружать полные данные вашего результата в память, а не взаимодействовать с ним с помощью курсоров.

Как обычно - программист Caveat.

Ответ 10

Скалы DBI! но для полноценной полнофункциональной ORM, которая быстро переходит в DBIx:: Class все время.

Ответ 11

В принципе, вы должны сначала использовать только DBI.