INSERT INTO inventory VALUES('Berlin', 'table', 'Y', 10)
INSERT INTO inventory VALUES('Berlin', 'cloth', 'Y', 5)
INSERT INTO inventory VALUES('Berlin', 'chair', 'Y', 20)
逻辑上TABLE0
+ PDT1
=== TABLE1
UPDATE inventory SET qty=1 WHERE store='Berlin' and prod='cloth'
UPDATE inventory SET qty=9 WHERE store='London' and prod='stool'
DELETE FROM inventory WHERE store='Berlin' and prod='table'
DELETE FROM inventory WHERE store='Paris' and prod='rug'
UPDATE inventory SET qty=1 WHERE store='Berlin' and prod='cloth'
,这句update的数据在PDT1
中(ins=i1
),因此直接修改VALS1
中的数据。
UPDATE inventory SET qty=9 WHERE store='London' and prod='stool'
,这句update的数据在TABLE0
中(SID=1
、RID=1
),因此在PDT2
中创建一个节点(SID=1
、type=qty
、value=q0
、q0=9
)。
DELETE FROM inventory WHERE store='Berlin' and prod='table'
,这句delete的数据在PDT1
中(ins=i0
),因此直接删除i0
的数据。
DELETE FROM inventory WHERE store='Paris' and prod='rug'
,这句delete的数据在TABLE0
中(SID=3
、RID=3
),因此在PDT2
中创建一个节点(SID=3
、type=del
、value=d0
、d0={store: Paris, prod: rug}
)。
逻辑上TABLE1
+ PDT2
就等价于TABLE2
INSERT INTO inventory VALUES ('Paris', 'rack', 'Y', 4)
INSERT INTO inventory VALUES ('London', 'rack', 'Y', 4)
INSERT INTO inventory VALUES ('Berlin', 'rack', 'Y', 4)
delta
: 表示该节点左侧ins操作数量
-del操作数据量
RID
= SID
+ delta