Коротка відповідь
seniorЯ працюю з реляційними СУБД (PostgreSQL, MySQL), документо‑орієнтованими (MongoDB) та графовими (Neo4j).
Повне пояснення
Що це і навіщо
- Реляційні СУБД забезпечують ACID‑захист, складну логіку через JOIN‑и та транзакції.
- Документо‑орієнтовані сховища (MongoDB) пропонують гнучку схему, масштабування по горизонталі та швидкий доступ до JSON‑подібних документів.
- Графові бази (Neo4j) оптимізовані для запитів типу «найти найкоротший шлях» і зберігання зв’язків між сутностями.
Ключові принципи/терміни
- ACID, CAP‑теорема, NoSQL, документи, колекції, графи, вершини, ребра.
Як це працює
- Реляційні СУБД використовують SQL‑запити, планувальник (query planner) та індекси.
- MongoDB зберігає документи у BSON, підтримує агрегаційний pipeline.
- Neo4j зберігає дані у графовій моделі, запити виконуються через Cypher.
Практика й реалізація
- PostgreSQL:
CREATE TABLE users(id SERIAL PRIMARY KEY, name TEXT); - MongoDB (Node.js):
const user = await db.collection('users').findOne({name: 'Alice'}); - Neo4j (JavaScript):
const result = await session.run('MATCH (u:User)-[:FRIEND]->(f) RETURN f');
Тестування
- Для PostgreSQL:
pg-mem+ Jest. - MongoDB:
mongodb-memory-server. - Neo4j:
neo4j-driver+ Jest.
Оптимізація запитів
- Індекси,
EXPLAIN, кешування результатів, пагінація.
Безпека
- Параметризовані запити, роль‑базований доступ, шифрування даних.
Особливості в контексті ORM
- Prisma підтримує PostgreSQL, MySQL, SQLite; Mongoose – MongoDB; TypeORM – реляційні СУБД.
Часті помилки
- Відсутність індексів, неправильне використання
JOIN, неочікувані типи даних у NoSQL, порушення транзакцій.
Cheatsheet
SELECT * FROM table WHERE id = $1;– PostgreSQL.db.collection('users').find({age: {$gt: 18}}).toArray();– MongoDB.MATCH (u)-[:FRIEND]->(f) RETURN f LIMIT 10;– Neo4j.