Je suis un programmeur autodidacte et j'ai toujours suivi certains paramètres de conception qui reposaient plus sur le bon sens que sur la recherche pour construire des systèmes évolutifs. Cependant, je viens de réaliser qu'un composant de mon système pourrait ne pas être nécessaire.Affinage des données utilisateur sur plusieurs bases de données sur un même serveur de base de données
De manière générale, je casse les données utilisateur en groupes et les affecte à des serveurs mysql spécifiques. Lorsqu'un serveur de contenu derrière un équilibreur de charge reçoit une requête, j'utilise les données de la requête (comme un ID utilisateur) pour résoudre la base de données où les données des utilisateurs sont stockées en interrogeant une table centrale stockée sur DynamoDB qui peut gérer une charge folle.
Cependant, j'attribue également les données utilisateur aux bases de données du serveur. Comme j'ai 100 bases de données dans chaque serveur qui ont toutes la même structure de table, et j'affecterai 250 utilisateurs à chaque base de données. La logique était à l'origine qu'une table où chaque utilisateur a 2k entrées va courir beaucoup plus vite avec 500k entrées de 50 millions. Cependant, il m'est apparu que le découpage des données utilisateur de cette façon pourrait ne pas avoir de sens du tout. Les index sont plutôt efficaces. Je suis sûr que la base de données avait en fait une sorte de logique interne qui lui permet d'accéder aux données à peu près la même vitesse, n'est-ce pas? Cela fait dix ans que je le fais, et je viens de me rendre compte que cela pourrait ne pas être nécessaire du tout. Des pensées? Puis-je simplement créer une base de données avec toutes mes tables ou dois-je continuer à faire les choses comme je l'ai toujours fait, en partageant 100 bases de données sur un serveur?
Donc, l'aller-retour dont vous parlez avec dynamoDB est ce que j'utilise pour partitionner mes données utilisateur sur plusieurs serveurs de base de données. Le 500K contre 50 millions est la répartition des données entre 100 bases de données sur le même serveur, toutes les données de ce serveur étant stockées dans une base de données unique. Cependant, votre réponse est le clou sur la tête. D'après ce que vous dites, il semblerait que le partage de plusieurs bases de données sur le même serveur produit un impact positif en réduisant la taille de la table. Merci pour votre réponse! – user643718