модель — квартет (id, up, t, val) — не повторяет этих ошибок благодаря трём слоям: системе типов (базовые типы в ядре, пользовательские типы-термины, настоящие связи), контроллеру, который автоматически генерирует SQL с WITH RECURSIVE, и индексам (композитные покрывающие индексы по (t, val) и (up, t)). На базе из 133 731 квартета (168 МБ данных, 40 МБ индексов) в Postgres точное совпадение по типу выполняется за 0.08 мс, сбор всех реквизитов записи — за 0.16 мс, обход связей — за 0.30 мс. В качестве контраста приведён случай, когда запрос к ANN-индексу без указания t и up выполнялся Seq Scan'ом 4 с, а после добавления частичного индекса стал 0.09 мс. Автор также упоминает Datomic как пример правильного EAV, но отмечает его нишевость. Вывод: генеричность не грех, если есть система типов, контроллер и реальные индексы, проверенные через EXPLAIN.