[ovs-git] [openvswitch/ovs] e90bc0: ovsdb-idl: compound indexes design document

GitHub noreply at github.com
Thu Aug 3 21:54:44 UTC 2017


  Branch: refs/heads/master
  Home:   https://github.com/openvswitch/ovs
  Commit: e90bc056d11f51b8bc772d376d9017df1b17325d
      https://github.com/openvswitch/ovs/commit/e90bc056d11f51b8bc772d376d9017df1b17325d
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M Documentation/automake.mk
    A Documentation/topics/idl-compound-indexes.rst
    M Documentation/topics/index.rst

  Log Message:
  -----------
  ovsdb-idl: compound indexes design document

In the work made in our projects, it was found the need to have a faster
access to the rows contained in tables in the replica, as well to have
the possibility to loop over a subset of rows that meet some specified
criteria.
Those needs lead us to design and implement a functionality that
satisfies those requirements, so an implementation of special indexes were
done.
In order to keep the OVSDB server implementation unmodified and avoid
extra load of processing, the indexes are created as part of the IDL.
The indexes are created as part of the initialization of the replica request
and are maintained automatically when there are changes in the replica.

This document explains the design rationale of the compound indexes feature.

Signed-off-by: Javier Albornoz <javier.albornoz at hpe.com>
Signed-off-by: Esteban Rodriguez Betancourt <estebarb at hpe.com>
Signed-off-by: Jorge Arturo Sauma Vargas <jorge.sauma at hpe.com>
Co-authored-by: Javier Albornoz <javier.albornoz at hpe.com>
Co-authored-by: Esteban Rodriguez Betancourt <estebarb at hpe.com>
Co-authored-by: Jorge Arturo Sauma Vargas <jorge.sauma at hpe.com>
Co-aughored-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


  Commit: 6c2705cda300c63019c93c0755b16308ae7d8540
      https://github.com/openvswitch/ovs/commit/6c2705cda300c63019c93c0755b16308ae7d8540
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M lib/automake.mk
    A lib/skiplist.c
    A lib/skiplist.h
    M tests/.gitignore
    M tests/automake.mk
    M tests/library.at
    A tests/test-skiplist.c

  Log Message:
  -----------
  lib: skiplist implementation

Skiplist implementation intended for use in the IDL compound indexes
feature.

Signed-off-by: Esteban Rodriguez Betancourt <estebarb at hpe.com>
Co-authored-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


  Commit: 93fe026466644b6f436d99e69a31d9884d5a3506
      https://github.com/openvswitch/ovs/commit/93fe026466644b6f436d99e69a31d9884d5a3506
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M lib/ovsdb-idl-provider.h
    M lib/ovsdb-idl.c
    M lib/ovsdb-idl.h

  Log Message:
  -----------
  ovsdb-idl: idl compound indexes implementation

This patch adds support for the creation of multicolumn indexes
in the C IDL to enable for efficient search and retrieval of database
rows by key.

Signed-off-by: Esteban Rodriguez Betancourt <estebarb at hpe.com>
Co-authored-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


  Commit: 0a8606ee56422e40b93a02effea62a5a87543543
      https://github.com/openvswitch/ovs/commit/0a8606ee56422e40b93a02effea62a5a87543543
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M ovsdb/ovsdb-idlc.in
    M tests/ovsdb-idl.at
    M tests/test-ovsdb.c

  Log Message:
  -----------
  ovsdb-idl: Autogenerated functions for compound indexes

Generates and fills in the default comparators for columns with
type int, real, string. Also creates the macros that allow
iteration over the contents of the index, and perform
queries.

Signed-off-by: Arnoldo Lutz Guevara <arnoldo.lutz.guevara at hpe.com>
Signed-off-by: Esteban Rodriguez Betancourt <estebarb at hpe.com>
Co-authored-by: Arnoldo Lutz Guevara <arnoldo.lutz.guevara at hpe.com>
Co-authored-by: Esteban Rodriguez Betancourt <estebarb at hpe.com>
Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


  Commit: 5be10ec1fee8efcc104f0d8d4318791779afd6e6
      https://github.com/openvswitch/ovs/commit/5be10ec1fee8efcc104f0d8d4318791779afd6e6
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M ovn/controller/lflow.c
    M ovn/controller/lflow.h
    M ovn/controller/lport.c
    M ovn/controller/lport.h
    M ovn/controller/ovn-controller.c

  Log Message:
  -----------
  ovn-controller: use idl index for multicast group table

Use IDL index for multicast group table lookups, avoiding the overhead
of creating/destroying an index hmap for each iteration of the
ovn-controller main loop.

Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


  Commit: f4557c0957916be9c7c639ae1a12368948d0fe63
      https://github.com/openvswitch/ovs/commit/f4557c0957916be9c7c639ae1a12368948d0fe63
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M ovn/controller/binding.c
    M ovn/controller/binding.h
    M ovn/controller/lflow.c
    M ovn/controller/lflow.h
    M ovn/controller/lport.c
    M ovn/controller/lport.h
    M ovn/controller/ovn-controller.c
    M ovn/controller/physical.c
    M ovn/controller/physical.h
    M ovn/controller/pinctrl.c
    M ovn/controller/pinctrl.h

  Log Message:
  -----------
  ovn-controller: use idl indexes for logical port table

Use IDL index for logical port table lookups, avoiding the overhead
of creating/destroying an index hmap for each iteration of the
ovn-controller main loop.

Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


  Commit: 34653b68091709f16014bf7e5b0f1df0ffd96af3
      https://github.com/openvswitch/ovs/commit/34653b68091709f16014bf7e5b0f1df0ffd96af3
  Author: Lance Richardson <lrichard at redhat.com>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M ovn/controller/bfd.c
    M ovn/controller/binding.c
    M ovn/controller/binding.h
    M ovn/controller/lport.c
    M ovn/controller/lport.h
    M ovn/controller/ovn-controller.c
    M ovn/controller/ovn-controller.h
    M ovn/controller/pinctrl.c

  Log Message:
  -----------
  ovn-controller: use idl indexes for logical datapath

Use IDL index to iterate over all logical ports in a given logical
datapath, avoiding the overhead of creating/destroying an indexing
data structure in each iteration of the ovn-controller main loop.

Signed-off-by: Lance Richardson <lrichard at redhat.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>


Compare: https://github.com/openvswitch/ovs/compare/662975e43c3f...34653b680917


More information about the git mailing list