SQL versus noSQL (vitesse)

Lorsque les gens comparent SQL et noSQL, et concluent les inconvénients et les inconvénients de chacun, ce dont je n’entends jamais parler, c’est la vitesse.

L’exécution de requêtes SQL n’est-elle généralement pas plus rapide que l’exécution de requêtes noSQL?

Je veux dire, pour moi, ce serait une conclusion évidente, car vous devriez toujours être capable de trouver quelque chose plus rapidement si vous connaissez la structure de votre firebase database que si vous ne le connaissez pas.

Mais les gens ne semblent jamais en parler, alors je veux savoir si ma conclusion est bonne ou mauvaise.

La définition des systèmes noSQL est très large: une firebase database qui n’utilise pas SQL / n’est pas un SGBDR. Par conséquent, la réponse à votre question est la suivante: “ça dépend”.

Certains systèmes noSQL sont essentiellement des stockages de clés / valeurs persistantes (comme Project Voldemort ). Si vos requêtes sont du type “rechercher la valeur d’une clé donnée”, un tel système sera (ou du moins devrait être ) plus rapide qu’un SGBDR, car il suffit d’avoir un ensemble de fonctionnalités beaucoup plus petit.

Un autre type populaire de système noSQL est la firebase database de documents (comme CouchDB ). Ces bases de données n’ont pas de structure de données prédéfinie. Leur avantage en termes de vitesse repose fortement sur la dénormalisation et la création d’une disposition de données adaptée aux requêtes que vous allez exécuter. Par exemple, pour un blog, vous pouvez enregistrer un article de blog dans un document avec ses commentaires. Cela réduit le besoin de jointures et de recherches, rendant vos requêtes plus rapides, mais cela pourrait également réduire votre flexibilité en matière de requêtes.

Les personnes qui ont tendance à utiliser noSQL l’utilisent spécifiquement parce qu’elle convient à leurs cas d’utilisation. Étant séparé des relations et des contraintes des tables de SGBDR normales, ainsi que de la qualité des données ACID, il est très facile de le faire fonctionner beaucoup plus rapidement.

Considérez Twitter, qui utilise NoSQL car un utilisateur ne fait que des choses très limitées sur le site, ou exactement un tweet. Et la concurrence peut être considérée comme inexistante puisque (1) personne d’autre ne peut modifier votre tweet et (2) vous ne serez normalement pas simultanément tweeté à partir de plusieurs appareils.

Comme dirait Einstein, la vitesse est relative.

Si vous avez besoin de stocker une application simple Master / detail (comme un panier), vous devrez faire plusieurs instructions Insert dans votre application SQL. Vous obtiendrez également un dataset lorsque vous effectuerez une requête pour obtenir l’achat, Si vous utilisez NoSQL, et que vous l’utilisez bien, vous aurez toutes les données pour une seule commande dans un simple “enregistrement” (document si vous utilisez les termes des bases de données NoSQL comme djondb).

Donc, je pense vraiment que les performances d’une application peuvent être mesurées par le nombre de choses à faire pour réaliser une seule exigence, si vous devez faire plusieurs insertions pour stocker une commande et que vous n’avez besoin que d’une simple insertion dans une firebase database. À l’instar de djondb, les performances seront 10 fois plus rapides dans le monde NoSQL, simplement parce que vous utilisez 10 fois moins d’appels à la couche de firebase database.

Pour illustrer mon propos, permettez-moi de relier un exemple que j’ai écrit il y a quelque temps à propos des différences entre les modèles de données NoSQL et SQL: http://djondb.com/blog/?p=4 , je sais que c’est une référence, mais j’ai écrit c’est pour répondre à cette question que j’ai trouvé que c’était la question la plus difficile qu’un gars de SGBDR pouvait avoir et c’est toujours un bon moyen d’expliquer pourquoi NoSQL est si différent du monde SQL et pourquoi il obtiendra de meilleures performances à tout moment. “la technologie, c’est parce que NoSQL va permettre au développeur de faire moins de choses … et d’obtenir plus de code et moins de performances = plus de performances.

La réponse est: cela dépend. D’une manière générale, l’objective de NoSQL DATABASES (pas de “requêtes”) est l’évolutivité. Les SGBDR ont généralement des limites ssortingctes à un moment donné (je parle de millons et de millons de lignes) où vous ne pourriez plus évoluer par des moyens traditionnels (réplication, clustering, partitionnement) et vous avez besoin de quelque chose de plus. Ou même si vous parvenez à évoluer, la configuration globale est assez compliquée. Ou vous pouvez mettre à l’échelle des lectures, mais pas des écritures.

Et les requêtes dépendent de l’implémentation particulière de votre serveur, du type de requête que vous faites, des colonnes de la table, etc. Rappelez-vous que les requêtes ne sont qu’une partie du SGBDR.

Plus vite pour quoi? Mise à jour des données? Inserts? Requêtes à une seule ligne? Des requêtes complexes? La question telle qu’énoncée est pratiquement sans signification. Selon ce que vous faites, toute technologie peut être optimale.

En bref: Non, NoSQL n’est pas plus rapide que SQL, et SQL n’est pas plus rapide que NoSQL. Ils sont chacun des technologies différentes adaptées à différents travaux.

Des questions comme la vôtre sont courantes, mais supposons naïvement qu’il existe une bonne réponse. Nous pourrions aussi bien demander à un menuisier si un marteau est préférable à une perceuse ou à une scie. Ce sont tous des outils utiles aux fins pour lesquelles ils ont été conçus. Cela n’a aucun sens d’utiliser l’un ou l’autre exclusivement.

temps de requête de firebase database relationnelle comme SQL pour 1000 personnes données est de 2000 ms et la firebase database graphique comme neo4j est de 2ms. Si vous cratez plus de nœud 1000000 vitesse stable 2 ms