2017-05-09 1 views
0

Je suis en train de concevoir une application Web - Dashboard - pour afficher les données \ graph sur l'interface utilisateur de Table Storage.Conception pour gérer les détails multi-paramètres dans les comptes de stockage de table Windows Azure

Nous avons pour l'heure environ 20 paramètres attendus pour entrer dans le stockage de table - chaque paramètre a une valeur connexe, qualité & time_Received associée.

Cette application devrait être construite d'une manière, il devrait accueillir mieux quand il y a

  1. nouveaux paramètres obtenir dans le stockage Tableau

  2. nouveaux clients concernés - ce qui signifie compte de stockage peut être différent, mais avec la même application à faire de l'activité similaire pour un autre client pour différents ensemble de paramètres

Ma Recherche

Option1

Dois-je avoir une table pour chaque paramètre (colonnes - Valeur, qualité, time_received, PartitionKey, RowKey, timestamp) avec différents noms de tables Param1_Table dire, Param2_Table ... OU

Option2

Dois-je avoir une seule table, avec toutes les valeurs de paramètres dans la même table, (même Colum ns = valeur, la qualité, time_received, PartitionKey, RowKey) - qui peut être différencié avec PartitionKey (comme param _ _ PK, param2_PK ...) et RowKey

Comportement attendu de l'application

Tous les paramètres! aura besoin (ou sera autorisé) d'être abonné par un utilisateur Le système doit se comporter de manière flexible pour permettre à un utilisateur de sélectionner \ désélectionner un paramètre pour l'affichage. Ainsi, à un moment donné, le système tel qu'il est configuré doit afficher les données \ Graphique des détails du paramètre sélectionné dans le stockage de table.

Répondre

0

Dans Azure Table Service, les valeurs PartitionKey et RowKey sont indexées pour créer un index en cluster qui permet des recherches rapides et Azure Table Service ne nous permet pas de créer des index secondaires. Il est donc recommandé d'utiliser pleinement PartitionKey et RowKey. Nous pouvons utiliser ces deux colonnes pour stocker les données dont nous avons besoin d'interroger fréquemment. Par exemple, vous pouvez enregistrer le nom du paramètre en tant que PartitionKey et la valeur du paramètre en tant que RowKey si vous créez uniquement une table pour tous les paramètres. Vous pouvez enregistrer la valeur du paramètre en tant que PartitionKey et la qualité en tant que RowKey si vous créez une table pour chaque paramètre. Créer une table pour chaque paramètre fera indexer la colonne supplémentaire (qualité).

Autre avantage de créer une table pour chaque paramètre

tables multi vous aider à organiser logiquement vos entités, il pourrait vous aider à gérer l'accès aux données en utilisant des listes de contrôle d'accès, et vous pouvez déposer une table entière en utilisant une seule opération de stockage.

avantage de créer une table pour tous les paramètres

Vous pouvez obtenir des données croisées paramètres dans une requête. Si vous avez besoin de transactions atomiques entre les types d'entités, vous devez stocker ces types d'entités multiples dans la même partition dans la même table.

En fonction de votre description, créer un tableau pour chaque paramètre sera mieux adapté à vos scénarios. Dans ce cas, comme je l'ai mentionné si je donne la valeur de param comme PartitionKey (PK) et la qualité comme RowKey (RK) au moment où il sera probablement d'avoir un duplicata? étant que = = La valeur attendue pour Parameter_Value sera dans une plage de nombres => La valeur attendue de la qualité est bonne, mauvaise ... Est-ce vrai? La définition de valeur de paramètre en tant que PR est juste une démo qui vous montre les différences entre le choix d'une table ou plusieurs tables.

Pour choisir la colonne PK et RK, vérifiez si la combinaison de valeurs de ces colonnes est unique et quelle instruction de requête sera utilisée pour interroger les données de votre table. Puisque PK et RK sont indexés, la requête selon PK et RK sera exécutée efficacement. Par exemple, si la table est souvent interrogée par la valeur de paramètre et time_Received, il est préférable de définir ces colonnes comme PK et RK si la combinaison de valeurs de ces colonnes est unique.

+0

Ok Merci Amor Selon votre sugestion je voudrais aller pour 1 tableau pour chaque paramètre. Dans ce cas, comme je l'ai mentionné si je donne la valeur de param comme PartitionKey (PK) et la qualité comme RowKey (RK) au moment où il sera probablement d'avoir un doublon? étant => La valeur attendue pour Parameter_Value sera dans une plage de nombres => La valeur attendue de la qualité est bonne, mauvaise ... Est-ce vrai? Je pensais avoir des colonnes comme 1-Valeur 2-Qualité 3-Received_Time 4-existant PK 5- existant RK 6- Timestamp existant. Mais comme vous avez dit PK peut prendre la valeur de Value \ Quality, RK peut avoir un unique_Val? Votre suggestion? – jAntoni

+0

Merci pour vos commentaires. J'ai modifié ma réponse en fonction de votre commentaire. – Amor

+0

Oui c'est une bonne idée. Merci. ===> Time_Received pour un paramètre sera toujours unique ======> Dans ce cas, suffit-il de créer une seule colonne, Quality pour chaque paramètre Table? =====> La valeur peut entrer dans PK ========> et le Time_Received peut entrer dans RK. ====> Horodatage pour que l'heure soit créée \ mise à jour. =========> Est-ce que cette structure serait OK pour chaque table de paramètres? – jAntoni