1. у Ruby есть OpenStruct, поищите реализацию для PHP
Rails позволяет сериализовывать в OpenStruct
2. На монге свет клином не сошелся, можно использовать все что угодно. Мой MySQL сложные поиски по нормализованным данным производит за считанные миллисекунды при сотнях тысяч записей. PostgreSQL умеет делать это еще быстрее. Для поиска можно использовать Sphinx.
3. Нормализация большого количества атрибутов имеет разумный предел. Недавно писал таблицу с 150 полями. Хранить все 150 полей одного объекта в нормализованном виде — бред и адский труд.