在這篇文章中,將向您展示如何使用Python鏈接目前主流的MongoDB(V3.4.0)數據庫,主要使用PyMongo(v3.4.0)和MongoEngine(V0.10.7)。同時比較SQL和NoSQL。
英文原文:https://realpython.com/blog/python/introduction-to-mongodb-and-python
如果你不是很熟悉NoSQL這個概念,MongoDB就是一個NoSQL數據庫。近幾年來它越來越受到整個行業的歡迎。NoSQL數據庫提供了一個和關系型數據庫非常不同的檢索方式和存儲數據功能。
在NoSQL出現的幾十年來,SQL數據庫是開發者尋求構建大型、可擴展系統的唯一選擇之一。然而,越來越多的需求要求存儲復雜數據結構的能力。這推動了NoSQL數據庫的誕生,它允許開發者存儲異構和無結構的數據。
當到數據庫方案選擇時,大多數人都問自己最后一個問題,“SQL或NoSQL的?”。無論是SQL和NoSQL都有自己的長處和弱點,你應該選擇適合您的應用需求中最好的之一。這里是兩者之間的一些區別:
模型是關系型的;
數據被存放在表中;
適用于每條記錄都是相同類型并具有相同屬性的情況;
存儲規范需要預定義結構;
添加新的屬性意味著你必須改變整體架構;
ACID事務支持;
模型是非關系型的;
可以存儲Json、鍵值對等(決定于NoSQL數據庫類型);
并不是每條記錄都要有相同的結構;
添加帶有新屬性的數據時,不會影響其他;
支持ACID事務,根據使用的NoSQL的數據庫而有所不同;
一致性可以改變;
橫向擴展;
在兩種類型的數據庫之間還有許多其他的區別,但上面提到的是一些更重要的區別。根據您的具體情況,使用SQL數據庫可能是首選,而在其他情況下,NoSQL的是更明顯的選擇。當選擇一個數據庫時,您應該謹慎考慮每個數據庫的優勢和劣勢。
NoSQL的一個好處是,有許多不同類型的數據庫可供選擇,并且每個都有自己的用例:
key-value存儲:DynamoDB
文檔存儲:CouchDB,MongoDB,RethinkDB
列存儲:Cassandra
數據結構: Redis,SSDB
還有很多,但這些是一些更常見的類型。近年來,SQL和NoSQL數據庫甚至已經開始合并。例如,PostgreSQL現在支持存儲和查詢JSON數據,很像MongoDB。有了這個,你可以用Postgres實現MongoDB一樣的功能,但你仍然沒有MongoDB的其他優勢(如橫向擴容和簡單的界面,等等)。
現在,讓我們將視線轉移到本文的重點,并闡明的MongoDB的具體的一些情況。
MongoDB是一個面向文檔的,開源數據庫程序,它平臺無關。MongoDB像其他一些NoSQL數據庫(但不是全部?。┦褂肑SON結構的文檔存儲數據。這是使得數據非常靈活,不需要的Schema。
新聞熱點
疑難解答