Ответ 1
Во-первых, LedgerSMB мы используем системные каталоги и схему информации везде, где можем. Это означает, что приложение фактически проводит некоторое время, запрашивая системные каталоги. У нас также есть некоторые метаданные для расширенных атрибутов. Мы не делаем EAV здесь. Скорее, у нас есть фактические отношения и метаданные, которые позволяют нам создавать реляционные запросы на стороне клиента. Они загружаются в один момент и кэшируются. Каталог очень похож на каталог EAV, но основное хранилище на самом деле является реляционным, а функции, которые поддерживают эти альтернативные базовые таблицы. Это дает вам гибкость EAV без основных трудностей.
В будущих версиях мы, вероятно, перейдем к меньшему количеству каталогов приложений и большему использованию системных каталогов и информационной схемы Pg, а наш интерфейс будет проще с точки зрения приложения.