tu in pratica vuoi invertire la meccanica del web, dove le richieste vanno dal client verso il server, per aver un server che istruisce un client....

se per fluidità intendi caricamenti continui della pagina, con refresh della stessa, allora ci possono essere alcune possibili soluzioni appoggiate ad ajax, che non danno minimamente la percezione che la chat faccia continue richieste al server, viceversa diventa al quanto compromettente a livello di tempo/risorse/risultato.... tutto sta nel chiedersi: il gioco vale la candela?

poi per il database non c'è problema,riesci a fare una chat che sta su con una query ogni 40 minuti se proprio proprio... bisogna strutturarsi solo bene