Todd Nine created USERGRID-470:
----------------------------------
Summary: Implement an upper bound on field delta for a given
entity type
Key: USERGRID-470
URL: https://issues.apache.org/jira/browse/USERGRID-470
Project: Usergrid
Issue Type: Story
Reporter: Todd Nine
Currently users can change fields in an entity type at will. This causes
severe performance bottlenecks, because the master must apply mapping to all
writes in ES as the new document flows through the write path. Usergrid
should detect this issue, and stop accepting new formats from the users. Note
that this is not a limit on the number of fields in an entity type, but rather
the number of unique fields that can appear for a given type over type. I.E
every POST/PUT should not add a new field type to the entity.
Per Dave's suggestions, I think we should perform the following.
*Implementation*
# Create a local guava cache that will hold unique type count by application
and collection type. This should refresh on a set timer in the background so
our user does not wait for it. This can create a hotspot and will put load on
the master.
# If the number of uniquely mapped fields passes a set threshold (at the system
level), an error is returned to the user, indicating they have too many field
changes in their document.
*To rectify*
# A "remove mapping" call into our query index module will need to be created
# This will remove the mapping for the type, and allow the users to start
constructing their data model again. Note that users may need to delete their
entities to remove them from the system to avoid them bloating the mapping
again.
TO DO: Figure out how to allow our users to trigger this remove mapping. It's
an admin function, and we want to ensure they know what the repercussions are
when they trigger it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)