数据库系统实现(数据LOAD)

       配置的导入,文件路径,任务数量(特别是有多少HASH INDEX的任务,数据定位的变化,目前的设计不支持动态的变化,会导致数据的迁移,如果设计上增加这样的功能,如何去实现?),数据结构的配置,空间大小的分配(NET PAGEBUFFER, HOT HASHMAP BUFFER, HOT HASH INDEX BUFFER, HOT DATACACHE BUFFER, TREE BUFFER); TREENODE的数量由LEVEL和BUFFERNODE的数据来定。

       HOTKEY数据的导入,HOT HASH MAP数据的,缓存的HOTKEY的数据重新追加一次,HOT HASH MAP的数据就完成了,HASH INDEX的数据也完成了,只需要进行一次。HOT HASHKEY CACHE中还是包含了LRU的信息。所以在进行数据保存的过程中将HOTKEY CACHE数据保存即可,开机时逐条进行追加操作,同时PAGE CACHE也进行的追加,HASHKEY追加过程中,将VALUE数据按KEY的次序加入到PAGE CACHE 中。

        HOTKEY开机追加的方式,有个好处是HASHMAP的空间可以进行调整,不影响HASHINDEX的对应关系,即HASHSVR的对应关系(HASHSVR和HASHKEY的对应关系和HASHMAP无关), HASHSVR和HASHKEY是分组的关系,上面提到的HASHSVR进行增加或减少,对应的一对一分组关系就发生变化,可能需要的是多对多的关系,HASHKEY可以多个分组进行处理,消息处理处理上需要进行变化,对应的文件需要进行变化,HASHSVR数量更新的情况(类似一致性HASH),有些复杂。

       TREE的数据导入,其中ROOT BUFFERLIST无数据,MSG BUFFERLIST 的数据也是没有的,为空,CALLBACK BUFFERLIST同样为空,只有TREENODE的数据需要进行导入,最重要的MAX , COUNTER的数据,在进行数据保存的过程中,一定需要将TREENODE的数据进行保存;如果没有TREENODE的数据,是否可以通过INDEX FILE文件进行获得,将TREENODE的数据写入INDEX文件中。

       BUFFERTREE需要将MSGBUFFERLIST , ROOTBUFFERLIST, CALLBACK BUFFERLIST中的所有数据都进行写文件操作,进行清空,关闭服务时的处理流程。因为有写文件的操作,所有肯定是异步操作,需要进行消息传递以及控制时序。

猜你喜欢

转载自blog.csdn.net/DQWKLC/article/details/118890686
今日推荐