NoSQL (Не тільки SQL)
NoSQL, meaning 'Not Only SQL,' refers to a broad class of database management systems that differ from traditional relational databases by not primarily using the Structured Query Language (SQL) for d...
NoSQL ('Not Only SQL') бази даних представляють різноманітну категорію систем управління базами даних, які відрізняються від традиційних реляційних (SQL) баз даних своїми моделями даних та механізмами запитів. Вони були розроблені для подолання обмежень реляційних баз даних у обробці великих обсягів швидкозмінних, неструктурованих або напівструктурованих даних, а також для забезпечення більшої масштабованості та гнучкості. Поширені NoSQL моделі даних включають key-value stores (наприклад, Redis, DynamoDB), document databases (наприклад, MongoDB, Couchbase), column-family stores (наприклад, Cassandra, HBase) та graph databases (наприклад, Neo4j, Amazon Neptune). Key-value stores пропонують просте, високопродуктивне отримання даних на основі унікального ключа. Document databases зберігають дані у гнучких, JSON-подібних документах, що дозволяє еволюцію схеми. Column-family stores оптимізовані для читання та запису великих наборів даних, організовуючи дані за стовпцями, а не за рядками. Graph databases чудово підходять для представлення та запитів складних взаємозв'язків між сутностями. NoSQL бази даних часто надають перевагу доступності та стійкості до розділення (partition tolerance) над суворою консистентністю (відповідно до CAP theorem), пропонуючи налаштовувані рівні консистентності. Вони зазвичай масштабуються горизонтально шляхом додавання більшої кількості стандартних серверів, на відміну від вертикального масштабування, яке часто потрібне для реляційних баз даних. Компроміси включають відсутність стандартизованих мов запитів для всіх типів, потенційну надмірність даних та труднощі у виконанні складних з'єднань (joins) або транзакцій, які є стандартними для SQL.
graph LR
Center["NoSQL (Не тільки SQL)"]:::main
Pre_data_structures["data-structures"]:::pre --> Center
click Pre_data_structures "/terms/data-structures"
Pre_distributed_systems["distributed-systems"]:::pre --> Center
click Pre_distributed_systems "/terms/distributed-systems"
Rel_relational_databases["relational-databases"]:::related -.-> Center
click Rel_relational_databases "/terms/relational-databases"
Rel_big_data["big-data"]:::related -.-> Center
click Rel_big_data "/terms/big-data"
Rel_vector_database["vector-database"]:::related -.-> Center
click Rel_vector_database "/terms/vector-database"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Простими словами
NoSQL бази даних схожі на різні види коробок для зберігання комп'ютерної інформації. Замість одного способу організації всього, як у картотеці ([SQL](/uk/terms/sql)), ви можете використовувати спеціальні коробки для різних потреб, наприклад, великий контейнер для багатьох подібних предметів або спеціальний органайзер для пов'язаних нотаток.
🤓 Expert Deep Dive
Ключовим для NoSQL є теорема CAP, яка стверджує, що в розподіленій системі можна забезпечити лише дві з трьох характеристик: узгодженість, доступність або стійкість до розділення. Більшість NoSQL систем обирають доступність (Availability), що робить їх ідеальними для систем, які ніколи не мають 'падати'.