当前位置: 首页 > news >正文

基于内存池的 简单高效的数据库 SDK简介

基于内存池的 简单高效的数据库 SDK简介

        下载地址:

https://gitee.com/tankaishuai/powerful_sdks/tree/master/shm_alloc_db_heap

        shm_alloc_db_heap 是一个基于内存池实现的简单高效的文件型数据存储引擎,利用它可以轻松地像访问内存块一样读、写、增、删、改、查、任意自定义记录于磁盘文件中。除此之外,还提供了数据库碎片整理、堆破坏有效性检测等实用功能。特别适合用作数据存储类应用之中。

以下简单讲解下常用的API:

(1)shm_struct* shm_open(unsigned int shm_size, const char *file, int keep);

创建/打开一个数据库连接,成功返回连接句柄,失败返回 NULL。

参数:

    shm_size: 初始化预分配数据库大小,建议取 1M 左右。

    file: 数据库文件存储路径。

    keep:  是否打开一个现有数据库。如果设为 0, 将完全新建数据库结构。

(2)void* shm_alloc(shm_struct* shm_head, int size);

         插入一条数据库记录。 成功返回记录指针,失败返回 NULL。

 参数:

      size: 待插入的记录字节数。

 注意:该接口在数据库已满时不会自动增长扩容,如果需要让数据库自动增长扩容,需使用以下高级接口:

       void* shm_map_alloc(shm_struct** shm_head_ptr, int size, int* allow_remap);

    初始化 int allow_remap = 0  并传入 &allow_remap 给第三个参数即可。

(3)void* shm_realloc(shm_struct* shm_head, void* ptr, int size);

         重新调整数据库中记录项的字节大小。成功返回记录指针,失败返回 NULL。

  参数:

        ptr: 待调整的记录指针。

        size: 记录需要的新的字节数。

(4)void shm_free(shm_struct* shm_head, void* ptr);

        删除一条记录。

  参数:

        ptr: 待删除的记录指针。

(5)int shm_list(shm_struct* shm_head, shm_pfn_t blk_pfn, shm_pfn_t free_pfn, void *u);

       遍历数据库中的所有记录。成功返回 0, 失败返回 错误码。

 参数:

       blk_pfn: 回调函数。其具有如下形式:

             int (*shm_pfn_t)(shm_struct* shm_head, void* ptr, unsigned int size, void *u);

             返回 0 继续,返回其他值则终止遍历。

       free_pfn:  一般传 NULL。

       u:  自定义数据。该参数直接透传给回调函数使用。

(6)void shm_close(shm_struct** shm_head_ptr, int defrag);

        关闭数据库连接。

  参数:

         defrag:  是否进行数据库碎片整理。

使用示例:

 

 

 

编译并链接 shm_alloc_db_heap32.dll (32位)或 shm_alloc_db_heap64.dll  (64位)即可。

http://www.lryc.cn/news/142778.html

相关文章:

  • python实例方法,类方法和静态方法区别
  • Pyecharts教程(四):使用pyecharts绘制3D折线图
  • 【stable-diffusion使用扩展+插件和模型资源(下)】
  • 一文了解SpringBoot中的Aop
  • android系统启动流程之zygote如何创建SystemServer进程
  • 【awd系列】Bugku S3 AWD排位赛-9 pwn类型
  • vcomp140.dll丢失的修复方法分享,电脑提示vcomp140.dll丢失修复方法
  • Docker file解析
  • 工作与身体健康之间的平衡
  • 算法和数据结构
  • 商城-学习整理-集群-K8S-集群环境部署(二十四)
  • 利用多种机器学习方法对爬取到的谷歌趋势某个关键词的每日搜索次数进行学习
  • ARL资产侦察灯塔 指纹增强
  • javaee spring 自动注入,如果满足条件的类有多个如何区别
  • sql语句中的ddl和dml
  • 学习JAVA打卡第四十一天
  • leetcode SQL题目
  • 计算机组成原理学习笔记-精简复习版
  • 聊一聊微前端框架的选型和实现 | 业务平台
  • Elasticsearch 集成---框架集成SpringData-集成测试-索引操作
  • 将Series序列中的缺失值用后一个值填充Series.bfill()
  • 用香港服务器域名需要备案吗?
  • 【项目经理】项目管理杂谈
  • 【算法总结篇】 笔面试常见题目
  • Java基础 数据结构一【栈、队列】
  • Spark on Yarn集群模式搭建及测试
  • vue 简单实验 v-on html事件绑定
  • c#设计模式-创建型模式 之 原型模式
  • 运放的分类、运放的参数
  • 手写数字识别之优化算法:观察Loss下降的情况判断合理的学习率