首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工作流网站-后端设计建议

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

Stack Overflow用户
提问于 2017-01-16 15:17:42
回答 1查看 231关注 0票数 4

背景:

我开始设计一个新的网站来跟踪大量的项目的工作流程。每个项目都有分配给他们的阶段(计划、实施、实施后、结束等)。每个阶段都包含不同的任务,等等。

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

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

正如你们中的许多人所知道的,在商业世界中,项目和标准在快速变化。因此,我期待使这个网站在每个阶段和任务尽可能的动态和快速变化。例如,同事可能需要对以前没有定义的每一个项目执行额外的任务。然后,我们将需要能够快速更改所有当前开放的项目条目和所有新项目的前进,以添加新的项目到核对表。

问题:

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

最初的想法:

SQL /数据库存储:

优点:

  • 容易存储大量数据。
  • 通过主键和外键链接项目/阶段/任务的能力
  • 后端的存储过程将有助于操纵数据库,并允许在不需要重新编译站点的情况下更改查询。(大加!)

缺点:

  • 新的核对表项目将导致需要在每个表中创建新的列。
  • 每个任务的复杂性都会导致大量表的加入。
  • 一旦创建了新列,每个存储过程都需要进行修改,以确保在其操作中包含新列。

XML / YAML /任何标记语言

优点:

  • 从“前进”的角度来看,很容易被操纵。
  • 轻松可以创建一个新的“节点”在每个任务阶段,可以更新网页。

缺点:

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

最后评论:

我倾向于使用SQL/数据库存储,但不认为对设计/框架的更改是一个快速的壮举。如果有任何方法的数据存储,我没有,这可能是一个潜在的更适合的解决方案,请告诉我。

谢谢大家。

EN

回答 1

Stack Overflow用户

发布于 2017-01-16 17:33:03

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

代码语言:javascript
复制
{
 "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 Document等)对数据模式的限制较少,并且通常比SQL数据库的扩展性要好得多。

因此,您可以更容易地更改添加新属性的项目对象架构。检索项目对象也要容易得多--为了“构造”项目,您不需要做大量的SQL联接。

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

  1. 要创建项目-将一个插入到文档db与4个插入(项目、所有者、两个任务)到SQL。
  2. 要获得项目-一个读取与一个相当复杂的选择与联接。项目对象越复杂,select语句就越多。
  3. 但是,如果您需要将应用程序项目或任务按照某些标准进行过滤,那么SQL将更加方便,而且显然具有更好的性能。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41679538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档