Composed attribute support provides an alternative to a specific set of use cases that might also be addressed by virtual attribute support. The composed attribute solution might improve performance, searchability, and write behavior, but it also has limitations relative to the virtual attribute subsystem.
Limitations of composed attributes relative to virtual attributes include:
- When creating a composed attribute plugin in the server, you must use manual action to populate composed values in existing entries. When enabling a virtual attribute, the attribute is immediately available to clients.
- When removing a virtual attribute from the server, values that would have been generated for the attribute are no longer present. When removing or disabling a composed attribute plugin, previously generated composed values remain.
- Virtual attributes can be configured so that the values are only generated under certain conditions, such as only for certain clients, and to enable different values being generated for different clients. Composed attributes are the same for all clients although access controls can be used to restrict which clients have access to them.
- Virtual attributes do not require any additional storage or memory usage. Composed attributes exist in the database, so they require additional disk space and memory for caching.
- The composed attribute plugin can only generate values from a combination of static text and values from other attributes in the same entry. Virtual attributes can use a much wider range of logic when generating values, including custom logic implemented using the Server SDK.