【大家的项目】Rbatis - 制作 Rust 语言堪比 Mybatis 的异步 ORM 框架

2024-06-23 00:18

本文主要是介绍【大家的项目】Rbatis - 制作 Rust 语言堪比 Mybatis 的异步 ORM 框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为是复刻Java系的Mybatis,因此框架暂命名 Rbatis。小部分功能还在进行中。github链接https://github.com/rbatis/rbatis

首先介绍下rust语言下牛逼哄哄的产品有哪些?(最近风靡前端的原nodejs大神实现的TypeScript运行时Deno估计要替代nodejs,后端分布式raft协议实现的数据库的Tidb,火狐浏览器等等....)

经过被Rust编译器吊打和放弃一段时间之后,笔者立志要自虐写一款没有GC压力,高并发且稳定安全的ORM框架。为啥?因为可以保证只要代码编译通过,线上即没bug,rust编译器就好比一位超级大神监督着你敲代码,不会让你有任何空指针异常,并发死锁异常,GC异常.....emmm

读者如果想阅读源代码,必须了解Rust涉及到的基本语法,Rc,Arc,RefCell,Mutex锁,RwLock锁,Send,Sync接口,Rust1.9之后加入的Future接口,Pin,Box。

首先写rust的ORM框架需要解决几个关键问题

  • 1 框架必须支持异步(future), 想象一下,假设我们执行N多条慢sql,那么很有可能耗尽线程池资源造成等待。因为协程或者说纤程只消耗几kb而且可以启动成百上千甚至上万条,并发更高。

  • 为了节省时间,支持future网络部分拷贝sqlx-core(注意sqlx框架大量使用宏 ,近乎偏执的使用编译期生成代码,这导致代码智能提示基本不起作用,这不是我想要的)部分基础的网络实现代码。

  • 因为Rust语言本身中立,可以选择例如Tokio(Actor模型),Async_Std(Actor模型),may(CSP模型和go类似,但其作者使用了固定容量的栈内存空间,有可能造成内存溢出,笔者暂时不考虑它。如果未来他能解决的话...)。考虑到框架必须尽可能低开销,高并发

这篇关于【大家的项目】Rbatis - 制作 Rust 语言堪比 Mybatis 的异步 ORM 框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1085814

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映