Ranking SQL query : suivre le positionnement de vos pages automatiquement

Le positionnement de vos pages web dans les résultats des moteurs de recherche, ou SERP (Search Engine Results Page), est un facteur crucial pour attirer du trafic organique et atteindre votre public cible. Un site e-commerce spécialisé dans la vente de chaussures de sport qui passe de la 5ème à la 2ème position sur le mot-clé pertinent "chaussures de running homme" peut voir son trafic organique augmenter de près de 30%, traduisant directement une augmentation du chiffre d'affaires et de la notoriété de la marque. Ignorer cet aspect du suivi SEO, c'est risquer de perdre des parts de marché significatives au profit de vos concurrents, qui eux, optimisent activement leur présence en ligne. Le suivi du positionnement permet d'identifier les forces et les faiblesses de votre stratégie SEO et d'ajuster vos actions en conséquence, assurant ainsi une meilleure visibilité et un retour sur investissement plus important. Les spécialistes du marketing digital et les développeurs web peuvent collaborer pour mettre en place des solutions de suivi innovantes.

Si les outils de suivi de positionnement traditionnels offrent une vue d'ensemble, ils présentent des limites en termes de personnalisation et de flexibilité, limitant ainsi l'efficacité des analyses. Ils peuvent être coûteux, allant de 50€ à plusieurs centaines d'euros par mois, offrent des données génériques qui ne répondent pas toujours à des besoins spécifiques, et manquent de l'agilité nécessaire pour des analyses complexes et des rapports personnalisés. C'est là que l'approche "Ranking SQL Query" prend tout son sens : elle offre un contrôle total sur les données de positionnement, une personnalisation poussée des analyses, une intégration transparente avec d'autres sources d'information, comme Google Analytics ou votre CRM, un potentiel d'automatisation élevé grâce à des scripts et des tâches planifiées, et une scalabilité adaptée à des volumes importants de données, même pour les sites avec plus de 10 000 pages. Dans cet article, nous allons explorer comment exploiter la puissance des requêtes SQL pour suivre et analyser le positionnement de vos pages web de manière précise, efficace et rentable, transformant ainsi vos données SEO en un véritable levier de croissance.

Fondamentaux : structure de données et sources d'information

Avant de plonger dans la construction des requêtes SQL, il est essentiel de comprendre les sources d'information disponibles et de définir une structure de données appropriée pour le suivi du positionnement web. La qualité et la pertinence des données que vous collectez auront un impact direct sur la fiabilité de vos analyses de ranking et la pertinence de vos décisions SEO. Nous allons explorer les différentes sources de données possibles et proposer une structure de base de données relationnelle optimisée pour le suivi du positionnement, en tenant compte des aspects de performance et de scalabilité.

Sources d'information

  • API des moteurs de recherche (Google Search Console API, Bing Webmaster Tools API) : Offrent un accès direct aux données officielles fournies par les moteurs de recherche, garantissant ainsi une grande précision dans le suivi du positionnement. Cependant, elles sont soumises à des limites de requêtes, par exemple Google Search Console limite les requêtes à 500 par jour et par site, et nécessitent une certaine expertise technique pour leur intégration et la gestion des quotas.
  • Scraping des SERP (Search Engine Results Page) : Permet de collecter des données de positionnement en analysant directement les pages de résultats des moteurs de recherche. Cette approche offre une plus grande flexibilité en termes de mots-clés et de moteurs de recherche surveillés, permettant de suivre un nombre illimité de mots-clés et de moteurs de recherche spécifiques. Cependant, elle est plus fragile et peut être bloquée par les moteurs de recherche, nécessitant l'utilisation de proxies rotatifs et de techniques d'obfuscation pour éviter d'être détecté.
  • Outils tiers d'analyse SEO (API) : Proposent des solutions clé en main pour le suivi du positionnement, avec des données pré-traitées et une interface utilisateur conviviale pour la visualisation des données. Cependant, ces outils sont généralement payants, avec des prix allant de 29€ à 500€ par mois en fonction du nombre de mots-clés suivis, et peuvent limiter la personnalisation des analyses et l'accès aux données brutes.

Structure de la base de données

Une structure de base de données bien conçue est essentielle pour stocker et analyser efficacement les données de positionnement SEO. Nous recommandons une structure relationnelle composée de plusieurs tables, chacune ayant un rôle spécifique, et optimisée pour les requêtes de ranking et d'analyse de performance.

  • Table "Keywords" : (keyword_id INT PRIMARY KEY AUTO_INCREMENT, keyword VARCHAR(255) NOT NULL, search_volume INT, competition DECIMAL(3,2), cpc DECIMAL(5,2)) - Stocke les informations sur les mots-clés suivis, comme le volume de recherche mensuel (estimé via des outils comme Semrush ou Ahrefs), le niveau de concurrence (échelle de 0 à 1) et le coût par clic (CPC) pour les campagnes publicitaires.
  • Table "URLs" : (url_id INT PRIMARY KEY AUTO_INCREMENT, url VARCHAR(2048) NOT NULL, domain VARCHAR(255), page_title VARCHAR(255), meta_description VARCHAR(255)) - Stocke les informations sur les URLs suivies, comme le nom de domaine, le titre de la page (balise ` `) et la méta-description (balise ` `). L'utilisation de `VARCHAR(2048)` pour l'URL permet de gérer les URLs longues, bien que la plupart des moteurs de recherche limitent l'affichage des URLs dans les SERP.
  • Table "Ranking" : (ranking_id INT PRIMARY KEY AUTO_INCREMENT, keyword_id INT, url_id INT, date DATE, position SMALLINT, search_engine_id INT, url_cible VARCHAR(2048), FOREIGN KEY (keyword_id) REFERENCES Keywords(keyword_id), FOREIGN KEY (url_id) REFERENCES URLs(url_id), FOREIGN KEY (search_engine_id) REFERENCES SearchEngine(search_engine_id)) - Enregistre les positionnements des URLs pour chaque mot-clé à une date donnée. Inclure l'URL cible pour gérer les variations de positionnement sur différentes pages (par exemple, si la page d'accueil se positionne pour un mot-clé, puis une page de catégorie). Les clés étrangères (`FOREIGN KEY`) assurent l'intégrité référentielle de la base de données.
  • Table "SearchEngine" : (search_engine_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255)) - Stocke les informations sur les moteurs de recherche suivis (Google, Bing, Yahoo, DuckDuckGo, etc.). Par exemple, `search_engine_id = 1` pourrait correspondre à Google France, `search_engine_id = 2` à Bing France, etc.

Le choix du type de données pour chaque colonne est crucial pour optimiser l'espace de stockage et la performance des requêtes. Par exemple, `keyword_id` et `url_id` seront des entiers (`INT`) liés à la table `Keywords` et `URLs` respectivement, assurant une jointure rapide entre les tables. `date` sera de type `DATE` pour faciliter les requêtes basées sur des plages de dates. `position` un petit entier (`SMALLINT`) suffira car le positionnement est rarement supérieur à 100, et `search_engine_id` un autre `INT` pointant vers `SearchEngine`.

Construction des requêtes SQL pour l'extraction et le stockage des données de positionnement

Maintenant que nous avons défini la structure de données, nous pouvons passer à la construction des requêtes SQL qui vont nous permettre d'extraire et de stocker les données de positionnement web. Ces requêtes seront le cœur de notre système de suivi automatisé de ranking et de performance SEO. L'utilisation efficace des requêtes SQL permet d'automatiser la collecte de données et de les stocker de manière structurée pour une analyse ultérieure, facilitant ainsi la prise de décisions basées sur des données fiables. Nous allons voir comment insérer de nouvelles données de positionnement, récupérer des informations spécifiques sur le ranking des pages et utiliser des fonctions SQL pour des analyses plus poussées, comme le calcul du positionnement moyen ou l'identification des mots-clés avec les plus fortes variations de positionnement.

Requêtes pour l'insertion des données

L'insertion de nouvelles données est une étape cruciale pour maintenir notre base de données de ranking à jour avec les dernières informations de positionnement SEO. Voici quelques exemples de requêtes SQL pour insérer des données dans nos tables, en utilisant la syntaxe standard SQL :

 -- Insérer un nouveau mot-clé INSERT INTO Keywords (keyword, search_volume, competition, cpc) VALUES ('chaussures de running homme', 5000, 0.8, 1.25); -- Insérer un nouvel URL INSERT INTO URLs (url, domain, page_title, meta_description) VALUES ('https://www.exemple.com/chaussures-running-homme', 'exemple.com', 'Chaussures de Running pour Homme - Exemple.com', 'Découvrez notre large sélection de chaussures de running pour homme. Livraison rapide et gratuite.'); -- Insérer un nouveau positionnement INSERT INTO Ranking (keyword_id, url_id, date, position, search_engine_id, url_cible) VALUES (1, 1, '2024-01-15', 2, 1, 'https://www.exemple.com/chaussures-running-homme'); 

Pour éviter les doublons et assurer la cohérence des données, on utilisera la clause `ON DUPLICATE KEY UPDATE` (si votre base de données le supporte, par exemple MySQL) ou la fonction `MERGE` (dans SQL Server). Cela permet de mettre à jour les enregistrements existants au lieu d'en créer de nouveaux, en se basant sur une clé unique (par exemple, la combinaison de `keyword_id`, `url_id` et `date`). Par exemple, si on essaie d'insérer un nouveau positionnement pour le même mot-clé, la même URL et la même date, on mettra à jour la position au lieu de créer un nouvel enregistrement.

Requêtes pour la récupération des données

La récupération des données est essentielle pour l'analyse du ranking et de la performance SEO. Voici des exemples de requêtes SQL pour récupérer des informations spécifiques de notre base de données de positionnement. Ces requêtes utilisent des jointures (`JOIN`) et des clauses `WHERE` pour filtrer les résultats et obtenir les informations pertinentes :

 -- Récupérer le positionnement d'une URL pour un mot-clé spécifique sur une période donnée SELECT r.date, r.position FROM Ranking r JOIN Keywords k ON r.keyword_id = k.keyword_id JOIN URLs u ON r.url_id = u.url_id WHERE k.keyword = 'chaussures de running homme' AND u.url = 'https://www.exemple.com/chaussures-running-homme' AND r.date BETWEEN '2023-12-01' AND '2024-01-31' ORDER BY r.date; -- Récupérer le positionnement moyen d'une URL sur tous les mots-clés (pour une analyse globale de la performance) SELECT AVG(r.position) AS average_position FROM Ranking r JOIN URLs u ON r.url_id = u.url_id WHERE u.url = 'https://www.exemple.com/chaussures-running-homme'; -- Récupérer les mots-clés pour lesquels une URL a perdu ou gagné des positions (comparaison sur deux dates pour identifier les opportunités) SELECT k.keyword, r1.position AS position_avant, r2.position AS position_apres, (r1.position - r2.position) AS difference FROM Ranking r1 JOIN Ranking r2 ON r1.keyword_id = r2.keyword_id AND r1.url_id = r2.url_id JOIN Keywords k ON r1.keyword_id = k.keyword_id WHERE r1.url_id = (SELECT url_id FROM URLs WHERE url = 'https://www.exemple.com/chaussures-running-homme') AND r1.date = '2024-01-01' AND r2.date = '2024-01-15' ORDER BY difference DESC; -- Classement par différence de positionnement (du plus grand gain à la plus grande perte) 

Automatisation du processus : scheduling et gestion des erreurs

L'automatisation du processus de collecte de données de ranking est essentielle pour gagner du temps, assurer un suivi régulier du positionnement SEO et obtenir des données fiables et à jour. Sans automatisation, il serait nécessaire de lancer manuellement les requêtes SQL et d'importer les données de positionnement web, ce qui serait fastidieux, chronophage et peu efficace pour les sites avec un grand nombre de pages et de mots-clés. Nous allons explorer les différents outils d'automatisation disponibles, les scripts de collecte de données à utiliser (en Python, par exemple), et les techniques de gestion des erreurs pour assurer la fiabilité du système et éviter la perte de données.

Choix des outils d'automatisation

Plusieurs outils peuvent être utilisés pour automatiser l'exécution des scripts de collecte de données de positionnement SEO :

  • Cron (Linux/Unix) : Simple et fiable, idéal pour les tâches planifiées régulières, comme la collecte des données de ranking une fois par jour à 2h du matin. Cron est un outil standard sur la plupart des serveurs Linux et Unix, et permet de planifier des tâches en utilisant une syntaxe simple et flexible.
  • Task Scheduler (Windows) : Intégré à Windows, facile à utiliser pour les tâches simples, mais moins flexible que Cron pour les tâches complexes. Task Scheduler est un outil graphique qui permet de planifier des tâches en définissant des déclencheurs (dates, heures, événements) et des actions (exécution de scripts, lancement d'applications).
  • Outils de planification de tâches avancés (Celery, Airflow) : Plus complexes, mais offrent une plus grande flexibilité et des fonctionnalités avancées comme la gestion des dépendances, la distribution des tâches, la gestion des erreurs et la supervision des tâches. Celery est une librairie Python pour la gestion de tâches asynchrones, et Airflow est une plateforme pour la création et la gestion de pipelines de données complexes.

Scripts de collecte de données

Les scripts de collecte de données sont responsables d'interroger les sources d'information (API des moteurs de recherche, scraping des SERP) et d'insérer les données dans la base de données de ranking. Ils peuvent être écrits dans différents langages de programmation (Python, PHP, Node.js), en fonction des préférences et des compétences de l'équipe. Prenons l'exemple de Python pour interroger l'API de Google Search Console, qui est une source fiable de données de positionnement SEO:

 # Exemple de script Python pour interroger l'API de Google Search Console (nécessite l'installation des librairies google-api-python-client et google-auth-httplib2) import googleapiclient.discovery from google.oauth2 import service_account import mysql.connector # Importation du connecteur MySQL # Informations d'authentification Google Search Console (à remplacer par vos propres informations) SERVICE_ACCOUNT_FILE = 'path/to/your/service_account.json' # Remplacez par le chemin de votre fichier JSON SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] # Informations d'authentification MySQL (à remplacer par vos propres informations) DB_HOST = 'localhost' DB_NAME = 'ranking_db' DB_USER = 'username' DB_PASSWORD = 'password' # Authentification Google Search Console creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) # Création du service Google Search Console service = googleapiclient.discovery.build('webmasters', 'v3', credentials=creds) # ID du site (à remplacer par l'ID de votre site Google Search Console) site_url = 'sc-domain:exemple.com' # Remplacez par l'URL de votre site dans Google Search Console # Définir la période de temps start_date = '2024-01-01' end_date = '2024-01-15' # Requête pour récupérer les données de performance de Google Search Console request = service.searchanalytics().query( siteUrl=site_url, body={ 'startDate': start_date, 'endDate': end_date, 'dimensions': ['query', 'page'], # Récupérer le mot-clé et la page 'rowLimit': 1000 } ) response = request.execute() try: # Connexion à la base de données MySQL mydb = mysql.connector.connect( host=DB_HOST, database=DB_NAME, user=DB_USER, password=DB_PASSWORD ) mycursor = mydb.cursor() print("Connexion à la base de données MySQL réussie!") except mysql.connector.Error as err: print(f"Erreur lors de la connexion à la base de données MySQL: {err}") exit() # Traitement des données de Google Search Console et insertion dans la base de données MySQL if 'rows' in response: for row in response['rows']: keyword = row['keys'][0] page = row['keys'][1] # URL de la page impressions = row['impressions'] clicks = row['clicks'] position = row['position'] # Rechercher l'ID du mot-clé dans la table Keywords sql_select_keyword = "SELECT keyword_id FROM Keywords WHERE keyword = %s" mycursor.execute(sql_select_keyword, (keyword,)) keyword_result = mycursor.fetchone() if keyword_result: keyword_id = keyword_result[0] else: # Insérer le mot-clé s'il n'existe pas sql_insert_keyword = "INSERT INTO Keywords (keyword) VALUES (%s)" mycursor.execute(sql_insert_keyword, (keyword,)) mydb.commit() keyword_id = mycursor.lastrowid print(f"Nouveau mot clé inséré: {keyword} avec keyword_id {keyword_id}") # Rechercher l'ID de l'URL dans la table URLs sql_select_url = "SELECT url_id FROM URLs WHERE url = %s" mycursor.execute(sql_select_url, (page,)) url_result = mycursor.fetchone() if url_result: url_id = url_result[0] else: # Insérer l'URL si elle n'existe pas sql_insert_url = "INSERT INTO URLs (url) VALUES (%s)" mycursor.execute(sql_insert_url, (page,)) mydb.commit() url_id = mycursor.lastrowid print(f"Nouvelle URL insérée: {page} avec url_id {url_id}") # Insertion dans la table Ranking sql_insert_ranking = "INSERT INTO Ranking (keyword_id, url_id, date, position, search_engine_id) VALUES (%s, %s, %s, %s, %s)" val = (keyword_id, url_id, start_date, position, 1) # 1 pour Google Search mycursor.execute(sql_insert_ranking, val) mydb.commit() print(f"Ranking inséré pour: keyword_id={keyword_id}, url_id={url_id}, position={position}") print("Données de Google Search Console récupérées et insérées dans la base de données MySQL avec succès!") else: print("Aucune donnée à insérer") # Fermeture de la connexion à la base de données MySQL mycursor.close() mydb.close() 

Analyse et exploitation des données stockées : requêtes pour la visualisation des tendances, l'identification des opportunités et l'évaluation des performances SEO

La collecte et le stockage des données de ranking ne sont que la première étape du processus. L'objectif final est d'analyser ces données pour obtenir des informations précieuses et exploitables qui permettront d'améliorer votre stratégie SEO, d'augmenter votre visibilité et d'attirer plus de trafic organique. Nous allons explorer les différentes requêtes SQL qui peuvent être utilisées pour visualiser les tendances de positionnement, identifier les opportunités de croissance et évaluer les performances SEO de vos pages web.

Requêtes pour la visualisation des tendances

Visualiser les tendances de positionnement au fil du temps permet d'identifier rapidement les évolutions positives et négatives, d'évaluer l'impact des actions SEO mises en place (par exemple, l'optimisation du contenu, la création de liens, l'amélioration de la vitesse de chargement) et de détecter les problèmes potentiels (par exemple, la perte de positionnement suite à une mise à jour de l'algorithme de Google). Une URL qui se positionnait en moyenne en 15ème position il y a six mois, et se trouve maintenant en 8ème position, témoigne d'une amélioration significative de sa visibilité et de son potentiel de trafic organique.

 -- Évolution du positionnement d'une URL pour un mot-clé donné au fil du temps (moyenne hebdomadaire) SELECT DATE(date) AS semaine, AVG(position) AS position_moyenne FROM Ranking r JOIN Keywords k ON r.keyword_id = k.keyword_id JOIN URLs u ON r.url_id = u.url_id WHERE k.keyword = 'chaussures de running homme' AND u.url = 'https://www.exemple.com/chaussures-running-homme' GROUP BY WEEK(date) -- Groupement par semaine ORDER BY semaine; 

Requêtes pour l'identification des opportunités

Identifier les opportunités de positionnement est crucial pour concentrer les efforts SEO sur les mots-clés et les pages qui ont le plus de potentiel en termes de trafic organique et de conversions. Une page qui se positionne actuellement en 6ème position pour un mot-clé à fort volume de recherche (par exemple, "meilleures chaussures de running") est une opportunité à saisir, car une amélioration de quelques positions pourrait générer un trafic significatif et augmenter les ventes.

 -- Identification des mots-clés pour lesquels une URL se positionne entre la 4ème et la 10ème place (opportunités d'amélioration du ranking) SELECT k.keyword, AVG(r.position) AS average_position FROM Ranking r JOIN Keywords k ON r.keyword_id = k.keyword_id JOIN URLs u ON r.url_id = u.url_id WHERE u.url = 'https://www.exemple.com/chaussures-running-homme' GROUP BY k.keyword HAVING average_position BETWEEN 4 AND 10 -- Positionnement entre la 4ème et la 10ème place ORDER BY AVG(k.search_volume) DESC; -- Classement par volume de recherche décroissant (pour prioriser les mots-clés avec le plus de potentiel) 

Optimisation SEO basée sur les données SQL : mise en place d'actions concrètes

L'analyse des données de positionnement SEO permet d'identifier les pages web à optimiser en priorité. Les actions d'optimisation sont diverses et peuvent concerner le contenu de la page (par exemple, le titre, la méta-description, le texte principal), le maillage interne du site, la vitesse de chargement des pages, l'optimisation pour les appareils mobiles (mobile-friendliness), etc. Il est crucial de suivre l'impact des actions d'optimisation sur le positionnement web et d'ajuster les stratégies SEO en conséquence, en se basant sur les données collectées et analysées avec SQL.

Identification des pages à optimiser en priorité

Les pages web à optimiser en priorité sont celles qui présentent un potentiel d'amélioration important en termes de positionnement SEO, de trafic organique et de conversions. Cela peut concerner les pages web avec un positionnement fluctuant (par exemple, qui passent de la 5ème à la 15ème position en quelques jours), un positionnement moyen faible (par exemple, au-delà de la 10ème position pour des mots-clés importants) ou un taux de clics (CTR) faible (par rapport au positionnement). Par exemple, une page web dont le positionnement fluctue entre la 5ème et la 15ème position pour le mot-clé "chaussures de running" a besoin d'une optimisation pour stabiliser et améliorer son positionnement web, afin d'attirer plus de trafic organique et d'augmenter les ventes.

Actions d'optimisation SEO

Plusieurs actions d'optimisation SEO peuvent être mises en place, en se basant sur les données collectées et analysées avec SQL :

  • Optimisation du contenu : Améliorer le titre (balise ` `), la méta-description (balise ` `), les balises de titres (balises ` <h1>`, ` `, etc.) et le contenu principal de la page web, en intégrant les mots-clés pertinents et en utilisant un langage clair et précis. il est important de s'assurer que le contenu est unique, original et de haute qualité, et qu'il répond aux besoins et aux questions des utilisateurs.</h1>
  • Optimisation du maillage interne : Créer des liens internes pertinents entre les pages web du site, en utilisant des ancres de texte descriptives et en veillant à ce que les liens soient pertinents pour le contenu des pages. Le maillage interne aide les moteurs de recherche à comprendre la structure du site et à indexer les pages plus efficacement.
  • Optimisation de la vitesse de chargement : Améliorer le temps de chargement des pages web, en optimisant les images, en minifiant les fichiers CSS et JavaScript, en utilisant la mise en cache du navigateur et en choisissant un hébergement web performant. Un temps de chargement réduit de 2 secondes peut augmenter le taux de conversion de 10% et améliorer le positionnement SEO.
  • Optimisation du mobile-friendliness : S'assurer que le site web est optimisé pour les appareils mobiles (smartphones et tablettes), en utilisant un design responsive, en optimisant les images pour les écrans mobiles et en améliorant la vitesse de chargement des pages sur les appareils mobiles. Google utilise l'indexation mobile-first, ce qui signifie que la version mobile du site web est utilisée pour l'indexation et le ranking.

Considérations avancées : scalabilité, performance, et alternatives NoSQL

Pour les sites web avec un grand nombre de pages et de mots-clés (par exemple, les sites e-commerce avec des milliers de produits), il est important de prendre en compte la scalabilité et la performance du système de suivi du positionnement web. Il est également possible d'envisager l'utilisation de bases de données NoSQL (par exemple, MongoDB, Cassandra) pour certaines applications spécifiques, en particulier si les données de positionnement sont semi-structurées ou si les besoins en scalabilité sont très élevés.

Scalabilité

Pour améliorer la scalabilité du système de suivi du positionnement web, il est possible d'optimiser les requêtes SQL (par exemple, en utilisant des index, en partitionnant les tables), d'utiliser une base de données distribuée (par exemple, MySQL Cluster, PostgreSQL with Citus) ou de mettre en cache les données fréquemment consultées (par exemple, les données de positionnement des 100 premiers mots-clés). L'utilisation d'une base de données distribuée permet de répartir la charge de travail sur plusieurs serveurs, ce qui améliore la performance et la disponibilité du système.

Performance

L'optimisation des scripts de collecte de données de positionnement (par exemple, en utilisant des requêtes parallèles, en optimisant le code), l'utilisation d'une infrastructure robuste (par exemple, avec des serveurs puissants, un réseau rapide) et le monitoring régulier des performances du système sont également importants pour garantir un système de suivi performant et fiable. Il est important de surveiller le temps d'exécution des requêtes SQL, le temps de réponse des API des moteurs de recherche et l'utilisation des ressources du serveur (CPU, mémoire, disque) pour identifier les problèmes potentiels et prendre des mesures correctives.

Alternatives NoSQL

Les bases de données NoSQL (par exemple, MongoDB, Cassandra) peuvent être une alternative intéressante aux bases de données relationnelles (SQL) pour le stockage des données de positionnement web, en particulier si les données sont semi-structurées (par exemple, si on souhaite stocker des informations supplémentaires sur les SERP, comme les snippets affichés, les liens sponsorisés, les images) ou si les besoins en scalabilité sont très élevés (par exemple, si on suit le positionnement de millions de mots-clés). MongoDB est une base de données orientée documents qui permet de stocker des données semi-structurées au format JSON, tandis que Cassandra est une base de données distribuée qui offre une grande scalabilité et une haute disponibilité.

Plan du site