Как сохранять большие тексты при частых, но незначительных изменениях?
1. Для создания дельты изменений в чем бы то ни было (в тексте, или в бинарных данных и т.п.) есть утилиты/алгоритмы, уже готовые. Можете взять их и адаптировать под себя, например diff. Как это будет реализовано на уровне JS'а в браузере я пока не очень представляю, но гипотетически - это вполне возможно/реализуемо.Как решить эту проблему? Возможно ли частичное обновление поля в MySQL
Частичное обновление файла возможно только в том случае, если кол-во измененных данных равно кол-ву данных оригинала, т.е. нельзя открыть файл и вставить что-то в его середину, можно перезаписать кусок данных ровно такой же по длине как был до этого. В противном случае, файл будет либо перезаписан с того места, где было изменение, либо перезаписан целиком. Это не зависит от базы, это простая арифметика.
Судя по контексту эпитета выше - это проблема не базы, а медленного интернета конкретного пользователя. А так же, какие-то серьёзные ошибки архитектуры. Каким образом пользователи умудряются прислать половину запроса - я не очень представляю, такое даже в "лабораторных условиях" довольно не просто сэмитировать, не говоря уже о том, что бы подобное повторялось многократно. Но если уж у Вас запросы как-то кусками умудряются приходить - ставьте в конце запроса какой-то маркер, который не сможет воспроизвести пользователь, например, какой-то бинарный символ, который будет говорить о том, что это конец сообщения. Если его нет - выдавать пользователю сообщение, что всё очень и очень плохо... Как выявить частичные изменения, чтобы не гонять весь текст целиком, а только внесённые изменения? Поделитесь опытом.Ответ на этот вопрос содержится в 1-м абзаце, выше по тексту :)Кроме того, как только пользователей станет много, подозреваю, сервер ляжет. Довольно странно будет, если у Вас база ляжет от такой нагрузки... Это скорее больше похоже, опять таки, на серьёзные ошибки в архитектуре, а не проблемы БД/сервера как таковых.
Имхо редис + база, все что набирается хранится в клиенте, отсылается порциями на сервер с указанием что с какой позиции набиралось, из редиса вытаскивается текст, вставляется в нужные позиции, после чего сейвится обратно в редис, раз в эн минут все хреначится в базу, при отсутствии изменений в базу писать не нужно, проверяется хешем текста.