Je dispose d'un service chargé de collecter un flux de données en continu à partir du réseau. L'objectif est que l'ensemble de données complet puisse être utilisé (en lecture seule) à tout moment. Cela signifie que le dernier message de données qui arrive au plus ancien doit être accessible au code client.Les fichiers mappés en mémoire sont-ils défectueux pour les données en constante évolution?
Le plan actuel consiste à utiliser un fichier mappé en mémoire sous Windows. Principalement parce que l'ensemble de données est énorme, couvrant des dizaines de GiB. Il n'y a aucun moyen de savoir quelle partie des données sera nécessaire, mais lorsque cela est nécessaire, le client peut avoir besoin de sauter à volonté.
Les fichiers mappés en mémoire conviennent parfaitement. Cependant, j'ai vu (écrit) qu'ils sont meilleurs pour les ensembles de données qui sont déjà définis et ne changent pas constamment. Est-ce vrai? Est-ce que le scénario que j'ai décrit ci-dessus fonctionne raisonnablement bien avec des fichiers mappés en mémoire? Ou est-il mieux de conserver un fichier mappé en mémoire pour toutes les données jusqu'à un certain nombre de Mo de données récentes, de sorte que le fichier mappé en mémoire contienne près de 99% de l'historique des données entrantes, mais je stocke le le plus récent, disons 100 Mo dans un tampon mémoire séparé. Chaque fois que ce tampon est plein, je le déplace vers le fichier mappé en mémoire et l'efface ensuite.
Donc, est-ce un vote pour séparer le plus récent ~ n Mo dans un tampon de mémoire léger et juste ajouter périodiquement lorsque le tampon approche de la capacité? – ApplePieIsGood
Non c'était un vote pour mettre le tout dans un fichier mappé en mémoire et laisser le système de cache du système s'en inquiéter –