MongoDB 概要(Overview)

一种开源的文档型数据库,具有高性能、高可用性和自动扩展等特性,由C++实现、开源的。其宣传的最大特点就是agile(轻便、敏捷)和scalable(可扩展)。在某些使用场景,它可以用来取代关系型数据库。

官网: https://www.mongodb.org/

“mongo”截取自英文俚语humongous,意为”巨大的。

主要特点:
MongoDB除了比关系型数据库轻便、灵活之外, 跟普通key-value型的NoSQL比较,又强大很多,它提供了查询语言、索引、数据聚合和分析框架、等等:
  • 保存的记录是文档类型,类似于JSON格式(BSON,即二进制的JSON、另外支持一些额外信息);
  • 不用像关系型数据库那样预先定义好表结构(schema-free);
  • 支持全文索引(full index),单key索引,复合索引,唯一索引,内嵌字段索引;
  • 由主从、多副本来保证高可用性(replication & availability),主db能执行读操作与写操作,从db从主db拷贝数据,从db只能执行读操作;
  • 可以方便地实现分片(sharding),系统运行中可以方便地升级为分片架构、可以随时添加分片;
  • 支持map/reduce;
  • 集函数支持(aggregation function):即使在map/reduce上,也有类似SQL的group by支持;
  • 支持范围查询(range queries),正则表达式查询(regular expression), 用户自定义js函数查询,内嵌字段查询(nestad field);
  • 查询结果支持游标操作;
  • 跨平台,支持windows,linux,solaris,OS X等;

MongoDB提供了易于扩展的架构,当数据量即将超过一个机器的处理能力时,可以很简单方便的建立一个集群来分布式的存储和处理数据,对于客户端来说是完全透明的。而对于MySQL来说,这种情况往往需要做繁琐的分库分表(垂直拆分、水平拆分),同时还需要客户端相应的修改或一个强大中间件(比如MyCAT)的配合。

不过MongoDB在处理事务方面比较弱,那方面的应用最好还是使用MySQL等关系型数据库。

数据关系结构(大->小):
DB -> Collection -> Document -> Field

和MySQL的比较:
层次结构比较:
MongoDB 概要(Overview)_第1张图片

基本语句比较:
MongoDB 概要(Overview)_第2张图片
参考: https://www.mongodb.com/compare/mongodb-mysql

你可能感兴趣的:(mongodb,NoSQL)