firebase подойдет для реализации личной переписки(мгновенных сообщений), в остальном же она не нужна. Используйте Postgresql или Mysql и будет вам счастье.
Спроектирована база довольно обычно, там ничего хитрого:
Таблица пользователей Users(id, name, ...)
Таблица объявлений Ads(id, title, text, category_id, user_id, ...)
Таблица сообщений Messages(id, text, from_user_id, to_user_id, ...)
и самое главное поиск по категориям
Гуглите "полнотекстовый поиск".
Ну и стоит учесть, что в случае крупных проектов там много кэширования. Данные разнесены на множество различных серверов. Каждый пользователь и его данные(объявления, переписка и тд) хранятся на одном сервере. Способы "разнесения" пользователей на разные сервера могут быть разные, но обычно вычисляют хеш от логина или например номера, берут остаток от деления на количество виртуальных серверов, и в зависимости от результата пользователь направляется на соответствующий сервер. Но это Вам вряд ли нужно, это только для проектов с большим количеством данных и высокими нагрузками, просто сказал для Вашего понимания как там устроено.