关于更新实体数据以及如何最好地处理它,我的团队进行了一些讨论。这是一个安全框架,所以这里有一些限制和想法。实体更新策略
- DB中的每个表都有一个PK,它是一个GUID,这是我们的多节点集群解决方案所必需的。我们的想法是,我们不希望通过API向客户公开此实体,因为它可以做两件事,
- 给他们提供他们工作所需的更多信息,并给予黑客更多关于系统的信息。
- 支持恶梦是一个客户端以某种方式硬编码到这个ID,如果我们需要改变我们PK的客户端受到影响。
解决方案,露出像一个独特的角色名称的对象和领域项目的博物关键,在一起机制保障独特但更新这两个值中是一个挑战,因为你需要指定老和新值更新,或传递原始对象和新对象中的两个对象,以便我们可以找到要更新的对象。有点凌乱,
另一种方法是做一个备用钥匙,并将其暴露给客户,他们可以使用它的所有他们想要的,我们不关心,因为它不绑定到我们的PK。
似乎现在每个人都只是将PK作为身份证用于没有任何问题的实体,不确定如何说服我们的团队从古老的编程日开始。
另一个问题是如何支持部分更新,问题是你有10个属性,4个集合等实体...与名称+领域组合,并指定要更新的属性,而不是拉下整个对象更改1字段,发回更新。我说延迟加载集合,但不知道部分更新是否合理。
想法?
谢谢!
因为我们有我们必须使用GUID /唯一标识符,主键一个分布式数据库,并且通过使数据库集群处于活动状态,类似于Oracle RAC,但这是使用MS Sql,问题是不支持标识列,因为您可以插入任何节点,并且该值可能不要unqiue或已经被使用,只要使用一个GUID就简单多了。 – Enigmae 2009-05-28 13:40:08