mysql - Poser une question sur la mise en cache d'une base de données en Java
为情所困
为情所困 2017-06-12 09:19:37
0
1
704

Je suis désormais responsable d'une plateforme d'écriture personnelle dans une bibliothèque scolaire. Le modèle économique de base est terminé, mais le projet n'a pas été optimisé dans un environnement à forte concurrence.

Chaque élève peut rédiger une critique de livre ou prendre des notes après avoir lu un livre. Les critiques de livres sont publiques et les notes sont privées. Selon la pratique actuelle, chaque opération étudiante accède à la base de données pour une requête, il y aura donc certainement un goulot d'étranglement en termes de performances à l'avenir.

J'ai probablement regardé les tutoriels relatifs à ehcache mais il n'y a pas de bonne solution La raison principale est que je ne peux pas juger si le cache est invalide. Par exemple, si vous mettez dans le cache un certain nombre de notes d'étudiants fréquents, si vous définissez un délai d'expiration spécifique de 5 minutes, que devez-vous faire si une nouvelle note est ajoutée ou modifiée dans ce délai de 5 minutes ?

Par exemple, si une instruction SQL correspond à une instruction SQL dans mybatisselect * from comments condition,我可以通过ehcache建立一个内存缓存,但是如果commentsUn nouvel enregistrement est ajouté ou mis à jour, comment le cache ajouté dans ehcache peut-il être mis à jour correctement ?

Des internautes peuvent-ils suggérer des solutions pertinentes ? merci :-)

为情所困
为情所困

répondre à tous(1)
代言

Puisqu'il s'agit d'un cache, il doit être tolérant quant à l'efficacité des données. Sinon, si vous souhaitez contrôler strictement les données en temps réel, vous ne pouvez accéder à la base de données que pour des requêtes.

Selon le scénario commercial décrit par l'interrogateur, la solution courante consiste à maintenir la relation entre les livres et les critiques de livres via des index externes (bien sûr, l'index n'est pas complètement en temps réel), puis via le cache kv (redis, ehcache, carte, etc.) pour mettre en cache le contenu spécifique de la critique de livre.
Lors de la mise à jour des données, la base de données est généralement mise à jour en premier, puis le cache est mis à jour. L'index n'a pas besoin d'être mis à jour.
Lorsque les données sont mises à jour (insérer), la relation correspondante doit être ajoutée à l'index en fonction de la mise à jour.

Pour un index externe simple, vous pouvez ajouter une table relationnelle (revue de livre) dans la base de données, créer un index et, lors de l'interrogation de critiques de livres, interroger d'abord (requête paginée) la table relationnelle, puis interroger la critique de livre spécifique. informations via la clé primaire de la critique de livre (la mise en cache est ajoutée à une seule information de critique de livre), il est recommandé d'interroger deux fois et d'assembler les données en mémoire, et de ne pas utiliser de requête de jointure de table (affecte les performances de la base de données). Il n'est pas nécessaire de créer un cache pour les données des tables relationnelles. Il vous suffit d'augmenter le cache des informations sur les critiques de livres.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal