|
Как поддержать уникальность данных.
|
|||
---|---|---|---|
#18+
Задача следующая: Есть сервер с БД. Есть куча клиентов с разными операционными системами. При этом связь с сервером может пропадать на несколько дней. Необходимо придумать работу системы так, чтобы клиентские приложения могли существовать независимо от сервера, а по возможности выполнять синхронизацию данных. Первое что приходит в голову - использовать SQLite на каждой клиентской машине и при появлении связи с сервером выполнять синхронизацию. Но наткнулся на следующую проблему - синхронизация уникальных индексов. Ведь int использовать в данном случае нельзя (один и тот же идентификатор будет одновременно создан на разных машинах). А Guid в явном виде нет. Есть конечно возможность генерить их через Код: plaintext
Можно в качестве первичного ключа использовать TEXT поле? На сколько ресурсоемкими будут запросы с JOIN - не будет ли торомозов при больших данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 13:01 |
|
Как поддержать уникальность данных.
|
|||
---|---|---|---|
#18+
Nikolay206Необходимо придумать работу системы так, чтобы клиентские приложения могли существовать независимо от сервера, а по возможности выполнять синхронизацию данных. Читать учебники по распределенным базам, изучать процесс репликации данных и утилиты существующие для этого. Правда ETL tools специфических для SQLite я не знаю. Nikolay206Но наткнулся на следующую проблему - синхронизация уникальных индексов.Тоже мне, проблема. У тебя несколько баз данных. В каждой из них может появляться новая запись. Значит что должно быть частью первичного ключа?... Правильно - идентификатор базы. А дальше уже не важно, что там используется в качестве логического первичного ключа - главное иметь ID филиала (базы) внутри физического PK и все проблемы исчезают. Nikolay206Можно в качестве первичного ключа использовать TEXT поле? На сколько ресурсоемкими будут запросы с JOIN - не будет ли торомозов при больших данных? Это уже совершенно другой вопрос, не относящийся к проблеме распределенных баз. Но... - да, можно использовать TEXT как PK - Что значит "больших данных"? Если ты думаешь использовать много-мегабайтные блобы в качестве PK - тогда действительно будут проблемы. А если ты точно знаешь что в поле тексты не будут превышать по длине какого-то сравнительно маленького числа, то проблем не будет. В качестве "маленького числа" я предпочитаю использовать 32. Но в принципе, я встречал и char(128) в качестве PK-FK поля и вроде не тормозило... Но тут еще зависит и от машины на которой база крутится... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 18:00 |
|
Как поддержать уникальность данных.
|
|||
---|---|---|---|
#18+
Спасибо White Owl за ответ. Буду изучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2011, 01:03 |
|
Как поддержать уникальность данных.
|
|||
---|---|---|---|
#18+
Нашел хорошую статью на тему репликации данных repl2.narod.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2011, 13:54 |
|
|
start [/forum/topic.php?fid=54&msg=37467098&tid=2009115]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
3ms |
others: | 17ms |
total: | 200ms |
0 / 0 |