Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как поддержать уникальность данных. / 4 сообщений из 4, страница 1 из 1
03.10.2011, 13:01
    #37465049
Nikolay206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поддержать уникальность данных.
Задача следующая:
Есть сервер с БД. Есть куча клиентов с разными операционными системами. При этом связь с сервером может пропадать на несколько дней. Необходимо придумать работу системы так, чтобы клиентские приложения могли существовать независимо от сервера, а по возможности выполнять синхронизацию данных.
Первое что приходит в голову - использовать SQLite на каждой клиентской машине и при появлении связи с сервером выполнять синхронизацию. Но наткнулся на следующую проблему - синхронизация уникальных индексов. Ведь int использовать в данном случае нельзя (один и тот же идентификатор будет одновременно создан на разных машинах). А Guid в явном виде нет. Есть конечно возможность генерить их через
Код: plaintext
hex(randomblob( 16 ))
При этом не понятны следующие вещи:
Можно в качестве первичного ключа использовать TEXT поле?

На сколько ресурсоемкими будут запросы с JOIN - не будет ли торомозов при больших данных?
...
Рейтинг: 0 / 0
03.10.2011, 18:00
    #37465856
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поддержать уникальность данных.
Nikolay206Необходимо придумать работу системы так, чтобы клиентские приложения могли существовать независимо от сервера, а по возможности выполнять синхронизацию данных. Читать учебники по распределенным базам, изучать процесс репликации данных и утилиты существующие для этого.
Правда ETL tools специфических для SQLite я не знаю.

Nikolay206Но наткнулся на следующую проблему - синхронизация уникальных индексов.Тоже мне, проблема. У тебя несколько баз данных. В каждой из них может появляться новая запись. Значит что должно быть частью первичного ключа?... Правильно - идентификатор базы.
А дальше уже не важно, что там используется в качестве логического первичного ключа - главное иметь ID филиала (базы) внутри физического PK и все проблемы исчезают.


Nikolay206Можно в качестве первичного ключа использовать TEXT поле?

На сколько ресурсоемкими будут запросы с JOIN - не будет ли торомозов при больших данных?
Это уже совершенно другой вопрос, не относящийся к проблеме распределенных баз. Но...
- да, можно использовать TEXT как PK
- Что значит "больших данных"? Если ты думаешь использовать много-мегабайтные блобы в качестве PK - тогда действительно будут проблемы. А если ты точно знаешь что в поле тексты не будут превышать по длине какого-то сравнительно маленького числа, то проблем не будет. В качестве "маленького числа" я предпочитаю использовать 32. Но в принципе, я встречал и char(128) в качестве PK-FK поля и вроде не тормозило... Но тут еще зависит и от машины на которой база крутится...
...
Рейтинг: 0 / 0
04.10.2011, 01:03
    #37466381
Nikolay206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поддержать уникальность данных.
Спасибо White Owl за ответ. Буду изучать.
...
Рейтинг: 0 / 0
04.10.2011, 13:54
    #37467098
Nikolay206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поддержать уникальность данных.
Нашел хорошую статью на тему репликации данных repl2.narod.ru
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как поддержать уникальность данных. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]