我正处于一个企业客户的新项目的最开始阶段,正在考虑基本的架构决策。到目前为止,我的经验一直在.NET应用程序,WPF和闪存,但这个新项目必须是网络交付,我打算使用Angular 2的客户端应用程序,所以我几乎没有经验,只有常识和研究,以借鉴。
这个项目无疑会随着它的发展而发展,尽管我对MS SQL很满意,但我知道随着模式的更改和表的调整,管理起来有多么困难。我喜欢Microsoft Web API作为服务提供商的样子,尽管它对我来说是全新的,也许MongoDB的灵活性,但除此之外,我对此一无所知。这个项目可能会在不久的将来从我自己的安全服务器转移到Azure位置,如果这有任何影响的话。
这个项目可能会在未来15年内发展和使用,所以我需要一些稳定性,而不是目前的“热门解决方案”。我认识到我需要为改变而设计,但我想试着保持长期维护的简单性。
如果有足够的资源来协助开发,并且解决方案或拥有的公司有可靠的记录,有人能建议一个好的,健壮的解决方案,并且具有良好的可扩展性吗?
我期待着听到你的想法。
克里斯
发布于 2016-08-30 22:30:42
关于后端
使用Microsoft Web API或其他后端服务对这个问题并不重要。你必须选择一个你喜欢的,写代码并且尽快把事情做好。这里最大的问题是如何传递API数据以及如何存储这些数据。
关于数据交付
我建议您使用REST API,并以JSON格式交付数据。使用Angular,您可以轻松地与REST API通信。
关于数据库
架构和数据丢失
Relational和Non relational数据库具有不同的目标。一种在模式上更灵活,但对数据丢失和一致性的安全性较低。另一种在防止数据丢失方面的安全性更好,但具有静态模式。其他人则试图同时实现一致性和灵活性。
如果您的应用程序将用于保存敏感数据,我认为最好使用SQL。如果您的应用程序没有敏感数据,您可以使用NoSQL并享受模式的灵活性。
您还有第三种选择,使用一些同样实现NoSQL的hibrid db作为PostgesSql。
读写
SQL在将数据写入DB方面具有更好的性能,因为您的单例数据仅存储在一个位置,并由其关系使用。但SQL在读取数据时性能较差,因为我们需要使用join从多个表中获取数据,以避免冗余数据和不一致。
NoSQL在读取方面比写入方面具有更好的性能,因为我们使用嵌套模式,并且文档中可以包含其子数据,因此您不需要读取另一个表(集合)来获取嵌套数据。所有信息都在文档中,甚至包括子数据。另一方面,使用NoSQL编写要比使用SQL慢,因为您必须在子表和父文档中插入/更新数据,因为我们使用的是更多冗余数据。另一件事是一致性,因为您必须在多个表(集合)中写入相同的数据,如果我们忘记更新某些文档,这可能会导致一些问题。
我希望我的观点能帮助你为你的项目找到更好的解决方案。
https://stackoverflow.com/questions/39229899
复制相似问题