本文目录一览:
- 1、1200万 mysql数据怎么快速导入到Mongodb
- 2、MongoDB和MySQL的区别
- 3、mongodb与mysql区别(超详细)
- 4、Mysql迁移数据到Mongodb,原自增类型的id要转换成objectId,有没有什么好的迁移方法或建议
- 5、MySQL-mysql数据怎么快速导入到Mongodb
1200万 mysql数据怎么快速导入到Mongodb
目前我知道的几种从mysql导入数据到mongodb的方法,如果发现新方法会继续添加。
1)自己写一个程序,从mysql select数据,然后调用insert,插入数据到mongodb中。
2)通过mysql工具将数据导出为csv/json格式的文件,然后使用mongodb自带的mongoimport导入数据。
(当数据量非常大的时候,可以pre-spliting + multi-mongoimport加快导入速度)
3)通过工具MongoVUE(带界面的)从mysql直接导数据到mongodb中。
MongoDB和MySQL的区别
一、
1、基于分布式文件存储
2、高负载情况下添加更多节点,可以保证服务器性能
3、将数据存储为一个文档
二、比较
1、稳定性
2、索引,索引放在内存中,能够提升随机读写的性能。如果索引不能完全放在内存,一旦出现随机读写比较高的时候,就会频繁地进行磁盘交换,MongoDB的性能就会急剧下降
3、占用的空间很大,因为它属于典型空间换时间原则的类型。那么它的磁盘空间比普通数据库会浪费一些,而且到目前为止它还没有实现在线压缩功能,
在MongoDB中频繁的进行数据增删改时,如果记录变了,例如数据大小发生了变化,这时候容易产生一些数据碎片,出现碎片引发的结果,
一个是索引会出现性能问题,
另外一个就是在一定的时间后,所占空间会莫明其妙地增大,所以要定期把数据库做修复,定期重新做索引,这样会提升MongoDB的稳定性和效率。
在最新的版本里,它已经在实现在线压缩,估计应该在2.0版左右,应该能够实现在线压缩,可以在后台执行现在repair DataBase的一些操作。如果那样,就解决了目前困扰
我们的大问题。
4、MongoDB对数据间的事务关系支持比较弱
5、运维不方便
MongoDB的优势
1. 适合那些对数据库具体数据格式不明确或者数据库数据格式经常变化的需求模型,而且对开发者十分友好。
2.自带一个分布式文件系统,可以很方便地部署到服务器机群上。
MongoDB里有一个Shard的概念,就是方便为了服务器分片使用的。每增加一台Shard,MongoDB的插入性能也会以接近倍数的方式增长,磁盘容量也很可以很方便地扩充。
3. 自带了对map-reduce运算框架的支持,这也很方便进行数据的统计。类似于group by
mongodb与mysql区别(超详细)
MySQL是关系型数据库。
优势:
在不同的引擎上有不同 的存储方式。
查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
开源数据库的份额在不断增加,mysql的份额页在持续增长。
缺点:
在海量数据处理的时候效率会显著变慢。
Mongodb是非关系型数据库(nosql ),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
存储方式:虚拟内存+持久化。
查询语句:是独特的Mongodb的查询方式。
适合场景:事件的记录,内容管理或者博客平台等等。
架构特点:可以通过副本集,以及分片来实现高可用。
数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。
优点:
快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!
缺点:
不支持事务,而且开发文档不是很完全,完善。
Mysql和Mongodb主要应用场景
1.如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量: (1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类) (2)从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。 (3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。
2.将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。 考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候将mongodb做为辅助mysql而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。
---------------------
原文:
Mysql迁移数据到Mongodb,原自增类型的id要转换成objectId,有没有什么好的迁移方法或建议
这样:
ObjectId id = new ObjectId(new Date(), old_id0xffff, old_id0xffff0000);
使用的这个构造函数 ObjectId( Date time , int machine , int inc );
把你原来的64位的id值得高32位转换为ObjectId中的machine值,低32位转换为ObjectId中的inc。
这样就可以满足你的需求了。
MySQL-mysql数据怎么快速导入到Mongodb
这个我做过,是把mysql数据里面几千万条数据写到mongoDB里面。上面的一些方法我用过,很不靠谱。我的建议如下(假设你用的是php,如果其他语言就看这个思路,假设已经安装好php与mongoDB的driver):
首先声明这个是最笨的办法,但是我用了很有效果。
1.在php.ini中设置memory_limit = xxxM,把原来的值提高,看你的系统,不要超过3GB。
2.修改php.ini中设置max_execution_time = xxx这个时间也要调高。
3.在php中配置好数据库,和mongoDB的连接,写循环,从mysql里面循环出一组数据放入到mongoDB的collection里面。可以一条一条导,时间会很长,也可以一组一组导入,每组不要超过10w条(建议,可以设置低一些)
4.等待导入完毕即可。
这个是我实际操作过的。没有错误。