Есть некая таблица, открытая на нескольких клиентах, каждый клиент работает с ней, все изменения пишутся в базу. Каждые 30 секунд каждый клиент отправляет запрос на сервер и получает все изменения, каким образом на клиенте заменить только те строки таблицы которые отличаются в ответе от сервера и на клиенте, в настоящее время каждый раз таблицу на клиенте меняю, но это не очень удобно для конечного пользователя
Попробуйте воспользоваться готовым решением для таблиц, а именно datatables.
Там много фич, которые сильно упрощают жизнь и не придется придумывать набор велосипедов https://www.datatables.net
В чем конкретно проблема? Если у вас с сервера приходит json, найдите разницу между тем что есть сейчас и что на сервере. Удаляйте лишнее и добавляйте новые строки. Если с сервера приходит html(ну а вдруг), то меняйте архитектуру.
В самом запущенном случае у каждой строки должен быть уникальный айди, и в получаемых с сервера данных для строк тоже должны быть айди и признак. что данная строка была изменена с момента итерации Х. Так же с сервера приходит номер текущей итерации, который с каждой рассылкой увеличивается. Т.е. трем разным клиентам отправляется одинаковый номер текущей итерации, который инкрементируется только в момент изменения данных каким-либо из пользователей. Далее клиент обновляет все строки в диапазоне своего текущего номера итерации и нового, полученного с сервера, после чего присваивает своему локальному номеру итерации серверный.
При запросе клиент может отдавать серверу свой текущий номер итерации, тогда серверу достаточно будет отправлять каждому клиенту только изменившиеся строки...
Разумеется надо как-то каждое изменение сопрягать с номером итерации и хранить эти мета-данные.
Для удобства нужно не опрашивать сервер раз в 30 секунд, а подписать клиент на сервер-сайд события, тогда любые изменения на сервере будут пробрасываться на клиентов максимально оперативно...