Version courte: Peut-on lire des dizaines ou des centaines de partitions de table de manière multithread pour augmenter les performances de plusieurs ordres de grandeur?Azure Performances du stockage de table à partir de la lecture filaire massivement parallèle
Version longue: Nous travaillons sur un système qui stocke des millions de lignes dans le stockage de table Azure. Nous partitionnons les données en petites partitions, chacune contenant environ 500 enregistrements, ce qui représente un jour de données pour une unité. Comme Azure n'a pas de fonction "somme", pour extraire une année de données, nous devons soit utiliser une pré-mise en cache, soit additionner nous-mêmes les données dans un rôle Web ou de travail Azure.
En supposant que les éléments suivants: - La lecture d'une partition n'affecte pas les performances d'un autre - La lecture d'une partition a un goulot d'étranglement en fonction de la vitesse du réseau et la récupération du serveur
On peut alors faire une supposition que si nous voulions Pour additionner rapidement un grand nombre de données à la volée (1 an, 365 partitions), nous pourrions utiliser un algorithme massivement parallèle et il s'agirait presque parfaitement du nombre de threads. Par exemple, nous pourrions utiliser les extensions parallèles .NET avec plus de 50 threads et obtenir une augmentation de performance énorme.
Nous travaillons sur la mise en place de certaines expériences, mais je voulais voir si cela a déjà été fait. Puisque le côté .NET est essentiellement inactif en attente d'opérations à latence élevée, cela semble parfait pour le multi-threading.
Avez-vous des commentaires pour cette 6 années plus tard? – mayu
Oui, c'est une bonne idée, d'autant plus que les objectifs d'évolutivité ont augmenté au fil du temps. Jetez un oeil à cette page pour comprendre les limites: https://docs.microsoft.com/en-us/azure/storage/storage-scalability-targets –