搭建存储层

    首先抛开程序意义上的存储工具,从现实的角度考虑存储层所需要的几个条件.

    我想大概有以下几点:

    一、存储微粒

          一个存储微粒可以比做计算机所认识的0/1;

          type TStoreAtom = byte;

    二、存储介质

          存储介质可以比做是计算机中以8位0或者1的这样一个字节,但是我决定为我的存储介质增加一些特性,以为后来的空间设置不同的属性.其中一种特性,就是可变长度,设计的目的是可以用以存储各种数据类型的属性.

          type

          TStoreAtomArray = array of TStoreAtom; 

          TStoreByte = class(TObject)

          private  

             FLength: shortint;

             FContent: TStoreAtomArray;

             procedure SetContent(Value: TStoreAtomArray);

             function GetContent:TStoreAtomArray;

          public

             Construct Create(length:Shortint);

             property Content: TStoreAtomArray read GetContent write SetContent;

          end;

    三、存储对象

          写到存储对象时,我突然产生一个问题.

          存储是个什么概念,我应该只是给我的对象拍张照片保存起来,还是把实际的这个对象放到仓库保管?如果是照片则是死物,我只需知道存进去的是什么东西,当时是处于什么样的状态即可,在用时取出照片,根据类与状态重新创造出一个和原来一样的物品,只是原来的对象其实已经被新建的对象取代了;而如果是储存实际对象呢,则要对实际对象进行监管,由于实际对象本身活动的存在,会造成各种不可预料的结果,比如:属性值的变化.由于上述两种情况.我们的存储对象也应该分成三类,一种存储非物,一种存储死物,一种存储活物.

        

            Type

            TStoreByteList  = class(TList)          //存储介质列表

            IStoreObjectAction = Interface

               function GetStore(Index: Integer):Variant;

               procedure SetStore(Value: Variant;Index: Integer);

            end;                                                                           //存储接口

            TStoreBase = class(TInterfacedObject,IStoreAction) //存储对象基类

            TStoreNotObject = class(TStoreBase);                      //存储非物数据

            TStoreDeadObject = class(TStoreBase);                   //存储死物

            TStoreAliveObject = class(TStoreBase);                    //存储活物

         

    四、存储块

            目的增加索引的级别,存储块可以设计成多个层次,减少搜索的次数,可以将同一种类型的存储对象归到同一个存储块,以此减少块之间的索引定位次数.

            TStoreNotObjectBlock = class(TList);                        //专门存储非物的块

            TStoreDeadObject = class(TList);                             //专门存储死物的块

            TStoreAliveObject = class(TList);                              //专门存储活物的块

            TStoreAliveMonitor = class(TObject);                        //活物活动,状态变更监视器   

    五、定位索引

            是一个针对定位串操作的,定位串内容从存储块到存储对象到存储介质到定位.

            TPosition = record

               Name: string;

               BlockIndex: Integer;

               .....................            

               .....................

               ObjectIndex: Integer;

               ByteIndex: Integer;

            end;          

 

            TStockPositionList = class(TList);                              //Position列表

    六、对外接口.

            IWorldStoreLevel = Interface

                procedure Insert();

                procedure Update();

                procedure Delete();

                procedure Select();

            end; 

    七、存储类

           TWorldStoreLevel = (TInterfacedObject,IWorldStoreLevel);

 

总结: 在我的思考范围内,搭建了这样一个存储层,功能需要太多的扩展和细化,比如redo,log,role,rights,脚本解释器等等,我只是从现实世界的角度出发搭建,尽量的模仿之.

          

      

    

 

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值