# Melfe **Repository Path**: StefenS/Melfe ## Basic Information - **Project Name**: Melfe - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2018-06-23 - **Last Updated**: 2024-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Melfe: A Migration tool from Relational Database to Graph Database 一、 项目介绍 /* 以下用RDB代表关系数据库,GD代表图数据库 */ 迁移过程的主要实现原理是:从关系数据库中按照数据库的metadata(jdbc有专门的类来实现)读出数据库的er模型; 用户自定义改变er模型; 按照RDB中的表->GD中的节点,RDB表中的字段->GD中此节点的属性,RDB中的主外键关联->GD中的边来构建图模型; 按照构建好的图模型从RDB中查询出数据然后导入GD。 二、 代码功能模块介绍 1. com.orientechnologies.teleporter.mapper.rdbms.OER2GraphMapper类中,包含了从关系数据库中提取源数据构建er模型 (类中的buildSourceDatabaseSchema()函数)、er模型转换为图模型的实现(buildGraphModel函数)。其中,er模型转换为图模型中,按照er 模型中的元素在前,图模型中的元素在后,映射为entity->vertex, relationship->edge,attribute->property; 2. neo4j.Er2Graph类中,包含了OER2GraphMapper的成员属性,即Er2Graph对象实质上可以调用OER2GraphMapper的所有成员变量和方法。 同时Er2Graph类中实现了对于将数据库的er结构提取为前端自定义界面显示所需要的json格式,同时实现了在前端保存图模式后,将改变后的json格式发送到后台, 对其进行处理重新构建数据库的er结构。本类还实现了将图模型从RDB中查询出数据然后导入GD。 3. 前端的代码都存在WebContent中,其中部分.html和.jsp文件仅用作测试,可删除。 三、优化方向 1. 用户自定义界面的自动布局。 2. 前端界面的美化。 3. 项目采用jsp架构,后续优化也可采用jquery一类的框架。 4. 迁移的性能优化。 主要分为两方面:一方面是从mysql中“取数据”的性能优化(通过select语句提取关系数据库中的数据时,目前采取的是全部取出然后开始迁移,数据量很大时内存 可能会不够,优化思路是采取sql的分页查询,查一部分导一部分);另一方面向neo4j插入数据的性能优化。也就是改变底层的导入neo4j的方式,优化思路是按照 用户自定义保存后的图模式将关系数据库中的数据查出来,然后整理成可以调用neo4j-import导入方式需要的文件格式,使用import工具导入)。 5. 迁移结束后,neo4j服务的自动开启。 6. 重新导入时图数据库文件的清空问题(因为每次迁移时,当前导入的图数据库必须为空,如果非空就会报错)。 7. 部分冗余代码的去除,精简整个项目代码量。