Discover how smart pagination saves your app from slow loading and confused users!
Why Pagination patterns (cursor, offset) in HLD? - Purpose & Use Cases
Imagine you have a huge list of items, like thousands of photos or messages, and you want to show them page by page on a website.
Without a smart way to split this list, you try to load all items at once or manually pick which ones to show on each page.
Loading everything at once is slow and crashes the app.
Manually tracking which items belong to which page is confusing and causes mistakes, like showing duplicates or missing items.
Users get frustrated waiting or seeing wrong data.
Pagination patterns like cursor and offset help by breaking the list into small, manageable pages.
Offset uses page numbers and counts to jump to a spot, while cursor remembers a position marker to fetch the next set smoothly.
This makes loading fast, accurate, and easy to handle.
SELECT * FROM items LIMIT 1000; -- load all items at onceSELECT * FROM items WHERE id > last_seen_id ORDER BY id ASC LIMIT 20; -- cursor paginationIt enables fast, smooth browsing through large data without overwhelming servers or users.
Social media apps use cursor pagination to load new posts as you scroll, so you never wait long or see repeated content.
Manual loading of large lists is slow and error-prone.
Pagination patterns split data into easy pages.
Cursor and offset each have strengths for different needs.
Practice
Solution
Step 1: Understand offset pagination limitations
Offset pagination uses page numbers and offsets, which can be slow and inconsistent on large or changing datasets.Step 2: Analyze cursor pagination benefits
Cursor pagination uses a unique cursor (like an ID) to fetch the next set of results, making it faster and more reliable for large data.Final Answer:
Cursor pagination is faster and more reliable for large datasets. -> Option AQuick Check:
Cursor pagination = faster, reliable [OK]
- Confusing cursor with page number
- Thinking cursor pagination returns total pages
- Assuming offset is always faster
Solution
Step 1: Identify offset pagination syntax
Offset pagination typically uses page numbers and limit, e.g., page=2 and limit=10.Step 2: Check options for correct syntax
/items?page=2&limit=10 uses page=2 and limit=10, which matches offset pagination style.Final Answer:
/items?page=2&limit=10 -> Option CQuick Check:
Offset pagination = page + limit [OK]
- Using cursor parameter for offset pagination
- Confusing offset with cursor values
- Using invalid parameter names like start or offset with strings
items = [
{"id": 101, "name": "A"},
{"id": 102, "name": "B"},
{"id": 103, "name": "C"}
]
last_cursor = 101
page_size = 2
next_page = [item for item in items if item["id"] > last_cursor][:page_size]
next_cursor = next_page[-1]["id"] if next_page else None
print(next_cursor)Solution
Step 1: Filter items with id greater than last_cursor
Items with id > 101 are 102 and 103.Step 2: Take first 2 items as page size is 2
Next page items are [{"id": 102, "name": "B"}, {"id": 103, "name": "C"}].Step 3: Get last item's id as next cursor
Last item id is 103, so next_cursor = 103.Final Answer:
103 -> Option DQuick Check:
Next cursor = last id in next page = 103 [OK]
- Choosing last_cursor as next cursor
- Selecting first item id instead of last
- Ignoring page size limit
Solution
Step 1: Understand offset pagination issues with changing data
Offset pagination can skip or repeat items if data changes between requests because offset is position-based.Step 2: Identify solution with cursor pagination
Cursor pagination uses unique IDs, avoiding duplicates or skips even if data changes.Final Answer:
Cause: Using offset with changing data causes duplicates or skips; Fix: Switch to cursor pagination. -> Option AQuick Check:
Offset pagination = inconsistent with changing data [OK]
- Thinking caching fixes offset pagination issues
- Confusing cursor and offset pagination roles
- Reducing limit does not solve data inconsistency
Solution
Step 1: Analyze requirements for large, changing datasets
Social media feeds have millions of posts and frequent updates, so pagination must be efficient and consistent.Step 2: Compare offset and cursor pagination suitability
Offset pagination is simple but slow and inconsistent with large, changing data. Cursor pagination efficiently handles these issues by using unique cursors.Final Answer:
Cursor pagination, because it handles large, changing datasets efficiently and avoids duplicates. -> Option BQuick Check:
Large dynamic data = cursor pagination best [OK]
- Choosing offset for large dynamic datasets
- Assuming offset is faster for big data
- Thinking cursor returns total pages
Ready to prove it?
Pass the test and this pattern moves unknown
