|Connected Services Framework 3.0 Developers Guide|
|What Is a Facet?|
Connected Services Framework (CSF) Profile Manager database provides you with 10 facets with which you can partition your user profile data that you store in the database. A facet is a construct that helps you to assign a user profile to a group with other user profiles and easily enables you to partition data across multiple disk arrays. Facets are designed to improve the search speed in the Profile Manager. You can store a facet on a specific drive, and ideally, you store each facet on a separate drive.
When you send a CreateProfileRequest message to the Profile Manager and specify a value for the facetName attribute, if the facet has not already been defined, the Profile Manager stores the facet name to the database. For the first 10 facet names to which you assign user profiles, the Profile Manager database provides a database view.
Note. You can create more than 10 facets. However, the Profile Manager provides a database view for only the first 10 that you create.
Here are a few points to keep in mind when you use facets:
- The Profile Manager does not save duplicate data to the database. If you create a profile with profile values for the predicate, predicate, object, and object datatype that already exist in the database but specify a different facet name, the Profile Manager saves the new profile into the database, but with its original facet name. To change the facet name for a user profile, you must first delete the record and create it again with the new facet name. This behavior is controlled by the CreateProfileRequest.IgnoreDuplicates property. For more information, see this property in the Microsoft Connected Services Framework 3.0 SDK reference.
- Only use a facet to segment data in large divisions. For example, if you had five million user profiles and three million blog entries stored in the Profile Manager database, it would make sense to create two facets, one for the user profiles and the other for the blog entries.
- Do not use facets to partition your data based on values that can be broken into many segments. For example, you should not create facets to segment user profiles by postal code. Though improving search performance is the main goal behind facets, be aware that searching a small data partition may affect how detailed the data is that the Profile Manager returns.
Facets will be modified in future CSF releases to help large enterprise systems to scale up.