為你的應用程式選擇合適的資料庫是很重要的,特別是對於直接與資料庫對接的後臺應用程式。有許多選擇,每一種都適合於某些使用情況,並且有不同的價格、速度和擴充套件選項。
Python通常用於資料量大的應用,因為它有強大的資料處理庫,所以你在Python應用中使用的資料庫很重要。
本文將MariaDB與其他資料庫技術如MySQL和PostgreSQL進行了比較,並討論了為什麼在使用Python時它是一個不錯的選擇。
什麼讓MariaDB對Python如此出色?
由於其強大的資料操作和機器學習庫,Python是資料從業者的一種流行的程式語言–特別是在資料工程和資料科學領域。這兩個領域都要處理大量的資料,增加了所需的儲存以及記憶體和處理能力的需求。
許可證費用往往隨著你的資料大小而增加,所以使用開源資料庫是有意義的。你還可以在硬體上省錢。因為你可以完全控制應用程式的部署位置,你可以在雲端或企業內部找到最便宜的解決方案。
存在許多開源資料庫,包括關係型、NoSQL和圖形資料庫。關係型資料庫一般對結構和一致性非常好,而NoSQL資料庫,能夠實現快速開發,被設計得更加靈活。
儘管Python與NoSQL資料庫配合得非常好,但關係型資料庫更適合於分析和大規模的資料處理,這也是Python的常見用途。
讓我們將MariaDB與其他一些流行的開源關係型資料庫進行比較。
MariaDB vs MySQL vs PostgreSQL
最流行的開源關係型資料庫是MariaDB、SQLite、MySQL和PostgreSQL。每一個都有一套類似的核心技術能力,但是MariaDB有一些獨特的功能,使它最適合Python應用。
此外,MariaDB是開源的,所以它的功能並不依賴於像MySQL這樣的外部實體,而MySQL現在是甲骨文公司的。儘管開源社羣仍然可以對MySQL提出建議和增加功能,但甲骨文(擁有一個競爭性的資料庫)決定了它的發展方向。
另一方面,MariaDB是在甲骨文收購MySQL後建立的,以繼續採用社羣主導的開發方式。因此,MariaDB擁有更豐富的功能集,包括更多的儲存引擎,確保查詢和複製的效能比MySQL更好。在處理大型資料集時,這種改進的效能是非常重要的。
使用MariaDB而不是PostgreSQL的原因要更細微一些,因為PostgreSQL也是社羣驅動的。然而,PostgreSQL使用它自己的類似BSD的許可證,即PostgreSQL許可證,它比MariaDB的GNU許可證更加寬鬆,並且允許使用者建立閉源擴充套件。
雖然它們對建立擴充套件的使用者有利,但這些功能並不總是在核心的PostgreSQL資料庫中使用,而且開發者甚至可以對使用他們的擴充套件收費。MariaDB和MySQL GNU的許可不允許新功能被私有化–所有的新功能都是免費提供的。
MariaDB和PostgreSQL擁有最豐富的功能集。然而,MariaDB對於Python後端有一些方便的功能。例如,MariaDB使用一種語言與所有不同的儲存引擎對接–OLAP和OLTP系統用相同的語法控制,減少了開發者的負擔。
你的Python後端可以向MariaDB寫入類似交易的資料,MariaDB可以將這些資料複製到更適合分析性查詢的儲存引擎。開發人員可以使用相同的語法編寫針對副本的分析查詢,以提高效能。
MariaDB最近還為字串引入了類似於f-String的格式化,與Python相似。這使使用MariaDB和Python的開發人員不必在語言之間進行切換。
MariaDB Python聯結器
2020年之前,Python程式設計師通過MySQL Python包連線到MariaDB。這是有可能的,因為MariaDB是MySQL的一個分支,但這意味著MariaDB連線的行為與MySQL相同。
2020年,一個原生的MariaDB聯結器被髮布,以消除對MySQL的依賴,給MariaDB社羣更多控制權。你可以用Python的軟體包管理器安裝聯結器,並將其用於所有常見的CRUD用例。
所有的語句都是通過遊標物件管理的。預設情況下,MariaDB遊標接受作為準備好的語句的查詢,所以你可以對查詢的任何動態部分進行消毒。這比格式化字串來構建查詢更安全,格式化字串會使你的應用程式容易受到SQL隱碼攻擊。
聯結器如何工作
該聯結器使用起來很簡單。首先,你將MariaDB聯結器庫匯入到你的應用程式中,並使用以下函式連線到你的MariaDB資料庫伺服器:
import mariadb try: connection = mariadb.connect( user=username, password=password, host=mariadb_host, port=3306, database="sales" ) except mariadb.Error as err: print(f"An error occurred whilst connecting to MariaDB: {err}")
一旦連線,所有的查詢都是通過遊標物件執行的。你獲得遊標物件,然後用它來提交查詢。
cursor = conn.cursor()
要將查詢作為一個準備好的語句提交,在查詢文字中使用一個問號作為佔位符,並將所需的值作為一個元組傳入。
ur.execute( "SELECT * FROM sales WHERE sale_date >= ? and price > ?", (sale_date_val, price_val))
元組的輸入值按從左到右的順序替換問號。這些輸入值也是經過消毒處理的,以防止SQL隱碼攻擊。內建的對SQL隱碼攻擊的保護對像Python這樣的語言是有益的,因為它是為初級程式設計師設計的。
用於WordPress的Python和MariaDB
使用MariaDB作為Python應用程式的後臺的另一個好處是,很容易將資料庫連線到WordPress的前端,特別是在使用Kinsta的時候。
許多伺服器支援MariaDB作為後端資料庫,使得它們可以立即相容。你的WordPress網站可以很容易地訪問用Python處理的資料集。例如,你可以在Python中進行一些分析,將結果儲存在MariaDB中,然後在WordPress頁面上以圖表形式顯示。
小結
多個開源的關係型資料庫,包括MariaDB、MySQL和Postgres,都可以作為Python的後端。然而,由於MariaDB的開源性質,它是最靈活和功能最豐富的選擇。
在處理大型資料集時,MariaDB提供了許多儲存引擎,使得它比其他替代方案更快,並且支援多種用例,從交易處理到分析查詢。靈活性、速度以及與MariaDB Python聯結器的原生Python整合,使其成為處理大型資料集的Python應用程式的一個偉大選擇。
評論留言