Custom Entities are our super-charged improvement to both Global Entities and User Entities.
Custom Entities offer:
Custom Indexes for super-fast lookups
Deployment support for easy migration of entities between Dev and Prod apps
Owned vs. Un-Owned variations
ACL support
Time-to-live (TTL) support
Import / Export Support
Both Global and User Data Editors
JSON Templates
Because Custom Entities can be used for much, much larger data sets, there are additional usage costs associated with them. As always - we strive to keep such costs inexpensive and elastic.
Custom Entities are available on Plus plans only.
See the pros/cons below to determine if they are right for your app.
---
Unowned Custom Entities are much better than Global Entities because:
Deployment Support - so you don't need to manually export/import them when pushing updates to your production apps
Performance and Scalability - they scale well past the known limits of Global Entities. Custom indexes allow your custom entities searches to perform quickly even with millions of objects.
Owned Custom Entities are better than User Entities because:
They scale much better - though this is rarely an issue since an individual user doesn’t normally have that many User Entities
They allow searching across all users ← very valuable for certain use cases!
To summarize:
You can still continue using Global Entities and User Entities within their limits - they are still available and supported
Keep using Global Entities if you just have a few entity types, and just dozens or low hundreds of entities. Good examples include level data, simple reference data, etc.
Do not use Global Entities for per-user data. i.e. Keeping a global list of transactions that user’s in your app have made, per-user stats, team stats, etc. Global Entities do not scale on a per-user basis at all! Large quantities of static data. I.e. if you have thousands or millions of trivia questions, you will be better served by Custom EntitiesThere are many ways to look up your data. Global Entities are only indexed in a few set ways (entityType, entityId, and indexedId). Looking up by any custom data (within the data section is unindexed and slow at larger quantities). For any of the above, your app will scale and perform much better with Custom Entities!
Choose Owned Custom Entities instead of User Entities for cases when the data is owned by the user, but you want it to be searchable globally; or the user data is large enough and varied in search patterns enough to warrant custom indexes
