Экспертная система (используется для доступа к базе данных) против ORM

Недавно я обнаружил PyKE и заметил, что один из приведенных примеров потенциального использования (фактически, использования, для которого он был изначально создан) состоял в том, чтобы скомпилировать операторы SELECT для запроса к базе данных и отобразить результат в словарь. Автор подчеркивает, что это не ORM.

Из этого у меня есть два подвопроса:

  1. Как такое использование PyKE (или другой экспертной системы, способной выполнять или выдавать код или возвращать структурированные данные для использования вызывающей программой) не является эффективным ORM?
  2. При каких обстоятельствах было бы предпочтительнее использовать экспертную систему (такую ​​как PyKE) для запроса базы данных, а не специально созданную ORM? Я предполагаю, что должно быть, учитывая, что PyKE был сделан для этой цели.

1 ответ

Решение

На ваш первый вопрос

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

В частности, для PyKE один из аспектов предлагает компиляцию SELECT, но, по-видимому, не CRUDing (CRUD: Create, Read, Update, Delete), что является наиболее важной вещью, которую делает ORM.

На второй вопрос

PyKE будет использоваться, когда вам может понадобиться система знаний (например, поиск данных на естественном языке). Тогда PyKE может знать, как извлечь данные из базы данных наиболее эффективным способом для достижения своих собственных целей.

ORM, с другой стороны, получил бы данные, которые представляют некоторый объект в вашей программе, например, заказ на покупку с веб-сайта, и он вставил бы объект при создании заказа на поставку, вытащил его из БД, когда сеанс восстанавливается, изменяйте данные по мере того, как пользователь добавляет и удаляет элементы в ПО, и удаляйте ПО, если покупка завершена или прервана (CRUD).


tldr

PyKE - это специализированная библиотека, которая абстрагирует от необходимости писать SQL для использования библиотеки, но не предлагает полный набор взаимодействий с БД, потому что это не то, для чего она была построена.

ORM предлагают такое взаимодействие с БД и пытаются упростить использование данных очень динамичным способом; хотя, по моему опыту, использование / не использование ORM поверх SQL, созданного вручную, вызывает довольно жесткие споры.

Другие вопросы по тегам