Context:
Je commence à concevoir / concevoir un nouveau site web qui permettra de suivre le stream de travail d'une grande quantité de projets. Chaque projet se verra atsortingbuer des phases ( planification, mise en œuvre, post-implantation, fermeture, etc … ). Chacune des phases contient différentes tâches, etc.
Certains peuvent requestr, " Cela ressemble beaucoup à d'autres logiciels de gestion de workflow (WMS) qui existent déjà, pourquoi ne pas l'utiliser? "
En plus de ce site qui suit chaque phase comme les autres outils WMS, il devra également interagir directement avec d'autres systèmes (différents domaines) et logiciels (API / WMI) directement à partir des pages. Il permettra à nos administrateurs de gérer les GPO Active Directory, de s'assurer que les nouveaux ordinateurs sont correctement initialisés avec les parameters corrects, de surveiller la fidélité de la database SQL sur les ordinateurs distants et bien plus encore. Et pour ceux qui croient que c'est important pour la question … Je prévois actuellement de build le site en utilisant .NET.
Comme beaucoup d'entre vous le savent, les projets et les normes évoluent rapidement dans le monde des affaires. En tant que tel, je cherche à rendre ce site aussi dynamic et rapide que possible en ce qui concerne chaque phase et chaque tâche. Par exemple, les associés peuvent avoir besoin d'effectuer une tâche supplémentaire sur chaque projet qui n'est pas défini auparavant. Nous devrons ensuite être en mesure de modifier rapidement toutes les inputs de projet actuellement ouvertes et tous les nouveaux projets pour append le nouvel élément à la list de contrôle.
Question:
Dans l'expérience de tout le monde, qu'avez-vous trouvé comme le meilleur moyen de stocker de grandes quantités de données qui nécessitent de nouvelles modifications de données fréquemment?
Pensées initiales:
Stockage SQL / Base de données:
Avantages:
Les inconvénients:
XML / YAML / Any Markup Language
Avantages:
Les inconvénients:
Commentaires finaux:
Je penche pour le stockage SQL / Base de données, mais je ne vois pas de changements rapides dans le design / framework. S'il y a des methods de stockage de données que j'abandonne qui pourraient être un meilleur ajustement à la solution, s'il vous plaît faites le moi savoir.
Merci tout le monde.
Plus de détails sont nécessaires pour vous reorder un stockage spécifique. Mais à partir de votre description, un projet ressemble à un document avec de nombreux attributes et éléments enfants comme celui-ci:
{ "id": 43233, "name": "MyProject", "created": "02/01/2017", "owner": { "id": 32132, "name": "John Smith" } "tasks": [ { "id": 43243, "name": "Task1", "priority": "high", "status": "new" }, { "id": 43253, "name": "Task2", "priority": "low", "status": "done" } ]}
Une database de documents peut vous convenir si votre application n'a pas besoin de faire beaucoup de requests à travers les projets et travaille principalement avec un projet. Les bases de données de documents telles que MongoDB, CouchDB, Azure Document DB, etc. ont less de ressortingctions sur le schéma de données et sont en règle générale beaucoup mieux mises à l'échelle que la database SQL.
Ainsi, vous pouvez modifier plus facilement le schéma d'object du projet en ajoutant de nouveaux attributes. La récupération de l'object projet sera également beaucoup plus facile – vous n'avez pas besoin de faire beaucoup de jointures SQL pour "build" un projet.
A propos de la performance: cela dépend de la façon dont vous allez utiliser DB. Pour l'exemple ci-dessus, vous aurez: