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