當前位置:首頁 » 數據倉庫 » mongodb資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mongodb資料庫

發布時間: 2022-02-24 06:18:35

Ⅰ mongodb資料庫有哪些優勢

1. 文檔存儲
數據存儲以BSON/JSON文檔,這對於Web應用程序有很大的意義。開發者API喜歡以JSON形式傳輸,這使得整個項目的數據表示可採用統一的模型。所有這一切都無需任何前期架構設計。

2. 可擴展性
MongoDB被用在一些規模龐大的環境中,FourSquare/Craiglist都在使用它。通過分片數據縮放處理理論上可實現更高的吞吐量。

3. 簡單的復制
就像分片技術一樣,MongoDB范圍內復制過程同樣簡單好用,在副本機器上還有大量的復制選項。靈活的功能可滿足用戶應用的需求。

4. 易於查詢
MongoDB以文檔的形式存儲數據,不支持事務和表連接。因此查詢的編寫、理解和優化都容易得多。簡單查詢設計思路不同於sql模式,嵌入文檔在特定的環境下可得到更好的查詢,然而這需要先加入集合。如果需要執行多個請求到資料庫則需要加入其到客戶端。在MongoDB時ODM工具(如Doctrine2)將發揮自身的優勢。

5. 安全性
由於MongoDB客戶端生成的查詢為BSON對象,而不是可以被解析的字元串,所以可降低受到SQL注入的攻擊的危險。最常見的攻擊類型為針對Web應用程序的攻擊,在MongoDB上使用Doctrine2 ODMs 查詢語言可減輕攻擊風險。

6. 支持
用戶在選擇資料庫時總是喜歡積極和充滿活力的,這點非常重要。MongoDB在業界有非常大的影響力,用戶也會定期的組織活動。MongoDB的標簽在StackOverFlow是非常活躍的。你永遠不會陷入困境,因為總有人與你討論並解決問題。

7. 價格
MongoDB是免費的!

當然遠不止這些優勢,但是也有很多劣勢。

Ⅱ mongodb資料庫適合做什麼

mongodb眾所周知不支持事務,所以需要強事務的業務根本不能考慮mongodb。
mongodb的優勢就是文檔存儲:
1. 業務經常變動,需要不時的添加欄位,那麼mongodb比較適合,關系型資料庫添加欄位的復雜度也還好
2. 嵌套文檔,業務數據比較復雜,適合嵌套文檔式存儲,那麼mongodb非常合適,這個關系型資料庫比較難搞,雖然MySQL和pg也有文檔存儲,但MySQL的不成熟,pg畢竟現在生產中使用還是偏少,個人也不了解,這里不談。但這不僅僅這一點優勢,具體下面會細說。
3. upsert支持,查詢速度也不慢
4. 高可用的副本集支持
5. 查詢語法非常豐富,嵌套文檔查詢功能非常強大,不是重度用戶可能不能理解
下面說說一個具體的使用事例:
項目的一條數據在10kb左右,如果使用關系型資料庫那麼需要將這條數據拆分成大概幾百條左右,建造多個表,設計較復雜,這種數據大概在一百萬條左右,想想拆分後在十幾億的數據量就可怕。打平後的數據什麼DB也都可以拿下,只是一百萬變十幾億比較恐怖而已。
如果採用MySQL存儲,每次查詢需要使用外鍵查詢多個表,從這些表中拉取數據,性能肯定要下降很多,比不上只在一個表查詢,而且只拉取少兩個數量級的數據。查詢也還好,業務允許可以對結果做緩存,放到redis里去。
但是重點來了,需求要增量更新部分數據,這時候需要更新多個表,根本沒法做到原子性(注意事務不是原子操作),當然也可以使用cas等技術補償,達到最終一致性。但使用mongodb存儲只需要update一條數據,對相應的嵌套文檔中內容更新,可以做到原子性,是不是很方便?
推薦學習《python教程》
具體說說該項目的難點,查詢無法使用緩存,可能會很吃驚,但是業務決定了確實做不了,而且增量更新的量達到上萬的QPS,如果不能保證原子性想想多麼可怕!
所以mongodb在這里幫了大忙,關系型資料庫解決不了這個難題。
有人可能要問,mongodb沒有事務,上游數據寫入也會有問題,你不可能所有數據都存一個表吧?
當然不是的,我們mongodb里的數據是從MySQL中清洗出來存到mongodb中的,mongodb只做單點的業務需求,綜合的數據還是在MySQL中。
此項目我們用了上百個副本集,保證系統的高可用,這些副本集配置只要一條shell就搞定,如果用MySQL的主從不知道怎麼配(我自己不懂),估計DBA得忙死,而該項目完全不需要也沒用到DBA。
說了這么多mongo的優點,也說說他的缺點:
1. 查詢優化器和MySQL沒法比
2. 不支持reload,只能冷重啟,初始化配置的時候比較麻煩
3. 沒有事務,不敢存儲第一手數據,多用來做備份數據的存儲
mongodb可以做很多事情,取決於你腦洞,性能不差,存一些相對不重要的數據,mongodb嵌套文檔功能強大,多看看官方文檔挖掘挖掘有用信息,每次都能發現驚喜。

Ⅲ 如何獲取mongoDB資料庫大小

您好,很高興能幫助您
1. 獲取mongoDB中資料庫的大小命令
use databasename
db.stats()
顯示信息如下
> db.stats()
{
"collections" : 3,
"objects" : 80614,
"dataSize" : 21069700,
"storageSize" : 39845376,
"numExtents" : 9,
"indexes" : 2,
"indexSize" : 6012928,
"ok" : 1
}
其中storage表示的就是資料庫的大小,顯示出的數字的單位是位元組,因此如果需要轉換單位為KB需要除以1024

2. 獲取MongoDB中collection
db.collection.dataSize()
//collection中的數據大小
db.collection.storageSize()
//為collection分配的空間大小,包括未使用的空間
db.collection.totalIndexSize()
collection中索引數據大小
db.collection.totalSize()
collection中索引+data所佔空間

你的採納是我前進的動力,
記得好評和採納,答題不易,互相幫助,

Ⅳ 如何設置mongodb默認資料庫路徑

打開網路首頁,搜索「MongoDB」,如下圖所示:

網站主頁中,點擊「DOWNLOAD MONGODB」,並下載最新穩定版本,如下圖所示:

下載下來的是一個msi安裝文件,點擊進行安裝,默認安裝到C:\Program File或C:\Program Files (x86)文件夾內,如下圖所示:

配置環境變數,右鍵「我的電腦」->"高級系統設置"->"高級"->"環境變數",在系統變數中找到Path變數值,進行修改,在末尾追加 ;C:\Program Files (x86)\MongoDB\bin,(當然你也可以將第3步驟中的MongoDB文件夾拷貝到其他磁碟路徑下,我就是這樣做的),如下圖所示:

為了驗證環境變數配置成功,打開CMD命令提示符,輸入 mongod -help,下面會羅列一些列的配置參數,說明已成功,如下圖所示:

在MongoDB文件夾下和bin目錄同級目錄下,新建一個data文件夾,data文件夾下再分別新建一個db和log文件夾,分別用來存放數據文件和日誌文件,如下圖所示:

在命令行中輸入以下內容
mongod --dbpath "F:\MongoDB\data\db" --logpath
"F:\MongoDB\data\log\MongoDB.log" --install --serviceName "MongoDB"
這里是日誌路徑和數據路徑,具體的路徑根據自己數據和日誌文件的文件路徑相應進行修改,這里MongoDB.log就是開始建立的日誌文件,--serviceName "MongoDB" 服務名為MongoDB。這樣就在Windows下成功建立了MongoDB的服務,如下圖所示:

在「運行」中輸入「services.msc」,打開「服務」管理界面,可以看到MongoDB這個服務,點擊列表中的「MongoDB」,再點擊「啟動」按鈕,就將MongoDB成功啟動了,如下圖所示:

Ⅳ 怎麼連接mongodb的資料庫

想在shell中連接資料庫,首先要在連接數據的機器上安裝mongodb的客戶端才可以。客戶端的安裝在這里不再重復,自己網路或者google一下吧。連接mongodb的命令如下:/home/test/mongodb/mongodb-2.2.3/bin/mongo 127.0.0.1:8888
這個是我的資料庫配置,沒有設置用戶名密碼。所以直接通過該命令就可以連接。
連結後會有一個默認連接的資料庫。
mongodb常用命令:

查看資料庫命令:
show dbs;
查看集合命令:
show collections;
切換資料庫:
use databaseName;
查詢數據:
db.集合名.find()
插入數據:
db.集合名.insert({name:'test',age:1});
刪除:
db.test.remove();
sql="db.test.insert({name:'test',age:1});"//定義執行的sqlecho "$sql"|/home/test/mongodb/mongodb-2.2.3/bin/mongo 127.0.0.1:8888/test --shell
注意,echo命令中的格式必須這樣寫,管線命令後面的是是資料庫安裝地址 然後是ip:埠號,斜線後是資料庫名稱,--shell表示通過shell交互!

Ⅵ 如何打開已經創建的MongoDB資料庫

1)列出當前的資料庫
MongoDB shell version: 1.8.1
connecting to: test
> show dbs -www.linuxidc.com-
admin 0.03125GB
local (empty)
可以使用show dbs來列出當前有多少個資料庫,上面看到的是有兩個,分別是admin和local。
2) 定義新的資料庫名
我們通過使用「use new-databasename」的語法去使用一個新的資料庫,注意,即使你的資料庫還沒建立起來,依然可以這樣使用,因為mongodb會在真正插入了數據後,才會真正建立起來。
>use mkyongdb
switched to db mkyongdb
> show dbs
admin 0.03125GB
local (empty)
注意,在use mkyongdb後,mkyongdb實際上還沒真正建立起來,只是表明目前是在使用mkyongdb了。
3)保存數據
定義一個collection,名為「users」,然後插入數據,如下:
> db.users.save( {username:"mkyong"} )
> db.users.find()
{ "_id" : ObjectId("4dbac7bfea37068bd0987573"), "username" : "mkyong" }
>
> show dbs -www.linuxidc.com-
admin 0.03125GB
local (empty)
mkyongdb 0.03125GB
可以看到,用db.users.find()可以找出已插入的數據。這個時候,名為「users」的collection已經建立起來了,同時,資料庫mkyongdb也建立起來了。

Ⅶ mongodb資料庫怎麼查詢出某一段時間內的數據

你需要有一個欄位標示寫入資料庫的時間,然後查詢的時候,設定查詢時間段:
db.things.find({"createTime":{"$gt":"2014-10-29 0:0:0"}}) // 大於某個時間
db.things.find({"createTime":{"$lt":"2014-10-29 0:0:0"}}) // 小於某個時間
db.things.find({"$and":[{"createTime":{"$gt":"2014-10-29 0:0:0"}},{"createTime":{"$lt":"2014-10-29 0:0:0"}}]}) // 某個時間段

Ⅷ mongodb查詢資料庫有哪些表

db.getCollectionNames()