Ограничения Udb

  !   Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М. (см. Руководства пользователя к программным продуктам)
By Design

(ограничения специально задуманные, в первую очередь, с целью улучшения надежности и развиваемости кода)

  • NULL скаляры не поддерживаются Udb
  • "Хибернация" иерархий классов не поддерживается (за исключением Экспозиция иерархических структур объектов в реляционное хранилищезапрещенной к копированию в другие приложения)
  • Наследование данных в CDb классы декларируют таблицыи его автоматические маппинги в SQL не поддерживаются (что ни как не ограничивает сложность задач, решаемых приложением, и упрощает реализацию и развитие прикладных хранилищ).
  • Встраивание С++ операторовв форме лямбда-выражений или иначе в SQL запросы не предусматривается даже если отдельные бакенды или псевдо-реляционные переходники могли бы это поддерживать. (исключения могут быть возможны для частных хакных оптимизаций)
  • Финальная версия Udb исключает все средства поддержки хранимых процедур. Оные видятся совершенно бесполезными при инкапсуляции доступа к БД средствами Udb из С++. Хранимые процедуры способные динамически создавать запрос из его частей принципиально не портабельны и в любой СУБД обеспечивают гораздо худший статический контроль корректности составленного запроса. Для быстродействия в современных СУБД тоже толку нет. А проблемы безопасности которые они могли бы решать гораздо лучше решаются Qx во фронтенде, драйверами как Bijou и "веб-сервисами" с контролируемым ограниченым SQL как используется Inwix для выборки задач.
Спорные ограничения
Недостаточная статическая верификация
  • ВCx надо сделать контроль всех правил CDb классы декларируют таблицы
  • Forbid iter as a member
  • Некоторые Qxтипы как qxinteger/qxfloating могли бы конвертироваться друг в друга. И явные конверсии их всех к str (при построении запросов из Qx кусков).
  • Invalid block if { }, rogue this->, indents, fn args right of name, same meth name same parameters, prefixes
Недостаточная динамическая стабильность
  • Логов rASSERT не достаточно при формировании некорректных rQuery, нужно полностью стабильно отменять хоть немного некорректный запрос
Интерфейсы
  • Бессмысленные bool могут возвращатся из Udb функций сбои которых не может отработвать приложение
  • prevent app from setting dbobject UdbConnection
Требующиеся доделки функциональности
Быстродействие
  • actual COUNT
  • INDEXes
  • locally declared fromName can go into SQL statically
  • NOT NULL, UNIQUE on columns?
Портабельность
Компиляция
  • Номера строк сгенерированного Qx кода уходят вниз, нужен #line на каждую сгенеренную строку или все в одну строку.

Эта категория в данный момент пуста.