食之無味的ORM

2021-07-09 14:05:35 字數 908 閱讀 1394

對於mysql/mongo/redis這樣的資料庫,無論是通過命令列互動,還是客戶端軟體,其實都是將資料操作命令傳遞給資料伺服器,並拿到返回的格式化資料。這些操作都是基於鏈結的。

想起了django自帶的orm框架。其實很多框架都有自己的orm,使用物件模型來相容並遮蔽底層各種資料庫的細節。除了框架自帶,也有一些第三方軟體。

sqlalchemy是python程式語言下的一款開源軟體。提供了sql工具包及物件關係對映(orm)工具,sqlalchemy「採用簡單的python語言,為高效和高效能的資料庫訪問設計,實現了完整的企業級持久模型。sqlalchemy 的乙個目標是提供能相容眾多資料庫(如 sqlite、mysql、postgres、oracle、ms-sql、sqlserver 和 firebird)的企業級永續性模型。sqlalchemy首次發行於2023年2月,並迅速地在python社群中最廣泛使用的orm工具之一,不亞於django的orm框架。看來只是為了遮蔽難懂的sql,對於mongo/redis這種並沒啥用處。從使用這兩種db的客戶端的體驗來說,已經可以把orm甩一邊了。

很多的程式設計師開始使用orm,不用寫sql的喜悅讓他們激動不已,可是好景不長,他們很快發現眾多的煩惱乙個接乙個的出現了:

首先從觀感上講,業務邏輯開始不清晰直觀了。

無可避免的,自動化意味著對映和關聯管理,代價是犧牲效能。

物件導向的查詢語言(x-ql)作為一種資料庫與物件之間的過渡,雖然隱藏了資料層面的業務抽象,但並不能完全的遮蔽掉資料庫層的設計,並且無疑將增加學習成本.

orm使我們擺脫了sql,但並不代表我們不再使用sql。事實上,複雜的查詢和報表我仍然推薦使用sql。orm自身也是基於鏈結(session),甚至django的orm竟然依賴於mysql客戶端軟體。我們可以使用orm也可以使用基於鏈結的sql。

不可同食的食物。

看看有好處,好像有些說的誇張了點。羊肉忌西瓜,同食則中毒 團魚忌莧菜,同食則中毒。黃瓜忌花生,同食則腹瀉。鯉魚忌甘草,同食則中毒。桃子忌燒酒,同食則昏迷。狗肉忌綠荳,同食則腹脹 腹瀉。蠶荳忌田螺,同食則腸絞痛。青蛙忌茶水,同食則小便閉塞。生薑忌白酒,同食則胃皖痛 爛肝臟 豬肉忌菱角,同食則生癲。雞肉...

使用ORM的原理

了解orm,先了解以下概念 什麼是 持久化 持久 persistence 即把資料 如記憶體中的物件 儲存到可永久儲存的儲存裝置中 如磁碟 持久化的主要應用是將記憶體中的資料儲存在關係型的資料庫中,當然也可以儲存在磁碟檔案中 xml資料檔案中等等。什麼是 持久層 持久層 persistence la...

對ORM的認識

orm有三種主要檔案 1.資料庫配置檔案 2.對映檔案 3.業務物件類檔案 orm的特點 1.沒有或者很少有預編譯的資料訪問 2.執行時通過反射來動態生成資料訪問 通過對業務物件類進行反射以及解析對映檔案得到業務物件類與資料庫物件的對映關係 orm的缺點 1.效能較低 因為在執行時使用反射來動態生成...