Я пишу приложение с поддержкой в автономном режиме.то есть браузерные / мобильные клиенты синхронизируют команды с главной базой данных очень часто.
Я использую uuid как на стороне клиента, так и на стороне сервера.При синхронизации с сервером сервер будет возвращать карту локальных uuids (luid) в uuids сервера (suid).После получения этой карты клиенты обновили свои атрибуты suid записей соответствующими значениями.
Однако, скажем, запись клиента, например, todo, имеет атрибут list_id, который содержит внешний ключ к записи списка todos.,Я использую luids в foreign_keys на клиентах.Однако, когда этот атрибут отправляется на сервер, он загрязняет базу данных сервера luids, а не suid, который использует сервер.
Мое текущее решение заключается в том, чтобы главный сервер вел учет сопоставлений luids и suids (для каждого идентификатора клиента), и для каждого внешнего ключа в команде найдите suid для этого конкретного клиента и используйтевместо этого suid.
Мне интересно, сталкивались ли другие с такой проблемой, и если да, то как они решили ее?Есть ли более эффективный, более простой способ?
Я посмотрел на этот вопрос "Синхронизация одной или нескольких баз данных с основной базой данных - внешние ключи (5)", и кто-то, кажется, предложил мое текущее решение в качестве одного из вариантовсоставные ключи, использующие suids и автоинкрементные последовательности, и другой параметр, использующий идентификаторы -ve для идентификаторов клиентов, а затем обновляющие все отрицательные идентификаторы с помощью suids.Оба эти других варианта кажутся гораздо более сложными.
Спасибо,
Саймон