Node.js з MySQL: створення швидких і масштабованих підключень до даних

watch 1m, 36s
views 2

14:42, 01.09.2026

Зміст статті
arrow

  • Налаштування середовища для розробки  
  • Встановлення з’єднання між Node.js та MySQL 
  • Створення RESTful API за допомогою Node.js та MySQL 
  • Підвищення продуктивності додатка 
  • Реалізація надійної обробки помилок та безпеки 
  • Планування масштабованості та зростання 
  • Заключні думки 

Поєднання Node.js і MySQL є популярним вибором серед розробників, які створюють сучасні веб-додатки. Node.js пропонує неблокуючу архітектуру, керовану подіями, що робить його ідеальним для додатків, що працюють у режимі реального часу. MySQL — це надійна реляційна база даних, відома своєю швидкістю та простотою. Разом вони дають розробникам змогу створювати швидкі та масштабовані рішення, що базуються на даних.

Наведена нижче інформація допоможе вам налаштувати середовище розробки, підключити Node.js до MySQL, створити RESTful API, оптимізувати продуктивність, безпечно обробляти помилки та спланувати майбутнє розширення.

Налаштування середовища для розробки  

Перед початком розробки надзвичайно важливо правильно налаштувати ваше середовище. Це забезпечує узгодженість та скорочує час на усунення помилок у майбутньому.

  1. Встановіть Node.js та npm
    Завантажте та встановіть Node.js з офіційного веб-сайту. npm (Node Package Manager) входить до його складу. Перевірте версії за допомогою команди:

node -v

npm -v

  1. Встановіть MySQL
    Встановіть MySQL і встановіть надійний пароль для користувача root. Використовуйте MySQL Workbench або інструменти командного рядка для управління базою даних.

  1. Створіть папку для проєкту
    Ініціалізуйте свій проєкт Node.js:

mkdir node-mysql-app

cd node-mysql-app

npm init -y

  1. Встановіть необхідні пакети

Для створення API вам знадобиться express, а для підключення до бази даних — mysql2:

npm install express mysql2

  1. Використовуйте dotenv для змінних середовища

Зберігайте конфіденційні облікові дані, такі як паролі до баз даних, у файлі .env. Встановіть dotenv:

npm install dotenv

Встановлення з’єднання між Node.js та MySQL 

Тепер ви готові підключити свій додаток Node.js до MySQL.

  1. Створіть файл .env

DB_HOST=localhost

DB_USER=root

DB_PASSWORD=yourpassword

DB_NAME=mydatabase

  1. Налаштуйте з’єднання з базою даних

Створіть новий файл db.js:


const mysql = require('mysql2');

require('dotenv').config();


const pool = mysql.createPool({

  host: process.env.DB_HOST,

  user: process.env.DB_USER,

  password: process.env.DB_PASSWORD,

  database: process.env.DB_NAME,

  waitForConnections: true,

  connectionLimit: 10

});


module.exports = pool.promise();

Це створює пул з’єднань для ефективної обробки численних запитів.

Створення RESTful API за допомогою Node.js та MySQL 

Після цього давайте створимо простий API для управління користувачами.

  1. Створення сервера Express

У server.js:

const express = require('express');

const app = express();

const db = require('./db');


app.use(express.json());

app.listen(3000, () => {

  console.log('Сервер працює на порту 3000');

});

  1. Створити маршрути

Додайте маршрути в той самий файл або в новий:

app.get('/users', async (req, res) => {

  try {

    const [rows] = await db.query('SELECT * FROM users');

    res.json(rows);

  } catch (err) {

    res.status(500).json({ error: 'Помилка бази даних' });

  }

});

app.post('/users', async (req, res) => {

  const { name, email } = req.body;

  try {

    const [result] = await db.query('INSERT INTO users (name, email) VALUES (?, ?)', [name, email]);

    res.status(201).json({ id: result.insertId, name, email });

  } catch (err) {

    res.status(500).json({ error: 'Помилка вставки' });

  }

});

Цей простий API дозволяє клієнтам читати та записувати дані користувачів.

Підвищення продуктивності додатка 

Щоб ваш додаток залишався чуйним, зосередьтеся на продуктивності:

  1. Використовуйте пул з’єднань
    Ця функція вже реалізована в нашому db.js, що зменшує навантаження, пов’язане зі створенням нових з’єднань.

  2. Оптимізуйте SQL-запити
    Використовуйте EXPLAIN у MySQL для аналізу запитів. Уникайте використання SELECT * у великих таблицях.

  3. Впроваджуйте кешування
    Для даних, до яких часто звертаються, використовуйте рішення для кешування, такі як Redis.

  4. Мінімізуйте обсяг даних у запитах до API
    Надсилайте лише необхідні дані. Уникайте надсилання великих JSON-блоків, коли в цьому немає потреби.

Реалізація надійної обробки помилок та безпеки 

Безпека та стабільність мають вирішальне значення для будь-якого додатка.

  1. Централізуйте обробку помилок

Використовуйте проміжне програмне забезпечення в Express:

app.use((err, req, res, next) => {

  console.error(err.stack);

  res.status(500).send('Щось пішло не так!');

});

  1. Перевірка введених даних
    Використовуйте бібліотеки, такі як Joi або express-validator, щоб перевіряти введені користувачем дані.

  2. Запобігання SQL-ін’єкціям
    Використовуйте параметризовані запити, як показано раніше (? заповнювачі).

  3. Захистіть файли середовища
    Ніколи не додавайте файли .env до системи контролю версій. Використовуйте .gitignore.

  1. Використовуйте HTTPS
    У виробничому середовищі завжди надавайте доступ до вашого додатка через HTTPS, щоб захистити дані під час передачі.

Планування масштабованості та зростання 

У міру зростання вашого додатка ви повинні готуватися до збільшення трафіку та обсягу даних.

  1. Модульна база коду
    Розділіть маршрути, контролери та сервіси на окремі файли. Це полегшить супровід вашого проєкту.

  2. Горизонтальне масштабування
    Запускайте кілька екземплярів Node.js за балансувальником навантаження, таким як Nginx.

  3. Використання сервісного шару
    Створіть сервісний шар між маршрутами та логікою бази даних для повторного використання коду та підтримки бізнес-правил.

  4. Реплікація бази даних
    MySQL підтримує реплікацію. Використовуйте репліки для читання, щоб розвантажити головну базу даних від трафіку читання.

  5. Моніторинг та ведення журналів
    Використовуйте такі інструменти, як PM2, Loggly або Datadog, для моніторингу продуктивності та журналів.

Заключні думки 

Node.js та MySQL — це потужне поєднання для створення масштабованих веб-додатків. Завдяки неблокуючій архітектурі та структурованому реляційному сховищу розробники можуть створювати швидкі, безпечні та ефективні системи. Правильно налаштувавши середовище, оптимізувавши з’єднання та спланувавши майбутнє зростання, ви зможете створювати додатки, готові до роботи в умовах виробничого навантаження.

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

-7.1%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 4096 Windows

21

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 4096 Windows

18.1

При оплаті за рік

-21.4%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
500 GB
wKVM-SSD 8192 HK Windows

67

При оплаті за рік

-7.2%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 1024 Linux

6.4

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 4096 Linux

15

При оплаті за рік

-9.6%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
wKVM-SSD 32768 Metered Windows

156

При оплаті за рік

-9.7%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 65536 Windows

138.99

При оплаті за рік

-7.2%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 1024 Linux

5.92

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

16.45

При оплаті за рік

-10%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 32768 Linux

69.99

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.