Najlepiej w MySQL + txt

Jeśli chat będzie odświeżany np. co 5 sekund to dla dużej ilości userów będzie dość dużo zapytań.
Ja stosuję taki schemat:
- chat w tabeli,
- po wysłaniu wiadomości przez usera zapis do bazy, wyciągnięcie X ostatnich wpisów i zapisanie do cache'u (korzystałem z bibliotek cache w Kohanie i w Zendzie, ale równie dobrze można zwyczajnie zapisać jako tekst albo w formacie JSON),
- wyświetlenie (odświeżenie) chatu to include odpowiedniego pliku (po id usera), przy czym można jeszcze przechowywać id ostatniego wpisu i porównywać przed wyświetleniem czy coś się zmieniło.
To tak z grubsza, bo zawsze jeszcze jest parę niuansów o których trzeba pamiętać