Моя ситуация:
- У меня есть несколько клиентских приложений, в которых используется локальная БД (MS SQL, MS Access - извините, это система Enterprise, я должен поддерживать устаревшее...)
- Я не знаю ничего о тренде среди клиентов - теперь он ~ 10, но он может быть ~ 100 в год.
- Данные из этих таблиц поступают на мой центральный сервер и помещаются в одну общую таблицу.
- Иногда существующие (клиентские) данные изменяются - мне приходится выполнять операции обновления/удаления
- Я не хочу использовать GUID (.NET type
System.Guid
). Трудно просто реализовать и поддерживать в MS Access. Кроме того, не подходит для производительности - Мне нужен быстрый поиск в этой общей таблице, поэтому было бы неплохо использовать
int
илиlong int
как PK
Итак, я хочу:
- Что-то уникальное, чтобы избежать столкновений (он будет использоваться как ПК)
- Должно быть, должно быть
int
илиlong int
- Должна быть назначаемой клиентской стороной перед вставкой
Мое текущее решение - взять CRC из конкатенации:
- ProcessodID
- Дата биографии
- Имя пользователя (строки, оборудование\связанные с пользователем данные)
- DateTime.Now(UNC)
В настоящее время это работает для меня, но, может быть, есть лучший подход для достижения моих целей? Любые комментарии, предложения, примеры или собственный опыт?
UPDATE: синхронизация между клиентом и сервером - это периодическое действие, поэтому оно может происходить 2-3 раза в день (это переменная конфигурации)