统一数据库存储

首先,比较遗憾的是问题的标题 - 我无法想到更好的东西。

我有一个有趣的问题。

有三个Web应用程序:

1. ApplicationA => example.com -> hosted in Germany 2. ApplicationB => example2.net -> hosted in Australia 3. ApplicationC => anotherexample.com -> hosted in United States

所有这些都是完全免费的所有者但正在计划实施一些付费的选项。 的主要问题是,应用程序托管在单独的服务器,在三个不同的位置。

现在,如果业主想实现任何付费的选项,他需要建立统一开票系统(发票编号订单需要是正确的)。

因此,我们有情况:

1. user buys a premium option on example.com 2. another user buys a premium option on example2.net 3. third and fourth users buy extra options on anotherexample.com

因此,我们有4发票,所以它们的编号应为:2011/01,2011/02,2011/03,2001/04。

正如上面提到的,主要问题是应用程序使用不同的数据库和不同的服务器上托管统一发票系统。 当然,发票应存放在应用程序指定数据库。

从理论上讲,我们只有一个问题:发票号码。 很显然,我们需要创建一个存储的发票统一的系统。

可能有几个可能的问题:

  • 可能会有很多API请求到开票系统
  • 每单发票需要被存储在数据库中
  • 同时建立在每一个外部应用程序中的每一张发票,我们需要查询最新的发票号码发票系统。

我在你知道你的方法和建议很感兴趣。 在这种情况下,任何活动高度赞赏。

--------------解决方案-------------

首先,我会在example.com,example2.net和anotherexample.com独立开票系统,都从内这些系统产生的发票自己内部的主键。 每个系统都应该有发票逻辑自己独立的副本,因为你不希望在一个服务器每个服务器上淘汰发票停电。

只要您拥有的本地副本创建稍后将合​​并的东西记录的分布式系统,它使用GUID作为本地的主键是一个好主意,或者如果你有一个哲学反对GUID作为的PK,创建一个GUID作为候选键。 这样一来,就可以汇集来自所有系统(以及任何将来的)的发票,而不用担心关键的碰撞,你就能够跟踪记录合并回源的记录,你曾经不得不这样做。

接下来,你需要,所有的发票细节定期收集集成索票制度。 为了推动这项工作,需要每个本地发票系统抽自己的记录到集中式系统中的进程。 坚持在本地系统来识别发票的一个标志,发票已经上传成功 - 或者,如果你有非常高的音量使用工作清单表包含仍然需要,而不是发送一个标志权对当地发票发票键表。

集中发票系统也将要对联合发票表中的源代码,以便您可以很容易地分辨哪个网站创建的发票原本。

至于发票号,我从你的问题,客户是有点挑剔让您的发票编号的适当顺序假设。 您可以集中系统中生成这些数字您在使用Web服务来收拾下一张发票ID为。 如果集中服务已关闭以任何理由,你仍然可以给客户一个“订单参考”即GUID,只是憋在发票号码,直到它可以通过中央服务器生成。 这应该满足你的客户的需要进行紧张连续的发票号,同时保留操作在多个服务器上的多个站点的能力。

如果您的客户其实并不关心发票编号紧排序,那么另一种选择是让中央系统生成保留发票号块,并分配他们到每个网站。 当该网站是越来越低的上配股,它要求另一个块中央服务器。 这使您可以在情况下,有沟通困难的序列喘息的余地。

在我看来,这将是最好使用一个编码的发票号码。 这样一来,您就不必担心号码顺序混淆了。

例如,发票可像de297,de298,等国家域名作为前缀,从德国发票。

而再往前一步,我会纳入今年也是如此。 因此,它会在每年年初复位,仍然保持没有冲突,而在同一时间保持小长度内的发票号码。

分类:MySQL的 时间:2015-03-15 人气:3
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.420 (s). 10 q(s)