В чём разница между PostgreSQL и Microsoft SQL Server

Ответ

PostgreSQL и SQL Server — это две мощные реляционные СУБД с разной философией, экосистемой и сильными сторонами.

Сравнительная таблица

Критерий PostgreSQL Microsoft SQL Server
Лицензия и стоимость Open-source (лицензия MIT), бесплатен для любого использования. Проприетарный. Требует коммерческой лицензии (но есть бесплатные редакции: Express, Developer).
Платформа Кроссплатформенный (Windows, Linux, macOS, BSD). В основном ориентирован на Windows. Linux-поддержка появилась в современных версиях.
Расширяемость Исключительно высокая. Поддерживает пользовательские типы данных, операторы, функции на C, Python и др. Расширяемость есть, но в большей степени через интеграцию с .NET (CLR-сборки).
JSON Превосходная встроенная поддержка типов JSON и JSONB (бинарный, с индексацией). Можно строить сложные запросы. Поддержка JSON через функции (JSON_VALUE, JSON_QUERY) для работы с текстовыми полями NVARCHAR.
Язык процедур PL/pgSQL (близок к стандарту SQL/PSM). T-SQL (Transact-SQL), очень богатый синтаксис, тесно интегрирован с экосистемой Microsoft.
Инструменты BI Сторонние решения или расширения (Citus, TimescaleDB для аналитики). Мощные встроенные инструменты: SSIS (Integration), SSAS (Analysis), SSRS (Reporting).
Репликация и HA Встроенная физическая и логическая репликация. Сторонние решения для кластеризации (Patroni). Always On Availability Groups, Failover Cluster Instances — тесно интегрированы с Windows Server.

Примеры различий в синтаксисе

-- Выборка N записей
-- PostgreSQL (стандарт SQL)
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;

-- SQL Server (проприетарный синтаксис)
SELECT TOP 10 * FROM users ORDER BY created_at DESC;
-- Или с OFFSET/FETCH (стандарт, поддерживается в новых версиях)
SELECT * FROM users ORDER BY created_at DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

-- Конкатенация строк
-- PostgreSQL (стандартный оператор)
SELECT first_name || ' ' || last_name AS full_name FROM employees;

-- SQL Server (оператор +)
SELECT first_name + ' ' + last_name AS full_name FROM employees;

Краткий итог для выбора:

  • Выбирайте PostgreSQL, если вам нужна бесплатная, кроссплатформенная, максимально расширяемая СУБД с сильной поддержкой современных типов данных (JSON, GIS).
  • Выбирайте SQL Server, если ваша инфраструктура построена на стеке Microsoft (.NET, Azure, Windows Server) и вам критически важны встроенные инструменты для бизнес-аналитики (BI) или глубокая интеграция с Active Directory.

Ответ 18+ 🔞

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

Таблица, чтобы не ебать мозг

Критерий PostgreSQL Microsoft SQL Server
Деньги и лицензия Полный open-source, бесплатный как воздух. Хочешь — бери, копируй, меняй — делай что хочешь. Проприетарный, за всё надо платить, ёпта. Хотя есть урезанные бесплатные версии Express и Developer, но это так, для разминки.
Где работает Да везде, сука! Windows, Linux, macOS — похуй, везде как дома. Исторически — царь и бог на Windows. Сейчас, правда, под Linux подтянулся, но всё равно чувствует себя там как мартышка на льдине.
Что можно вытворять Расширяемость — просто пиздец! Свои типы данных, операторы, функции на C, Python — твори, что в голову взбредёт. Расширяемость есть, но в основном через вот эту их .NET-вотчину, CLR-сборки. Не так свободно, но для своих — норм.
Работа с JSON О, это его конёк, блядь! Встроенные типы JSON и JSONB (бинарный, с индексацией). Запросы к JSON пишешь почти как к обычным таблицам — красота. Поддержка есть, но через функции типа JSON_VALUE, которые парсят текст в NVARCHAR. Работает, но ощущения те же, что резать масло тупым ножом.
Язык для хранимок PL/pgSQL — довольно стандартный, многим знакомый. T-SQL — ихняя фирменная фишка, синтаксис богатый до неприличия, но только в их экосистеме.
Инструменты для аналитики (BI) Сам не умеет, нужно брать сторонние штуки вроде Citus или TimescaleDB. А вот тут у них полный порядок, ёба! Свои родные SSIS, SSAS, SSRS — мощные, продуманные, но только в их мире.
Надёжность и репликация Встроенная репликация на любой вкус. Для высоких нагрузок есть Patroni и прочие кастомные решения. Always On Availability Groups, кластеры — всё заточено под Windows Server, работает как швейцарские часы, если, конечно, за них заплачено.

Ну и синтаксис, где они друг друга не понимают, как два барана

-- Взять топ-10 записей
-- PostgreSQL (по-человечески, по стандарту)
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;

-- SQL Server (свои заморочки)
SELECT TOP 10 * FROM users ORDER BY created_at DESC;
-- Или вот эта новая портянка, которую они добавили, чтобы на стандарт быть похожими
SELECT * FROM users ORDER BY created_at DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

-- Склеить имя и фамилию
-- PostgreSQL (логичный оператор ||)
SELECT first_name || ' ' || last_name AS full_name FROM employees;

-- SQL Server (плюсик, как в детском саду)
SELECT first_name + ' ' + last_name AS full_name FROM employees;

Короче, вывод простой, как три копейки:

  • Тащи PostgreSQL, если тебе нужна бесплатная, всеядная и невероятно гибкая база, где можно ковыряться до посинения, особенно если работаешь с JSON или геоданными. Свобода, блядь!
  • Бери SQL Server, если ты с головой погружён в мир Microsoft: твой сервер на Windows, backend на .NET, а отчёты для начальства нужно делать на встроенных инструментах, не выходя из стека. Интеграция — их второе имя, но за всё хорошее надо платить, ёпта.