Approche 1(A) : Créer une base de données unique pour tout. (Avec collecte unique)
Avantages :
- Moins de maintenance :sauvegarde, création d'utilisateurs de base de données, restauration, etc.
Inconvénients :
- Vous pouvez voir verrou au niveau de la base de données pour créer des index sur une grande base de données
- Pour effectuer des opérations sur des données de capteur spécifiques, vous devez ajouter des index supplémentaires pour récupérer uniquement la collection spécifique au capteur
- Vous êtes tenu de de ne pas créer plus de 64 index sur une seule collection. Bien que cela semble une mauvaise stratégie d'indexation.
Approche 1(B) : Créer une base de données unique pour tout. (Avec 1 collection pour chaque capteur)
Avantages :
- Moins de maintenance :sauvegarde, création d'utilisateurs de base de données, restauration, etc.
- Réduit le besoin de créer des index pour identifier les données spécifiques aux capteurs de l'ensemble de la collection monolithique
- Chaque requête spécifique à un capteur sera uniquement ciblée sur une collection spécifique. Ne nécessite pas d'extraire un grand ensemble de travail en mémoire par rapport à une seule grande collection.
- La construction d'un index sur une collection relativement petite est plus faisable que celle d'une grande collection dans une seule base de données
Inconvénients :
- Vous risquez de créer trop d'index. (Somme du nombre total d'index sur toutes les collections).
- Plus de maintenance est nécessaire pour un grand nombre d'index.
- WiredTiger crée 1 fichier pour une collection et 1 pour l'index en interne. Si votre cas d'utilisation se développe avec un grand nombre de capteurs. Vous risquez d'utiliser une limite de fichiers ouverts de 64 Ko.
En termes de performances, est-ce important si je partitionne les données par capteur ou par métrique ?
- Cela dépend des schémas d'accès attendus de votre application d'analyse.
En termes de performances, dois-je créer une collection uniquement pour les informations sur les capteurs, puis des collections pour les données ou simplement fusionner les deux dans la même collection ?
-
La création d'une collection pour les métadonnées de capteur et les données de capteur peut être nécessaire. Cela minimisera la duplication des métadonnées de capteur dans chacune des données de capteur collectées.
-
Vous aimerez peut-être lire Article du blog Williams ici sur la conception de ce modèle.
Comme toujours, il est préférable de concevoir un exemple de schéma et de tester vos requêtes dans votre environnement de test.