Подтвердить что ты не робот

SQL Server 2008 r2 или PostgreSQL

Я переписываю приложение для своей компании, которое требует базы данных. В настоящее время мы используем SQL Server 8, и я буду обновлять базу данных. Мой вопрос заключается в том, какую базу данных использовать. Я рассматривал как SQL Server 2008 r2, так и PostgreSQL 9.

База данных будет размещена в окне Windows Server 2008 и будет использоваться как для автономного приложения, так и для связанного с ним веб-сайта, написанного на .NET.

Некоторые из моих проблем:

  • Стоимость (очевидно, PostgreSQL выигрывает здесь).
  • Готово ли оно для прайм-тайма? Я прочитал кое-что о том, что он так же хорош, как SQL, но хотел бы получить от тех, кто его использует.
  • Простота использования. Мне очень нравится SQL Server. Я экспериментировал с PostgreSQL, и, хотя он отличается от SQL Server, я получаю от него зависание.
  • Скорость. Является PostgreSQL так же быстро, как SQL Server?
  • Можно ли использовать ADO.NET(.NET 4.0) с PostgreSQL и получить ту же функциональность, что и при использовании SQL Server (будет использоваться Linq или Entity Framework)?

Я НЕ буду преобразовывать нашу старую базу данных в SQL Server 8 в новую базу данных, поэтому меня не интересует никакое преобразование.

Мне было бы интересно мнение людей о них и если PostgreSQL является приемлемым решением для бизнес-приложения, учитывая вышеизложенное.

TIA

Брайан

4b9b3361

Ответ 1

Это зависит от размера вашей базы данных и зоны комфорта.

Версия SQL Server Express - это полностью функциональная бесплатная база данных размером до 4 ГБ; идеально подходит для большинства приложений малого и среднего размера. (в стороне - IMHO, MS Licensing - лучшее, что когда-либо случалось с сообществом с открытым исходным кодом!)

PostgreSQL - это полностью функциональная бесплатная база данных без ограничения 4Gb, однако PostgreSQL следует за стилем SQL и управлением базами данных Oracle. Если вы не знакомы с этим, вы можете столкнуться с некоторыми ошибками.

Throwing Dot Net в смесь добавляет не несущественную морщину. Можете ли вы использовать .Net с PostgreSQL? Да, но Dot Net будет работать лучше с SQL Server. Вам удобнее писать сложный код интерфейса ODBC? Если да, PostgreSQL остается претендентом. Если нет, вам будет лучше с SQL Server.

Ответ 2

Некромирование здесь.
Как отметил SteveG, SQL-Server Express, вероятно, вы хотите.

Но я широко использовал SQL-Server, SQL-Server Express и PostgreSQL, и вам следует знать, что SQL-Server Express имеет еще несколько неприятных ограничений, кроме только размера БД:

  • Для установки требуются права администратора (и перезапуск системы)
  • ReportingService Express может подключаться только к локальной базе данных,
  • ReportingService Express не может использовать другие источники данных, чем локальный сервер sql (без ODBC)
  • Некоторые функции ReportingServices отсутствуют (например, графики и форматы экспорта CSV/XML)
  • Ограничение использования 1 ГБ ОЗУ (то же самое в 2008/2012)
  • Ограничено одним процессором (новостная лента: ограничена меньшим количеством 1 Socket или 4 ядра)
  • нет Разделение таблиц и индексов
  • нет индексированных представлений
  • зеркальное отображение базы данных
  • советник по настройке базы данных
  • отсутствие уведомлений
  • не может отправлять электронную почту (вы можете сделать это, используя CLR-хранимые процедуры, если вам это абсолютно необходимо)
  • не может использовать/вызывать веб-службы (newspeak: нет конечных точек HTTP)
  • нет брокера услуг
  • нет полнотекстового и семантического поиска (требуется Express Advanced Services)
  • Инструмент Profiler не входит в состав выпусков SQL Server Express. (есть профилировщик SQL Express на codeplex)
  • Служба расписания работы недоступна в SQL Server Express.
  • Функция импорта и экспорта данных недоступна в SQL Server Express (можно/нужно загрузить)
  • не поставляется с SSIS


и как сказано
- размер базы данных 4 ГБ (повышен до 10 ГБ в SQL 2008 R2 и SQL 2012)



Обратите внимание, что предел в 10 ГБ не равен 10 ГБ или 10 ГБ (10 * 1024 3), это фактически 10'240 МБ (10 * 1'024 МБ), что на самом деле только 95% из 10 ГБ, которые я бы интерпретировал как 10GiB (10'240'000'000 * 100/10'737'418'240)

Добавьте к этому ограничение, которое Microsoft-SQL-Server будет запускать только в Windows (на сегодняшний день Linux-порт SQL-сервера уже идет, но только как CTP до сих пор и без BI).

Так к другим пунктам часто пропускается:

  • В Windows 7 у вас может быть только до 20 одновременных подключений, но не более.

    Если вам нужно больше, вам придется поместить вашу установку SQL Server в ОС Windows Server. Это означает, что если вы используете SQL-Server Express в прецеденте с более чем 20 одновременными пользователями, вам все равно потребуется лицензия на сервер Windows (количество соединений не связано с выпуском SQL Server, а в операционной системе). Вероятно, вы попадете в 1GB RAM-барьер раньше как узкое место.
  • Если вы хотите сэкономить, вам придется запустить движок db на том же сервере, что и веб-сервер, со всеми вытекающими из этого последствиями производительности.

Итак, теперь ваши точки (в порядке важности)
5. Да, есть Npgsql.dll(лицензия MIT), поэтому нет необходимости в ODBC
 НО: Если ваш код использует System.Data.SqlClient повсюду (например, параметры, особенно при копировании по всему коду), вам придется переписывать больше, чем просто код SQL (используйте абстрактные классы в System.Data. Common вместо этого или интерфейсы System.Data.IDB *).

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

  1. Простота использования:
    Немного больше кривой обучения, чем SQL-Server, но в целом не слишком разные. pgAdmin может не соответствовать вашим требованиям, если вы привыкли к SSMS, но есть несколько других инструментов управления и разработки, которые вы можете использовать (например, Navicat), которые очень близки к SSMS или даже превышают его.

4.Speed. Является PostgreSQL так же быстро, как SQL Server?
Да и нет. На самом деле это может быть быстрее. Разумеется, поскольку SQL-Server много работал над оптимизатором запросов, PostgreSQL может быть немного медленнее по сравнению с версией SQL Server Enterprise Enterprise (или каким бы то ни было текущим именем killer-edition). Но кто когда-либо имеет эту версию? Если вы можете использовать все ваши процессоры со всеми ядрами и всю оперативную память, которую вы хотите использовать в PostgreSQL, вы всегда будете быстрее, чем некоторые сокращенные Express или Standard версии SQL-Server с 1 процессором и от 1 до нескольких ГБ ОЗУ (окна ограничивает вас до 64 ГБ в 64-битном афаике, с Linux вы можете превысить 4 ГБ оперативной памяти на каждый предел приложения даже на 32-битном процессоре с ядром bigmem и можете заставить его обращаться к ОЗУ 64 ГБ на 32-битном процессоре, не говоря уже о 64-битные ограничения), независимо от того, насколько супер-оптимизирован оптимизатор запросов на SQL-сервере. Тем не менее, мое личное мнение от использования pg и ms заключается в том, что PostgreSql имеет лучший оптимизатор запросов, но это только мое мнение, у меня нет данных, чтобы поддержать это. Кроме того, Windows (Windows 7) - это медленная операционная система (опять же личное мнение, никаких данных для ее резервного копирования). Поэтому, когда вы можете позволить PG работать в Linux в безголовом режиме, он почти наверняка будет быстрее, чем SQL-Server, даже корпоративная версия.



Объем памяти
Вы можете полностью настроить PostgreSQL. Вы отвечаете за конфигурационный файл. Может быть небольшим или большим в зависимости от настроек ваших настроек. Общий объем памяти PG для достижения такой же, как SQL-Server в Windows, на сравнительной скорости будет немного ниже, это особенно верно, когда вы запускаете его в режиме безглавых в Linux (без сервера GUI).




Стоимость
Да, совершенно очевидно, что PostgreSQL выигрывает здесь. Не забывайте: это не только расходы на лицензирование сервера, о которых мы говорим, но также операционная система и удаленный доступ (например, дополнительные очень дорогие лицензии Citrix в Windows по сравнению с бесплатным SSH-доступом в Linux).
И другое: PostgreSQL - это OpenSource и Free. Если вы сравните его с SQL-сервером, вы не должны сравнивать его с Ultimate Enterprise Edition SQL-сервера (и сервера Windows), но с той версией, которую вы действительно могли себе позволить. PostgreSQL, однако, всегда будет единственным свободным окончательным всеохватывающим всеобъемлющим выпуском лицензии BSD с открытым исходным кодом. Если вы сравните функции PostgreSQL с Sql-Server Ultimate Enterprise Edition, вам также придется сравнить затраты с конечной корпоративной версией (и в 99% случаев вы найдете ее нецелесообразной),





2. Готово ли оно для прайм-тайма?

Да на самом деле Skype и WhatsApp запускает свою базу данных на PostgreSQL.

Вы обнаружите, что у него есть некоторые проблемы (плохие сообщения об ошибках - соединение отключено) при попытке запустить скрипты вставки 50+ МБ, но Microsoft SSMS аварийно завершает работу задолго до этой суммы.

Суммарный итог, PG, вероятно, более готов к PrimeTime, чем SQL-Server.

- PG имеет подкачку уже почти 10 лет (MySQL, а также синтаксис SQL-Standard совместим), SQL-сервер просто получил эту функцию с SQL-2012, только стандартно-совместимый.

  • Вы можете просто xcopy развернуть PostgreSQL, отлично работать без прав администратора

  • PG имеет поддержку XML, как и SQL-Server

  • У PG есть поддержка JSON, SQL Server? Я считаю, что они все еще полностью инвестировали в мышление о том, что XML - это будущее - и намеренно наносят ущерб сети как платформе. (теперь они добавляют поддержку JSON для CTP SQL-Server 2016, но хранят данные как nvarchar, поэтому вы не сможете указывать (полнотекстовые) индексы на определенных JSON-полях, как на PostgreSQL)

  • У PG есть поддержка HSTORE (столбец ассоциативного массива), SQL-сервер не

  • PG имеет столбцы массивов. Массивы являются основной частью программирования, за исключением SQL Server, где они не существуют (попробуйте параметризовать IN-предложение)...

  • PG имеет пространственную поддержку в течение длительного времени, пространственная поддержка SQL-Server относительно новая и использует расширения .NET и является объектно-ориентированной (hello RELATIONAL database?)

  • У PG есть лучший и быстрый полнотекстовый поиск (личное мнение, а не резервное копирование данных, поскольку это ясно, поскольку ясно, что Google-Chrome быстрее IE 8)

  • У PG есть компании, предлагающие коммерческую поддержку, как это делает Microsoft для SQL-Server; преимущество в том, что вы на самом деле получаете свои ошибки/функции-заявки, исправленные за ваши деньги на поддержку PG. Вероятно, вы знаете поддержку Microsoft, поэтому я пощажу вас в дальнейших раздорах...

  • У PG есть поддержка IPv6, Microsoft?

  • PG работает нормально при большой нагрузке, при использовании SQL-Server в Windows у нас были некоторые странные проблемы, которые появляются и исчезают наугад (Heisenbugs?).

  • SQL Server по-прежнему по сей день развертывает пессимистичный concurrency из коробки, PG не

  • Сжатие из коробки. В SQL Server сжатие - это функция "Enterprise Edition +", которая означает, что вы тратите стоимость как минимум 1 dev, чтобы получить возможность использовать сжатие. Как только вы заплатите за эту способность, вам все равно придется выяснить, как ее реализовать. Postgres делает это для вас из коробки автоматически и бесплатно.

  • Создание параллельного индекса. Это еще одна особенность, которую способен выполнять SQL Server, но только если вы можете позволить себе Enterprise Edition. У Postgres ваша спина на этом, и вы можете оставить свой кошелек дома.

  • Индексируемые функции - конкурентоспособность. В Postgres вы можете фактически индексировать определенные функции и поддерживать мобильность. С SQL Server, BOOM - сканирование таблицы - производительность adios

  • PG использует Unicode (UTF8) по умолчанию. Больше не может некомпетентный предшественник калечит все приложение с ужасным varchar и пропускает N 'для строкового типа данных, как это происходит в SQL Server. Синтаксис N еще работает, поэтому проблем с совместимостью вы не используете.

  • PG поддерживает рекурсивное каскадное удаление, SQL-сервер не поддерживает это вообще (хотя он активно сообщает вам, когда вы хотите поставить каскад на референтное ограничение)

  • PG поддерживает GREATEST (значение [,...]), LEAST (значение [,...]) < br/" > Microsoft: CASE WHEN HugeExp1 > HugeExp2 THEN HugeExp1 ELSE HugeExp2 END)...
    CASE WHEN N > 2 THEN 'ROYALLY SCREWED'...
    или этот очень ремонтируемый камень
    SELECT ( SELECT MIN(Price) FROM ( VALUES (123),(456) ) AS AllPrices(Price) )

  • PG поддерживает файлы CSV UTF-8 с тех пор, SQL Server не поддерживает файлы CSV UTF-8 до SQL2 Server 2014 SP2 (попробуйте импортировать базу данных MaxMind GeoIP - вам нужно написать свою собственную программу для SQL-сервер...).




Недостатки PG:

  • Версия Windows не такая стабильная и быстрая, как версия Linux

  • Нет свободного BI-инструмента, такого как SQL-Server-Reporting-Services (нормально, есть Eclipse BIRT, но он работает на JAVA).

    С другой стороны, за небольшую сумму вы можете получать сообщения stimulsoft, которые имеют больше форматов экспорта, чем SSRS, и на самом деле делают рендеринг в браузерах, отличных от IE, а также IE > 8, в отличие от SSRS (2005 - 2012 гг.) И пока я не прочитал SSRS 2014, не отличается от 2012 года).

Тем не менее, если ваша единственная проблема - полнотекстовый поиск с SQL-Server Express, вы должны взглянуть на Lucene.NET(Apache License).

Кроме того, будьте осторожны, если вы думаете об использовании SQL-Express в процессе производства:

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

Источник: bitwizards.com

Ответ 3

Из моего личного опыта я обнаружил, что PostgreSQL работает лучше в ящике Linux - теряйте ОС Windows. Я не очень хорошо знаком с SQL Server, но у меня не было проблем со скоростью и гибкостью при работе с Postgres. Хотя я не могу говорить с ADO.NET, у меня был большой успех с использованием Postgres в реальном мире (при постоянной нагрузке). В вашем случае единственной переменной, которую я мог видеть, является интеграция с ADO.NET. http://www.devart.com/dotconnect/postgresql/ может быть отправной точкой.

Ответ 4

Как уже упоминалось выше, это действительно зависит от того, насколько большой будет ваша БД.

В частности, разница в цене CPU-core и цене лицензии для этого ядра очень тяжелая. CPU ничего не стоит в этом сравнении. Поэтому, если вам нужны 16+ ядер, я бы дал Postgres шанс. вы сможете приобрести намного больше ядер для вашего сервера Postgres с сохраненными деньгами.

Я разработчик программного обеспечения и клиенты, которых у нас есть, должны платить гораздо больше за лицензию Sql Server, чем за все остальные вещи: softwaredevelopment, Clienthardware, Serverhardware, DB-Administration и т.д.

В большинстве случаев его дешевле, покупать новое оборудование, чем оптимизировать свой код. Но это не так для CPU SQL Server.

(однако вы все равно можете инвестировать в Ram/HDD без повышения стоимости лицензии)

Ответ 5

Я не пробовал использовать PostgreSQL с ADO.NET, но из моего опыта использования его с MySQL вам может быть лучше придерживаться SQL Server, если вы планируете использовать LINQ to SQL или Entity Framework.

Хотя есть, вероятно, сторонние библиотеки, которые позволят вам интегрировать эти технологии с PostreSQL, я думаю, вы обнаружите, что с SQL Server все будет намного более гладко. Практически все прекрасные инструменты, встроенные в Visual Studio, упрощают работу с такими технологиями, будут работать только с SQL Server.