NebulaGraph的ORM框架初探索

引言

选择适用于 NebulaGraph 的 ORM 框架或客户端库主要取决于以下几点:

  • 编程语言:选择适合你项目的编程语言的客户端库。

  • 项目需求:评估项目需求,决定是使用官方提供的客户端库还是自定义 ORM 层。

  • 性能和扩展性:考虑客户端库或 ORM 框架的性能和扩展性,以确保它能够满足项目的需求。

目前,NebulaGraph 已经推出了几款ORM框架:graph-ocean、Ngbatis和Carina等。现在我主要观察Ngbatis和Carina,因为这两个框架还在更新,有创作者去维护。

一、Ngbatis

1.1简单介绍

  • NgBatis 是一款针对 NebulaGraph + Spring Boot 的数据库 ORM 框架。借鉴于 MyBatis 的使用习惯进行开发,当中包含了部分类似于 mybatis-plus 的单表操作。另外,还有部分图特有的 实体-关系 基本操作。

  • 如果更习惯于 JPA 的方式,graph-ocean 是个不错的选择。

  • 支持通过简单配置,快速完成 NebulaGraph 与 Spring Boot 的整合

  • 单表(Vertex、Edge)操作,无需写 nGQL | Cypher

  • 使用 XML 的方式,集中管理 nGQL | Cypher

  • 提供主键生成器的埋点,开发者可自定义主键生成器

  • 项目地址:https://github.com/nebula-contrib/ngbatis

1.2关键环节的相关技术

  • 数据库:NebulaGraph

  • 动态代理生成框架:ASM v8.0

  • mapper 文件解析:Jsoup v1.12.1

  • nGQL 模板:Beetl v3.1.8.RELEASE

1.3环境要求

  • Java 8+

  • Spring Boot

具体配置看官网仓库。

二、Carina

2.1简单介绍

  • Carina Nebula 是船底座,南半球可见最大的星云。

  • Nebula-Carina是用 Python 开发的针对NebulaGraph+Python的ORM框架。在设计上没有局限于web框架,因此可以被应用在 Django,fastapi, Flask 等主流框架。

  • Nebula-Carina目前包含了基础的migration功能,能够自动计算Schema Model的结构与DB Schema的差异,并同步schema到当前space。未来考虑设计和支持包含依赖关系的migration系统(参考Django ORM)

  • Nebula-Carina包含了常规的Schema定义、objectmanager(雏形)、ModelBuilder(雏形),以及常见的图语言、match语句封装。

  • 快速解决轻量级APP的常规需求 (1)简洁、快速的Schema定义0 (2)一键同步schema到spaceC (3)简洁的JSON序列化和逆序列化

  • 易于使用的Python Data Model

  • 适用于任何 Python Web Framework,也适用于裸Python,可与ai行业快速集成,应用在GNN、NLP等领域。

  • 项目地址:https://github.com/nebula-contrib/nebula-carina

  • 总之,让Python开发者使用NebulaGraph时能把更多精力运用在业务/模型,而非繁琐的数据库 操作。

2.2要求

 Python(3.10)
 nebula3-python(>=3.10)

2.3安装

pip install nebula-carina

具体环境设置看官网仓库。

sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从10.5 开始 mysql 支持5.6、5.7、8.0 版本 postgresql 支持9.5 以及以上版本 sqlserver 支持2008到2019版本,建议使用2012或以上版本 sqlite sybase_iq 支持15.4以上版本,建议使用16版本 elasticsearch 只支持查询,版本支持5.7+版本,建议使用7.3以上版本 clickhouse mongodb (只支持查询) sqltoy-orm特性: 1、根本上杜绝了sql注入问题,sql支持写注释、sql文件动态更新检测,开发时sql变更会自动重载。 2、最直观的sql编写模式,当查询条件稍微复杂一点的时候就会体现价值,后期变更维护的时候尤为凸显。 3、极为强大的缓存翻译查询:巧妙的结合缓存减少查询语句表关联,极大简化sql和提升性能。 4、最强大的分页查询:很多人第一次了解到何为快速分页、分页优化这种极为巧妙的处理,还有在count语句上的极度优化。 5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库。 sqltoy-orm特点: 1、最优雅直观的sql编写模式 2、天然防止sql注入,执行过程 3、最强大的分页查询 4、最巧妙的缓存应用,将多表关联查询尽量变成单表 5、跨数据库 6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表 9、五种非数据库相关主键生成策略 10、elastic原生查询支持 11、elasticsearch-sql 插件模式sql模式支持     sqltoy-orm框架系统 更新日志: v4.18.22 1、在findEntity中EntityQuery可以设置fetchSize 2、在sqltoyContext中可以全局设置fetchSize,例如 spring.sqltoy.fetchSize=200 3、convertType 支持空集合返回空集合 4、针对一些特殊原因导致表名是数据库关键词的处理支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值