Mongo(來自 「humongous」 —— 巨大的)是一個高性能、開源、無模式的、面向文檔的數據庫,它是最受歡迎的 NoSQL 數據庫之一。它使用 JSON 做爲文檔格式,而且能夠在多個服務器節點之間進行擴展和複製。 |
有關許可證更改的故事
MongoDB 上游決定更改服務器代碼的許可證已經一年多了。先前的許可證是 GNU Affero General Public License v3(AGPLv3)。可是,上游公司寫了一個新許可證,旨在使運行 MongoDB 即服務的公司能夠回饋社區。新許可證稱爲 Server Side Public License(SSPLv1),關於這個舉措及其解釋的更多說明,請參見 MongoDB SSPL FAQ。mongodb
Fedora 一直只包含自由軟件。當 SSPL 發佈後,Fedora 肯定它並非自由軟件許可證。許可證更改日期(2018 年 10 月)以前發佈的全部 MongoDB 版本均可保留在 Fedora 中,但以後不再更新的軟件包會帶來安全問題。所以,從 Fedora 30 開始,Fedora 社區決定徹底移除 MongoDB 服務器。shell
開發人員還有哪些選擇?
是的,還有替代方案,例如 PostgreSQL 在最新版本中也支持 JSON,它能夠在沒法再使用 MongoDB 的狀況下使用它。使用 JSONB 類型,索引在 PostgreSQL 中能夠很好地工做,其性能可與 MongoDB 媲美,甚至不會受到 ACID 的影響。數據庫
開發人員可能選擇 MongoDB 的技術緣由並未隨許可證而改變,所以許多人仍想使用它。重要的是要意識到,SSPL 許可證僅更改僅針對 MongoDB 服務器。MongoDB 上游還開發了其餘項目,例如 MongoDB 工具、C 和 C++ 客戶端庫以及用於各類動態語言的鏈接器,這些項目在客戶端使用(經過網絡與服務器通訊的應用中)。因爲這些包的許可證人保持自由(主要是 Apache 許可證),所以它們保留在 Fedora 倉庫中,所以用戶能夠將其用於應用開發。api
惟一的變化實際是服務器軟件包自己,它已從 Fedora 倉庫中徹底刪除。讓咱們看看 Fedora 用戶能夠如何獲取非自由的包。安全
如何從上游安裝 MongoDB 服務器
當 Fedora 用戶想要安裝 MongoDB 服務器時,他們須要直接向上遊獲取 MongoDB。可是,上游不爲 Fedora 提供 RPM 包。相反,MongoDB 服務器能夠獲取源碼 tarball,用戶須要本身進行編譯(這須要一些開發知識),或者 Fedora 用戶可使用一些兼容的包。在兼容的選項中,最好的選擇是 RHEL-8 RPM。如下步驟描述瞭如何安裝它們以及如何啓動守護進程。服務器
一、使用上游 RPM 建立倉庫(RHEL-8 構建)網絡
$ sudo cat > /etc/yum.repos.d/mongodb.repo >>EOF [mongodb-upstream] name=MongoDB Upstream Repository baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc EOF
二、安裝元軟件包,來拉取服務器和工具包session
$ sudo dnf install mongodb-org ...... Installed: mongodb-org-4.2.3-1.el8.x86_64 mongodb-org-mongos-4.2.3-1.el8.x86_64 mongodb-org-server-4.2.3-1.el8.x86_64 mongodb-org-shell-4.2.3-1.el8.x86_64 mongodb-org-tools-4.2.3-1.el8.x86_64 Complete!
三、啓動 MongoDB 守護進程ide
$ sudo systemctl status mongod ● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-02-08 12:33:45 EST; 2s ago Docs: https://docs.mongodb.org/manual Process: 15768 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 15769 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 15770 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 15771 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 15773 (mongod) Memory: 70.4M CPU: 611ms CGroup: /system.slice/mongod.service
四、經過 mongo shell 鏈接服務器來驗證是否運行工具
$ mongo MongoDB shell version v4.2.3 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("20b6e61f-c7cc-4e9b-a25e-5e306d60482f") } MongoDB server version: 4.2.3 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ ---
就是這樣了。如你所見,RHEL-8 包完美兼容,只要 Fedora 包還與 RHEL-8 兼容,它就應該會一直兼容。請注意,在使用時必須遵照 SSPLv1 許可證。