当前位置:主页 > 云存储 > 云计算基础 >

网站空间_软件连接服务器失败_新注册优惠

在将SDI与其他解决方案进行比较时,一个主要的区别是对事务一致性的支持。这可能有用的一些例子:

1。源有一个order表和一个reserved goods表。无论何时订购,货物都会被保留下来并从库存中取出,然后这两项更改一起提交。因此,源系统中的用户总是会看到订单和预留商品是同步的。

如果两个表都是独立复制的,查询订单和预留商品之和的用户会不断看到这两个数字不同,淘客插件,因为总是有新的订单。

表间的事务一致性。

2。在financial booking表中,每个借方记账都有一个匹配的贷方记账,两者一起提交。因此,预订的总和总是为零,资金从一个帐户转移到另一个帐户。如果数据在目标中的复制和提交方式不同,泛在电力物联网,那将是完全错误的。

表内的事务一致性。

3。一位新顾客打电话来订购了一些东西。因此,首先输入客户主数据,一分钟后下达销售订单。如果两个表都是独立复制的,那么在目标表中可能有一个客户的销售订单还不存在。

交易订单。

4。在源系统中输入了新的材料,因此插入到数据库中,但未保存/提交。用户去吃午饭,30分钟后保存下来。数据库中的记录有一个create data,这是30分钟前的数据,但是查询表的人在提交记录之前找不到该记录。例如,云实,如果delta进程依赖于此时间戳,则这是一个主要问题,因为它可能读取最近创建日期的所有更改,但在30分钟内没有看到此记录,然后它就不再是最近的了。

长时间运行的事务。

以上所有示例对于市场上的任何ETL工具都是巨大的问题。但是,由于他们忽略了上述问题,在初始加载过程中,他们可能会非常快,部分是增量加载。

对于SDI,初始加载是通过并行读取最大速度来实现的,取决于设置,它的工作原理与所有其他ETL工具一样。但是在初始加载过程中,源表中的所有更改都已经记录下来,然后合并到目标表中以获得一致的状态。后续的实时推送更改确实以事务方式进行,符合上述情况1-3。

这是可能的,因为适配器确实以正确的顺序发送所有表的所有更改行,并且提交是其自己的更改行,因此,Hana数据提供服务器可以以相同的事务括号和相同的顺序重放更改。

这可以在下面的示例中看到,其中使用了insert loader语义:

源中的执行顺序是

(通过初始加载更改1)

insert into address\u input

values('1','Innsbrucker Straße 34','Salzburg','5070','AT');

提交;

(更改1)

插入地址

输入值('2','North 1st Street','San Jose','????','US');

提交;

(更改2)

插入地址

输入

值('3','Hill Rd Drive 532','LA','90003','US');

提交;

(更改3修改旧记录更改4,新值)

更新地址

输入

设置"postalcode"='95121'其中"customer◎id"='2';

提交;

(更改5)

删除从地址输入

其中"客户id"="1";

提交;

在所有这些更改之后,目标中的各种记录看起来像

客户id=1:已于03:26:55插入Hana,并于03:28:56删除

客户id=2:于03:28:02插入,并于03:28:44更新

客户id=3:于03:28:22插入

保存订单是这里的关键,大数据存储技术有哪些,e、 g.在更新之前必须插入customer\u id=2,否则就没有意义了。

仔细观察更改时间会发现更多细节。

首先,同一源事务中的所有行都具有相同的值。在上面的示例中,所有更改都有一个真正的升序时间戳,除了更新,在更新中生成了一个before和after图像行。这个值不一样,因为这些行紧跟其后,即使在纳秒级,它们的值也完全相同。

在源数据库中执行更多更改时,这一点更为明显。

(更改6)

在地址中插入输入

值('4',智能物联,'Shoreline Bld 1','Los Angeles','90002','US');

(更改7)

插入地址

输入

值('5','Page Mill Dr','Mountain View','95111','US');

(更改8和9)

更新地址

输入

设置"street"='Page Mill Dr 435',其中"customer_id"='5';

(更改10,因为这在Hana系统上针对虚拟表执行,insert语句正在使用Hana(!!)当前时间戳)

插入地址

输入值('control',now(),now(),null,null);

提交;

所有这些更改都有相同的更改时间,尽管它们是在5分钟内输入的。

最后一行证明值不反映源中的更改,因为它是在03:36:49插入到源中的,而是在03:37:42插入到目标中的。

因此更改时间不仅严格递增,而且也没有问题系统时间在不同的数据库、不同的时区或其他任何地方略微缩短。

猜你喜欢

微信公众号