是否存在要求查询结果具有这种一致性的主体?
Posted
技术标签:
【中文标题】是否存在要求查询结果具有这种一致性的主体?【英文标题】:Is there a principal that requires this type of consistency in query results? 【发布时间】:2017-05-04 02:08:12 【问题描述】:我正在测试一个服务响应,(相同的服务相同的操作不同的参数)。
当按出生日期搜索时,返回的结果之一是客户 id = "CID1234"。
所以我再次搜索,但这次是通过客户端 id = "CID1234",相同的服务相同的操作,但没有返回任何结果。
当我提出这个问题时,我被告知按 Id 搜索客户端只返回活跃的客户端,这与观察到的结果一致。
不知何故,我认为必须有能量守恒的等价物,应该有数据/信息的守恒。根据查询参数,同一服务操作中的记录不能同时存在和不存在,就好像它是一个 SQL 查询肯定它没有意义,它会打破一些我不能的规则想想它可能叫什么。
我包含SQL标签是因为我确定如果这是一个sql查询那么这种情况就不会发生,但我不知道为什么,只是我们一直认为SQL是理所当然的,SOA可以不同吗?
【问题讨论】:
您需要更具体。您似乎正在使用字符串,例如'CID1234'
。或者您的意思是字段CID
包含整数值1234
?如果您使用的是字符串,请注意空格;以下值不一样... 'CID1234'
, 'CID 1234'
, 'CID1234 '
【参考方案1】:
作为 dba,我将其描述为业务逻辑中的缺陷。然而,这实际上取决于开发人员打算如何使用 API。
它可能只是被忽略了,也可能是出于隐私或安全原因而故意的。或者只是不需要。
您描述的场景听起来有点不一致,但如果这是给开发人员的要求,并且满足他们完成工作的要求。
仅仅因为您认为它可以或应该以不同或更好的方式工作并不会出错。
【讨论】:
假设这是在数据库级别并且直接 SQL 采石场的行为是这样的,那么它会被认为是一个错误,问题是为什么这是一个错误? lambda演算的什么要求被打破了【参考方案2】:这不是技术或架构问题 - 这是一个业务决策,搜索是否可以返回非活动帐户的结果和/或您是否无法检索非活动帐户。
也就是说,当帐户在请求 1 时处于活动状态并在请求 2 时变为非活动状态时,您可能会遇到这种情况。尽管我希望请求 2 的结果表明该帐户处于非活动状态
【讨论】:
不,这与时间无关,如果一条记录是根据其字段的值来获取的,那么它会被检索,如果它是根据其他字段的值来获取的,那么它不会被检索,业务决策使事情前后矛盾不是一个正当的借口。记录要么是活动的,可以通过它的任何字段值访问,要么它是非活动的,不能被任何字段值检索。这是不一致的不被接受的行为。 我是说商业决策是一种方式或另一种方式(即,要么你不显示非活动,要么你这样做)我同意 API 应该是一致的以上是关于是否存在要求查询结果具有这种一致性的主体?的主要内容,如果未能解决你的问题,请参考以下文章