Здравствуйте, Mamut, Вы писали:
M>Любой «независимый от баз данных» слой сможет покрыть только общий для всех баз данных функционал + некоторое количество хаков для некоторых вещей. Ну типа генерация последовательностей для баз данных, где последовательностей не существует. Или грязные хаки для windowing functions.
Безусловно движку, умеющему работать с разными СУБД, приходится ограничиваться пересечением функционала этих СУБД. Но на самом деле этого обычно вполне достаточно, т.к. во всех нормальных СУБД есть всё нужное. Там основная проблема скорее в другом — в разных СУБД эта функциональность может по разному подключаться.
M>Как только нужна внятная быстрая функциональность за пределами банальных джойнов или запросы, которые учитывают порядок индексов (что важно для, например, mysql'я), то вся «независимая прослойка» летит к черту.
Эммм, по нормальному за пределами слоя работы с БД никаких джойнов и т.п. не должно быть. )
M>Если база данных не поддерживает PostgreSQL'овское generate_series, то тебе никакая магическая абстракция не поможет. И приложение будет моментально привязано к PostgreSQL как только это понадобится (а оно понадобится)
Дааа, PostgreSQL вообще далеко ушёл. Сейчас то он уже умеет и с json работать, т.е. замахивается на область nosql и даже в небольшой степени на обработку деревьев. Такими темпами он может когда-нибудь выйти в однозначные лидеры и тогда можно будет спокойно затачиваться под него — вот будет счастье для авторов всяких движков. ))) Но пока до этого ещё далеко.