Project: usergrid
Issue USERGRID-652: Index Routing/Location Strategy
We should consider implementing a proxy which provides the index being used for an application. This proxy should provide both the Index strategy and the entity type mapping strategy. The goal is to provide a point where we can implement a strategy function that could do one (or more) of the following strategies for indexes: - Single index per cluster (static index allocation) - Index per org/app (dynamic index allocation) - Index per org (dynamic index allocation) - Index per cluster (dynamic index allocation) - Index per customer (dynamic index allocation) - Hash/bucketing across a fixed range of indexes (static index allocation) - Per environment (TBD) - Static (for the management app, should always match the Cassandra keyspace name as the index) In order to do this we need to update EntityIndexFactory.createApplicationEntityIndex. For Entity Type Mapping, the goal is to enable bucketing of entity types (collections) in a manner that can be more optimal for the indexing strategy that is chosen. For example, a single index strategy might have a single entity type but for the index per org/app it might have a separate entity type. Looking up the management index would have a strategy where the index name matches the cassandra keyspace name
Story points: 5