В настоящее время я планирую инфраструктуру для своего будущего веб-проекта. Я хочу пойти по тому же пути, что и Джоэл, имея по одной БД на каждого клиента, и теперь думаю, какой движок БД мне подойдет. Лучшим, конечно, был бы SQL Server, но я не могу позволить себе полноценную версию в данный момент и не думаю, что SQL Server Express будет хорошим выбором для загруженной службы. Теперь я подумываю использовать вместо этого PostgreSQL. Учитывая, что моей средой разработки будет ASP.NET 3.5 с, скажем, NHibernate или LINQ to SQL, сколько проблем у меня возникнет, если я буду использовать PostgreSQL вместо SQL Server?
Спасибо!





Почему бы не начать с SQL Server Express и не перейти на него, когда у вас есть деньги? Таким образом вы сможете приблизиться к тому, что считаете идеальным, и снизить затраты на конверсию.
Если вы выберете PostgreSQL, вы не сможете использовать LINQ to SQL. В настоящее время LINQ работает только с SQL Server (возможно, с Oracle). Я не уверен насчет NHibernate. Кроме того, если вы используете PostgreSQL, в прошлый раз, когда я проверял, они отказались от поддержки Windows. Итак, вы будете искать второй компьютер под управлением Linux для БД.
[РЕДАКТИРОВАТЬ]
Оказывается, PostgreSQL поддерживается в Windows. Не могу вспомнить, где я видел отмену поддержки. В любом случае, я слышал, что в Linux он работает лучше, так что вы, возможно, захотите сделать это в любом случае.
Postgres имеет версии Windows всех версий 8.x: postgresql.org/download/windows
Поддержка Postgres 8.0.x в Windows некоторое время назад была прекращена.
Я не думаю, что это плохая идея, но отличный опыт.
Между прочим, NHibernate - это способ перехода от Linq к Nhibernate, который находится в стадии интенсивной разработки и доступен в магистрали, поэтому, если вам все равно, «что мне все равно» о Linq, не бойтесь его использовать.
NHibernate нормально работает с PostgreSQL (независимо от того, находится ли база данных в Windows или UNIX-подобных ОС), а .NET хорошо работает с ним с помощью поставщика базы данных Npgsql.
Единственная «проблема», с которой вы столкнетесь, - конечно, PostgreSQL не поддерживает T-SQL. Фактически, его язык хранимых процедур PL / pgSQL ближе к PL / SQL Oracle, чем к T-SQL MS SQL Server. Таким образом, вам придется перекодировать сохраненные процессы, и будут некоторые подводные камни, на которые следует обратить внимание, если вы будете использовать ADO.NET. Если вы используете NHibernate, вам, вероятно, не придется сильно об этом беспокоиться. Нет LINQ to SQL, так что вам не повезло.
PostgreSQL масштабируется и теперь работает нормально с Windows (более ранние версии не поддерживали Windows формально), а pgAdmin - хороший инструмент управления для него, вы сможете делать большинство вещей, которые вы можете делать с инструментами графического интерфейса SQL Server, с это в короткие сроки.
Для людей, которые приходят сюда (так как этому ответу 7 лет), я использую именно эту настройку, и пока она работает отлично.
В наши дни postgres работает очень быстро с .net, и он так же хорош или даже лучше, чем проприетарный mssql.
Я использую sql server express в производстве с небольшим приложением, и он поддерживает 9 дБ (реальных клиентов, использующих его) безупречно. Вам просто нужно следить за ресурсами сервера, чтобы решить, когда перейти на платную версию SS.