zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JS模板引擎 :ArtTemplate (2)
    JS模板引擎 :ArtTemplate (1)
    nodeJs 初探 ~
    javascript高级函数
    Js高程笔记->引用类型
    html5离线存储
    (摘抄)HTTP 协议详解
    cordova /phonegap 自定义插件
    phonegap/cordova常用命令
    phonegap上传以及下载图片
  • 原文地址:https://www.cnblogs.com/firstForEver/p/6502859.html
Copyright © 2011-2022 走看看