You can go pretty far without your own DB. Depends on the types of queries you need to make. For my project[1], I was able to use getRecord[2] for a lot of the data that needed fetching on the client-side.
1 - https://scrapboard.org/
2 - https://docs.bsky.app/docs/api/com-atproto-repo-get-record