πŸ” Π§Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ: PostgreSQL ΠΈΠ»ΠΈ MySQL? Π˜Ρ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ сравнСниС ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

Оба PostgreSQL ΠΈ MySQL ΡΠ²Π»ΡΡŽΡ‚ΡΡ популярными систСмами управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Они ΠΈΠΌΠ΅ΡŽΡ‚ различия ΠΈ особСнности, ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ зависит ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… потрСбностСй.

PostgreSQL:

PostgreSQL являСтся ΠΌΠΎΡ‰Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционной систСмой управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (ORDBMS). Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ слоТныС запросы.


// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² PostgreSQL
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    age INTEGER
);

MySQL:

MySQL являСтся популярной систСмой управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Она обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ простоту использования. MySQL Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π·Π°Π΄Π°Ρ‡ с Π½ΠΈΠ·ΠΊΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.


-- ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² MySQL
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

Π’ Ρ†Π΅Π»ΠΎΠΌ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ слоТныС запросы, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ PostgreSQL. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° простота использования ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для простых Π·Π°Π΄Π°Ρ‡, Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ MySQL.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

πŸŽ―Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΡ€ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…! Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ Π΄Π²ΡƒΡ… самых популярных рСляционных систСмах управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π‘Π”) - PostgreSQL ΠΈ MySQL. И сСгодня я расскаТу Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ: PostgreSQL ΠΈΠ»ΠΈ MySQL?

πŸš€ΠžΠ±Π·ΠΎΡ€

Оба PostgreSQL ΠΈ MySQL ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для управлСния вашими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Однако, Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ свои отличия ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ области примСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€.

πŸ”ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ различия

ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с рассмотрСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основных Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ PostgreSQL ΠΈ MySQL:

  • **Π―Π·Ρ‹ΠΊ запросов**: PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ язык запросов SQL, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±ΠΎΠ»Π΅Π΅ слоТныС запросы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ. MySQL ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ простой ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ язык запросов.
  • **Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ**: PostgreSQL ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ большС встроСнных ΠΈ сторонних Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ большС возмоТностСй для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². MySQL ΠΈΠΌΠ΅Π΅Ρ‚ мСньшС возмоТностСй для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.
  • **Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…**: PostgreSQL стрСмится ΠΊ надСТности ΠΈ обСспСчиваСт ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (атомарности, согласованности, изолированности ΠΈ долговСчности). MySQL Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСниями.
  • **ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ**: Π’ зависимости ΠΎΡ‚ вашСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ случая использования, PostgreSQL ΠΈΠ»ΠΈ MySQL ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ подходящими для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. PostgreSQL ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ большС возмоТностСй для Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ MySQL ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ кластСризации.

πŸ”ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Рассмотрим, для ΠΊΠ°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ каТдая ΠΈΠ· Π‘Π£Π‘Π”:

  • **PostgreSQL**: PostgreSQL прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для слоТных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… гибкости ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сцСнариСв, Π³Π΄Π΅ трСбуСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ возмоТностСй.
  • **MySQL**: MySQL ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для простых Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π»ΠΎΠ³ΠΈ, элСктронная коммСрция ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π³Π΄Π΅ SQL-запросы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простыми. Он Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ситуаций, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ быстро Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ просто Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

πŸ§ͺΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ выполнСния запросов Π² PostgreSQL ΠΈ MySQL:

-- ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² PostgreSQL
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INTEGER,
  email VARCHAR(100) UNIQUE
);

-- ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для выполнСния запроса Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² PostgreSQL
SELECT * FROM users WHERE age >= 18;

-- ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² MySQL
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT,
  email VARCHAR(100) UNIQUE
);

-- ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для выполнСния запроса Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² MySQL
SELECT * FROM users WHERE age >= 18;

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ с использованиСм PostgreSQL ΠΈ MySQL.

βš–οΈΠ—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС, Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ PostgreSQL ΠΈ MySQL зависит ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… потрСбностСй ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. PostgreSQL ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС усилий для настройки ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. MySQL являСтся Π±ΠΎΠ»Π΅Π΅ простым для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ простых Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НадСюсь, этот ΠΎΠ±Π·ΠΎΡ€ ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ: PostgreSQL ΠΈΠ»ΠΈ MySQL. Π£Π΄Π°Ρ‡ΠΈ Π² вашСм ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ ΠΏΠΎ ΠΌΠΈΡ€Ρƒ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

SQL ΠΈ POSTGRESQL | Π£Ρ€ΠΎΠΊ #4. ΠŸΠΎΡ‡Π΅ΠΌΡƒ PostgreSQL?

Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΅Π΄ΠΈΠ½ΠΊΠΎΠΌ: PostgreSQL vs MySQL / А.Чистяков (Π’Π˜Π¨), Π”.Подольский (GitInSky.com)

MySQL ΠΈ PostgreSQL: Ρ‡Ρ‚ΠΎ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ» ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… MySQL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

πŸ” Π§Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ: PostgreSQL ΠΈΠ»ΠΈ MySQL? Π˜Ρ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ сравнСниС ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ MySQL Π½Π° Mac OS: пошаговая инструкция