Я не понимаю, почему доступ к базе данных будет медленным (при условии, что он является локальным для веб-сервера) - я имею в виду, что данные, безусловно, будут храниться в ОЗУ, если к данным так или иначе осуществляется постоянный доступ и базы данных достаточно оптимизированы для эффективной обработки запросов,
Очевидно, что вы можете хранить данные в собственной структуре данных, а затем регулярно сохранять их в БД, но вы заново изобретаете колесо, и в случае сбоя сервера вы можете потерять данные.
Что бы я лично сделал, это передавал данные вашим клиентам, а НЕ извлекал данные из них (что, кажется, вы планируете делать), таким образом, вам нужно будет отправлять данные только тогда, когда кто-то входит в систему илипоявляется новое сообщение - обе ситуации должны случаться не так часто.