LINUX.ORG.RU

Выбор БД для удобной синхронизации

 ,


0

2

Есть несколько рабочих станций, у которых доступ в интернет появляется периодически. Стоит задача накапливать информацию в локальную БД (например sqlite) и при появлении доступа к серверу - заливать на него накопленную инфу. При этом нужно предусмотреть чтобы при синхронизации с сервером не получалось дублирование первичных ключей и не дублировались одинаковые записи.

Сейчас вижу ввыход - хранить в любом удобном формате, например csv при заливании на сервер с разных рабочих станций прогонять данные diff'ом и средствами сервера заливать csv в нормальную БД.

Какие есть идеи?

★★★★★

Последнее исправление: Siado (всего исправлений: 1)

Это должна быть именно СУБД с высокой производительностью?

Вариантов в общем случае много:

— Полноценная репликация с временем хранения бинлогов заведомо больше времени дисконнекта (у меня они в обычных-то условиях до недели хранятся)

— Использование plain-text based бэкендов, это и SQL-подобные библиотеки под тот же PHP, и CSV, и JSON в файлах/каталогах. А уже plain-text вагон способов синхронизировать, от btsync и dropbox до rsync.

— Использование скриптов автоматических дампов/загрузок по наличию связи.

KRoN73 ★★★★★
()

Это же не поврос выбора БД, а построения подходащей модели данных, их синхронизаии и разрешения конфликтов. Реализовать это можно на любой бд.

mashina ★★★★★
()
Ответ на: комментарий от KRoN73

Это должна быть именно СУБД с высокой производительностью

Производительность совсем не большая, за день порядка 300-500 записей в таблицу.

Siado ★★★★★
() автор топика
Ответ на: комментарий от mashina

Ну да, вопрос больше в том, чтобы не городить свои костыли, а по возможности использовать готовые налаженные решения, если таковые имеются.

Siado ★★★★★
() автор топика
Ответ на: комментарий от Siado

Чтобы искать готовое решение нужно указывать больше конкретики, т.е. разработать модель данных, правила слияния, разрешения конфликтов и всё такое. В общем случае такие задачи ничем не решаются.

mashina ★★★★★
()

couchdb с view, возвращающей только первое уникальное значение?

holuiitipun
()
Ответ на: комментарий от mashina

Конкретика:

Один сервер, несколько удаленых машин. Удаленные машины далеко не всегда имеют доступ к серверу. Но как только доступ появляется требуется селать следующие маневры:

Сервер -> Клиент:

Высылает информацию об активных учетных записях чтобы пользователь смог идентифицироваться в программе под своим логином/паролем.

Клиент -> Сервер:

Высылает занесенную информацию за некоторый промежуток времени (пока сервер был недоступен).

Подводные камни:

1. Если использовать БД типа sqlite или аналогичных - и выгружать/загружать информацию с помощью дампа то могут возникнуть проблемы в колиизиях первичных ключей.

2. Если тупо копировать файл БД на сервер и хранить всю инфу одновременно в двух местах - то будет потеря информации, если пользователи на разных машинах будут сидеть за одной учеткой

Поэтому вариант с CSV пока что наиболее подходящий, но мжет есть какие более удобные решения? =)

Siado ★★★★★
() автор топика
Ответ на: комментарий от Siado

надо больше золо*** информации. что за структуры данных собираешься хранить, как именно итп. сложно телепатить.

MikeDM ★★★★★
()
Ответ на: комментарий от Siado

проблемы в колиизиях первичных ключей.

мало информации. Что такое «коллизия» и как её разрешить?

Если юзер вася с компьютера №1 написал патч к файлу helloworld.c, и юзер вася(sic!) написал другой патч к том же файлу с компьютера №2, то что делать серверу, и какой патч принимать? Или отправить васе сообщение «иди нахер» на компьютеры №1 и №2?

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.