我在想一个关于分配管理的项目。
假设我有一个中央数据库,其中包含公司生产的所有产品的销售信息。在固定的定期间隔内,我用分销商提供的新数据填充这个数据库。
在分销商的系统上还安装了其他本地数据库。在Java平台上有一些接口,它们通过这些接口访问各自的本地数据库。分销商每周都必须将他们的数据库与我们的数据库同步。当分销商与数据库同步时,我们的销售记录将被更新。
分销商不应该显示销售回溯日期。但是,假设一个分销商通过更改他的系统日期来向他的本地数据库中添加一个回溯日期的销售发票来做到这一点。然后他把他的数据库和我们的同步,销售结果会反映在我们的数据库中。
作为一个程序员,我如何阻止他这样做(只要界面是由我制作的)。
发布于 2014-06-15 13:35:55
简短的回答:是的,你可以(而且应该.)--但你也应该继续读下去
中间答案:您不应该让任何值不受控制地进入您的数据库进行同步,但是,例如,要跟踪每个分发服务器上一次同步的数据,并拒绝任何旧的数据,除非明确地确定为纠正--但您仍然应该继续阅读。
很长的答案:答案将是技术性的,而作为程序员,这将是你的责任。但问题在于商业层面:你想要防止什么?分发服务器再次发送旧文件的错误,还是完全不同的错误?一个分销商故意试图把错误的数据放进你的基地?外部攻击(来自一个并发的,一个脚本孩子,或一个被抛弃的女朋友.)故意发送伪造的数据来摧毁你的数据库?谁对输入的数据负责?你有记录谁(以及如何识别)发送数据的痕迹吗?数据腐败的风险(发生和破坏)是什么?你(或你的公司)能在防护计数器上投资多少?在考虑如何做之前,必须能够回答这样一个问题:应该做什么、为什么做、如果不做的话风险是什么。
如果同步错误数据的风险太高,您甚至可以考虑到您的分销商在唯一(集中式)数据库上直接使用web应用程序的可能性。
如果您已经回答了业务级别的问题,并且您知道您确实需要保护您的数据库不受经销商添加旧销售发票的影响,那么您有两种方法:
如果您的流程可以确保一次只有一个分发服务器可以同步其基础,则可以拥有一个副本。
https://stackoverflow.com/questions/24228903
复制相似问题