New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Синхронизация БД между проектами #6
Comments
По 1-му пункту все выглядит просто - у нас есть id автоинкремент, используем его:
Этот способ довольно дешевый по ресурсам (храним только 1 поле, загружаем только новые данные). Но если участников проекта будет больше 2х, то для каждого нужно хранить last_id, 1-я БД должна быть главной, 2-ю и 3-ю не стоит синхронизироваться между собой (иначе в 1-ю базу одни и те же данные попадут дважды). Измененные данные не обновляются. Возможна ситуация, когда 2 пересекающиеся загрузки во 2-й и 3-й базе после синхронизации с 1-й базой будут поразному отображены во всех базах. |
Другой вариант сохранять загруженные файлы CSV и передавать их другим проектам. Масса плюсов - данные добавляются и обновляются одновременно во всех базах. Но мне эта идея не очень нравиться. |
Еще есть идея создать 2-ю таблицу с точками для несинхронизированных данных. Т.е. при загрузке CSV данные грузятся не в таблицу free, а в таблицу free_new. При поиске, отображении карты, подсчете статистики учитывать обе таблицы. При обновлении в главную базу отправлять только данные из таблицы free_new. Чтобы не было путаницы с изменившимися данными, в upload.php при совпадении делать не UPDATE в таблице free, а INSERT в таблицу free_upd (еще одна таблица для синхронизации). Процесс синхронизации:
Теперь на сервере находятся актуальные данные и обновления нужно довести до всех клиентов. Но сначала объединим таблицы free_new и free_upd
Думаю этот способ предпочтительнее. Можно подумать о синхронизации каждого с каждым. |
Было интересно, пока были желающие поднять клоны проекта. По всей видимости смысла в этой фиче нет. |
Необходимо реализовать синхронизацию БД между проектами.
The text was updated successfully, but these errors were encountered: