Hi Jayanga, Doesn't this functionality overlaps with permission checking implemented for C5?
On Tue, Nov 15, 2016 at 1:10 PM, Uvindra Dias Jayasinha <[email protected]> wrote: > Pagination is required whenever we return a collection of items to the > requester and we use widely as part in the REST API. > > Initially we thought of supporting pagination at DB level. This ensures > that only a limited dataset is read at a given time based on the offset and > limit values provided by the caller. To support this we need to maintain DB > vendor specific SQL statements since pagination at DB level is > propitiatory. > > But there are a few complications with some of our use cases when relying > on DB pagination. > > 1. Display only the latest version of a given published API by the API > Store - Since the version is a VARCHAR column we cannot assume it is > numerical so its not straightforward to find the latest version of a given > API via SQL. We can overcome this at Java level by implementing a > sophisticated String comparator. > > 2. Validate an APIs roles against a given users roles to validate > eligibility to view the API - In situations where users have a large number > of roles assigned to them we will need to pass all these roles in the WHERE > clause of the SELECT statement when filtering the result set further > complicating statement. > > Given that in the C5 tenancy model each tenant will have there own DB > instance, data numbers will be quite low. For example it will be unusual to > have a 1000 APIs in the DB. So in this scenario its a lot easier to read > the entire result set into memory at the back end and then paginate what is > returned to the caller at Java level along with doing permission checks. > the advantage of this is, > > 1. Minimise the need to maintain vendor specific SQL for pagination > > 2. Simplifies SQL statements > > 3. Easier to implement the above use cases in Java > > We can minimise database access to read all the information by having a > local cache with a time out of about 30 seconds which we can use to serve > requests. When a new API is added it can be added to the cache. > > > -- > Regards, > Uvindra > > Mobile: 777733962 > > _______________________________________________ > Architecture mailing list > [email protected] > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > > -- With regards, *Manu*ranga Perera. phone : 071 7 70 20 50 mail : [email protected]
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
