詳解MongDB數據庫

NoSQLmysql

若殺死進程應使用pkillweb

數據設計模式:分佈式、非關係型、不提供ACIDredis

特性:簡單數據模型、源數據和應用數據分離、弱一致性算法

優點:sql

  避免沒必要要的複雜性mongodb

  高吞吐量,數據庫

  高 水平擴展能力和低端硬件集羣編程

  不使用對象-關係映射設計模式

缺點:瀏覽器

   不支持ACID

   功能過於簡單

   沒有統一的數據查詢模型

 

特色:

處理差大量的數據

運行再便宜的pc服務器集羣上

擊碎了性能瓶頸

 

使用場景:

一、對數據併發讀寫

二、對海量數據的高效率存儲與訪問

三、對數據的高可擴展性和高可用性(分佈式)

NOSQL的數據存儲模型

   鍵值模型

        數據模型:key-value存儲

        查找速度快

        缺點:數據無結構,一般被當作字符串或二進制數據

        應用場景:內容緩存

        實例:redis、Dynmo

   列式模型

        數據模型:數據按列存儲,將一列數據存在一塊兒

        優勢:查找迅速,可擴展性強、易於實現分佈式

        缺點:功能相對於SQL有限

        應用場景:分佈式文件系統或分佈式存儲

        實例:Bigtables、CassandraHBaseHypertable

   文檔模型

        數據模型:與鍵值模型類似,value指向結構化數據;

        優勢:數據格式不嚴格,無需定義事先定義結構

        缺點:查新性能不高,缺少統一查詢語法

        應用場景:web應用,

        實例:MongoDB、CouchDB

   圖式模型

        數據模型:圖結構模型

        優勢:利用圖結構相關算法提升性能,並是特殊場景應用需求

        缺點:難以實現分佈式、功能有限

        應用場景:社交網站、推薦系統、關係圖譜

        實例:Neo4J

 

MongoDB

管理端口:28017    服務端口:27017

特性

一、基於文檔數據庫系統(JSONBSON半結構化數據/)

二、保證其性能

      C++研發

      支持各類索引

      不支持事務,

      操做是在內存中進行(延遲寫操做)

三、支持擴展性

       支持複製

四、支持基於文檔的查詢

五、支持使用數據的分組集合操做

六、支持網格文件系統(GridFS)

七、支持地理位置空間索引

八、支持動態查詢,查詢的性能剖析

九、基於複製進行故障轉移,經過選舉協議選舉。自動故障轉移

適用場景

一、web網站

二、緩存

三、海量存儲

四、高可擴展性

五、應用程序編程環境中

數據庫模型

面向collection(集合)的數據庫

使用數據庫:但數據庫無需建立

每個文檔至關於一個mysql的行,多個文檔組合起來至關於一個集合,至關於mysql的集合

集合無需事先定義

基於C/S架構:服務器端mongod,客戶端mongo

 

 

安裝

一、在官網上能夠下載MongoDB rpm包的yum源:www.mongodb.com

    yum安裝: yum  install  -y  mongodb-org

二、建立用戶:mongod,而且建立存放數據文件的文件夾mkdir/mongodb/data,並給這個文件夾更改屬主屬組。

2.一、更改配置文件中的數據文件存放位置(/etc/mongod.conf):dbpath=/mongodb/data

2.二、開啓httpinterface=true這一項,使mongodb開啓28017端口,這是一個管理端口,能夠經過瀏覽器進行訪問。

三、啓動mongodservice   mongod  start

 

客戶端命令

mongo      選項      數據庫地址             //登陸數據庫

            --host     //指定主機

            -u/-p      //指定帳號密碼

     提示:大可能是mongodb默認不認證,因此直接輸入命令:mongo能夠直接連上本地數據庫。

            默認打開數據庫爲test

show dbs    //查看當前數據庫

show  users   //顯示用戶

show   profile   //顯示性能剖析

show    logs   //顯示日誌文件

show     log   日誌名   // 顯示日誌的內容

use      數據庫名     // 設置默認數據庫,mongoDB不用建立數據庫,在不往數據庫中插入數據以前是不會建立數據庫的

show   collections   //查看集合

db.collection名稱 .insert ({name : "hhj"})   //插入數據

db.collection名稱.find().limit(3)    //查看collection中的數據 ,並只顯示前三行

db.collection名稱.stats()      //查看collection狀態

db. collection名稱.drop()      //刪除collection

db.sun.count()    //統計文檔個數

 

基本操做

查詢:

   db.coll名.find (

             {age: { $gt: 18} },       -->查詢標準

             { name:1,  address:1}   -->顯示字段

).limit(5)      -->只顯示前5個符合條件的

 

插入:

db.coll名.insert

     name: "sue",

     age: 26,

     status: "A",

     groups : [ "sd" , "wd" ]

 

修改:

db.coll名.update(    

   { age: {$ gt:15 } },    -->查詢條件,字段加值

   { $set: { status: "A"} },    -->要改的字段及其值

   {multi: true }        -->默認只改變第一個符合條件的行。設爲true,則改變全部符合條件的行。

 

刪除:

db.coll名.remove (

    {  status: "D "}   -->刪除標準

)

高級操做

定義循環添加內容:

for (i=1;i<=100;i++)        db.sun.insert ( { name :"User"+i,age:i,Gender:"M" } )

 定義變量i,從1100     插入數據            +i是字符引用變量i

 

find用法

 比較運算

$gt:挑選指定字段大於指定值的文檔,格式:{字段:($gt:}}

$gte:大於等於

$in:等於

$lt:小於

$lte:小於等於

$ne:不等於

$nin:不存在

     例: db.sun.find({age: {$lte: 30}},{name:1,age:1})  //顯示年齡小於等於30,只顯示nameage

  邏輯運算

邏輯運算通常用於鏈接多個選擇條件,

$or:或運算,格式:{$or:[{條件1}{條件2}]}

$and:與運算

$not:非運算

$nor:反運算

     例:db.sun.find({$and:[{age:{$gt:61}},{age:{$lt:80}}]})   //大於61,小於80

     例:db.sun.find({$and:[{age:{$gt:61}},{age:{$lt:80}}]},{name:1})  //只顯示name行,大於61,小於80

  元素運算

      根據文檔中是否存在某字段等條件來挑選文檔,語法格式:{$exists:  boo},bootrue爲返回存在指定字段的文檔,爲false則返回不存在指定字段的文檔。

$exists:根據指定字段的存在性挑選文檔

$mod:將指定字段的值進行取膜運算

$type:返回指定字段的值類型爲指定類型的文檔

相關文章
相關標籤/搜索