Базові відмінності при роботі з базами даних MySQL і PostgreSQL Дилетантський огляд

Продовжуючи своє знайомство з БД PostgreSQL, з вже наявними навичками роботи в БД MySQL, виявив ряд цікавих корисних особливостей, які на практиці часто не вистачало в MySQL. Мета цього огляду не в створенні нескінченного суперечки, що краще, а дати легке порівняння, яке зазвичай обговорюється програмістами на обідній перерві в найближчій кав'ярні. У порівнянні набуваються нові знання і досвід, тому воно того варто.

1. Вакансії багатьох компаній досить часто пишуть необхідні знання через косу риску MySQL/PostgreSQL

На мій погляд, це зовсім різні бази даних, тому просто ставлячи між ними косу риску враховуючи лише під увагу написання схожих SQL запитів не зовсім правильно. Все таки пару місяців потрібно для PostgreSQL, щоб почати себе впевнено почувати в клієнті psql після MySQL.

Що я б виділив на етапі компіляції з исходников цих двох БД,

1.1 PostgreSQL не має типи движків (MySQL — innodb, mysql, архів тощо), але має купу розширень, подібно PHP, які можна додатково ставити, розширюючи можливості. Створюється враження, що PostgreSQL це свого роду каркас, який набиваешь функціональністю.
1.2 Розгортання сервера MySQL зводитися лише по суті до запуску сервера (systemctl start mysql.conf, service mysql start), тоді як в PostgreSQL потрібно завести окремого користувача в операційній системі) для запуску сервера, розгорнути окремо кластер (круте слово, але по суті теж саме, що і в MySQL — кілька баз даних на одному сервері)
1.3 Фізична вказівку розташування нових таблиць на диску (табличне простір) на рівні SQL для PostgreSQL.

і т. д.

2. Відмінності в клієнтах при запитах до БД — psql і mysql.

2.1 Що явно не вистачає в MySQL, так це подоба команди \watch у psql, яка дозволяє, вказавши секунди, повторювати виконання SQL-запиту (аналог утиліти watch -n). Це звичайно зручно для того, щоб відстежувати як йде міграція (наповнення даних таблиць)

select NOW() \watch 1;


2.2 В PostgreSQL за замовчуванням усі запити виконуються не відображають час виконання, на відміну від MySQL, потрібно додатково вказувати команду \timing. Повторне виконання команди відключає опцію. Такий прийом часто зустрічається у багатьох налаштуваннях PostgreSQL, на відміну від MySQL, де це потрібно писати більш довший. При цьому, в PostgreSQL, коли дивишся довідкову інформацію, то поруч в круглих дужках відображається поточне значення показувалася налаштування. Дуже зручно. Погано тільки, що одним шрифтом тесту йде, не відразу візуально швидко сприймається.

2.3 В PostgreSQL можна швидко переглянути історію запитів з psql командою \s, тоді як у клієнта MySQL потрібно використовувати клавіші вгору/вниз задію функціонал readline бібліотеки (або дивитися історію команд окремо від клієнта mysql). Це часто потрібно, коли тестируешь повторно запит на використання індексів. Було б зручніше в PostgreSQL після набору \s замість копіювання запиту, набирати номер запиту, як це робиться при profile в MySQL.

3. Є багато спільних моментів, які, приміром, в MySQL більш зручні, а в PostgreSQL більш складні.

Наприклад, висновок результату select, який не вміщується по горизонталі. В обох клієнтів баз даних є вертикальний вивід. Для MySQL досить додати в кінець запиту \G, тоді як в PostgreSQL на початку потрібно виконати \pset expanded. Коли потрібно по швидкому переглянути, варіант PostgreSQL на мій погляд це не зовсім зручно.

4. Особливо цікавий момент в PostgreSQL, на відміну від MySQL, це більш тісна інтеграція з оболонкою bash.

Можна з psql виконувати shell команди (на зразок як в vim редакторі :! pwd), зберігати змінні результат і потім використовувати в генерації SQL запитів. В MySQL це все можна зробити, але більш довгими і не завжди зручними шляхами.

5. PostgreSQL виділяється особливою любов'ю до використання змінних оточення (export) на відміну від MySQL.

Ти це відчуваєш відразу після того, як скомпілював исходники і починаєш «розгортати» сервер, вказуючи шлях до директорії бази даних-D або PGDATA).

На цьому думаю, закінчити свій побіжний дилетантський огляд. Як я вже писав, метою є не позиціонування тієї чи іншої БД, а отримання додаткового досвіду через порівняння. Для себе конкретно вивчення PostgreSQL є додатковою конкурентною технічним перевагою.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.