雲開發資料庫的核心能力與實踐:許可權管理、索引管理……

Tencent_TCB發表於2020-07-14

隨著使用者量的不斷增多,使用者需求的不斷變多,雲開發的迭代速度也越來越快,雲開發推出了不少的新功能,這篇文章,將歷數這些雲開發的新功能,看看你都用上了沒。

雲開發資料庫基礎能力概覽

雲開發資料庫主要提供的是一個 JSON 文件型資料庫, JSON 資料格式讓他對於前端開發十分的油耗,開發者可以輕鬆的完成資料的修改。此外,在資料庫基礎之上,雲開發還提供了豐富的資料型別和多個平臺的 SDK,讓開發者可以在各個平臺完成自己的業務開發。不僅如此,雲開發資料庫還提供資料庫的安全規則控制,讓開發者得以實現更加細粒度的許可權控制。對雲開發概念不熟悉的同學可以檢視產品文件

img

當然,除了上面提到的這些基礎能力以外,還有很多其他的特色能力,可以幫助你更好的完成自己的業務開發。接下來,我們來看看這些特色能力。

自定義告警

為了輔助業務監控服務質量,雲開發為資料庫提供了自定義告警能力,開發者可以藉助監控能力,來實現監控服務的可用性。

對於開發者來說,可以藉助雲開發提供的自定義告警能力,來完成業務質量的監控、問題的快速觸達,將問題扼殺在搖籃之中。

img

許可權管理

脫離了安全,業務就沒有任何保證可言。在資料庫許可權設定方面,雲開發提供了兩種設定,第一種是初期提供的基礎的四種簡易許可權設定,第二種是靈活的、可自定義的許可權控制,即資料庫安全規則。每個集合可以擁有一種許可權配置,許可權配置的規則是作用在集合的每個記錄上的。

通過不同粒度的許可權控制方式,開發者可以十分簡單的實現各種不同許可權控制能力。不僅如此,因為有了許可權控制能力,雲開發的資料庫可以在前端直接操作,可以有效的提升研發效率。

img

匯入匯出管理

針對不同的業務,雲開發提供了資料匯入、資料匯出、資料回檔功能。

針對有需求從傳統業務遷移至雲開發上的開發者,可以選用雲開發提供的資料匯入能力,通過將資料轉換成 JSON 或 CSV 格式,來匯入到雲開發資料庫中。類似的,如果業務需要對資料進行離線統計分析的時候,就可以藉助資料匯出的功能,實現本地的資料分析。

除此之外,從安全的角度考慮,我們面向開發者開放了資料回檔的功能,簡單的幾下點選,就可以實現資料的快速回檔,告別刪庫跑路。

img

索引管理

資料庫索引可以提升資料庫查詢的效能,雲開發也提供了相應的索引管理功能,幫助開發者方便快捷的完成索引的建立,優化資料庫查詢的效能。目前雲開發資料庫索引支援鍵值索引和地理位置索引,後續也有可能會支援 Hash 索引和全文索引等。

開發者可以藉助雲開發提供的索引功能,優化資料庫查詢的效能,提升產品的體驗。

img

如何建立高效的資料庫索引

最佳實踐1:每個生產環境查詢都應有索引支援

首先我們需要記得,每一個我們放到線上生產環境的查詢,都應該配有索引支援,只有有索引支援才能儘可能規避資料量和請求量上漲帶來的慢查詢風險。

最佳實踐 2:儘可能使用組合索引

如果我們的查詢條件包含多個欄位,那麼為這些欄位建立一個組合索引後的查詢效率是比只使用單欄位索引要高很多的。像下圖這個case

img

最佳實踐 3:組合索引欄位順序策略

要注意組合索引中欄位的順序。比如下圖這樣一個包含兩個查詢欄位,一個排序欄位的這麼一個查詢語句,那我們在建立組合索引的時候是不是任意順序都可以呢?確認任意順序都能讓這個查詢語句用到索引,但那不一定是最優的順序。最優的順序是b,c,a,為什麼呢?在建立組合索引時,我們應遵循這麼一個欄位順序原則:等於>排序>範圍查詢欄位

img

最佳實踐4:注意組合索引升降

要注意組合索引的升降序,這個升降序也並不是可以隨意指定的,特定的升降序組合只可以滿足特定的排序查詢。以下面這個查詢為例。

img

最佳實踐 5:利用覆蓋索引高效查詢

可以利用好覆蓋索引。什麼是覆蓋查詢,就是當查詢條件和查詢要返回的所有欄位都在索引中的時候,就是覆蓋查詢,當命中覆蓋查詢的時候,查詢不再需要去讀取資料,直接從索引中取得結果,可以進一步更加的高效。下面這個查詢是一個例子:

img

最佳實踐 6:陣列查詢也要建索引

要記住陣列也可以使用索引,像下圖中的示例,a 欄位是個數字陣列,b欄位是個物件巢狀陣列,它們其實都可以利用到索引,像a欄位我們可以直接建個索引,如果需要查b陣列裡面的x欄位,那可以建個b.x的欄位索引。

img

最佳實踐 7:去除多餘索引

要去除多餘的索引。什麼是多餘的索引呢?首先當然是沒用到的索引,過時的索引,這些都可以去掉,但還有一類多餘的索引需要特別提及,那就是重複字首的索引和相反升降序的索引,這些也是多餘的索引。

img

最佳實踐 8:大資料量下避免使用低區分度操作符

在大資料量下避免使用低區分度的操作符,這些都是取反的操作符,他們的區分度通常都很低,因此很難高效的使用索引,因此只應該在少量的時候使用。

希望以上的能力介紹和最佳實踐建議,可以幫助到大家更好地使用到雲開發資料庫。如果你對上面8個最佳實踐建議還無法很好地理解,這也沒有關係,因為微信開發者工具很快就會推出一個自動分析資料庫查詢語句,然後自動給出索引建議的能力,這項能力可以讓大家在偏離資料庫索引最佳實踐的時候給出提示和警告,從而讓小程式的資料庫查詢都儘可能有正確、完整的索引保障,並且還是遵循最佳實踐的方式建立的索引。

本分享課程視訊可以在這裡檢視:https://cloud.tencent.com/developer/salon/live-1234

雲開發(CloudBase)是雲端一體化的後端雲服務,採用 serverless 架構,免去了移動應用構建中繁瑣的伺服器搭建和運維。同時雲開發提供的靜態託管、命令列工具(CLI)、Flutter SDK 等能力極大的降低了應用開發的門檻。使用雲開發可以快速構建完整的小程式/小遊戲、H5、Web、移動 App 等應用。

產品文件:https://cloud.tencent.com/product/tcb

技術文件:https://cloudbase.net

技術交流加Q群:601134960

最新資訊關注微信公眾號【騰訊云云開發】

相關文章