日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化...

發布時間:2023/12/10 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關系數據庫的時代

關系數據庫的設計理念

假設你有一臺車,你需要給它存起來,給它找個停車位。傳統數據庫的存儲方式就相當于,把這個車的所有零件拆下來,放在存放對應零件的盒子里,需要用的時候,再把他們取出來組裝。這種方式的存儲數據一個最顯而易見的好處就是節省空間~

關系型數據庫存儲數據

MongoDB的設計理念

然而,MongoDB存儲數據的方式則截然不同。同樣是上面的停車的例子,這回需要停這輛車的時候,我們就直接把它懟進車庫里,取的時候直接就開走了。這樣的存儲數據的方式的好處是方便隨時快捷地存取,但是會犧牲一些存儲空間。

MongoDB的存儲理念

索引原理

在MongoDB中主要有五種類型的索引,即單字段索引(Single-field Indexes)、復合索引(Compound Indexes)、多鍵索引(Multikey Indexes)、地理位置索引(Geospatial Indexes)和全文索引(Text Indexes)。

數據結構與算法復習

由于B樹/B+樹的工作過程過于復雜,我們用數組來理解它。假設索引為{a:1}(aASC):

db.table.insert({a: 1}) [1]

db.table.insert({a: 10}) [1, 10]

db.table.insert({a: 5}) [1, 5, 10]

db.table.insert({a: 7}) [1, 5, 7, 10]

db.table.insert({a: 3}) [1, 3, 5, 7, 10]

如上面工作過程所示,

1、數據增加/刪除時始終保持被索引字段有序

2、數組插入效率太低,但B樹可以輕(fu)松(za)實現

3、在有序結構上實施二分查找,可實現O(log2(n))高效搜索

Big O Notation——大O符號

理解復合索引

假設索引為{a: 1, b: 1} (a ASC, b ASC):

db.table.insert({a: 1, b: 1}) [{a: 1, b: [1]}]

db.table.insert({a: 1, b: 10}) [{a: 1, b: [1, 10]}]

db.table.insert({a: 5, b: 10}) [{a: 1, b: [1, 10]}, {a: 5, b: [10]}]

db.table.insert({a: 5, b: 7}) [{a: 1, b: [1, 10]}, {a: 5, b: [7, 10]}]

復合索引的創建就是這樣一種層層嵌套的方式去建立的。

我們查詢數據的時候,也是在各個對應的層級中找到索引所對應的數據。

復合索引的工作模式——過濾

我們通過下面的三張圖來了解一下復合索引如何找到相應的數據頁吧

如上圖所示,我們可以查找數據時,就可以在已建好的索引上,通過不同節點的跳轉,找到對應的數據頁,再而找到對應數據頁上的相關數據。

復合索引的工作模式——排序

由此可知,我們選擇不同的排序方式,也會造成檢索的數據頁的范圍不一樣。

復合索引的工作模式——索引順序的影響

我們通過不同的檢索索引的順序,對數據進行查詢,因為檢索跳轉的路徑不一樣,從而造成查詢效率不一樣。

我們根據不同的索引執行策略,來進行索引的優化,從而提高查詢效率。

總結

以上是生活随笔為你收集整理的mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。