MongoDB介绍

  MongoDB的官方文档地址:https://docs.mongodb.com/manual/introduction

  好早前做过一个团队技术分享,讲过MongoDB。一直没时间写个博客,正是周末,跟着原来的ppt,再写点东西。

  为什么那个时候分享了MongoDB了?是因为当时的产品线利用mysql做了个反显用户信息的表。用户在产品中一步一步填写信息,然后每一步去保存到服务端数据库中。当时的表结构设计如下(粗略表示):

userinfo表结构

id uid data
主键 用户id {"jobType":"1","isStudent":"2","agreement":"1","continueApply":1,"pId":"aa"}

在data字段中,把用户的各个信息保存成json格式。

mysql表的这种json设计有哪些有点和缺点呢?

显然,优点在于当业务上需要新增或者删除一个用户字段时候,很有扩展性,不用修改表结构。

缺点也比较明显,当需要修改data中的字段,哪怕是修改一个,也要经过 读记录->代码merge处理->更新记录的过程。

MongoDB这种nosql数据库可以很好解决这种E-R面向关系型数据库中的json结构设计。

MongoDB是一个高性能、高可用、分布式、模式灵活的面向文档的nosql数据库。其特色包括:1.高性能 2.丰富的查询接口 地理位置 3.高可用 4.水平扩展 等等。

面向关系型数据库和面向文档数据库的区别又是啥呢?

面向关系型 面向文档型
E-R数据库,找出各个实体之间的关系,建表

文档模式,存储单位是一个文档,支持数组和嵌套.合理建模避免关联

举一个简答的例子:

一个电商用户,属性比如:姓名、邮箱、手机号、收货地址(多个)

1. 在面向关系型数据库中,考虑各个范式,一般会如下设计:

两张表,一个用户基本信息,一个收货地址表,两张表利用用户id关联

user表:

 

addr表:

2. 在面向文档数据库中,会这样设计:

一个文档表示用户信息:

user文档:

以上简单的介绍了两种类型数据库的区别。

MongoDB的安装,比较容易。参考官方文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-linux/

之前也写过安装的博客: http://www.cnblogs.com/firstForEver/p/5267421.html

原文地址:https://www.cnblogs.com/firstForEver/p/6502859.html