Je crée une API RESTful. J'ai du mal à décider de la meilleure façon de concevoir mes tables de base de données autour de mes ressources.
Au départ, je pensais qu'une table par ressource serait une bonne façon de procéder, mais je crains maintenant que cela ne se traduise par des tables exponentiellement plus grandes au fur et à mesure de la chaîne de ressources.
Par exemple, imaginez que j'ai trois ressources: les utilisateurs, les clients et les ventes. Les utilisateurs sont abonnés à mon API, les clients sont les utilisateurs des clients et les ventes sont des achats effectués par chaque client sur le compte des utilisateurs.
Une ressource de vente est accessible comme suit
GET /users/{userID}/clients/{clientID}/sales/{salesID}
Donc, s'il y a 10 utilisateurs, chacun avec 10 clients, et pour chaque client il y a 10 ventes, la taille de la table augmente au fur et à mesure de la chaîne de ressources.
Je suis assez confiant que SQL peut gérer de grandes tables, mais je ne sais pas comment la lecture et l'écriture ralentiront les choses. L'exemple ci-dessus ne l'illustre peut-être pas, mais mon API aura progressivement plus d'écritures et de lectures au fur et à mesure de la chaîne de ressources. J'ai donc le scénario où les plus grandes tables de ma base de données seront lues et écrites plus souvent que les petites tables.
Il sera également nécessaire de joindre des tables avant d'exécuter des requêtes. La raison en est que j'autorise chaque utilisateur à avoir un client du même nom. Pour éviter d'obtenir des données client incorrectes, la table des utilisateurs et les tables des clients sont jointes par {userID}. C'est également le cas pour les ventes. Rejoindre de grandes tables et exécuter des lectures et des écritures ralentira-t-il encore les choses?