⚙️ Performance and UX improvements !
Performance is key not only when you have millions of nodes but also when you just get started. We were already very happy with the performances. If you have the correct hardware Ganister will be the most performant graph-based low-code platform on the market. But still, we look at the metrics, we measured the milliseconds that annoyed us and came up with some cache mechanisms to improve Ganister's performance and user experience.
A cache is the capability to save some data in a place that is very fast to access usually without having to fetch data from the database. The tradeoff is that if you cache once and only read from it, any change will not be visible. The whole strategy lies in when you need to update this cache. On a blog engine, once a blog post is published, it is pretty easy to handle, as long as you don't update the post, the server caches it and user request will not trigger a database query. In a graph-based system this is a bit more complicated. In Ganister you can also have information in a node coming from other nodes, therefor caching is tricky. We decided to enable cache on two key elements: users and relationships.
For security we are checking user existence at each server query. We know cache the users because it is very easy for us to know when a user is update or removed. Therefor it is very easy to update the cache.
Some of our customers have decided to create a lot of tabs in some nodes. It triggers a lot of data fetching. Some of these relationships never get updated and will greatly benefit from this new cache mechanism.
We usually limit the amount of information you can fetch at once to prevent network overload. In most systems with the same limitation, if you sort the result of a query, it only sorts the content of the grid. It is risk because you quickly forget that there might be some missing records in your sorted list. We implemented the sort mechanism server side. So know when you sort by name a list with a 50 nodes limit out of hundreds, you are not missing any record in the list. The remaining results are either before this list or after when sorted by name.
You can upgrade you own instances running
npm run upgrade.
- [Main Client] Remove CAD Exchanger
- [Main Client] Add a default 'For' tab in assignment to attach to any nodetype
- [Main Client] Allow multi-directions tab
- [Main Client] Allow Switching graph direction and expanding just up or down
- [Main Client] Allow to define a pre-warning message before lifecycle promotion
- [Main Client] Save tab grids configuration in the browser (use to be only main listing)
- [Main Client] Allow to open a node specified by type and id on Ganister client loading
- [Main Client] keep parent selected on customtreegridview when deleting a node
- [Main Client] Update markdown conversion in grids to support github flavor markdown
- [Main Client] Fix Full screen mode to prevent modals to be hidden
- [Main Client] Fix node property relationship updates
- [Main Client] Fix displaying related nodes in reverse relationships
- [G-Config] Refresh datamodel on graph update
- [G-Config] Fix setting default values in coreItems
- [G-Config] Fix creating nodetypes with duplicated lifecycle roles and states
- [Ganister Server] Set relationship read right based on the readability of both ends
- [Ganister Server] List of values and Method do not require server restart on change anymore
- [Ganister Server] Introduction of a CopyNode() function in the exposed methods
- [Ganister Server] Enable Server Side cache for relationships (requires activation in .env)
- [Ganister Server] Caches User as long as they are not changed, reduces load on DB
- [Ganister Server] Fix filesize reading back
- [Main Client & API] Sort grid columns server side
- [Utilities] Replaces MongoDB backup by a GIT backup mechanism for the datamodel changes
- [Documentation] Update documentation template
- [Documentation] Add an Access documentation
Lot of work on the customer side. Very interesting extended-enterprise use cases came on our way. We should be able to run CAD-related webinars after the summer.