2010-06-14 3 views
1

У меня есть таблица в базе данныхвопрос о частоте обновления доступа

это доступ к базе данных используются на регулярной основе доступа, в основном из 9-5

кого-то еще есть копия этой точной таблицы. иногда записи добавляются, иногда удаляются, а иногда обновляются данные в записях.

Мне нужно обновлять таблицу базы данных доступа за пределами таблицы каждый час или около того. Каков наилучший алгоритм обновления данных? существует около 5000 записей.

будет ли это сильно запирать стол на несколько секунд каждый час?

я хотел бы публично извиниться за мой грубый комментарий к Дэвиду Фентон

+2

Рассматривали ли вы перемещение таблицы на SQL Server? Или какая-либо другая база данных сервера или даже SharePoint? Таким образом, как локальные, так и удаленные пользователи будут работать с одной и той же таблицей, исключая необходимость согласования двух копий. – HansUp

+0

nope for not that is not a option –

+0

В этом случае вам нужно распространять изменения в обоих направлениях между локальными и удаленными таблицами? Какие данные вы будете передавать между локальными и удаленными сайтами? ... всю таблицу, или только записи, которые изменились в любом месте. Это звучит потенциально неприятно, и я не знаю, смогу ли я помочь. – HansUp

ответ

1

У меня сложилось впечатление, что этот вопрос взаимосвязано части вы исследовала с предыдущими вопросами:

  1. файл «слушатель», чтобы обнаружить наличие нового файла и сделать что-то с ним, когда нашли
  2. список файлов с некоторым расширением в папке
  3. DoCmd.TransferText тянуть файл данных в базе данных
  4. Insert, Update, Удаление записей в таблице на основе импортируемого набора записей

Возможно, пришло время дать нам более подробную картину того, с чем вы имеете дело.

Тони спросил, находятся ли оба сайта в одной глобальной сети (глобальная сеть). Вы ответили, что находятся в Windows. В другом месте вы сказали, что используете сеть. Расскажите, пожалуйста, о сети.

Я все еще не уверен, нужен ли вам обмен данными в одностороннем или двустороннем режиме. Вы говорили об импорте изменений из удаленной таблицы в локальную основную таблицу. Нужно ли выполнять один и тот же тип операции на удаленном сайте: импортировать изменения, внесенные в таблицу на главном сайте?

Сообщите нам, что должно произойти в связи с проблемой, которую Джеймс поднял. Могут ли локальные и удаленные пользователи редактировать одну и ту же запись? Если они смогут, как вы разрешите конфликт? Точно так же, что должно произойти, если удаленный пользователь обновляет запись, а локальный пользователь удаляет свою копию этой записи?

Основываясь на том, что вы сказали нам до сих пор, это звучит как настоящая проблема для Access, сделанная более сложной по сравнению с темпами изменения записи (5000 в час). Мне нравится схема, предложенная Кевином. Однако ваша задача будет более сложной, поскольку вам также необходимо учитывать удаление записей на обоих сайтах.

Кажется, вам, возможно, придется создать что-то, что дублирует функцию репликации Access. Возможно, вам стоит взглянуть на Jet Replication Wiki, чтобы узнать, можете ли вы изменить свой дизайн, чтобы воспользоваться репликацией. Я не могу вам помочь, и, к сожалению, вы, похоже, разочаровали Дэвида Фентона, который является ведущим авторитетом в Jet Replication.

+2

Репликация Jet, вероятно, не подходит для этого тома обновлений. Используя косвенную репликацию, это, безусловно, можно было бы сделать (и он использует свои собственные Dropboxes и «Listener» для обмена информацией), но максимальная степень детализации для запланированной синхронизации - 15 минут. Если вам нужна более низкая латентность, это неправильное решение. На самом деле, я бы сказал, что ничего, кроме единой доступной по центру базы данных, не является правильным решением. –

+0

так что я! спасибо david –

+0

Я не знаю, связано ли это с привязкой @ HansUp к вики-репликации Jet, но я только что проверил, и теперь он появляется перед страницами репликации MS в Google при поиске в разделе «Репликация по каналам».«Конечно, MS, вероятно, очищает как можно больше документации по репликации со своих веб-сайтов, поэтому, возможно, нет ... « Репликация доступа »по-прежнему почти игнорирует мою Wiki, хотя я включаю этот термин в заголовок каждой страницы. –

1

Если несколько секунд производительности является критической, вы бы скорее перейти к более двигателю базы данных (например, SQLite, MySQL, сервер MS SQL). Если вам нужен один файл, то Sqlite лучше для вас. Все они используют блокировки с одиночной записью, поэтому вы можете читать и писать одновременно.

Если вы останетесь с доступом, вам, вероятно, придется реализовать таймер, чтобы обновлять только несколько записей за раз.

+0

Я один из сильнейших поклонников Sqlites, но я не уверен, что порекомендую его для этой проблемы. Сетевой доступ (ODBC или что-то еще) не является неотъемлемой частью БД, а добавляется третьей стороной, а также блокировка осуществляется на уровне уровня FILE, а не на уровне строки. –

+0

Я согласен, но он не использует сеть, не так ли? –

+0

Да, я действительно использую сеть –

1

Прежде чем делать что-либо еще, вам необходимо установить «правила», насколько это происходит при столкновении.

Если строка в локальной копии обновлена ​​и обновлена ​​одна и та же строка в удаленной копии, какая из них является «правильной» версией? То же самое для удаления, вставки еще больнее, поскольку у вас может быть «тот же» набор значений, но, возможно, другой ключ.

После того, как вы определили, как обращаться с каждым из этих случаев, вы можете перейти к размышлению о реализации.

Как и другие плакаты, предложенный способ полностью избежать этих проблем - это переключиться на SQLServer или любую другую «правильную» базу данных, которая может быть обновлена ​​по сети всеми пользователями и где проблемы параллелизма обрабатываются СУБД при обновлении применяется.

1

Другие пользователи уже предложили переключиться на серверную базу данных, то есть на SQL-сервер и т. Д. Я бы повторил это и сказал, что это лучший способ пойти, однако, если вы застряли с доступом и не имеете выбора, я бы предложил вам добавить поле (с индексом) вдоль строк «Последнее обновление». Затем вы можете экспортировать все записи, которые были изменены в течение определенного периода времени. Экспортируйте этот файл в формате CSV, отправляйте его на удаленный сайт и импортируйте в базу данных «master». С небольшим количеством скриптов вы можете автоматизировать этот процесс.

Смежные вопросы