mergesort / Boutique

✨ A magical persistence library (and so much more) for state-driven iOS and Mac apps ✨
https://build.ms/boutique/docs
MIT License
899 stars 43 forks source link

[Question] iOS beginner advice for data management #9

Closed robsontenorio closed 2 years ago

robsontenorio commented 2 years ago

Hi 👋

Thanks for hard working!

I am beginner on iOS development, but some experienced on web development.

Just came across your package after digging a ton of tutorials about CoreData. Compared to ORM/DataMapper pattern (web frameworks), Core Data is such a pain ! Too much hand working 🙁

But your package seems to be very close to the goodies we have on web.

My main goal is to have all data (database?) managed locally on device, with all data generated on app itself, nothing coming from any external API. But, keeping in sync in some way with Apple iCloud. Core Data looks like does the job. Can I say the same by adopting this package ? Any other pro advices?

Appreciated 🙏

mergesort commented 2 years ago

Hi @robsontenorio, thanks for checking out Boutique!

Boutique is great for storing data on device, though if your only goal is to store data on device, I could recommend my other library Bodega. Bodega is what powers the on-disk cache portion of Boutique, so if you're only storing data to disk, then Bodega may be enough for your needs. If you'd like to sync with iCloud you'd have to build that yourself. Unlike Core Data Boutique is only a storage and memory layer, which means there's no connection to external services or APIs like iCloud. If you're ok with that then it should be doable, and not especially difficult since all of your structs or objects have to conform to Codable to be used in Boutique or Bodega.

I don't have pro advice but the only other consideration right now is that I'm still working on achieving better performance for the in-memory store, specifically with large data sets. If you're saving hundreds of very large items or thousands of large items Boutique may not be ready to handle that. Bodega should be able to, but until I improve the in-memory performance for Boutique, it may be worth considering alternatives.

Hope that helps!