diff_01_general - grossho/billow GitHub Wiki

Сравнение характеристик

Введение.

Абырвалг, абырвалг, абырвалг...

Пулы подключений.

Практически каждая вторая из представленных ORM видимо в целях удобства осуществляет привязку таблицы к пулу подключений совместно с процессом декларации её полей. Связь осуществляется через объект-посредник, реже — через привязку к целевому объекту подключения, рядом с объявлением структуры колонок таблицы.

Это имеет смысл, когда помимо общей функциональности из основного модуля, дополнительно импортируются из диалектного модуля недостающие элементы. Однако для нашего случая, связь синтаксиса с диалектом возложена на подключаемый плагин, а значит осуществить привязку к конкретному поставщику СУБД для частного случая вне общего представления — не представляется возможным.

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

То есть в таблице явно не указывается, каким подключением воспользоваться, чтобы получить к ней доступ. Скорей наоборот — в мета-объекте оставляются ссылки на пул-объекты подключений, которые в заданной последовательности подбирают обработчик для обращения к заданному набору таблиц за один запрос.

Обработчики привязаны именно к структурам пул-подключений с тем, чтобы при отсутствии сложной логики настройка подключений не была бы сложной задачей. Производимая JOIN-выборка данных может быть преобразована к плану исполнения, в котором используются разные источники, в этом напоминая построение pipe-каналов в bourne shell среде.

Разбиение на несколько запросов и связи потока на уровне ORM может приниматься за счет этого же обработчика пула подключений, но порядок нахождения линий разлома в запросе заложен в каждую отдельную компоненту.