是否存在要求查询结果具有这种一致性的主体?

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 应该是一致的

以上是关于是否存在要求查询结果具有这种一致性的主体?的主要内容,如果未能解决你的问题,请参考以下文章

一致性检验之Kappa、ICC、kendall协调系数的差别

业务逻辑漏洞挖掘随笔信息一致性安全篇

unionexcept和intersect查询

如何声明具有相同主体的 2 个接口?

MySql:联合查询

mysql联合查询