在我的项目中,服务之一是仅执行两个任务的文件存储服务:上传文件并获取ID,然后按ID下载文件。没有其他的。没有花哨的东西,例如UI,加密(HTTPS就足够了),100%的可用性,重复数据删除等。只有2个简单的任务。
使用ASP .Net Core,此服务需要半小时才能创建和开始使用,因为该服务仅在组织的本地网络中使用。
但是在开始之前,我有几件事要考虑:
在调查时,我发现了两种变体:
(1)的优点:
(1)的缺点:
(2)的优点:
(2)的缺点:
此外,选择一个嵌入式的基于文件的数据库也将强制使用某些手动备份(第三方服务),并且仅依赖于此。它使开发和部署变得简单(例如,备份时文件将始终与数据库同步),但另一方面却很难。
什么是最佳选择?还是有更多更好的解决方案?也许没有很多功能膨胀的简单第三方服务?
答案 0 :(得分:0)
假设多个用户将使用同一数据库,我建议使用数据库服务器(Sql Server / MongoDB)而不是基于文件的数据库(SqlLite / LiteDb)。即使它不是单独的物理服务器,使用旨在由多个并发客户端访问的技术也会为您提供更好的可伸缩性。基于文件的数据库通常是为单用户方案设计的,由于每次只能有一个线程访问文件,因此它会很快成为瓶颈。
关于使用Sql还是NoSql-我建议设计您编写的代码以最大程度地减少改变主意的成本。从当前的需求列表中选择一项似乎并没有多大好处,以我个人的经验,这种情况通常会导致以下两种结果之一:
在任何一种情况下,花在前期尝试上的时间都没有多大用处。话虽这么说,但仍然有必要进行预先研究(就像您一样),因为先验知识是在时间紧迫的情况下做出良好决策的绝佳工具。
最后,您没有提及任何有关安全性的信息-如果您的组织有安全性专家,我强烈建议您在设计系统时与他们紧密合作。任意文件上传都可以用作攻击媒介,因此验证上传内容和目的地非常重要。