Le nom complet de SQL est Structured Query Language, un langage de requête structuré, une requête de base de données et un langage de programmation utilisé pour accéder aux données et interroger, mettre à jour et gérer les bases de données relationnelles.
Les bases de données SQL font référence à des bases de données relationnelles, telles que MYSQL, oracle, etc., et les bases de données NoSQL (pas seulement SQL) font référence à des bases de données non relationnelles, telles que MangoDB, Redis, etc.
Les principales différences entre les deux sont les suivantes:
1. Tapez
Les bases de données SQL sont principalement appelées bases de données relationnelles; les bases de données NoSQL sont principalement appelées bases de données non relationnelles ou bases de données distribuées.
2. Langue
La définition et le fonctionnement de la base de données SQL sont basés sur le langage de requête structuré (SQL) des données. De côté, ce langage est très puissant. SQL est l'une des options les plus polyvalentes et les plus utilisées, ce qui en fait un choix sûr, en particulier pour les requêtes complexes. Mais d'un autre côté, cela peut être restrictif. SQL vous oblige à utiliser un schéma prédéfini pour déterminer la structure des données avant de l'utiliser. De plus, toutes vos données doivent suivre la même structure . Cela peut nécessiter beaucoup de préparation préalable, ce qui signifie que les changements structurels sont difficiles et endommagent l'ensemble du système.
Les bases de données NoSQL ont un mode dynamique de données non structurées. Les données sont stockées de plusieurs manières, ce qui signifie qu'elles peuvent être orientées document, orientées colonnes, graphiques ou organisées en tant que stockage KeyValue. Cette flexibilité signifie que les documents peuvent être créés sans définir au préalable la structure. Chaque document peut également avoir sa propre structure unique . La syntaxe varie d'une base de données à l'autre et vous pouvez ajouter des champs à tout moment.
3. Évolutivité
Les bases de données SQL sont toutes évolutives verticalement . La charge d'un seul serveur peut être augmentée en ajoutant des fonctions telles que RAM, CPU ou SSD. Les bases de données NoSQL peuvent être mises à l'échelle horizontalement . Vous pouvez gérer plus de trafic en partageant ou en ajoutant plus de serveurs à la base de données NoSQL, de sorte que les bases de données NoSQL sont plus adaptées au stockage de Big Data.
4. Structure
Les bases de données SQL sont basées sur des tables , tandis que les bases de données NoSQL sont des paires clé-valeur , basées sur des documents , des bases de données de graphes ou un stockage à colonnes étendues . Cela fait des bases de données SQL relationnelles un meilleur choix pour les applications qui nécessitent des transactions multilignes (telles que les systèmes comptables) ou des systèmes hérités conçus pour les structures relationnelles.
5. Suivez les attributs
Les bases de données SQL suivent les propriétés ACID (atomicité, cohérence, isolation et durabilité), tandis que les bases de données NoSQL suivent le théorème de Brewers CAP (cohérence, disponibilité et tolérance de partition).
Pour une introduction spécifique à ACID et CAP, veuillez vous référer à https://cloud.tencent.com/developer/article/1165624
6. Assistance
Toutes les bases de données SQL de ses fournisseurs fournissent un bon support. De plus, il existe de nombreuses consultations indépendantes qui peuvent aider avec les déploiements à grande échelle à l'aide de bases de données SQL, mais pour certaines bases de données NoSQL, vous devez toujours compter sur le support de la communauté, et seul un nombre limité d'experts externes peut être utilisé pour configurer et déployer des déploiements NoSQL à grande échelle.
Quelques exemples de bases de données SQL incluent PostgreSQL, MySQL, Oracle et Microsoft SQL Server. Des exemples de bases de données NoSQL incluent Redis, RavenDB Cassandra, MongoDB, BigTable, HBase, Neo4j et CouchDB.
7. Scénarios applicables
Projets adaptés au développement à l'aide de SQL:
- Mode base de données, la structure peut être prédéfinie, ou peut être un projet relativement fixe
- Cohérence des données requise
- Technologie mature standard avec une bonne expérience de développeur et un support technique
Projets adaptés au développement NoSQL:
- Besoins en données non pertinents, incertains et évolutifs
- Projets plus simples ou plus détendus qui peuvent commencer à programmer rapidement
- La vitesse et l'évolutivité sont essentielles