内存模型

github地址

https://github.com/littlersmall/db-memory-model

一 内存模型整体结构图



二 sdk和strorage



三 dao和storage

四 DAO
1 Database dao



注:其中的init和save函数因参数和返回值不同,因此无法合并到SqlDb中。
2 Json Dao

五 Storage

1 mm_allocator
内存分配器。

(1)集中分配内存,每次64M
(2)集中释放
(3)标记使用方
(4)打印内存使用情况
2 comm_def
(1) 定义错误码
(2) 定义公用函数
3 table_manager
相当于一个数据库
(1) 载入数据
(2) 设置反向索引
(3) 释放所有内存
4 schema_manager
一个数据库的所有的表结构
(1) 载入所有table的配置文件(配置文件描述了表的结构和主键外键)
(2) 生成每个表的结构,包括列名,类型,外键关系,反向外键关系
5 table_schema
对应于一个表的表结构
(1) 生成每个表的主键,列,外键等关系
(2) 根据每列的顺序,维护一个列名到列id的哈希索引
(3) 并维护每个表的数据的具体位置
6 file_manager
(1) 管理文件名
(2) 遍历一个目录按条件获取文件名,并按照文件名排序
(3) 提供关于文件名的遍历操作
7 table_index
对于于数据库的一个表
(1) 维护一个表关于主键的哈希索引
(2) 提供添加一行数据的操作
(3) 将固定格式的文件数据通过mmap的方式载入内存
8 row_index
对应于数据库的一行
(1) 维护每行数据的真实地址指针
(2) 维护每行的当前状态(正常,被更新,已删除)
(3) 维护每行数据中,每一列数据位置的索引
(4) 维护每行数据的反向索引
(5) 提供修改列数据的接口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载:可能是目前最详细的Redis内存模型及应用解读 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据...
    jwnba24阅读 3,831评论 0 4
  • 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站...
    小陈阿飞阅读 4,264评论 0 1
  • 一、概述 Redis有五种对象类型:String,List,Set,ZSet,Hash。进一步的理解Redis的内...
    落地生涯阅读 3,408评论 0 0
  • 满怀期待的第一次脱离家庭节日氛围投身到了自我迭代的财富高效能课。 2018年因为萌姐我从一个在家带孩子...
    Elaine花阅读 2,532评论 0 0
  • 往往很多的女性在怀孕的时候的肚子上会长一些妊娠纹的,这是很正常的。妊娠纹看起来确实不是那么美观,并且最让人忍受不了...
    cixi7105阅读 69,059评论 1 0

友情链接更多精彩内容