Я так понял по их доке, ято это система позволяющая делать запросы на выборку джанных из шаблонов?
Подобная магия в ModX, там чанки, снипеты и т.д., стоит посмотреть.
Проблему с полями решить можно очень просто указываете всё для основной таблицы и только нужные поля для подджойненных
SELECT table1.*, t2.data AS t2data, t3.data AS t3…
LEFT JOIN table2 AS t2 ON t2.id=table1.data1_id
LEFT JOIN table3 AS t3 ON t3.id=table1.data2_id
Поэтому я и выделил слово «модульное», а то действительно, много любителей тестить одним тестом кучу классов и методов, но это уже не те тесты. Сейчас у себя на проекте такое разгребаем, пишем независимые тесты, уменьшается виртуальное покрытие, зато растёт реальное и отлавливаем хитрые баги и дыры, которые раньше проскакивали через широкую сеть.
>>Напишите пожалуйста, что такое зависимость на ДБ? www.slideshare.net/iobit/ss-1733766
Вы явно указываете имя класса, вместо того чтобы завязываться на интерфейс.
У вас в обоих вариантах зависимость на DB, нужно её либо инджектить, либо воспользоваться мультитоном, чтобы затем не возникло траблов при расширении или тестировании.
Лучше польваться обёртками коих масса. Они как правила позволяют менять и енжин (фалы, фзсб memcache), дают удобный интерфейс и главное — поддерживают теги, что очень удобно при инвалидации кеша.
>> Индексы — не вариант, т.к. а) их на все поля ставить не будешь;
Так Вам шашечки или ехать? Хотите быстро — ставьте индексы. Клиентсайд в любом случае будет на пярядки медленнее базы данных.
Тем более эти 10 секунд не обязательно ждать каждый раз, организуйте серверный кэш и отдавайте готовый json, если попали в кэш.
Избавьтесь от join в пользу денормализации, может можно выделить небольшую актуальную часть данных в отдельную таблицу и при пэйджинге на первой десятке страниц работать с ней и лишь на дальних страницах подключать большую и т.д. и т.п.
Вы бы описали для чего вам это нужно, на основании юскейса легче предлагать нужные именно вам варианты.
А что там должно быть специализированного? Авторизация и разделение прав, это есть в любом фреймворке. SAAS это скорее маркетинговый лейбл, а не что-то уникальное.
Будет выбираться всё порциями, подтягиваться ajax-ом и проблем быть не должно, главное никакого клиентского кеширования не юзать, а то браузер будет умирать, а БД с расставленными индексами с лёгкостью справится с 2M записей.
Реализацию можно свести до простейшего поиска по википедии: выделил слова — гугланул по википедии и показал текст с картинками. Есть сервисы которые даже зачитывают результаты. Можно обойтись плагином к браузеру.
Угумс, мои слова о смысле скорее относятся к первой ссылке, подразумневающей глубокое копание в связке. А вот минимальные основы установки LAMP как правило идут в первых главах книги по php.
Только не забудьте, что все тесты лучше проводить на виртуальной машине, а рабочие машины бэкапить перед правками, чтобы можно было мгновенно откатиться.
Дополню ляпы:
Symphony на сам деле Symfony. ORM в symfony нет и используется стороннее решение Doctrine ORM или Propel, ни один ни второйне скопированы с Java, хотя и взяли некоторые идеи. В Doctrine получилось очень здорово.
В мире java сейчас как раз идёт миграция с оверинженеринг фреймворков для веба, причём не просто с фреймворков, а миграция с целого языка и переход на языки крутящиеся на той же java машине. Не говоря уже что Oracle судом с Google поставило под сомнение будущее языка, да и автор его уже давно свалил.
Про гугл смешно, словно человека уже взяли в гугл и у него неделя чтобы выучить любой фреймворк.
Подобная магия в ModX, там чанки, снипеты и т.д., стоит посмотреть.