вопрос о частоте обновления доступа - PullRequest
1 голос
/ 15 июня 2010

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

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

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

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

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

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

Ответы [ 4 ]

1 голос
/ 15 июня 2010

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

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

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

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

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

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

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

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

1 голос
/ 15 июня 2010

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

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

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

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

1 голос
/ 15 июня 2010

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

1 голос
/ 15 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...