双活无共享数据库架构( 四 )


观众一直同意Jane一直以来的观点,但现在对可以做出哪种架构决定来利用ASN感到好奇 。
架构决策Jane解释说,通常,数据存储根据其用途分为多种类型 。
· 记录系统:数据存储区用作应用程序的记录系统 。它必须是一致的,没有关于数据准确性的任何歧义或疑问 。
· 参考系统:数据存储区用作数据的辅助系统,用于参考 。分析存储属于此类别 。机器学习,历史数据分析是在此数据存储上完成的 。
· 只读:数据存储区用于只读活动,并且从未发生任何更新 。
· 静态内容:数据存储区用于托管静态内容 。示例包括用于网络媒体资源的托管图像和不经常更改的营销抵押品 。
· 缓存:数据存储区用于在多个应用程序之间缓存数据,以加快访问速度,并且对延迟极为敏感 。
· 会话状态:数据对于应用程序的特定会话而言是本地的,与该会话外部无关 。例如,将用于用户交互的行为数据放入应用程序,购物车,Cookie等 。
Jane继续说,数据库层中的主动-主动考虑可接受的体系结构模式取决于数据存储的使用情况 。在频谱的最末端,会话状态数据存储区保存的数据仅与该会话相关,而在外部不可见 。在其他位置创建数据存储的副本对应用程序无用,因为它无法从那里读取状态 。因此,活动数据架构实际上不会增加任何价值,并且不相关 。
读者同意甚至不需要数据库副本,更不用说主动-主动了,而是想知道它们可能与其他地方有关 。Jane解释说,在其他一些情况下,例如在购物车数据存储区中,我们可能希望在数据存储区发生故障后继续保留数据 。在这种情况下,辅助副本很有用,但不需要主动-主动架构 。主动-被动数据库配置会有所帮助,因为该应用程序的新实例仅在其他位置停止使用该应用程序的旧实例(现在已失效) 。
另一方面,"记录系统"数据存储区需要一致,明确且毫无疑问的准确数据,因此不太适合主动/主动数据存储 。Jane解释说,如果使用AASN数据体系结构,则必须将应用程序设计为处理这种配置中不可避免的冲突 。这些不是要解决的琐碎问题 。"根据我的经验," Jane认为,"几乎所有SoR数据库都不适合AASN体系结构,而大多数都不适合 。即使是那些可能的应用程序,也都需要非常激烈的应用程序重构,而且成本往往超过收益 。"
现在,听众,尤其是特德,已经了解了简在这个问题上的原始沉默的本质 。他表示:"很显然,诸如电子商务订单更新之类的SoR数据库不是AASN的理想选择 。""另一方面,会话状态数据存储是完美的;但甚至不需要数据库的副本 。但是在这两个极端之间的所有用例呢?要为所有这些人充分利用ASN,需要做什么?"
Jane解释说,介于这两种极端之间的其他模式可以受益于AASN数据存储,但必须能够解决以下两个问题:
· 解决冲突的策略是什么-上个男人站立,时间权重,地区权重或应用程序权重?
· 由于冲突解决,应用程序将如何应对数据的逻辑变化?
Acme应用程序开发负责人Debbie要求Jane在此方面做更多扩展 。
Jane考虑了应用程序缓存的情况 。如果两个数据存储区的更新方式不同,则在某些情况下缓存将具有不同的值 。在大多数可以接受的缓存中,因为可以从记录系统确定地得出最终值 。参考系统也遵循相同的模式 。机器学习培训应用程序可能不受数据的微小更改的影响 。大多数数据分析人员执行的汇总不会随数据的微小变化而发生重大变化 。因此,在最终一致的状态下,他们可能会没事 。
进一步扩展一下,Jane给出了另一个自助服务查找系统示例,以显示客户的订单历史记录 。由于使用的是其他数据库,而不是记录系统的数据库,因此无论如何也无法保证数据的一致性 。因此在多个副本之间发生数据漂移的可能性不会增加任何其他风险 。但是,并非所有参考系统都以这种方式使用 。如果该系统是记录系统的准确副本,则此条件失败 。
"根据我的经验,"简认为,"除非有时间点数据可供参考,否则现实生活中不存在这样的系统 。例如,想象一下在帐户查询系统的情况下,每天凌晨12:00(而不是现在)的帐户余额可用 。AASN数据基础架构可以很好地处理它 。"
她重申,这不仅仅是数据层的更改,AASN可能需要更改应用程序设计,甚至需要更改应用程序的业务意图 。
应用设计模式既然Debbie理解了AASN数据层的细微差别,她想学习一些应用程序模式以利用它 。


推荐阅读