如何在 API 設計中執(zhí)行分頁
共 3356字,需瀏覽 7分鐘
·
2024-06-11 17:34
在 API 設計中,分頁對于高效處理大型數據集和提高性能至關重要。以下是六種常用的分頁技術:
01 基于偏移的分頁
這種技術使用 offset 和 limit 參數來定義起點和要返回的記錄數。
例如:
GET /orders?offset=0&limit=3
-
優(yōu)點:易于實現和理解。 -
缺點:由于需要掃描和跳過記錄,因此偏移量較大時效率可能會降低。
02 基于游標的分頁
這種技術使用游標(cursor)來標記數據集中的位置。通常,游標是一個指向特定記錄的編碼字符串。
例如:
GET /orders?cursor=xxx
-
優(yōu)點:對大型數據集來說更有效,因為它不需要掃描跳過的記錄。 -
缺點:實施和理解起來稍顯復雜。
03 基于頁面的分頁
這種技術指定每頁的頁碼和大小。
例如:
GET /items?page=2&size=3
-
優(yōu)點:易于實現和使用。 -
缺點:對于大頁碼,存在與基于偏移的分頁類似的性能問題。
04 基于 keyset 的分頁
這種技術使用 key 來過濾數據集,通常是主鍵或其他索引列。
例如:
GET /items?after_id=102&limit=3
-
優(yōu)點:適用于大型數據集,效率高,可避免因偏移量大而產生的性能問題。 -
缺點:需要唯一且有索引的鍵,實現起來可能比較復雜。
05 基于時間的分頁
這種技術使用時間戳或日期對記錄進行分頁。
例如:
GET /items?start_time=xxx&end_time=yyy
-
優(yōu)點:適用于按時間排序的數據集,確保在添加新記錄時不會遺漏記錄。 -
缺點:需要可靠一致的時間戳。
06 混合分頁
這種技術結合了多種分頁技術,以發(fā)揮它們的優(yōu)勢。
例如,將基于游標的分頁和基于時間的分頁相結合,以高效滾動瀏覽按時間排序的記錄。
例如:
GET /items?cursor=abc&start_time=xxx&end_time=yyy
-
優(yōu)點:可為復雜數據集提供最佳性能和靈活性。 -
缺點:實施起來比較復雜,需要精心設計。
上述每種技術都有其優(yōu)點和利弊,分頁方法的選擇取決于具體的使用情況、數據集特性以及 API 的性能要求。
以上內容源自公眾號“ByteByteGo”,是硅谷百萬粉絲技術大v、《搞定系統(tǒng)設計:面試敲開大廠的門》一書作者Alex Xu的官方號。
關于系統(tǒng)設計的面試,可以說是所有技術面試中最難的。
面試者會被要求設計一個軟件系統(tǒng),比如news feed、谷歌搜索、聊天系統(tǒng)等。
這些問題令人望而生畏,沒有特定的解題模式,通常范圍都非常廣且模糊,其答案也是開放的,也可以說不存在標準答案或正確答案。
很多公司都設有系統(tǒng)設計面試,因為這種面試能考驗軟件工程師日常工作所需的溝通能力和解決問題的能力。
面試官會考查候選人如何分析一個模糊的問題并一步步解決這個問題;同時,他們還會考查候選人闡述自己想法的能力、與其他人討論的能力、評估及優(yōu)化系統(tǒng)的能力。
系統(tǒng)設計的問題是開放式的。
在現實世界中,不同的系統(tǒng)之間存在許多差別,而系統(tǒng)自身還要應對各種變化。
面試官期望得到的答案是一個能滿足系統(tǒng)設計目標的架構。
在面試過程中,對問題的討論可能會因面試官的個人風格不同而走向不同的方向。
有些面試官喜歡詢問高層架構設計方面的問題,以全面地考查面試者的知識面,也有些面試官會選擇一個或者幾個領域來深入地考查知識點。
一般來說,應該搞清楚系統(tǒng)的需求、限制和瓶頸,以便面試雙方可以有效地進行溝通。
Alex所著《搞定系統(tǒng)設計:面試敲開大廠的門》一書的目標是提供一個可靠的策略,幫助面試者回答系統(tǒng)設計問題。采取正確的策略且具備必要的知識,對面試的成功至關重要。
本書講述了構建一個可擴展系統(tǒng)所需的基礎知識。你從本書中獲得的知識越多,在解決系統(tǒng)設計問題時就越從容。
本書還提供了一個逐步解決系統(tǒng)設計問題的框架,用了很多實例來闡釋這種系統(tǒng)性的解決方法且附有詳細步驟,你可以照著操作。只要勤加練習,在回答系統(tǒng)設計面試問題時,你就會胸有成竹。
本書原著豆瓣評分8.4,得到眾多讀者的好評,案例經典、信息全面系統(tǒng)、非常適合用來面試!
如果你想順利通過高難度的系統(tǒng)設計面試,那就看看這本被眾多讀者驗證過的好書吧~~
↑限時五折優(yōu)惠↑
限時五折優(yōu)惠,快快搶購吧!
發(fā)布:劉恩惠
審核:陳歆懿
如果喜歡本文 歡迎 在看丨留言丨分享至朋友圈 三連 < PAST · 往期回顧 > ![]()
書單 | 5月新書速遞!
