Какие существуют решения для синхронизации БД на фронте и бэкенде?
Существуют ли в природе PHP / JavaScript библиотеки автоматически синхронизирующих базу данных на сервере с ее копией в браузере? Допустим у нас в браузере есть некий объект, который содержит все данные из MySQL базы данных и когда мы что-то меняем в объекте все изменения автоматически бы транслировались на сервер. Соответственно верно и обратное, если что-то поменялось на сервере, изменения тут же вносятся в браузерную копию.
P. S. Просто интересно, бывают ли такие штуки и если да, то как они называются?
tukreb, Dmitry Bay, очевидно, что вопрос про то, чтобы ничего не писать. Нужен по сути db-клиент на клиенте с кэшированием и гарантией достоверности состояния. Или даже реплика базы на клиенте со связью мастер-мастер с той что на сервере. Или типа того.)
Aetae, верно. Смысл изобретать велосипед? Наверняка уже все написано до меня. Пока что у мня нет каких-то целей, просто интересно было бы поковырять такую штуку, если она существует. Это же круто когда данные автоматом обновляются по вебсокету, мгновенно и тебе не надо ломать голову над синхронизацией.
Надим Закиров, Ничего за вас бесплатно написано нет, готовые решения предоставляют только API, которые вы используете со своим бэкендом.
Конечно есть продукты где всё в одном, но похоже это не ваш случай иначе не писали бы здесь.
Надим Закиров, то что вы хотите невозможно, все валидации должны быть на беке, т.к. фронту доверять нельзя, поэтому в любом случае придется делать только там. Для бека верно, это ORM, бывают совершенно разные, начиная от ActiveRecord заканчивая Doctrine, и почти как вы хотели, почти все автоматически. Но такая автоматическая работа слабо ориентирована на тонкую настройку, а база штука капризная, поэтому на высоких нагрузках - не вариант.
Vitsliputsli, это в общем случае фронту нельзя доверять, а если пилишь что-нибудь чисто для себя, чем никто роме тебя не будет пользоваться - то конечно можно доверять!
Надим Закиров, разработка ПО подразумевает универсальные продукты, которые если не сейчас, то все равно потенциально могут использоваться многими людьми. Чтото только для себя - это так, поиграться, проверить гипотезу, не более того.
Напрашиваются сокеты.
На фронте можно использовать событие, отслеживающее изменения в localStorage: https://developer.mozilla.org/ru/docs/Web/API/Wind...
В каччестве колбэка можно отправлять запрос на бэк, который именит что-то в БД. Либо по тем же самым сокетам передать запрос на изменение.
Насчет бэка не скажу, но явно что-то подобное там тоже есть.
В лоб это сделать не сложно, а вот как такое сделать по уму, чтобы передавалась туда-сюда только разница между базами, так сказать, атомарно? Поэтому мне и интересно было бы посмотреть и поковырять, что-нибудь готовое на эту тему.