The performance of the data provider application is often key in the many integrations done with the ConfD Data Provider (DP) API. When a data provider application is not performing well, it quickly becomes the biggest problem. We have noticed how the need for a DP performance application note accompanied by a demo project has been increasingly appearing on our radar lately. ConfD users often struggle with getting the integration of their flavor of data provider to perform. They are unaware that ~95% of all integrations requiring high performance and implementing large lists/tables need to only register and implement a powerful subset of the callback-based DP API the Operational Data Provider. In fact, by not implementing some of the basic callbacks, data provider performance can be increased.
We have written a new application note called “High Performance ConfD Data Providers,” which addresses the topic of high-performance data providers. The types of DP applications that we discuss in this application note are:
- Operational Data Provider – read-only of YANG config false data
- External Database Data Provider – read-write of YANG config true data
- Transform Data Provider – read-write of YANG config true & false data
- Operational State Data Provider – read-only of YANG config true data
Many ConfD DP API integration projects start simple, implementing just the get_elem() and get_next() callbacks. While keeping the integration simple is often a good strategy, if you know there are large lists in various forms, possibly with dependencies lurking around the corner, implementing the DP API get_next() and get_elem() callbacks may be a waste of time. In this application note and accompanying reference demo project, we suggest that, for most use cases, there is a significant performance benefit in not registering callbacks such as get_next(), get_next_object(), and get_elem() in favor of only registering the find_next(), find_next_object(), and get_object() callbacks. We hope that new and existing projects can use this application note and the companion example code to supplement the ConfD and standards documentation moving forward and thereby avoid the most common performance pitfalls and misunderstandings that we have seen ConfD users struggle with late in their development cycle in various ConfD DP API integrations over the years.