分布式数据库系统---商旅预定系统的实现(10)

事务存储

       事务有了统一的规范和编码,下一步就需要考虑具体该怎样存储一个事务了。首先,一个操作有它的唯一编码,通过String类型来存储ID编码值。其次需要存储的就是参数列表,因为每一个操作所需要的参数时不同的,所以考虑用List<String>是首选方案。

    具体代码实现:

    /// <summary>
    /// 存储一次操作过程的所有方法编号和方法的参数列表
    /// </summary>
    [Serializable()] 
    public class TransactionEntity
    {
        public TransactionEntity()
        {
            TransactionID = new List<String>();
            TransactionParam = new List<object[]>();
            Success = new List<bool>();
        }

        /// <summary>
        /// 清空内部的信息
        /// </summary>
        public void Clear()
        {
            TransactionID.Clear();
            TransactionParam.Clear();
            Success.Clear();
        }

        //每一个方法编号,相当于hashtable里面的KEY
        private List<String> m_TransactionID;
        public List<String> TransactionID
        {
            get;
            set;
        }

        //对应方法编号的参数列表,相当于hashtable里面的value
        private List<object[]> m_TransactionParam;
        public List<object[]> TransactionParam
        {
            get;
            set;
        }

        //对应方法是否执行成功
        private List<Boolean> m_Success;
        public List<Boolean> Success
        {
            get;
            set;
        }
    }

一个事务的结构实体类

 

一个事务实体的结构图

 

        一个事务里面包含了很多原子操作,每个原子操作对应自己的参数列表。而且在每一个原子操作后面都有一个是否成功的表示。当一个事务执行完毕后,程序会自动执行检查其是否每个操作都成功了,如果没有成功,那么整个操作将回退,事务执行结束。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值