Коротка відповідь
middleЯ працював з PostgreSQL, MySQL і MongoDB. SQL – реляційна модель із строгим сховищем типів, транзакціями ACID і складними join‑запитами; NoSQL – документо‑орієнтовані, графові чи ключ–значення сховища з гнучким сховищем даних і горизонтальним масштабуванням.
Повне пояснення
Що це і навіщо
- SQL (Structured Query Language) – мова для роботи з реляційними базами даних: PostgreSQL, MySQL, SQLite. Використовується там, де потрібна консистентність, складні транзакції і зв’язки між таблицями.
- NoSQL – категорія нереляційних сховищ: документо‑орієнтовані (MongoDB), графові (Neo4j), ключ–значення (Redis) і колонки (Cassandra). Підходить для великих обсягів даних, швидкого горизонтального масштабування і гнучких схем.
Ключові принципи/терміни
- ACID – Atomicity, Consistency, Isolation, Durability (SQL).
- BASE – Basically Available, Soft state, Eventual consistency (NoSQL).
- Schema‑less – відсутність фіксованої схеми в NoSQL.
- Joins – можливість об’єднання таблиць у SQL; в NoSQL часто замінюються денормалізацією або агрегаційними фреймворками.
Як це працює
- У SQL запити компілюються в план виконання, оптимізатор вибирає найшвидший шлях (index scans, hash joins).
- У NoSQL дані зберігаються у форматах JSON/ BSON, індекси створюються по полям; запити виконуються без транзакційного логування.
Практика й реалізація
- PostgreSQL:
CREATE TABLE users(id SERIAL PRIMARY KEY, name TEXT); - MongoDB:
db.users.insertOne({name: "Alice"});
Тестування
- Для SQL можна використовувати
jestзpg-memабоsqlite3. - Для MongoDB –
jestзmongodb-memory-server.
Оптимізація запитів
- SQL: індекси,
EXPLAIN, кешування результатів. - NoSQL: денормалізація, використання
shardingіreplication.
Безпека
- SQL: параметризовані запити, роль‑базований контроль доступу.
- NoSQL: валідація схеми (MongoDB Schema Validation), обмеження прав користувачів.
Особливості в контексті ORM
- Prisma, TypeORM – працюють переважно з SQL; для NoSQL потрібні специфічні драйвери (Mongoose, Sequelize‑Mongo).