Subject: Re: [netconf] restconf collections

From: Kent Watsen <[email-masked]>
Date: Thu, 1 Oct 2020 12:36:34 +0000

Hi Qin,

> Some opstate must be persisted, e.g., long-lived counters, logs, etc., but it’s a good point about other opstate not being persisted.   Perhaps “node-tags” can be used here, to differentiate which is which…and servers can indicate if/how they support the ephemeral opstate leafs in queries?
> 
> [Qin]:That's a good case for node tag, in earlier discussion, we discussed operation type, which distinguishs cumulative statistics value from current value. The case discussed here is very close to operation type proposal discussed earlier.

Yes.  Thank you for pointing that out.  I meant to make the same observation before.  Indeed, such node-tags could have dual-purpose: to guide a streaming-strategy and a querying-strategy for certain nodes.

> Note sure how others feel about “direction: (c), but my primary use-case revolves around time-series data (e.g., logs), where the interest is commonly on the most-recent entries, so "reverse-->offset—>limit” works nicely.  
> 
> Perhaps an alternative would be to lift a concept from Python with negative indexes so, for instance, offset=-N and limit=-N gives the last N entries?
> [Qin]: Yes, that's what I thought as well, with negative indexes, (b) and (c) seems to me, can be combined.

Can others comment on this?

Presumably, we could eliminate “direction” (c) with this approach.  

Without “direction”, I think that UIs can still support the ability to do column-sorts, whereby the user clicks on a column’s header to toggle ascending vs. descending presentation, but they’ll have to do it client-side.

That is, if wanting to see the 2nd page of results sorted by a column, something like:

	sort(column-name) --> offset(-2*pagesize) --> limit(pagesize)

Followed by the client then flipping the results to present the results in the user-selected order, right?

That said, given that DB-backends that support sorts commonly also support direction, it's unclear what this buys us.

>>> Sure, but I wonder if, e.g., a netmask filter, is supportable by 
>>> common DB-backends.  I’m hoping we have some DB-experts on the list!
>> 
>> See above.  It can be quite efficient even if the backend doesn't 
>> support it.
> 
> I don’t see that above, but I don’t doubt that it can be so, it’s just a whole lot of implementation complexity.  It seems that we should/must support servers doing it, we just need to find a way (node-tags?) to enable them to express that ability.
> [Qin]: My feeling is this efficiency more depends on the amount of data we need to request. If amount of data we request is huge, maybe, client-> server-> backend may be the better choice.

Is it the amount of data requested or the number of entries in the list?  At least, in my worldview, clients are always requesting a “page” of data, so that part is rather consistently small.

If the intention is to get a complete dump, then maybe the comment from yesterday applies, whereby streaming to an external repository that can be queried offline makes more sense?    - especially considering that the number of on-box logs is likely to be only the most recent (e.g., days), whereas the complete-dump type queries likely wish to extend well-past that.

K.

---

From: Martin Björklund <[email-masked]>
Date: Thu, 01 Oct 2020 15:23:35 +0200 (CEST)

Kent Watsen <[email-masked]> wrote:
> Hi Qin,
> 
> > Some opstate must be persisted, e.g., long-lived counters, logs, etc.,
> > but it’s a good point about other opstate not being persisted.
> > Perhaps “node-tags” can be used here, to differentiate which is
> > which…and servers can indicate if/how they support the ephemeral
> > opstate leafs in queries?
> > 
> > [Qin]:That's a good case for node tag, in earlier discussion, we
> > discussed operation type, which distinguishs cumulative statistics
> > value from current value. The case discussed here is very close to
> > operation type proposal discussed earlier.
> 
> Yes.  Thank you for pointing that out.  I meant to make the same
> observation before.  Indeed, such node-tags could have dual-purpose:
> to guide a streaming-strategy and a querying-strategy for certain
> nodes.
> 
> 
> > Note sure how others feel about “direction: (c), but my primary
> > use-case revolves around time-series data (e.g., logs), where the
> > interest is commonly on the most-recent entries, so
> > "reverse-->offset—>limit” works nicely.
> > 
> > Perhaps an alternative would be to lift a concept from Python with
> > negative indexes so, for instance, offset=-N and limit=-N gives the
> > last N entries?

Isn't this just another syntax for the same function?

/martin

> Without “direction”, I think that UIs can still support the ability to
> do column-sorts, whereby the user clicks on a column’s header to
> toggle ascending vs. descending presentation, but they’ll have to do
> it client-side.
> 
> Followed by the client then flipping the results to present the
> results in the user-selected order, right?
> 
> That said, given that DB-backends that support sorts commonly also
> support direction, it's unclear what this buys us.
> 
> 
> > I don’t see that above, but I don’t doubt that it can be so, it’s just
> > a whole lot of implementation complexity.  It seems that we
> > should/must support servers doing it, we just need to find a way
> > (node-tags?) to enable them to express that ability.
> > [Qin]: My feeling is this efficiency more depends on the amount of
> > data we need to request. If amount of data we request is huge, maybe,
> > client-> server-> backend may be the better choice.
> 
> Is it the amount of data requested or the number of entries in the
> list?  At least, in my worldview, clients are always requesting a
> “page” of data, so that part is rather consistently small.
> 
> If the intention is to get a complete dump, then maybe the comment
> from yesterday applies, whereby streaming to an external repository
> that can be queried offline makes more sense?  - especially
> considering that the number of on-box logs is likely to be only the
> most recent (e.g., days), whereas the complete-dump type queries
> likely wish to extend well-past that.
> 
> K.
> 
>

---

From: Kent Watsen <[email-masked]>
Date: Thu, 1 Oct 2020 13:32:04 +0000

> On Oct 1, 2020, at 9:23 AM, Martin Björklund <[email-masked]> wrote:
> 

No, it is not.

K.

---

From: Martin Björklund <[email-masked]>
Date: Thu, 01 Oct 2020 16:57:15 +0200 (CEST)

> > Isn't this just another syntax for the same function?

How so?  Isn't the idea that you can first ask for offset=-10, then
-20, etc, essentially walking the list backwards?  (I don't understand
what a negative limit means though).

/martin

---

From: Andy Bierman <[email-masked]>
Date: Thu, 1 Oct 2020 09:17:01 -0700

> what a negative limit means though).

Can somebody explain the use-case for iterating a list backwards?
No customer has ever asked for this so I am wondering what we are all
missing.

I guess it isn't clear that offsets do not work for lists where entries
are added and/or deleted over time, unless lots of state is kept by the
server.
I guess if you are looking for the most expensive heavyweight solution
possible
then this is a good start.

> /martin

Andy

> _______________________________________________
> netconf mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netconf
>