Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как поддержать уникальность данных.
|
|||
|---|---|---|---|
|
#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=37465856&tid=2009115]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 267ms |
| total: | 542ms |

| 0 / 0 |
