真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

NoSQL理論基礎(chǔ)及安裝、基本操作

30分鐘開始

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供海北州網(wǎng)站建設(shè)、海北州做網(wǎng)站、海北州網(wǎng)站設(shè)計(jì)、海北州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、海北州企業(yè)網(wǎng)站模板建站服務(wù),十多年海北州做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

分布式系統(tǒng)理論:

CAP:

    一致性

    可用性

    分區(qū)容錯(cuò)性

MongoDB:

安裝

crud

索引

副本集

分片

NOSQL:非關(guān)系型、分布式、不提供ACID功能

技術(shù)特點(diǎn):

    1、簡(jiǎn)單數(shù)據(jù)模型

    2、元數(shù)據(jù)和應(yīng)用數(shù)據(jù)分離(分不同服務(wù)器存儲(chǔ))

    3、弱一致性

優(yōu)勢(shì):

    1、避免不必要的復(fù)雜性

    2、高吞吐量

    3、高水平擴(kuò)展能力和低端硬件集群

    4、不適用對(duì)象-關(guān)系映射

劣勢(shì):

    1、不支持ACID特性

    2、功能簡(jiǎn)單

    3、沒有統(tǒng)一的數(shù)據(jù)查詢模型

分類:

NoSQL:

    鍵值存儲(chǔ)

    列式數(shù)據(jù)庫(kù)

    文檔數(shù)據(jù)庫(kù)

    圖式數(shù)據(jù)庫(kù)

SQL:

    MySQL

    pgsql

緩存數(shù)據(jù)庫(kù)系統(tǒng):

    memcache

CAP理論:從CAP中挑出2個(gè)

BASE理論:

    基本可用

    軟狀態(tài)

    最終一致性

C,A:SQL(保證一致性,可用性)

C,P:悲觀加鎖機(jī)制(一致性,分區(qū)容錯(cuò)性)

A,P:DNS

數(shù)據(jù)一致性模型:強(qiáng)一致性、弱一致性、最終一致性

數(shù)據(jù)一致性的實(shí)現(xiàn)技術(shù):

    Quorum(法定票數(shù))系統(tǒng)NRW策略(關(guān)注)

        N:副本數(shù)

        R:完成讀操作所需要讀取的最少副本數(shù)

        W:完成寫操作所需要寫入的最少副本數(shù)

        要想保證強(qiáng)一致性:R+W>N

        最多只能保證最終一致性:R+W<=N

    

    兩段式提交:2PC(two phase commit protocol)(關(guān)注)

    有兩類節(jié)點(diǎn):

        一類為協(xié)調(diào)者

        一類為事務(wù)參與者

        兩段:

                1、請(qǐng)求階段:事務(wù)協(xié)調(diào)者通知事務(wù)參與者提交事務(wù)

                2、提交階段:事務(wù)參與者提交事務(wù)

    時(shí)間戳策略

    Paxos:根據(jù)協(xié)議進(jìn)行協(xié)調(diào)

    向量時(shí)鐘

NoSQL的數(shù)據(jù)存儲(chǔ)模型:

    1、鍵值存儲(chǔ):k-w

        優(yōu)點(diǎn):查找迅速

        缺點(diǎn):數(shù)據(jù)無結(jié)構(gòu)、通常只被當(dāng)做字符串或二進(jìn)制數(shù)據(jù)

        應(yīng)用場(chǎng)景:內(nèi)容緩存

        實(shí)例:redis,dynamo

    2、列式模型:

        數(shù)據(jù)模型:數(shù)據(jù)按列存儲(chǔ),將同一列數(shù)據(jù)存在一起

        優(yōu)點(diǎn):查找迅速,可擴(kuò)展性強(qiáng),易于實(shí)現(xiàn)分布式

        缺點(diǎn):功能相對(duì)sql有限

        應(yīng)用場(chǎng)景:分布式文件系統(tǒng)或分布式存儲(chǔ)

        實(shí)例:Bigtable(google),cassandra,HBase,Hypertable

    3、文檔模型

           數(shù)據(jù)模型:與鍵值模型相似,value指向結(jié)構(gòu)化數(shù)據(jù)

            優(yōu)點(diǎn):數(shù)據(jù)格式要求不嚴(yán)格,無需事先定義結(jié)構(gòu)

            缺點(diǎn):查詢性能不高,缺乏統(tǒng)一查詢語(yǔ)法

            應(yīng)用場(chǎng)景:web應(yīng)用

            實(shí)例:MongoDB,CouchDB

    4、圖式模型:

            數(shù)據(jù)模型:圖結(jié)構(gòu)模型

            優(yōu)點(diǎn):利用圖結(jié)構(gòu)相關(guān)算法提高性能,滿足特殊場(chǎng)景應(yīng)用需求

            缺點(diǎn):實(shí)現(xiàn)分布式較困難,功能有定向性

            應(yīng)用場(chǎng)景:社交網(wǎng)絡(luò)、推薦系統(tǒng)、關(guān)系圖譜

            實(shí)例:Neo4j

www.nosql-database.org

Mongodb:

collection:表

多個(gè)collection:database

MongoDB的安裝:是一個(gè)易于擴(kuò)展的、高性能、開源、文檔模式的no-sql數(shù)據(jù)庫(kù)

存儲(chǔ):海量數(shù)據(jù)、文檔數(shù)據(jù)庫(kù)、不需要?jiǎng)?chuàng)建表結(jié)構(gòu)、c++研發(fā)的,開源

是什么?

    基于文檔數(shù)據(jù)庫(kù)(json格式)

    無表結(jié)構(gòu)

    性能:

        c++

        支持各種索引

        不支持事務(wù)

        內(nèi)存映射(延遲寫操作)

    擴(kuò)展性:

        復(fù)制

        auto-sharding

    商業(yè)支持

     支持基于文檔的查詢:表達(dá)式為json

    支持使用map/reduce

        靈活的聚合操作

        在分片的基礎(chǔ)上并行處理

    GridFS:網(wǎng)格文件系統(tǒng),存儲(chǔ)單個(gè)大文件或海量小文件的分布式文件系統(tǒng)

    地理位置、空間索引

    被生產(chǎn)環(huán)境驗(yàn)證過

特性:

    動(dòng)態(tài)查詢

    查詢性能剖析

    基于復(fù)制完成故障自動(dòng)轉(zhuǎn)移

rabbitmq的性能太差,使用HBase

適應(yīng)場(chǎng)景:

    web網(wǎng)站

    緩存

    低價(jià)值、高存儲(chǔ)量

    高擴(kuò)展性

    實(shí)現(xiàn)對(duì)象、json存儲(chǔ)的應(yīng)用編程環(huán)境

不適合場(chǎng)景:

    事務(wù)型

    商業(yè)智能決策

    使用sql接口的

  

MongoDB數(shù)據(jù)模型:面向集合的數(shù)據(jù)庫(kù)

     數(shù)據(jù)庫(kù):無需創(chuàng)建

        表:集合(行):由文檔組成,多個(gè)文檔組成一個(gè)表,文檔是json格式的(可以嵌套),集合無需事先定義

c/s:

    mongod服務(wù)器端

    mongo

安裝:

NoSQL理論基礎(chǔ)及安裝、基本操作

查看配置文件:

[root@stu ~]# cat /etc/mongod.conf 
# mongo.conf

#where to log
logpath=/var/log/mongo/mongod.log

logappend=true

# fork and run in background
fork = true

#port = 27017

dbpath=/var/lib/mongo   #運(yùn)行mongod服務(wù)的用戶也是mongod,所以保證這個(gè)目錄的屬主屬組也為mongod,
為了數(shù)據(jù)使用,應(yīng)該找一個(gè)合理的目錄


# location of pidfile
pidfilepath = /var/run/mongodb/mongod.pid

# Disables write-ahead journaling
# nojournal = true

# Enables periodic logging of CPU utilization and I/O wait
#cpu = true

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

# Verbose logging output.
#verbose = true

# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true

# Enable db quota management
#quota = true

# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#diaglog = 0

# Ignore query hints
#nohints = true

# Disable the HTTP interface (Defaults to localhost:27018).
#nohttpinterface = true

# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting = true

# Turns off table scans.  Any query that would do a table scan fails.
#notablescan = true

# Disable data file preallocation.
#noprealloc = true

# Specify .ns file size for new databases.
# nssize = 

# Accout token for Mongo monitoring server.
#mms-token = 

# Server name for Mongo monitoring server.
#mms-name = 

# Ping interval for Mongo monitoring server.
#mms-interval = 

# Replication Options

# in replicated mongo databases, specify here whether this is a slave or master
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com
創(chuàng)建目錄,改屬主屬組

NoSQL理論基礎(chǔ)及安裝、基本操作

修改配置文件

NoSQL理論基礎(chǔ)及安裝、基本操作

NoSQL理論基礎(chǔ)及安裝、基本操作

啟動(dòng)服務(wù)

NoSQL理論基礎(chǔ)及安裝、基本操作

system數(shù)據(jù)庫(kù)保存其他數(shù)據(jù)庫(kù)的元數(shù)據(jù)(和myslq中的mysql數(shù)據(jù)庫(kù)一樣)

查看端口:

NoSQL理論基礎(chǔ)及安裝、基本操作

27017:服務(wù)端口

28017:管理端口

NoSQL理論基礎(chǔ)及安裝、基本操作

NoSql數(shù)據(jù)庫(kù)一般是在內(nèi)網(wǎng)中使用的,不進(jìn)行認(rèn)證,直接連

NoSQL理論基礎(chǔ)及安裝、基本操作

NoSQL理論基礎(chǔ)及安裝、基本操作

數(shù)據(jù)庫(kù)幫助:

> db.help
function () {
    print("DB methods:");
    print("\tdb.addUser(userDocument)");
    print("\tdb.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]");
    print("\tdb.auth(username, password)");
    print("\tdb.cloneDatabase(fromhost)");
    print("\tdb.commandHelp(name) returns the help for the command");
    print("\tdb.copyDatabase(fromdb, todb, fromhost)");
    print("\tdb.createCollection(name, { size : ..., capped : ..., max : ... } )");
    print("\tdb.currentOp() displays currently executing operations in the db");
    print("\tdb.dropDatabase()");
    print("\tdb.eval(func, args) run code server-side");
    print("\tdb.fsyncLock() flush data to disk and lock server for backups");
    print("\tdb.fsyncUnlock() unlocks server following a db.fsyncLock()");
    print("\tdb.getCollection(cname) same as db['cname'] or db.cname");
    print("\tdb.getCollectionNames()");
    print("\tdb.getLastError() - just returns the err msg string");
    print("\tdb.getLastErrorObj() - return full status object");
    print("\tdb.getMongo() get the server connection object");
    print("\tdb.getMongo().setSlaveOk() allow queries on a replication slave server");
    print("\tdb.getName()");
    print("\tdb.getPrevError()");
    print("\tdb.getProfilingLevel() - deprecated");
    print("\tdb.getProfilingStatus() - returns if profiling is on and slow threshold");
    print("\tdb.getReplicationInfo()");
    print("\tdb.getSiblingDB(name) get the db at the same server as this one");
    print("\tdb.hostInfo() get details about the server's host");
    print("\tdb.isMaster() check replica primary status");
    print("\tdb.killOp(opid) kills the current operation in the db");
    print("\tdb.listCommands() lists all the db commands");
    print("\tdb.loadServerScripts() loads all the scripts in db.system.js");
    print("\tdb.logout()");
    print("\tdb.printCollectionStats()");
    print("\tdb.printReplicationInfo()");
    print("\tdb.printShardingStatus()");
    print("\tdb.printSlaveReplicationInfo()");
    print("\tdb.removeUser(username)");
    print("\tdb.repairDatabase()");
    print("\tdb.resetError()");
    print("\tdb.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }");
    print("\tdb.serverStatus()");
    print("\tdb.setProfilingLevel(level,) 0=off 1=slow 2=all");
    print("\tdb.setVerboseShell(flag) display extra information in shell output");
    print("\tdb.shutdownServer()");
    print("\tdb.stats()");
    print("\tdb.version() current version of the server");

    return __magicNoPrint;
}

集合幫助:

> db.mycoll.help()
DBCollection help
    db.mycoll.find().help() - show DBCursor help
    db.mycoll.count()
    db.mycoll.copyTo(newColl) - duplicates collection by copying all documents to newColl; no indexes are copied.
    db.mycoll.convertToCapped(maxBytes) - calls {convertToCapped:'mycoll', size:maxBytes}} command
    db.mycoll.dataSize()
    db.mycoll.distinct( key ) - e.g. db.mycoll.distinct( 'x' )
    db.mycoll.drop() drop the collection
    db.mycoll.dropIndex(index) - e.g. db.mycoll.dropIndex( "indexName" ) or db.mycoll.dropIndex( { "indexKey" : 1 } )
    db.mycoll.dropIndexes()
    db.mycoll.ensureIndex(keypattern[,options]) - options is an object with these possible fields: name, unique, dropDups
    db.mycoll.reIndex()
    db.mycoll.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
                                                  e.g. db.mycoll.find( {x:77} , {name:1, x:1} )
    db.mycoll.find(...).count()
    db.mycoll.find(...).limit(n)
    db.mycoll.find(...).skip(n)
    db.mycoll.find(...).sort(...)
    db.mycoll.findOne([query])
    db.mycoll.findAndModify( { update : ... , remove : bool [, query: {}, sort: {}, 'new': false] } )
    db.mycoll.getDB() get DB object associated with collection
    db.mycoll.getIndexes()
    db.mycoll.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } )
    db.mycoll.insert(obj)
    db.mycoll.mapReduce( mapFunction , reduceFunction ,  )
    db.mycoll.remove(query)
    db.mycoll.renameCollection( newName ,  ) renames the collection.
    db.mycoll.runCommand( name ,  ) runs a db command with the given name where the first param is the collection name
    db.mycoll.save(obj)
    db.mycoll.stats()
    db.mycoll.storageSize() - includes free space allocated to this collection
    db.mycoll.totalIndexSize() - size in bytes of all the indexes
    db.mycoll.totalSize() - storage allocated for all data and indexes
    db.mycoll.update(query, object[, upsert_bool, multi_bool]) - instead of two flags, you can pass an object with fields: upsert, multi
    db.mycoll.validate(  ) - SLOW
    db.mycoll.getShardVersion() - only for use with sharding
    db.mycoll.getShardDistribution() - prints statistics about data distribution in the cluster
    db.mycoll.getSplitKeysForChunks(  ) - calculates split points over all chunks and returns splitter function

簡(jiǎn)單使用:

NoSQL理論基礎(chǔ)及安裝、基本操作

NoSQL理論基礎(chǔ)及安裝、基本操作

使用數(shù)據(jù)庫(kù):(無需創(chuàng)建),collection也無需創(chuàng)建

NoSQL理論基礎(chǔ)及安裝、基本操作

db.collection.insert:插入

show collections:查詢集合

db.collections.find():查詢語(yǔ)句

db.collections.update():更新

db.collections.remove():移除

集合信息:

NoSQL理論基礎(chǔ)及安裝、基本操作

刪除集合:

NoSQL理論基礎(chǔ)及安裝、基本操作

查看數(shù)據(jù)庫(kù)文件:

NoSQL理論基礎(chǔ)及安裝、基本操作

基本操作:

show dbs:查看所有數(shù)據(jù)庫(kù)

show collections:查看集合

show users:查看用戶

show profile:

show logs:查看所有日志列表

show log [name]:查看具體的日志

遠(yuǎn)程連接:

mongo --host ip

crud操作:

create,read,update,delete

雖然沒有表結(jié)構(gòu),但還是應(yīng)該對(duì)同類對(duì)象放到一個(gè)collection

查詢:

db.users.find({age:{$gt:18}}).sort({age:1})   查詢age大于18的用戶,以age為升序進(jìn)行排序

插入:

db.users.insert(

    {

        name:'suse',

        age:26,

        status:'A',

        group:['news','sports']

    }

)

更新:

db.coll.update(

    {age:{$gt:18}},

    {$set:{status:'A'}},

    {multi:true}   不指定時(shí)只修改第一個(gè)符合條件

)

刪除:

db.coll.delete(

    {status:'D'}

)

 插入:

NoSQL理論基礎(chǔ)及安裝、基本操作

NoSQL理論基礎(chǔ)及安裝、基本操作

一批只顯示20個(gè),輸入it繼續(xù)

limit:

NoSQL理論基礎(chǔ)及安裝、基本操作

刪除:

NoSQL理論基礎(chǔ)及安裝、基本操作

修改:NoSQL理論基礎(chǔ)及安裝、基本操作

find高級(jí)用法:

db.collection.find(<添加>,<字段>)

db.collection.count()返回條數(shù)

NoSQL理論基礎(chǔ)及安裝、基本操作

比較運(yùn)算:

$gt:大于{field:{$gt:value}}

$gte:大于等于{field:{$gte:value}}

$in:存在于{field:{$in:[value1,value2,...]}}

$lt:小于{field:{$lt:value}}

$lte:小于等于{field:{$lte:value}}

$ne:不等于{field:{$ne:value}}

$nin:不存在于{field:{$nin:[value1,value2...]}}

大于

NoSQL理論基礎(chǔ)及安裝、基本操作

顯示需要的字段:

NoSQL理論基礎(chǔ)及安裝、基本操作

邏輯運(yùn)算:

$or:或運(yùn)算,{$or:[{expression1},{expression2},...]}

$and:或運(yùn)算,{$and:[{expression1},{expression2},...]}

$not:或運(yùn)算,{field:{$not:{operator-expression}}}

$nor:反運(yùn)算,即返回不符合所有指定條件的文檔,{$nor:[{expression1},{expression2},...]}

與運(yùn)算:

NoSQL理論基礎(chǔ)及安裝、基本操作

元素查詢:

如果要分居文檔中是否存在某字段等條件來挑選文檔,則需要用到元素運(yùn)算

$exists:根據(jù)指定字段的存在性挑選文檔,語(yǔ)法:{field:{$exists:}},指定的值為'true'則返回存在指定字段的文檔,'false'則返回不存在指定字段的文檔

$mod:將指定字段的值進(jìn)行取模運(yùn)算,并返回其余數(shù)作為指定值的文檔,語(yǔ)法{field:{$mod:[divisor,remainder]}}

$type:返回指定字段的值類型為指定類型的文檔,語(yǔ)法:{field:{$type:}}

重新插入一條數(shù)據(jù):

NoSQL理論基礎(chǔ)及安裝、基本操作

查詢:

NoSQL理論基礎(chǔ)及安裝、基本操作

更新:

NoSQL理論基礎(chǔ)及安裝、基本操作

update專有操作符大致包含:field,array,bitwise

field:

$inc:增大指定字段的值,格式:

    db.collection.update({field:value},{$nic:{field1:amount}}),其中{field:value}用于指定挑選標(biāo)準(zhǔn),{$inc:{field1:amount}}用于指定要提升其值的字段及提升大小amount

$rename:更改字段名,格式為{$rename:{:,:,...}}

$set:修改字段的值為新指定的值,格式db.collection.update({field:value1},{$set:{field2:value2}})

$unset:刪除指定的字段,格式db.collection.update({field:value1},{$unset:{field1:""}})

NoSQL理論基礎(chǔ)及安裝、基本操作


網(wǎng)站題目:NoSQL理論基礎(chǔ)及安裝、基本操作
網(wǎng)站地址:http://weahome.cn/article/gphejh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部