[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference decalp::rtrnotes

Title:Reliable Transaction Router
Moderator:TALER::DESHMUKH
Created:Tue Dec 12 1989
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:695
Total number of notes:2564

685.0. "not transactional broadcast; reliable streams" by AMCFAC::RABAHY (dtn 471-5160, outside 1-810-347-5160) Mon Mar 17 1997 22:19

The other reason the world wants transactional broadcast is to reliably
distribute updates to a datastore.

So, given them what they want independent of transactional broadcast.  In fact,
if you do this and transparent multi-partition enqueue/send you don't need to do
transactional broadcast at all.

Transactional broadcast beyond these two functions is useless.

datastore 1	datastore 2	...	datastore n
-----------	-----------		-----------
update stat 1	update stat 2		update stat n
data item 1, 1	data item 2, 1		data item n, 1
data item 1, 2	data item 2, 2		data item n, 2
...
data item 1, k1	data item 2, k2		data item n, kn

An update is a generic operation that either;

	updates the value of a data item,
	deletes a data item,
	inserts a new data item

A reliable stream initially delivers an entire datastore at a known update stat
and then over time delivers all updates subsequent to the known update stat.  If
something disrupts the flow of updates then the reliable stream service simply
redelivers the entire datastore at a new known update stat and resumes
delivering updates subsequent to the new known update stat.

requester	server			subscriber
---------	------			----------------------
$dcl_tx_prc/req	$dcl_tx_prc/ser		$dcl_tx_prc/broadcast
					start:
					$start_tx
		$deq_tx			$enq_tx
		  DB select entire store
		$enq_tx/reply		$deq_tx
		$deq_tx			$abort
		  DB rollback
$start_tx
$enq_tx		$deq_tx
		  DB operation
$commit		$deq_tx
		  increment update stat
		  DB commit
		$enq_tx/broadcast	broadcast_AST:
					  if update stat is duplicate ignore
					  if update stat is missing goto start
					  update local copy of data store
		$deq_tx

The $enq_tx/stream is a best effort only.  If the system looses it a subsequent
stream message will reveal the gap and cause the subscriber to restart.

There's really nothing to do here but document the solution.
T.RTitleUserPersonal
Name
DateLines