MongoDB 的优势应当是速度以及海量数据的支持,另外一个有点就是schemeless。
关于schemeless
真正需要用到schemeless的地方似乎并不是太多。目前很多 MongoDB 封装,也都增加了scheme的定义功能,这基本上等于放弃了schemeless。另外如果过度的schemeless,日子久了后可能自己都搞不清楚自己到底在数据库里放了什么东西。
MongoDB的特性决定了某些关系数据库很容易做的操作在MongoDB中会很不容易实现(比如多表关联查询等,而且据说分页性能也不怎么样?)。为配合MongoDB,在构架设计乃至产品功能需求方面都需要做些调整。
海量,可能大多人都不太会有机会遇到真正需要MongoDB的海量数据。
对于大多应用场景,采用关系数据库为主,以MongoDB为辅的方式是否会更加合理?或者说MongoDB的应用场景还是比较有限的。
帖子来源:V2EX vicalloy
14 个解决方案
#1
你的理解我觉得是正确的,近来我也一直在研究MongoDB这个东西,我们的应用也是以辅助的方式应用,正常的生产库 还是Oracle,MongoDB作为一个中间的过度库,在读写效率上还是很可观的,我的测试在我的PC机上已批量的方式插入数据,每个文档1KB,能达到3W左右的速度,但要是单挑插入,速度就骤降了。这是我的PC测试,服务器正在购置中,来了之后好好测试,静等结果,如果能达到上述的结果的话还是很不错的一天一直写的话保证我们12个亿的数据量应该是没问题的。
但是中间有一个问题就是如果同时读写,速度也会出现波动,所以准备采用复制集的读写分离,对于时效性没那么强的数据交由从服务器读,时效性强和写命令全由主机完成。个人觉得应该可以解决问题。待测试。
但是中间有一个问题就是如果同时读写,速度也会出现波动,所以准备采用复制集的读写分离,对于时效性没那么强的数据交由从服务器读,时效性强和写命令全由主机完成。个人觉得应该可以解决问题。待测试。
#2
MongoDB的使用褒贬不一。
但是从目前来说适用于稍大一点的数据存放。
再大了也就推荐用redis 了
#3
项目中一直使用的mongo,感觉比关系型数据库好使多了,没那么多check约束,没那么多主外键,只要了解数据结构,自己想干嘛就干嘛。
#4
两个月的测试发现,速度真的跟不上,我们一天要存15个亿的数据量,尤其是集中在零点到8点之间,同时还要生成45个亿的空数据,写入的速度也就是1W上下。
#5
那你们应该考虑用redis 做集群了。在存储上进行冷热数据分开。
以及生成数据的时段错峰。等等。
#6
对强一致性有要求和高HA的需求,不建议使用。
#7
哇, 版主对 redis情有独钟哎
#8
有模糊查询应用场合而且对模糊查询效率有要求的,MongoDB不适合。
效率太低太低。
效率太低太低。
#9
怎么会这么大的数据量
#10
首先声明一点:没有任何一种技术能满足我们所有的业务需求,mongodb亦是如此!
优势:
快速(有多快?猛击这里,当然这和具体的应用方式有关系,通常来说,它比一般的关系型数据库快5位左右。)
很高的可扩展性-轻松实现BP级的存储
提供两种Replication架构Mater-slave和Replica Set。(稍后具体介绍!)
高性能、易部署、易使用、存储数据非常方便(深有体会!o(∩_∩)o 连数据库和表都不用直接创建。和现在流行的CodeFirst有点类似!)
面向结合存储,易于存储对象类型的数据。
模式*。(这点没怎么搞明白,难道是指Replication的两种模式?)
直接完全索引,包括内部对象
支持查询(这个简直就是废话,数据库如果不能查询,数据怎么展示给用户?)
支持复制和故障恢复(其实这个sqlserver里面也有类似的支持。)
使用高效的二进制数据存储,包括大型对象(如视频等)
自动处理碎片,以支持云计算层次的扩展性(这点感觉比sqlserver好很多啊。。)
支持ruby、python、java、C++、php、C#等多种语言。
文件存储格式BSON(一种JSON的扩展)。(这点对于使用JQUERY的高手来说应该相当熟悉)
可以通过网络访问。(这点应该和oracle有点类似,可以用过Web页面来访问和管理!)
劣势:
上面说了那么多的优点,有优点就有缺点,但是接触还不深入,硬要写我也只能从应用来写了
公司没有使用过mongodb,缺乏应用经验。
项目相对来说还比较新。
和以往的存储相比,以前对关系型数据库的操作不再存在。(有点头疼哦!)
优势:
快速(有多快?猛击这里,当然这和具体的应用方式有关系,通常来说,它比一般的关系型数据库快5位左右。)
很高的可扩展性-轻松实现BP级的存储
提供两种Replication架构Mater-slave和Replica Set。(稍后具体介绍!)
高性能、易部署、易使用、存储数据非常方便(深有体会!o(∩_∩)o 连数据库和表都不用直接创建。和现在流行的CodeFirst有点类似!)
面向结合存储,易于存储对象类型的数据。
模式*。(这点没怎么搞明白,难道是指Replication的两种模式?)
直接完全索引,包括内部对象
支持查询(这个简直就是废话,数据库如果不能查询,数据怎么展示给用户?)
支持复制和故障恢复(其实这个sqlserver里面也有类似的支持。)
使用高效的二进制数据存储,包括大型对象(如视频等)
自动处理碎片,以支持云计算层次的扩展性(这点感觉比sqlserver好很多啊。。)
支持ruby、python、java、C++、php、C#等多种语言。
文件存储格式BSON(一种JSON的扩展)。(这点对于使用JQUERY的高手来说应该相当熟悉)
可以通过网络访问。(这点应该和oracle有点类似,可以用过Web页面来访问和管理!)
劣势:
上面说了那么多的优点,有优点就有缺点,但是接触还不深入,硬要写我也只能从应用来写了
公司没有使用过mongodb,缺乏应用经验。
项目相对来说还比较新。
和以往的存储相比,以前对关系型数据库的操作不再存在。(有点头疼哦!)
#11
的测试在我的PC机上已批量的方式插入数据,每个文档1KB,能达到3W左右的速度
这个是什么速度?一次性可以插入3w条数据?还是一分钟插入3w?
这个是什么速度?一次性可以插入3w条数据?还是一分钟插入3w?
#12
目前我也在项目中用mongodb(木有上线),测模拟测试中,mongodb CPU占用120%
mongodb是单进程,无法使用多核
为啦使用多核,我在服务器上创建sharding(一台服务器,而且是复制集模式),再次测试cpu基本控制在20%左右
但我的应用程序延时达到啦300毫秒(就是查询一条数据)
到现在还没查到啥原因
mongodb理论上很好,但实际中发现呗坑啦,现在想换已经没时间咯
mongodb是单进程,无法使用多核
为啦使用多核,我在服务器上创建sharding(一台服务器,而且是复制集模式),再次测试cpu基本控制在20%左右
但我的应用程序延时达到啦300毫秒(就是查询一条数据)
到现在还没查到啥原因
mongodb理论上很好,但实际中发现呗坑啦,现在想换已经没时间咯
#13
没有实践过的人,就不要般文章来误导人啦,免得人家奇虎难下
我就是被误导过来的,因为之前用memcached的,从来没发现这个问题,现在郁闷啊
我就是被误导过来的,因为之前用memcached的,从来没发现这个问题,现在郁闷啊
#14
看来我也不能用它,最近在研究它呢。
#1
你的理解我觉得是正确的,近来我也一直在研究MongoDB这个东西,我们的应用也是以辅助的方式应用,正常的生产库 还是Oracle,MongoDB作为一个中间的过度库,在读写效率上还是很可观的,我的测试在我的PC机上已批量的方式插入数据,每个文档1KB,能达到3W左右的速度,但要是单挑插入,速度就骤降了。这是我的PC测试,服务器正在购置中,来了之后好好测试,静等结果,如果能达到上述的结果的话还是很不错的一天一直写的话保证我们12个亿的数据量应该是没问题的。
但是中间有一个问题就是如果同时读写,速度也会出现波动,所以准备采用复制集的读写分离,对于时效性没那么强的数据交由从服务器读,时效性强和写命令全由主机完成。个人觉得应该可以解决问题。待测试。
但是中间有一个问题就是如果同时读写,速度也会出现波动,所以准备采用复制集的读写分离,对于时效性没那么强的数据交由从服务器读,时效性强和写命令全由主机完成。个人觉得应该可以解决问题。待测试。
#2
MongoDB的使用褒贬不一。
但是从目前来说适用于稍大一点的数据存放。
再大了也就推荐用redis 了
#3
项目中一直使用的mongo,感觉比关系型数据库好使多了,没那么多check约束,没那么多主外键,只要了解数据结构,自己想干嘛就干嘛。
#4
两个月的测试发现,速度真的跟不上,我们一天要存15个亿的数据量,尤其是集中在零点到8点之间,同时还要生成45个亿的空数据,写入的速度也就是1W上下。
#5
那你们应该考虑用redis 做集群了。在存储上进行冷热数据分开。
以及生成数据的时段错峰。等等。
#6
对强一致性有要求和高HA的需求,不建议使用。
#7
哇, 版主对 redis情有独钟哎
#8
有模糊查询应用场合而且对模糊查询效率有要求的,MongoDB不适合。
效率太低太低。
效率太低太低。
#9
怎么会这么大的数据量
#10
首先声明一点:没有任何一种技术能满足我们所有的业务需求,mongodb亦是如此!
优势:
快速(有多快?猛击这里,当然这和具体的应用方式有关系,通常来说,它比一般的关系型数据库快5位左右。)
很高的可扩展性-轻松实现BP级的存储
提供两种Replication架构Mater-slave和Replica Set。(稍后具体介绍!)
高性能、易部署、易使用、存储数据非常方便(深有体会!o(∩_∩)o 连数据库和表都不用直接创建。和现在流行的CodeFirst有点类似!)
面向结合存储,易于存储对象类型的数据。
模式*。(这点没怎么搞明白,难道是指Replication的两种模式?)
直接完全索引,包括内部对象
支持查询(这个简直就是废话,数据库如果不能查询,数据怎么展示给用户?)
支持复制和故障恢复(其实这个sqlserver里面也有类似的支持。)
使用高效的二进制数据存储,包括大型对象(如视频等)
自动处理碎片,以支持云计算层次的扩展性(这点感觉比sqlserver好很多啊。。)
支持ruby、python、java、C++、php、C#等多种语言。
文件存储格式BSON(一种JSON的扩展)。(这点对于使用JQUERY的高手来说应该相当熟悉)
可以通过网络访问。(这点应该和oracle有点类似,可以用过Web页面来访问和管理!)
劣势:
上面说了那么多的优点,有优点就有缺点,但是接触还不深入,硬要写我也只能从应用来写了
公司没有使用过mongodb,缺乏应用经验。
项目相对来说还比较新。
和以往的存储相比,以前对关系型数据库的操作不再存在。(有点头疼哦!)
优势:
快速(有多快?猛击这里,当然这和具体的应用方式有关系,通常来说,它比一般的关系型数据库快5位左右。)
很高的可扩展性-轻松实现BP级的存储
提供两种Replication架构Mater-slave和Replica Set。(稍后具体介绍!)
高性能、易部署、易使用、存储数据非常方便(深有体会!o(∩_∩)o 连数据库和表都不用直接创建。和现在流行的CodeFirst有点类似!)
面向结合存储,易于存储对象类型的数据。
模式*。(这点没怎么搞明白,难道是指Replication的两种模式?)
直接完全索引,包括内部对象
支持查询(这个简直就是废话,数据库如果不能查询,数据怎么展示给用户?)
支持复制和故障恢复(其实这个sqlserver里面也有类似的支持。)
使用高效的二进制数据存储,包括大型对象(如视频等)
自动处理碎片,以支持云计算层次的扩展性(这点感觉比sqlserver好很多啊。。)
支持ruby、python、java、C++、php、C#等多种语言。
文件存储格式BSON(一种JSON的扩展)。(这点对于使用JQUERY的高手来说应该相当熟悉)
可以通过网络访问。(这点应该和oracle有点类似,可以用过Web页面来访问和管理!)
劣势:
上面说了那么多的优点,有优点就有缺点,但是接触还不深入,硬要写我也只能从应用来写了
公司没有使用过mongodb,缺乏应用经验。
项目相对来说还比较新。
和以往的存储相比,以前对关系型数据库的操作不再存在。(有点头疼哦!)
#11
的测试在我的PC机上已批量的方式插入数据,每个文档1KB,能达到3W左右的速度
这个是什么速度?一次性可以插入3w条数据?还是一分钟插入3w?
这个是什么速度?一次性可以插入3w条数据?还是一分钟插入3w?
#12
目前我也在项目中用mongodb(木有上线),测模拟测试中,mongodb CPU占用120%
mongodb是单进程,无法使用多核
为啦使用多核,我在服务器上创建sharding(一台服务器,而且是复制集模式),再次测试cpu基本控制在20%左右
但我的应用程序延时达到啦300毫秒(就是查询一条数据)
到现在还没查到啥原因
mongodb理论上很好,但实际中发现呗坑啦,现在想换已经没时间咯
mongodb是单进程,无法使用多核
为啦使用多核,我在服务器上创建sharding(一台服务器,而且是复制集模式),再次测试cpu基本控制在20%左右
但我的应用程序延时达到啦300毫秒(就是查询一条数据)
到现在还没查到啥原因
mongodb理论上很好,但实际中发现呗坑啦,现在想换已经没时间咯
#13
没有实践过的人,就不要般文章来误导人啦,免得人家奇虎难下
我就是被误导过来的,因为之前用memcached的,从来没发现这个问题,现在郁闷啊
我就是被误导过来的,因为之前用memcached的,从来没发现这个问题,现在郁闷啊
#14
看来我也不能用它,最近在研究它呢。