neodatis.odb 第七篇 学习odb日志1

 odb研究日志

 

2008.5.2 开始分析源代码 

ODB -

    ODBAdapter-

        LocalODB、RemoteODBClient、SameVMODBClient

IStorageEngine-

    LocalStorageEngine

        MockStorageEngine、ServerStorageEngie

    StorageEngineAdapter

        ClientStorageEngine

            SameVmClientEngine

 

ODB odb=ODBFatory.open("mars.odb"); 打开一个odb数据库的流程分析。

 

Session

    LocalSession

       ServerSession

    ClientSession

    MockSession

 

MetaModel

    SessionMetaModel

 

FileSystemInterface

 

IBufferedIO

    BufferedIO

        DefaultFileIO

    MultiBufferedIO

    MultiBufferedFileIO

 

IOFactory.getInstance

 

ObjectReader

ObjectWriter

 

IObjectIntrospector

    LocalObjectIntrospector

        ClientObejctIntrospector

        ServerObjectIntrospector

 

Objects(继承Collection)

 

odb.store(sport) odb保存数据到数据库流程

 

LocalStorageEngine.internalStore(sport)

->ClassInfoList ClassIntrospector.internalIntrospect(sport)

->ClassInfoList addClasses->persistClass->objectWriter.writeClassInfoBody->writeAction persist

 

FileSystemInterface writeLong

->MultiBufferedIO.writeBytes

objectWriter.internalStoreObject

->insertNonNativeObject

-> writerNonNativeObejctInfo

 

2008.5.10

Objects objects=odb.getObjects(Sport.Class) 查询流程

 

2008.5.15

总结出保存流程

 

2008.5.17

总结出查询流程

 

2008.5.18

GenericQueryExecutor 查询条件处理器

 

2008.5.20 开始思考如何自己实现类似odb的面向对象数据库引擎,拟采用压缩包方式

 

2008.5.24 项目名称ojadb诞生,logo出台

 

2008.5.27 开始分析odb的文件,对保存下来的每个字节进行分析

 

2008.6.4 经过几天尝试,否定了zip方案,因为性能很差

 

2008.6.5 ojadb的存储方案有了第一稿

 

2008.7.14 ojadb的存储方案经过编码,进入测试。

2008.7.19 ojadb的存储方案第二稿出台,并通过编程存储和读取,验证无误。

 

2008.8.3 odb查询第二次分析

IQuery query=new CriteriaQuery(Player.Class,Where.equal("name","Henry");

 

ObjectReader.getObjectst

->IQueryExecuor ----CriteriaQueryExecutor.execute 没有索引时executeFullScan

 

匹配查询条件,利用oid做标识

matchObjectWithOid

 

->b=CriteriaQueryManger.match(q,map)->q.map->EqualVriterion.match(map) ----map.getAttributeValue(查询条件中的字段名)

if(b) ObjectReader.readNonNativeObjectInfoFromOid

你可能感兴趣的:(编程)