• MongoDB初窥


    MongoDB初窥

    NoSql,一种应对纯动态网站的超大规模和高并发需求的东东,目前正得到非常迅猛的发展。对其最为常见的解释是non-relational或者说是Not Only SQL,非关系型数据库。NoSql的种类很多,有列存储型、图存储型、对象存储型等等。今天主要是初窥MongoDB,文档存储型的NoSql

    一、  简介

    MongoDB中的mongo取自humongous(巨大)的中间部分,结合DB就成了MongoDB这个名词。顾名思义,它的目的主要是用来处理大量数据,解决海量数据存储的同时又具有良好的查询性能。当然,其实它不是为了取代传统关系型数据库,而是对其补充。因为不是所有的数据都需要二维关系及多表对应的存储和查询,例如:文件的海量存储,只需KeyValue形式的存储及查询。

        1、亮点

    它有以下几个亮点:

    1Schema-free的文档型数据库。MongoDB的一个库可以有多个CollectionTable),每个CollectionDocumentsRecords)的集合。Collection和传统关系型数据库的表不同,无需事先定义,随时可以创建。Collection中可以包含具有不同schema的文档记录, 也就是说,上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属性。

    2)数据存储使用JSON格式。MongoDB使用JSON的变种BSONBinary Serialized Document Notation)作为内部存储,针对它的操作都使用JSON语法风格,客户端提交或接收的数据都使用JSON形式来展现。这样相对于Sql来说,更加直观并容易理解和掌握。

    2、适用场景

    MongoDB的主要目标是在key-value存储方式,以及对传统的关系型数据库系统架起一座桥梁,集两者的优势于一身。它适合用于以下场景:

    1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

    2)缓存。由于性能很高,适合作为信息基础设施的缓存层。在系统重启之后,由搭建的持久化缓存层可以避免下层的数据源过载。

    3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

    3、不适用场景

    1)要求高度事务性的系统。

    2)传统的商业智能应用。

    3复杂的跨文档(表)级联查询。

    4、目前正在使用的公司

    二、  安装和操作

    1、       下载

    官网上选择自己想要下载的版本,地址是http://www.mongodb.org/downloads。本人下载的是1.9.0版本(9月7日,2.0.0-rc2版本已经出来

    2、       安装

    下载好直接解压安装包,即可使用。bin目录下的几个文件说明:

    mongo

    客户端程序,连接MongoDB

    mongod

    服务端程序,启动MongoDB

    mongodump

    备份程序

    mongoexport

    数据导出程序

    mongofiles

    GridFS工具,内建的分布式文件系统

    mongoimport

    数据导入程序

    mongorestore

    数据恢复程序

    mongos

    数据分片程序,支持数据的横向扩展

    mongostat

    监视程序

    3、       启动

    通过mongod启动MongoDB,可以用dbpath指定数据存放路径,用logpath指定日志存放路径。

    ./mongod –dbpath=data/db –logpath=/home/jiankai/output/mongodb/mongodb.log

    如下图所示,这就启动了MongoDB,服务器默认端口为27017


    这里启动mongodb的同时,还启动了一个http的服务器,它可以更加直观的检测mongodb的情况。通过浏览器直接访问,默认地址是http://10.20.156.14:28017,里面可以看到一些数据库的基本信息。(10.20.156.14是数据库服务器地址)


    4、       链接MongoDB

    通过bin目录下的mongo命令,连接已经启动的MongoDB服务

    5、       常用命令

    1)查看所有数据库(show dbs

          2)创建新的数据库(use mydb

             此时的“mydb”数据库并没有真正建立起来,只是表明目前在使用mydb只有真正插入了数据以后,才正式把库建立起来。

    3)获取所有的集合(表)

    db.getCollectionNames();

    4)插入数据。(ps:这里collName为创建的文档名)

    db.collName.insert({name: 'Kane', gender: 'male'});

    5)更新数据

    db.collName.update({_id: ObjectId('4df96d7fbc7a05156600e4f2')}, {$set: {name: 'Kane', gender: 'male',weight:111}});

    6)删除数据

    db.collName.remove({name: 'Kane'});

    7)获取集合的文档(记录)数量。

    db.collName.count();

    8)获取集合的所有文档

    db.collName.find();

    9)获取集合中性别为male的文档

    db.collName.find({gender:'male'});

    10)获取集合中性别为男性且体重大于600的文档

    db.collName.find({gender:'male',weight:{$gt:600}});

    11)展示名字和体重的所有文档

    db.collName.find(null,{name:1,weight:1});

    12)找出性别为male,体重前23名的名字

    db.collName.find({gender: 'male'}, {name: 1}).sort({weight:-1}).limit(2).skip(1);

    13)计算体重小于600的数量

    db.collName.count({weight:{$lt:600}});

     

    三、  Java实践

    1、下载mongodb Jar包。

    下载地址:https://github.com/mongodb/mongo-java-driver/downloads

    2、导入到Java工程。

    3、操作。

     

    View Code

      

    四、  更多参考

    1、          http://www.mongodb.org/display/DOCS/Tutorial

    2、         http://www.mongodb.org/display/DOCS/Java+Tutorial

    3、         http://www.mkyong.com/tutorials/java-mongodb-tutorials/

    4、         http://api.mongodb.org/java/

    标签: nosqlmongoDB
  • 相关阅读:
    SDUT OJ 2862 勾股定理
    交换排序(java)
    boost::asio的http client应用笔记
    Yii Framework2.0开发教程(1)配置环境及第一个应用HelloWorld
    排序
    python爬虫(一)抓取 色影无忌图片
    hdu3377之简单路径求最值
    hdu 4406 费用流
    1次查询优化的过程
    mysql中的group_concat函数的用法
  • 原文地址:https://www.cnblogs.com/sunjie9606/p/2174877.html
Copyright © 2020-2023  润新知