Je dispose de 8 téraoctets de données composées de ~ 5000 rangées d'éléments de petite taille (moins de cent octets par élément). J'ai besoin de charger des sections de ces tableaux (quelques dizaines de megs à la fois) en mémoire pour les utiliser dans un algorithme le plus rapidement possible. Les fichiers mappés en mémoire sont-ils adaptés à cette utilisation, et sinon, que dois-je utiliser d'autre?Base de données mappée en mémoire
Répondre
Compte tenu de vos exigences, je voudrais certainement aller avec des fichiers mappés en mémoire. C'est presque exactement ce pour quoi ils ont été faits. Et puisque les fichiers mappés en mémoire consomment peu de ressources physiques, vos fichiers extrêmement volumineux auront peu d'impact sur le système par rapport aux autres méthodes, d'autant plus que des vues plus petites peuvent être mappées dans l'espace adresse juste avant d'effectuer des E/S. éléments). L'autre grand avantage est qu'ils vous donnent l'environnement de travail le plus simple possible. Vous pouvez (surtout) simplement voir vos données comme un espace d'adressage mémoire important et laisser Windows s'inquiéter de l'E/S. Évidemment, vous aurez besoin de construire des mécanismes de verrouillage pour gérer plusieurs threads, mais je suis sûr que vous le savez.
- 1. Structure de données Mémoire mappée ou DB? (en millions d'articles)
- 2. lmdb (base de données mappée en mémoire Symas Lightning) ne fonctionne pas sur CentOS
- 3. systèmes de fichiers - Mémoire-mappée Fichiers
- 4. Comment utiliser la mémoire épinglée/la mémoire mappée dans OpenCL
- 5. L'API mappée en mémoire .NET 4 prend-elle en charge d'autres flux de données?
- 6. Base de données HSQL 100% en mémoire
- 7. Base de données en mémoire légère
- 8. Nettoyage d'une base de données en mémoire
- 9. pointeur passage à l'interface mémoire mappée
- 10. mémoire mappée à l'aide de l'éditeur de liens
- 11. Mémoire de fuites de données de base?
- 12. compilateur intel sur vista: "incapable de obtenu la mémoire mappée"
- 13. Dans la base de données de mémoire
- 14. Fuites de mémoire de données de base
- 15. Serveur de base de données Advantage: requêtes en mémoire
- 16. Base de données en mémoire - remigration. Impossible de se connecter
- 17. Tables de base de données en mémoire dans java
- 18. Solution de base de données en mémoire/Embedded
- 19. En wrapper de base de données mémoire pour system.data.sqlite
- 20. ayant une base de données en mémoire - C
- 21. Enregistrement sur disque d'une base de données en mémoire
- 22. Comment inspecter la base de données Activiti H2 en mémoire?
- 23. Comment interroger une base de données en mémoire?
- 24. IPhone - créer une base de données en mémoire
- 25. Gérer la mémoire mappée (glMapBuffer) avec std :: vector
- 26. Recherche de la colonne de base de données à laquelle est mappée la propriété d'une entité
- 27. mmap mémoire de petite taille, lorsque munmap, est glibc va libérer la mémoire mappée à OS?
- 28. Lier la texture avec la mémoire mappée épinglée dans CUDA
- 29. Comment enregistrer des données en utilisant la base de données H2 en mémoire?
- 30. Comment charger une base de données sur disque dans une base de données en mémoire en utilisant Sqlite dans Mono?
L'accès sera-t-il principalement aléatoire ou séquentiel? –
séquentiel. Aussi, si possible, je voudrais interroger à partir de plusieurs threads et aussi développer les tableaux à leurs extrémités. – David
Vous n'avez donc pas besoin de fonctions de base de données sophistiquées telles que l'indexation et les clés de recherche, le tri, etc? C'est essentiellement un problème de fichier plat d'accès séquentiel? Et je suppose que vous pouvez coder de manière très proche des besoins de l'application et n'avez pas besoin de produire une API générique. –