• MongoDB学习笔记1


    MongoDB
    什么是mongodb?
      mongodb是一个基于分布式文件存储的数据库。mongodb是NoSQL数据库,也就是非关系型数据库,内存型数据库。
    mongodb和redis的区别?
    在之前学习过redis, redis也是内存型NoSql数据库,这与mongodb非常相似,两者之间有什么区别呢?
    1. 存储类型不同。
    redis是典型的key-value型数据库。redis是key-value型的存储系统,也就是数据必须有key值,一个key对应一个value,redis支持的value的数据类型有
    String(字符), set(集合), list(链表), zset(有序集合), hash(哈希)类型。
    mongodb是文档性数据库。mongodb中的数据是以文档的形式存在的, 文档类型包括json, xml, bson等。mongodb不需要key值, 数据已集合的形式存在数据库中。
    每一个库可以有多个集合(collection), 每一个集合就相当于是一个数据库表, mongodb支持索引, 默认每一个文档的_id字段为主键。
    2. 内存空间的大小。
    redis在2.0版本之后增加了自己的vm特性, 突破了物理内存的限制, 可以对数据设置过期时间。
    mongodb依赖操作系统vm做内存管理, 比较吃内存, 采用镜像文件存储。
    3. 数据量大小。
    redis适合数据量比较小的操作和运算。
    mongodb适合数据量比较大的服务, 主要解决海量数据访问效率问题。
    4. 数据一致性(事物支持)
    redis事物支持比较弱, 只能保证事物中的操作按顺序执行。
    mongoDB不支持事物。靠客户端自身保证。(在mongodb4.0后版本支持了事物)
    5. 可操作性
    redis支持数据类型多, 但是支持的操作比较少,主要通过key来对数据进行操作。
    mongodb内置丰富的数据表达式、索引、函数。最类似关系型数据库, 支持丰富的查询语言。
    6. 可用性
    redis依赖客户端来实现分布式读写,主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,不支持自动sharding,需要依赖程序设定一致hash机制。
    mongodb支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制。

    mongodb优于redis
    7. 可靠性
    mongodb自1.8版本之后, 采用binlog方式(mysql采用同样方式)支持持久化,增加可靠性。
    redis持久化方式:
    7.1 RDB: 对内存中的数据进行数据库状态进行快照
    7.2 AOF: 把每条命令都写入文件, 类似mysql的binlog方式。
    redis主要通过RDB数据快照的方式来持久化,通过AOF来增强可靠性,但是增强可靠性的同时会影响访问性能。
    mongodb优于redis
    MongoDB的安装:
    新建linux虚拟机。
    执行命令:
    curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 
    tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 
    mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
        添加mongodb的环境变量,类似java配置环境变量:  
     vi /etc/profile 
    添加:
    MONGODB_HOME=/usr/local/mongodb
    PATH=$PATH:$MONGODB_HOME/bin
        保存退出。
     source /etc/profile 
    创建数据库目录。
    mkdir -p /data/db 
        mongodb的数据库目录默认路径为/data/db, 但是不会自己创建,需要手动创建。
    Mongodb启动:
    可以直接在mongodb目录下的bin目录下运行./mongod 来启动mongodb数据库, 因为配置了环境变量的关系,也可以直接执行mongod来启动。
    启动成功后:
        2020-04-24T04:34:40.903-0700 W -        [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty.
        2020-04-24T04:34:40.913-0700 I JOURNAL  [initandlisten] journal dir=/data/db/journal
        2020-04-24T04:34:40.914-0700 I JOURNAL  [initandlisten] recover begin
        2020-04-24T04:34:40.914-0700 I JOURNAL  [initandlisten] recover lsn: 0
        2020-04-24T04:34:40.914-0700 I JOURNAL  [initandlisten] recover /data/db/journal/j._0
        2020-04-24T04:34:40.915-0700 I JOURNAL  [initandlisten] recover cleaning up
        2020-04-24T04:34:40.915-0700 I JOURNAL  [initandlisten] removeJournalFiles
        2020-04-24T04:34:40.917-0700 I JOURNAL  [initandlisten] recover done
        2020-04-24T04:34:40.964-0700 I JOURNAL  [durability] Durability thread started
        2020-04-24T04:34:40.964-0700 I CONTROL  [initandlisten] MongoDB starting : pid=4042 port=27017 dbpath=/data/db 64-bit host=moggledb
        2020-04-24T04:34:40.964-0700 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
        2020-04-24T04:34:40.964-0700 I CONTROL  [initandlisten]
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten]
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten]
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten]
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] db version v3.0.6
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] build info: Linux build6.ny.cbi.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] allocator: tcmalloc
        2020-04-24T04:34:40.965-0700 I CONTROL  [initandlisten] options: {}
        2020-04-24T04:34:40.970-0700 I JOURNAL  [journal writer] Journal writer thread started
        2020-04-24T04:34:40.976-0700 I NETWORK  [initandlisten] waiting for connections on port 27017
        mongodb的默认端口是27017。
    mongodb启动方式
    可以选择启动带web页面的方式。
     ./mongod --rest 
    web访问路径为:http://ip地址:28017
    如果不想用默认数据库,也可以使用自定义库路径。
    mkdir -p /data/mongodb
     ./mongod --dbpath=/data/mongodb --rest
        关闭数据库:ctrl+c
    为了后续方便操作shell,使用后台运行方式。
    nohup mongod &
  • 相关阅读:
    Win7+Ubuntu11.10(EasyBCD硬盘安装)
    ubuntu 定时执行php
    Javascript如何判断一个变量是普通变量还是数组还是对象?
    CSS3 Gradient
    CSS3 transform rotate(旋转)锯齿的解决办法
    win2003中Apache开启gzip功能
    CSS3图形,Css画图,Css3三角形
    apache开启gzip的压缩功能
    标签:article
    人人FED CSS编码规范
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/12767803.html
Copyright © 2020-2023  润新知