Должен ли я защищать миграцию от доступа к (My) SQL

StackOverflow https://stackoverflow.com/questions/2768987

Вопрос

У нас есть приложение Windows MFC, которое написано для базы данных доступа на сервере компании. БД не так много: 19 МБ. У большинства 2-3 пользователей получают доступ к нему в любое время. Он используется в заводской среде, где скорость доступа (или его отсутствие) по интрасети становится заметной, так как она является частью времени изготовления для наших виджетов.

Сценарий это: поскольку каждый виджет завершен, он получает запись в БД. К концу года БД больше и в поисках записи занимает больше времени и дольше. Решение до сих пор было вручную перемещать более старые записи в архивный стол примерно раз в год.

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

Я понимаю, что если мы использовали SQL, время поиска не будет подняться, поскольку таблица становится больше, потому что весь .mdb не должен быть отправлен через сеть каждый раз. Это правильно? У кого-нибудь есть проницательность о том, может ли это того стоит пойти в беду (время и деньги) миграции на новую БД, или я должен просто добавить дополнительную функциональность на приложение, которое мы имеем сейчас, и, возможно, автоматически очистите старых записей Время от времени и добавьте дополнительные удобства в приложение, чтобы получить более старые записи, когда это необходимо?

Спасибо за любую мудрость, вы можете поделиться ..

Это было полезно?

Решение

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

  1. Индексы. Если ваши запросы начнут замедляться, убедитесь, что у вас есть правильные показателиhttp://support.microsoft.com/kb/304272.
  2. Ваше сетевое соединение между компьютерами быстро. Может быть, обновление до гигабитных карт и роутер? Возможно поставить БД на привод SCSI (RAID 10 для скорости и избыточности)

Бросая передовые технологии при простых проблемах - дорогой способ пойти и не всегда ответ!

Другие советы

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

Поскольку другие упомянули потратить время + деньги на настройку и обслуживание, а затем иметь кого-то поддерживать и управлять и поддерживать этот сервер базы данных, безусловно, является возможностью здесь. Тем не менее, имейте в виду, что просто мигрирование на основе реактивного приложения на SQL Server во многих случаях запустится медленнее, и на самом деле SQL Server медленнее, чем струя, когда сеть не участвует.

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

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

Я, вероятно, переехал на Microsoft SQL Server 2008 R2 Express Edition (Free) или MySQL (бесплатно), если есть как финансирование, так и время для ввода в слой доступа к данным. Поскольку вы будете создавать запросы удаленного сервера и не работать на данных по локальной рабочей станции, этот ход очень вовлечен с точки зрения развития.

Однако вы должны проанализировать, будет ли его более экономически эффективные для выполнения вашего архивального процесса ежеквартально или ежемесячно, и просто переместить базу данных архива в SQL Server 2008 R2 Express Edition. (Вы можете установить инструменты клиентских инструментов Microsoft SQL Server Management Client On Workstations и запрашивайте архивную базу данных для более быстрых отчетов о исторических данных, не переписывая всее производственное приложение; подобные решения существуют для использования MySQL или других OSS / Free RDBMS).

У меня есть базы данных с базами данных 300 МБ, хотя они должны быть расшифровки на SQL Server по другим причинам. 19 МБ относительно невелики. Если производительность достаточно плохая, что архивирование скорость скорости, а затем проверьте индексы в таблицы для всех ваших полей сортировки и выбора. Альберт дал вам хороший URL, чтобы проверить.

Весь MDB файлы не проходят вниз по проволоке. Если вы не пропустили индексы.

Вместо доставки DB через сеть к клиенту, а затем выполнение запросов, вы можете вместо этого можно написать небольшую обертку на сервере, который обрабатывает запросы, ищет результат в результате DB (с использованием драйвера ODBC SQL + Access) и возвращает результат. Это позволяет избежать накладных расходов большой миграции, вам может не потребоваться и по-прежнему избавляется от основной проблемы, которую пользователи испытывают.

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

Я понимаю, что если мы использовали SQL, время поиска не будет подняться, поскольку таблица становится больше, потому что весь .mdb не должен быть отправлен через сеть каждый раз. Это правильно?

Эта общая идея верна практически для всех баз данных. Идея базы данных состоит в том, чтобы отделить ваше приложение от фактических данных. Данные проживают в сервере базы данных. Ваше приложение не.

У кого-нибудь есть какие-то понимание, может ли это того стоит пойти на беду (время и деньги) миграции на новую БД

да. Предложив это много раз. Это дорого. Все сложно. Ваша база данных MS-Access никогда не станет лучше или быстрее.

Другие серверы баз данных будут (и могут) стать быстрее и сложнее. В конце концов, вы больше не отправляете файлы MDB через сеть. Ограничения уменьшаются. Вы работаете со стандартным SQL через ODBC. Любая база данных будет работать в конце ODBC. Вы можете пожарить поставщикам, чтобы найти лучше, быстрее, дешевле продукты. Как только вы прекратите использовать доступ, у вас есть выбор.

Либо перестаньте использовать доступ сейчас или планировать страдать с ним навсегда. И переделать это решение каждый год до конца времен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top