網站首頁 編程語言 正文
一、MongoDB 簡介
MongoDB 是由 C++ 語言編寫的,是一個基于分布式文件存儲的非關系型開源數據庫系統。其優勢在于可以存放海量數據,具備強大的查詢功能,是一個獨立的面向集合文檔形式的。
應用平臺:MongoDB 支持 Unix
Linux
Windows
等系統平臺。
MySQL 與 MongoDB 區別:
MySQL | 數據庫 | 數據表 | 數據 |
---|---|---|---|
MongDB | 數據庫 | 集合 | 文檔 |
1.MongoDB 特點
存儲性:
面向集合:數據被分組存儲在數據集中,被稱為一個集合。
面向文檔:存儲在集合中的文檔,被存儲為鍵值對的形式。
高效二進制數據存儲:使用二進制格式存儲,可以保存任何類型的數據對象。
操作性:
完全索引:可以在任意屬性上建立索引,包含內部對象。以提高查詢的速度。
強大的聚合工具:MongoDB 除了提供豐富的查詢功能外,還提供了強大的聚合工具,如 count
group
等。
支持 Perl
PHP
Java
C#
JavaScript
Ruby
Python
C
和 C++
語言的驅動程序。
可用性:
支持復制和數據恢復:MongoDB 支持主從復制機制,可以實現數據的備份、故障恢復、讀擴展等功能。而基于副本集的復制機制提供了自動故障恢復的功能,確保了集群數據不會丟失。
自動處理分片:MongoDB 支持集群自動切分數據,對數據進行切分可以使用集群存儲更多的數據,實現更大的負載,也能保證存儲的負載均衡。
2.MongoDB 適用場景
網站實時數據處理:它非常適合實時的插入、更新與查詢,并具備網站實時數據存儲所需的復制及高伸縮性。
緩存:它適合作為信息基礎設施的緩存層。在系統重啟之后,由它搭建的持久化緩存層可以避免下層的數據源過載。
高伸縮性的場景:非常適合由數十臺或數百臺服務器組成的數據庫。
不適用于的場景如下:
要求高度事務性的系統(例如:銀行和會計系統)傳統的商業只能應用。復雜的跨文檔(表)級聯查詢。
3.MongoDB 存儲結構
邏輯結構:
文檔 document
:存放的數據。
集合 collection
:由多個文檔組成,相當于表,但不同的是集合是無固定架構。
數據庫 database
:多個集合組成的數據庫。
物理結構:
.wt
文件:每個表或索引對應一個命名空間,數據量增加,文件數量增多,存儲了分配和正在使用的磁盤空間。
數據文件:存放數據的實體,并且使用預分配空間機制。
日志文件:系統日志文件、journal
日志文件(用于 MongoDB 崩潰恢復的保障)、oplog
復制操作日志文件(相當于 MySQL 的 BinLog 文件)、慢查詢日志(查詢操作超出指定時間的語句)
物理結構就是真正存放數據的位置。
4.MongoDB 數據類型
二、部署 MongoDB 數據庫應用
主機名 | 操作系統 | IP 地址 | 版本 |
---|---|---|---|
MongoDB | CentOS 7.4 | 192.168.1.1 | mongodb-linux-x86_64-rhel70-4.4.5.tgz |
1.準備系統環境
[root@MongoDB ~]# ulimit -n 25000 # 同一時間最多開啟的文件數 [root@MongoDB ~]# ulimit -u 25000 # 用戶最多開啟的程序數目 [root@MongoDB ~]# echo 0 > /proc/sys/vm/zone_reclaim_mode # 設置內核參數. 當某個節點內存不足時可以借用其它節點的內存 [root@MongoDB ~]# sysctl -w vm.zone_reclaim_mode=0 vm.zone_reclaim_mode = 0 [root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
因為下面安裝的版本為 4.4.5
,而 MongoDB 4
版本以上的 /bin
目錄中的工具進行了分離,所以需要安裝:傳送門
[root@MongoDB ~]# tar xf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz
2.安裝 MongoDB
[root@MongoDB ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.5.tgz [root@MongoDB ~]# tar xf mongodb-linux-x86_64-rhel70-4.4.5.tgz [root@MongoDB ~]# mv mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb [root@MongoDB ~]# mv mongodb-database-tools-rhel70-x86_64-100.3.1/bin/* /usr/local/mongodb/bin/ [root@MongoDB ~]# echo "export PATH=/usr/local/mongodb/bin:\$PATH" >> /etc/profile [root@MongoDB ~]# source /etc/profile
3.創建 MongoDB 存儲目錄以及配置文件
[root@MongoDB ~]# mkdir /usr/local/mongodb/{data,logs,conf} [root@MongoDB ~]# touch /usr/local/mongodb/logs/mongodb.log [root@MongoDB ~]# chmod 777 /usr/local/mongodb/logs/mongodb.log [root@MongoDB ~]# cat </usr/local/mongodb/conf/mongodb.conf bind_ip=192.168.1.1 port=27017 dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/logs/mongodb.log logappend=true # 日志以文件追加的方式寫入 fork=true # 通過后臺運行 MongoDB 服務 maxConns=5000 # MongoDB 最大連接數 END
4.編寫服務啟動腳本
[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf # 啟動 MongoDB 服務 [root@MongoDB ~]# mongo 192.168.1.1:27017 # 登錄驗證 [root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown # 關閉 MongoDB 服務 [root@MongoDB ~]# vim /etc/init.d/mongodb #!/bin/bash case "$1" in start) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;; stop) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown;; restart) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;; esac [root@MongoDB ~]# chmod +x /etc/init.d/mongodb # 添加執行權限 [root@MongoDB ~]# /etc/init.d/mongodb start # 啟動
登錄驗證
[root@MongoDB ~]# mongo 192.168.1.1:27017 # 登錄 MongoDB 數據庫 (默認在 test 庫中) > show databases # 查看數據庫中所有庫 admin 0.000GB config 0.000GB local 0.000GB > db.getName() # 查看當前登錄庫 test
MongoDB 安裝完后的默認 4 個庫:
admin
:存放了有關數據庫賬號的相關信息。
config
:用于分片集群環境,存放分片相關的元數據信息。
local
:用于存儲限于本地單臺服務器的任意集合(因為該庫并不會被復制到從節點,簡單來說就是沒有冗余性)
test
:MongoDB 默認創建的一個測試庫,連接 MongoDB 服務時,如果不指定連接的具體數據庫,默認就會連接到 test
庫。
原文鏈接:https://blog.csdn.net/weixin_46902396/article/details/117782901
相關推薦
- 2022-12-27 Python?PyQt5實現拖放效果的原理詳解_python
- 2024-03-23 如何保證Redis和數據庫數據一致性
- 2022-05-22 Docker容器之間數據傳輸的實現_docker
- 2022-12-29 Kotlin面向對象知識點講解_Android
- 2022-05-02 Python中的變量和數據類型詳情_python
- 2022-04-03 Pandas搭配lambda組合使用詳解_python
- 2022-04-06 一篇文章帶你了解C/C++的回調函數_C 語言
- 2022-08-10 淺談pandas關于查看庫或依賴庫版本的API原理_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支