To better get a grip on what we did, we first want to start off with some basics and why we needed to improve the memory usage and performance in the first place. One great feature in LeanIX is the ability to create multi-dimensional filters in the inventory, e.g. to find all Applications supported by a specific IT component, having a defined lifecycle. In the past, some of our customers had experienced slower queries. Also, complex filter queries in larger workspaces with an increasing number of Fact Sheets (> 1000) resulted in a huge memory consumption and a decrease in performance. We found that the root cause for that was the calculation of the top 5 matches and their counts in the filter facets on the left-hand side in the inventory. To optimize the memory and performance of the filter facet we, therefore, changed the way our filtering works and managed to optimize the memory consumption and therefore also speed up low/medium complex queries by 25% and complex queries even by up to 80%.
This improvement significantly optimizes the memory consumption and therefore also speed up complex queries by up to 80%. This means, if a really complex query before took 30sec it will now take around 2,5sec.
Alongside the optimization of the memory and performance of the filter in the LeanIX inventory, we also did some changes to the behavior of the filters.
1. Changed behavior for filter facet groups (e.g. Business Criticality) with a fixed number of facet entries
Previous to this release, for a selection in a filter facet with a fixed number of facet entries (e.g. Business Criticality), all other facets entries were treated as if no filter was set. Now, only the count of hits for the selection made is shown.
2. Changed behavior for filter facet groups (e.g. User Groups) with a dynamic number of facet entries
Before this release, for a selection in a filter facet with a dynamic number of facet entries (e.g. User Groups) all other entries were also treated as if there was no filter set. Now the selected facet entry is moved to the top of the facet and only the value for the selected facet is displayed. Additionally, the remaining facet entries are now displayed and sorted by their count based on the applied filter. Only entries in the sub-quantity of the checked entry are shown. E.g. in the Screenshot below France is checked and has a count of 14. As the filter now also applies within the facet the entries shown beneath are all positive hits within the total of 14. To translate the result further, that means that in total there are 14 applications with the user group France. The largest sub-quantity of those are also associated with Australia, the least with Headquarters. The most obvious thing two notice in the screenshots is, that on the right the USA is not in the sub-quantity of France and instead Poland is shown.
These adjustments have an effect on the memory and performance optimizations described above, but they also enhance the usability of the filter. Since now the total number in the upper left corner of the result area matches the number displayed for the selected facet entry. Sorting the unselected elements within a facet now also provides valuable information, as they show which entry has the most and which has the least results as a sub-quantity of the checked facet entry (top to bottom).
We also decided to take the chance and include some more minor UX improvements in order to make working with the LeanIX Inventory Filter more intuitive and appealing. Check them all out in the Screenshots below.