2009-11-17 3 views
0

У меня есть (потенциальный) клиент, у которого было несколько нескольких ранее разработанных приложений Access, которые они хотят обновить, чтобы использовать задний конец базы данных. К сожалению, из-за затрат они не хотят использовать SQL Server, и SQL Express, вероятно, не подходит из-за ограничений лицензирования.Доступ к MySQL или Postgres?

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

Возможны ли какие-либо из этих двух баз данных? Что было бы предпочтительнее, и есть ли другие альтернативы, которые следует учитывать?

ADDED: Они ищут замену базы данных, но сохраняют переднюю часть доступа. По-видимому, они выглядели бы довольно простыми приложениями, но использовались для большого числа пользователей (80+), следовательно, были связаны с последствиями SQL Server и непригодностью SQL Express.

+0

Являются ли они действительно доступными приложениями (с доступом как интерфейсом) или приложениями Jet (написанными чем-то другим, использующим MDB-файл в качестве хранилища данных)? –

ответ

1

У нас очень хорошие впечатления от Access -> ODBC -> MySQL/Firebird. Я предполагаю, что PostGres должен быть таким же простым.

Это не решит все ваши проблемы с производительностью (если у вас есть). Лучше всего добиться значительного увеличения производительности - это использовать просмотры/хранимую процедуру/пройти через запросы, чтобы максимально увеличить нагрузку на (быстрый) сервер базы данных.

+0

Вы говорите, что хотите добиться максимально возможной работы на уровне базы данных для лучшей производительности? – JohnB

+1

@JohnB: особенно запросы, которые объединяют несколько таблиц, должны быть перемещены на сервер в виде представления. Доступ будет загружать все записи из всех этих таблиц, прежде чем он сможет присоединиться к ним «на стороне клиента», в то время как ваш сервер базы данных не будет иметь проблем с объединениями на больших таблицах. – Birger

+0

oh, так что вы говорите о Access (client)/MySQL (server) senario.Я в основном разрабатываю приложения на C#, и я думал, что вы имели в виду, что сервер базы данных выполняет все манипуляции с данными (т. Е. Как можно быстрее установить запись), а не иногда (в каждом конкретном случае) некоторые манипуляции на уровне приложения. Я склонен думать о вызове базы данных как о дорогостоящем. Кстати, я разработал приложение Access -> ODBC -> MySQL, и этот стек работал отлично! – JohnB

0

Если вы не хотите переписывать всю свою логику приложения, вы можете связать таблицу mysql/mssql/postgres при доступе с помощью ODBC (щелкните правой кнопкой мыши> Таблица ссылок).

Сказанное будет медленнее, чем переписывать приложение в .net, и вы не сможете воспользоваться некоторыми функциями, которые базы данных поддерживают изначально. Также несовместимость db вызовет некоторые странные ошибки.

+1

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

+0

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

0

Фактически было опубликовано хотя бы одно сообщение в новостной ленте, в котором сообщалось, что плакат имеет более 75 пользователей в выпуске SQL Server Express 2005. Ключ состоит в том, что это максимальное количество подключенных дросселей, а не количество подключенных пользователей. Кроме того, те, которые дросселируются, просто ждут, пока первые пять не будут выполнены. Поэтому, если ваше приложение не тратит много времени на обработку «пакетного» стиля, тогда это может работать нормально.

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

OTTH (с третьей стороны) возможно установить несколько экземпляров SQL Server Express, и каждый из аппликаций использует свой собственный экземпляр, чтобы сохранить количество подключений вниз. Я просто догадываюсь, что это можно сделать. Я также понял, почему MS не позволит вам играть в систему таким образом.