关系型数据库Oracle的数据导入非关系型数据库mongodb。 80
以前有个项目,用的Oracle数据库,现在想改成mongodb数据库。要把Oracle的数据导入mongodb。如果Oracle的一张对应mongodb的一个集合这样导的...
以前有个项目,用的Oracle数据库,现在想改成mongodb数据库。要把Oracle的数据导入mongodb。如果Oracle的一张对应mongodb的一个集合这样导的话,貌似查询会有问题,因为我看了下mongodb的语法貌似不支持像关系型数据库的多表(集合)联合查询,不知道原来项目中的数据汇总等很多多表查询才能完成的功能在mongodb种如何实现;但如果把所有的表都导入一个集合的话。。。。有点太不靠谱了。第一次接触mongodb,请前辈们给点思路啊。。谢啦!
展开
3个回答
展开全部
首先要确定,你们为什么需要将关系型数据库中的数据导入到NoSql数据库中?是为了达到什么样的需求才这么做的。
我也是做开发的,我推荐以下几点,不要尝试将关系型数据库转换为非关系型数据库:
1、节约维护成本;
2、软硬件成本。Mongodb存储数据需要更多的存储空间。(当然,相对不同系统,硬件的配置也不尽相同);
3、为分布式而分布式;
4、从软件角度上,单纯为了提高IO的速度而进行转换;
如果非要强行移植,那么需要考虑一下几点:
1、Mongodb的维护以及灾备需要相对专业的开发人员担当(如果你们的运维就会,就当我没说过),因为许多Mongodb的配置都需要一些简单的javascript语法支持的,开发人员会比较容易上述;
2、Mongodb是“非关系”型的,所以以严格遵守范式所设计的关系型数据库进行移植时,需要考虑多表查询的效率。一般来讲,关系表要对数据进行冗余才能达到高效率的查询。你只能通过代码的方式将多个主表和关系表连同一个数据查询表一同维护,增加的代码复杂度是显而易见的。
3、关系型数据库中很多特性在Mongodb中都没有,在移植之前必须要考虑清楚。例如自增主键、联合主键(可以用唯一索引代替)、相关驱动和连接方式等等(本人用的mssql,所以只能举mssql的例子。);
4、因为Mongodb使用的是操作系统自身的文件存储系统对存储介质进行操作和维护的,所以会在频繁进行增、删操作时产生磁盘碎片。(开发人员不用太关系这个);
5、最后要说道一下Mongodb的查询,如果你的关系型数据库中之前有很多的多表连接查询(3张以上),则请不要尝试移植。否则只能参考2进行操作才能达到性能和效率最大化;
我也是做开发的,我推荐以下几点,不要尝试将关系型数据库转换为非关系型数据库:
1、节约维护成本;
2、软硬件成本。Mongodb存储数据需要更多的存储空间。(当然,相对不同系统,硬件的配置也不尽相同);
3、为分布式而分布式;
4、从软件角度上,单纯为了提高IO的速度而进行转换;
如果非要强行移植,那么需要考虑一下几点:
1、Mongodb的维护以及灾备需要相对专业的开发人员担当(如果你们的运维就会,就当我没说过),因为许多Mongodb的配置都需要一些简单的javascript语法支持的,开发人员会比较容易上述;
2、Mongodb是“非关系”型的,所以以严格遵守范式所设计的关系型数据库进行移植时,需要考虑多表查询的效率。一般来讲,关系表要对数据进行冗余才能达到高效率的查询。你只能通过代码的方式将多个主表和关系表连同一个数据查询表一同维护,增加的代码复杂度是显而易见的。
3、关系型数据库中很多特性在Mongodb中都没有,在移植之前必须要考虑清楚。例如自增主键、联合主键(可以用唯一索引代替)、相关驱动和连接方式等等(本人用的mssql,所以只能举mssql的例子。);
4、因为Mongodb使用的是操作系统自身的文件存储系统对存储介质进行操作和维护的,所以会在频繁进行增、删操作时产生磁盘碎片。(开发人员不用太关系这个);
5、最后要说道一下Mongodb的查询,如果你的关系型数据库中之前有很多的多表连接查询(3张以上),则请不要尝试移植。否则只能参考2进行操作才能达到性能和效率最大化;
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询