工作流程网站 - 后端设计建议

时间:2017-01-16 15:17:43

标签: sql-server xml database architecture

背景

我开始构建/设计一个新网站,该网站将跟踪大量项目数量的工作流程。每个项目都会分配相位(计划,实施,实施后,关闭等...... )。每个阶段都包含不同的任务等。

有些人可能会问," 这听起来与已经存在的其他工作流程管理软件(WMS)非常相似,为什么不使用它?"

除了像其他WMS工具一样跟踪每个阶段的网站之外,它还需要直接从页面与其他系统(不同的域)和软件(API / WMI)直接交互。它将允许我们的管理员维护Active Directory GPO,确保使用正确的设置正确初始化新计算机,监视远程计算机上的SQL数据库保真度等等。对于那些认为对这个问题很重要的人......我目前正计划使用.NET构建网站。

正如你们许多人所知,项目和标准在商业世界中迅速发生变化。因此,我希望在每个阶段和任务方面尽可能使这个网站充满活力和快速变化。例如,员工可能需要对之前未定义的每个项目执行额外任务。然后,我们需要能够对所有当前打开的项目条目和所有新项目进行快速更改,以便将新项目添加到清单中。

问题:

在每个人的经验中,您发现什么是存储需要经常更新数据的大量数据的最佳方式?

初步想法:

SQL /数据库存储:

优点:

  • 轻松存储大量数据。
  • 能够通过主键和外键链接项目/阶段/任务
  • 后端上的存储过程有助于操作数据库并允许更改查询而无需重新编译站点。 ( Big Plus!

缺点:

  • 新的核对清单项将导致需要在每个表中创建新列。
  • 每项任务的复杂性可能导致加入大量表格。
  • 创建新列后,需要修改每个存储过程以确保新列包含在其操作中。

XML / YAML /任何标记语言

优点:

  • 轻松操纵"前进"改变观点。
  • 轻松创建一个新的"节点"在每个可以更新网页的任务阶段下。

缺点:

  • 将数据保存到文件具有很高的波动性(文件可以删除,无数据恢复)。
  • 尝试同时访问文件的用户可能会遇到错误(需要在代码中构建锁以读取/操作文件数据)。

最终评论:

我倾向于SQL /数据库存储,但是没有看到设计/框架的变化是一个快速的壮举。如果我遗漏了任何可能更适合解决方案的数据存储方法,请告知我们。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

需要更多详细信息来推荐您一些特定的存储空间。但是根据您的描述,项目看起来像具有许多属性和子项的文档,如下所示:

{
 "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"
 }
]}

如果您的应用程序不需要跨项目提出大量请求并且主要与一个项目一起工作,那么文档数据库可能更适合您。像MongoDB,CouchDB,Azure文档数据库等文档数据库对数据模式的限制较少,并且通常比SQL数据库扩展得更好。

因此,您可以更轻松地更改项目对象架构,添加新属性。检索项目对象也会更容易 - 你不需要做很多SQL连接,以便构建"项目

关于性能:这取决于您将如何使用DB。对于上面的示例,您将拥有:

  1. 创建项目 - 将一个插入文档db vs 4插入(项目,所有者,2个任务)到SQL
  2. 获取项目 - 一个读取与一个相当复杂的连接选择。您拥有的复杂项目对象就越复杂。
  3. 但是如果你需要通过某些标准来获取应用程序项目或任务,那么SQL会更方便,显然会有更好的性能。