zoukankan      html  css  js  c++  java
  • 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 &
  • 相关阅读:
    谷歌浏览器中安装JsonView扩展程序
    谷歌浏览器中安装Axure扩展程序
    PreferencesUtils【SharedPreferences操作工具类】
    Eclipse打包出错——提示GC overhead limit exceeded
    IntentActionUtil【Intent的常见作用的工具类】
    DeviceUuidFactory【获取设备唯一标识码的UUID(加密)】【需要运行时权限的处理的配合】
    AndroidStudio意外崩溃,电脑重启,导致重启打开Androidstudio后所有的import都出错
    DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】
    ACache【轻量级的开源缓存框架】
    WebUtils【MD5加密(基于MessageDigest)】
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/12767803.html
Copyright © 2011-2022 走看看