在Mendix中使用大型資料庫表的五個技巧

2021-10-21 20:44:38 字數 1794 閱讀 8386

在此篇文章中,我想分享在處理帶有大型資料庫表的專案時所學到的一些經驗教訓。首先,讓我們定義mendix中大型表的意義。

在我們的案例中,我們有1億行。最重要的是,此表非常活躍。每天將近插入一百萬行。一旦專案中的**達到此大小,您就需要開始考慮以前無需擔心的事情。很小的更改(例如新增新的布林屬性)可能會對應用程式的效能產生重大影響。以下是根據mendix同事小夥伴的經驗提供的五個提示,歡迎交流。

這是顯而易見的,甚至是mendix推薦的。在單獨的事務中執行批次也有幫助(請參閱開始和結束事務)。也不要忘記嘗試批量大小。在我們的例子中,100是魔術數字。

通用唯一識別符號(uuid)是乙個128位數字,用於標識計算器系統中的資訊。

除了mendix生成的內部id外,uuid通常還用作物件的其他識別符號。uuid的優點是它們可以由外部系統生成/傳送。然後,這些uuid可以用於將物件軟鏈結在一起或從外部系統引用物件。

不幸的是,與大多數資料庫模式不同,mendix不支援特殊的uuid型別。因此,uuid以字串形式儲存,這在記憶體方面不是很有效率。但是更重要的是,索引和檢索字串比等效的uuid型別(postgresql)慢2-5倍。

我們尋求的解決方案是用snowflakeid替換uuid。這些是類似於uuid的唯一id,但只有64位(而不是uuid的128位)。這意味著它們可以儲存在bigint(長整數)列中。這使得我們專案中的資料檢索速度平均提高了10倍。

向大型表新增新屬性可能會出現問題。尤其是當要在主流程之外設定新屬性以更新大型表中的行時,這可能導致資料庫鎖定問題和效能下降。通過使用軟鏈結可以消除這種危險。

與受資料庫約束支援的關聯(硬鏈結)不同,軟鏈結僅通過其名稱和用法來實現。

請記住,軟鏈結使應用程式更加複雜,因為它們不支援通過關聯進行檢索。這尤其會影響頁面設計,這將需要一些創造力和額外的資料檢視/ npe(非永續物件)來構建。請僅在需要時謹慎使用軟鏈結。

布林值在mendix中是一種特殊的資料型別,因為它們是唯一沒有空值的資料型別。將新的布林列新增到大型表時,這將成為問題。表中的每一行都需要初始化為true或false,這可能需要很長的時間(小時)。解決方案是改用列舉,並使預設值與空值匹配。

不可避免地,您將不得不在mendix中更改域模型或更新/遷移資料。當此更改影響大型表時,可能需要很長時間才能更新資料庫。mendix對應用程式啟動設定了大約10分鐘的限制,其中包括資料庫架構更新以及啟動後的微流。這意味著,如果資料庫架構更新+啟動微流後耗時超過10分鐘,則您的應用將無法啟動,甚至使您的資料庫損壞。

mendix官網:

mendix中國論壇:

mendix行業解決方案:

mendix平台指南:

mendix動畫展示:

感謝閱讀!

在Metasploit中使用資料庫

將metasploit與資料庫建立連線可以加快搜尋的速度,縮短響應的時間。如圖是沒有建立與資料庫連線時候的情形 如果需要使用資料庫,需要先啟動metasploit的資料庫服務 root kali service postgresql start root kali msfdb init 然後我們啟動...

在python中使用mysql資料庫

先用pip安裝一下mysql pip install pymysql使用的時候,import python import pymysql python連線資料庫操作 開啟資料庫連線 def connectdb print 連線到mysql伺服器.db pymysql.connect localhos...

在Docker中使用mongodb資料庫

sudo docker pull mongosudo docker run p 27017 27017 v tmp db data db d mongosudo docker run it mongo mongo host 宿主機ip位址 port 27017 show dbs admin 0.00...