Re: [CCAMP] [netmod] [TEAS][NETMOD] Efficiency issues with YANG model data in integration

Robert Varga <nite@hq.sk> Fri, 25 March 2022 22:22 UTC

Return-Path: <nite@hq.sk>
X-Original-To: ccamp@ietfa.amsl.com
Delivered-To: ccamp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 282A53A0D61; Fri, 25 Mar 2022 15:22:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.109
X-Spam-Level:
X-Spam-Status: No, score=-2.109 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=hq.sk
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O5eC8kmg0vSo; Fri, 25 Mar 2022 15:22:14 -0700 (PDT)
Received: from mail.hq.sk (hq.sk [81.89.59.181]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EA1823A0D69; Fri, 25 Mar 2022 15:22:13 -0700 (PDT)
Received: from [192.168.1.146] (chello085216197060.chello.sk [85.216.197.60]) by mail.hq.sk (Postfix) with ESMTPSA id 183C7246B3B; Fri, 25 Mar 2022 23:22:11 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hq.sk; s=mail; t=1648246931; bh=UZYkwo2WHEgAzHv6t8eA1Z//3Wx5c2R7XVy7ZEpR6tg=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=be9CMeCFX028nrjWWE2ghHXrCsD4CT5NPpstzEIKqVR5XvvzFS7yVnspgGo0Ui3eR SQWrXsXBAW+C0xof39MK7uOPRkc7sVaLcOAiNZ4HtjFODZiAMZ4fY+zPE58USxHaRD D1yKz7Rb7Ei8E+JhFYzm72qbRa2HUQ5iV5KyyJoU=
Message-ID: <5b2499c6-5f20-5de9-e3af-89b9d15be6d4@hq.sk>
Date: Fri, 25 Mar 2022 23:22:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0
Content-Language: en-US
To: yuchaode <yuchaode=40huawei.com@dmarc.ietf.org>, "'ccamp@ietf.org'" <ccamp@ietf.org>, "'teas@ietf.org'" <teas@ietf.org>, "'netmod@ietf.org'" <netmod@ietf.org>
References: <67664d6fff3e4125a1ac026030ef067c@huawei.com>
From: Robert Varga <nite@hq.sk>
In-Reply-To: <67664d6fff3e4125a1ac026030ef067c@huawei.com>
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="------------1IYPe9QpEL20veWEfXnmdYlt"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ccamp/cXLcQwbwIYiqQNMpCMdpqIxcqII>
Subject: Re: [CCAMP] [netmod] [TEAS][NETMOD] Efficiency issues with YANG model data in integration
X-BeenThere: ccamp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion list for the CCAMP working group <ccamp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ccamp>, <mailto:ccamp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ccamp/>
List-Post: <mailto:ccamp@ietf.org>
List-Help: <mailto:ccamp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ccamp>, <mailto:ccamp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Mar 2022 22:22:20 -0000


On 15/03/2022 02:30, yuchaode wrote:
> Hello Friends,
> 
> I have a question about YANG data model efficiency issues discovered 
> during integration with OSS.
> 
> This issue is also mentioned in section2.2 of 
> draft-yg3bp-ccamp-network-inventory-yang that we are planning to present 
> at the CCAMP WG during IETF 113.
> 
> YANG data models define schema trees such as:
> 
> module: example
>     +--rw root
>        +--rw leaf-a?   string
>        +--rw list-b* [leaf-c]
>        |  +--rw leaf-c    string
>        |  +--rw list-d* [leaf-e]
>        |     +--rw leaf-e    string
>        |     +--rw list-f* [leaf-g]
>        |        +--rw leaf-g    string
>        |        +--rw leaf-h?   string
>        +--rw list-i* [leaf-j]
>           +--rw leaf-j    string
>           +--rw leaf-k?   string
> 
>  From the point of view of data model definition, it is convenient to 
> define objects and their relationship using a tree structure.
> 
> However, from a practical perspective, relational databases, in which 
> these objects are saved in different tables, are widely used by network 
> controllers and OSS/BSS. In this type of implementations, the model data 
> need to be cut into several pieces of small object data for management 
> and this is causing some efficiency issues with the integration between 
> systems.

[snip]

> So my question is whether, to address this efficiency issue, the only 
> viable option is to define the YANG model with a more flat structure, as 
> shown below:
> 
> module: example
>     +--rw root
>        +--rw root-summay-information
>        |  +--rw leaf-a?             string
>        |  +--rw contained-list-b*   string
>        |  +--rw contianed-list-i*   string
>        +--rw list-b* [leaf-c]
>        |  +--rw leaf-c              string
>        |  +--rw contained-list-d*   string
>        +--rw list-d* [leaf-c leaf-e]
>        |  +--rw leaf-c              leafref  (path 
> "/exmp:root/exmp:list-b/exmp:leaf-c")
>        |  +--rw leaf-e              string
>        |  +--rw contained-list-f*   string
>        +--rw list-f* [leaf-c leaf-e leaf-g]
>        |  +--rw leaf-c    leafref  (path 
> "/exmp:root/exmp:list-b/exmp:leaf-c")
>        |  +--rw leaf-e    leafref  (path 
> "/exmp:root/exmp:list-d/exmp:leaf-e")
>        |  +--rw leaf-g    string
>        |  +--rw leaf-h?   string
>        +--rw list-i* [leaf-j]
>           +--rw leaf-j    string
>           +--rw leaf-k?   string
> 
> The leaf-list object contained-list-* is a list of identifier reference 
> to list-* instance. With this kind of modeling, all the list-f instances 
> in the whole network can be retrieved without the need to specify its 
> parent’s and grandparent’s identifiers in URI.

Well, this is flat, but it brings 'leafref' and some amount of XPath 
evaluation to the runtime -- btw. I assume those are 'require-instance 
true'.

Sounds like a trade-off implementers should weigh in on...

Regards,
Robert